{
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-04",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "tool": {
    "category": "",
    "endpoint": "https://api.numeratica.com/mcp",
    "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/numeratica-mcp.json",
    "kind": "mcp",
    "listed": "indexed",
    "liveUrl": "https://www.anchorterminal.com/api/v1/live/numeratica-mcp.json",
    "markdownUrl": "https://www.anchorterminal.com/tools/numeratica-mcp.md",
    "mcpTools": {
      "check": {
        "checker": "anchor-check/1.0",
        "totalTokens": 25259,
        "counts": {
          "error": 0,
          "note": 1,
          "warn": 1441
        },
        "findings": [
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "annuity",
            "message": "none of its 11 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "benefits_dependent_care",
            "message": "none of its 7 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "benefits_health_plan",
            "message": "none of its 7 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "capital_market_assumptions",
            "message": "none of its 3 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "cashflow_npv_irr",
            "message": "none of its 3 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "college_savings",
            "message": "none of its 7 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "none of its 10 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "none of its 3 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "debt_vs_invest",
            "message": "none of its 12 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "none of its 8 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "education_aid_estimate",
            "message": "none of its 18 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "education_student_loan",
            "message": "none of its 10 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "education_student_loan_refi",
            "message": "none of its 4 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "equity_comp_espp",
            "message": "none of its 5 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "equity_comp_iso",
            "message": "none of its 8 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "equity_comp_iso_amt_capacity",
            "message": "none of its 6 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "equity_comp_iso_schedule",
            "message": "none of its 10 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "equity_comp_nso",
            "message": "none of its 6 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "equity_comp_nua",
            "message": "none of its 10 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "equity_comp_rsu",
            "message": "none of its 5 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "equity_comp_section_83b",
            "message": "none of its 7 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "none of its 6 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "healthcare_aca_optimize",
            "message": "none of its 13 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "none of its 7 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "none of its 4 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "none of its 9 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "insurance_disability_needs",
            "message": "none of its 10 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "insurance_life_needs",
            "message": "none of its 15 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "insurance_long_term_care",
            "message": "none of its 11 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "ira_eligibility",
            "message": "none of its 10 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "loan_amortization",
            "message": "none of its 5 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "longevity",
            "message": "none of its 6 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "medicare_irmaa",
            "message": "none of its 3 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "medicare_late_enrollment_penalty",
            "message": "none of its 4 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "mortgage_affordability",
            "message": "none of its 11 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "mortgage_points",
            "message": "none of its 5 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "mortgage_refinance",
            "message": "none of its 7 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "mortgage_rent_vs_buy",
            "message": "none of its 17 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "mortgage_term_comparison",
            "message": "none of its 6 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "pension_lump_sum_vs_annuity",
            "message": "none of its 8 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "portfolio_glidepath",
            "message": "none of its 12 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "portfolio_rebalance",
            "message": "none of its 5 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "retirement_accumulation_projection",
            "message": "none of its 13 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "retirement_backdoor_roth",
            "message": "none of its 10 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "retirement_hsa",
            "message": "none of its 10 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "retirement_monte_carlo",
            "message": "none of its 18 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "retirement_qlac",
            "message": "none of its 8 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "retirement_rmd",
            "message": "none of its 5 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "retirement_savings_target",
            "message": "none of its 14 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "retirement_self_employed",
            "message": "none of its 4 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "retirement_sepp",
            "message": "none of its 3 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "retirement_survivor_scenario",
            "message": "none of its 6 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "retirement_withdrawal_sequencing",
            "message": "none of its 14 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "retirement_withdrawal_strategy",
            "message": "none of its 17 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "roth_conversion",
            "message": "none of its 16 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "roth_vs_traditional",
            "message": "none of its 7 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "savings_waterfall",
            "message": "none of its 11 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "social_security",
            "message": "none of its 10 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "social_security_couple_claim",
            "message": "none of its 3 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "tax_asset_location",
            "message": "none of its 6 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "tax_bracket_room",
            "message": "none of its 3 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "tax_estimate",
            "message": "none of its 36 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "tax_estimated_tax",
            "message": "none of its 8 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "tax_filing_status",
            "message": "none of its 3 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "tax_gain_harvesting",
            "message": "none of its 5 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "tax_liquidation_schedule",
            "message": "none of its 11 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "tax_marginal_map",
            "message": "none of its 16 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "tax_qcd_plan",
            "message": "none of its 12 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "tax_qsbs_exclusion",
            "message": "none of its 8 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "tax_s_corp_salary",
            "message": "none of its 9 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "tax_social_security_benefits",
            "message": "none of its 5 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "tax_state_income",
            "message": "none of its 7 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "tax_survivor_transition",
            "message": "none of its 8 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "tax_tlh_benefit",
            "message": "none of its 7 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "tax_w4_checkup",
            "message": "none of its 6 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC11",
            "severity": "warn",
            "tool": "tvm",
            "message": "none of its 7 parameters has a description",
            "fix": "Describe each one: format, units, an example, and what happens when it's left out."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "annuity",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "benefits_dependent_care",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "benefits_health_plan",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "capital_market_assumptions",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "cashflow_npv_irr",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "college_savings",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "debt_vs_invest",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "education_aid_estimate",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "education_student_loan",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "education_student_loan_refi",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "equity_comp_espp",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "equity_comp_iso",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "equity_comp_iso_amt_capacity",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "equity_comp_iso_schedule",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "equity_comp_nso",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "equity_comp_nua",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "equity_comp_rsu",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "equity_comp_section_83b",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "healthcare_aca_optimize",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "insurance_disability_needs",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "insurance_life_needs",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "insurance_long_term_care",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "ira_eligibility",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "loan_amortization",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "longevity",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "medicare_irmaa",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "medicare_late_enrollment_penalty",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "mortgage_affordability",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "mortgage_points",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "mortgage_refinance",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "mortgage_rent_vs_buy",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "mortgage_term_comparison",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "pension_lump_sum_vs_annuity",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "portfolio_glidepath",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "portfolio_rebalance",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "retirement_accumulation_projection",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "retirement_backdoor_roth",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "retirement_hsa",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "retirement_monte_carlo",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "retirement_qlac",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "retirement_rmd",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "retirement_savings_target",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "retirement_self_employed",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "retirement_sepp",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "retirement_survivor_scenario",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "retirement_withdrawal_sequencing",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "retirement_withdrawal_strategy",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "roth_conversion",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "roth_vs_traditional",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "savings_waterfall",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "social_security",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "social_security_couple_claim",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "tax_asset_location",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "tax_bracket_room",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "tax_estimate",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "tax_estimated_tax",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "tax_filing_status",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Its name starts with \"status\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "tax_gain_harvesting",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "tax_liquidation_schedule",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "tax_marginal_map",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "tax_qcd_plan",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "tax_qsbs_exclusion",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "tax_s_corp_salary",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "tax_social_security_benefits",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "tax_state_income",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "tax_survivor_transition",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "tax_tlh_benefit",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "tax_w4_checkup",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "tvm",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as benefits_dependent_care (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as benefits_health_plan (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as capital_market_assumptions (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as cashflow_npv_irr (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as college_savings (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as contribution_limits (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as debt_payoff (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as debt_vs_invest (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as education_529_to_roth (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as education_aid_estimate (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as education_student_loan (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as education_student_loan_refi (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as equity_comp_espp (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as equity_comp_iso (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as equity_comp_iso_schedule (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as equity_comp_nso (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as equity_comp_nua (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as equity_comp_rsu (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as equity_comp_section_83b (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as goal_funding (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as healthcare_aca_optimize (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as healthcare_costs (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as inflation_adjust (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as inherited_ira (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as insurance_disability_needs (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as insurance_life_needs (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as insurance_long_term_care (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as ira_eligibility (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as loan_amortization (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as longevity (92% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as medicare_late_enrollment_penalty (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as mortgage_affordability (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as mortgage_points (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as mortgage_refinance (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as mortgage_rent_vs_buy (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as mortgage_term_comparison (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as pension_lump_sum_vs_annuity (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as portfolio_glidepath (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as portfolio_rebalance (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as retirement_accumulation_projection (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as retirement_backdoor_roth (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as retirement_hsa (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as retirement_qlac (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as retirement_savings_target (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as retirement_self_employed (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as retirement_sepp (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as retirement_survivor_scenario (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as retirement_withdrawal_sequencing (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as roth_vs_traditional (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as savings_waterfall (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as social_security_couple_claim (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as tax_asset_location (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as tax_bracket_room (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as tax_estimated_tax (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as tax_filing_status (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as tax_gain_harvesting (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as tax_liquidation_schedule (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as tax_marginal_map (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as tax_qcd_plan (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as tax_qsbs_exclusion (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as tax_s_corp_salary (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as tax_social_security_benefits (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as tax_state_income (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as tax_survivor_transition (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as tax_tlh_benefit (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as tax_w4_checkup (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "annuity",
            "message": "described almost the same as tvm (92% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_dependent_care",
            "message": "described almost the same as benefits_health_plan (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_dependent_care",
            "message": "described almost the same as college_savings (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_dependent_care",
            "message": "described almost the same as contribution_limits (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_dependent_care",
            "message": "described almost the same as debt_payoff (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_dependent_care",
            "message": "described almost the same as education_529_to_roth (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_dependent_care",
            "message": "described almost the same as goal_funding (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_dependent_care",
            "message": "described almost the same as healthcare_costs (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_dependent_care",
            "message": "described almost the same as inflation_adjust (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_dependent_care",
            "message": "described almost the same as inherited_ira (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_dependent_care",
            "message": "described almost the same as insurance_long_term_care (83% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_dependent_care",
            "message": "described almost the same as ira_eligibility (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_dependent_care",
            "message": "described almost the same as loan_amortization (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_dependent_care",
            "message": "described almost the same as longevity (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_dependent_care",
            "message": "described almost the same as mortgage_affordability (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_dependent_care",
            "message": "described almost the same as mortgage_points (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_dependent_care",
            "message": "described almost the same as mortgage_refinance (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_dependent_care",
            "message": "described almost the same as portfolio_glidepath (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_dependent_care",
            "message": "described almost the same as portfolio_rebalance (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_dependent_care",
            "message": "described almost the same as retirement_hsa (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_dependent_care",
            "message": "described almost the same as retirement_qlac (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_dependent_care",
            "message": "described almost the same as retirement_sepp (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_dependent_care",
            "message": "described almost the same as savings_waterfall (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_dependent_care",
            "message": "described almost the same as tax_estimated_tax (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_dependent_care",
            "message": "described almost the same as tax_social_security_benefits (83% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_dependent_care",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_health_plan",
            "message": "described almost the same as college_savings (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_health_plan",
            "message": "described almost the same as contribution_limits (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_health_plan",
            "message": "described almost the same as debt_payoff (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_health_plan",
            "message": "described almost the same as education_529_to_roth (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_health_plan",
            "message": "described almost the same as goal_funding (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_health_plan",
            "message": "described almost the same as healthcare_costs (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_health_plan",
            "message": "described almost the same as inflation_adjust (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_health_plan",
            "message": "described almost the same as inherited_ira (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_health_plan",
            "message": "described almost the same as ira_eligibility (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_health_plan",
            "message": "described almost the same as loan_amortization (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_health_plan",
            "message": "described almost the same as longevity (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_health_plan",
            "message": "described almost the same as mortgage_affordability (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_health_plan",
            "message": "described almost the same as mortgage_points (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_health_plan",
            "message": "described almost the same as mortgage_refinance (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_health_plan",
            "message": "described almost the same as portfolio_glidepath (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_health_plan",
            "message": "described almost the same as portfolio_rebalance (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_health_plan",
            "message": "described almost the same as retirement_hsa (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_health_plan",
            "message": "described almost the same as retirement_qlac (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_health_plan",
            "message": "described almost the same as retirement_sepp (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_health_plan",
            "message": "described almost the same as savings_waterfall (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_health_plan",
            "message": "described almost the same as tax_estimated_tax (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_health_plan",
            "message": "described almost the same as tax_qcd_plan (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_health_plan",
            "message": "described almost the same as tax_social_security_benefits (83% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "benefits_health_plan",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "capital_market_assumptions",
            "message": "described almost the same as college_savings (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "capital_market_assumptions",
            "message": "described almost the same as contribution_limits (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "capital_market_assumptions",
            "message": "described almost the same as debt_payoff (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "capital_market_assumptions",
            "message": "described almost the same as education_529_to_roth (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "capital_market_assumptions",
            "message": "described almost the same as goal_funding (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "capital_market_assumptions",
            "message": "described almost the same as healthcare_costs (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "capital_market_assumptions",
            "message": "described almost the same as inflation_adjust (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "capital_market_assumptions",
            "message": "described almost the same as inherited_ira (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "capital_market_assumptions",
            "message": "described almost the same as ira_eligibility (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "capital_market_assumptions",
            "message": "described almost the same as loan_amortization (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "capital_market_assumptions",
            "message": "described almost the same as longevity (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "capital_market_assumptions",
            "message": "described almost the same as mortgage_affordability (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "capital_market_assumptions",
            "message": "described almost the same as mortgage_points (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "capital_market_assumptions",
            "message": "described almost the same as mortgage_refinance (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "capital_market_assumptions",
            "message": "described almost the same as portfolio_glidepath (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "capital_market_assumptions",
            "message": "described almost the same as portfolio_rebalance (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "capital_market_assumptions",
            "message": "described almost the same as retirement_hsa (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "capital_market_assumptions",
            "message": "described almost the same as retirement_qlac (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "capital_market_assumptions",
            "message": "described almost the same as retirement_sepp (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "capital_market_assumptions",
            "message": "described almost the same as savings_waterfall (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "capital_market_assumptions",
            "message": "described almost the same as tax_estimated_tax (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "capital_market_assumptions",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "cashflow_npv_irr",
            "message": "described almost the same as college_savings (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "cashflow_npv_irr",
            "message": "described almost the same as contribution_limits (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "cashflow_npv_irr",
            "message": "described almost the same as debt_payoff (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "cashflow_npv_irr",
            "message": "described almost the same as education_529_to_roth (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "cashflow_npv_irr",
            "message": "described almost the same as goal_funding (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "cashflow_npv_irr",
            "message": "described almost the same as healthcare_costs (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "cashflow_npv_irr",
            "message": "described almost the same as inflation_adjust (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "cashflow_npv_irr",
            "message": "described almost the same as inherited_ira (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "cashflow_npv_irr",
            "message": "described almost the same as ira_eligibility (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "cashflow_npv_irr",
            "message": "described almost the same as loan_amortization (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "cashflow_npv_irr",
            "message": "described almost the same as longevity (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "cashflow_npv_irr",
            "message": "described almost the same as mortgage_affordability (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "cashflow_npv_irr",
            "message": "described almost the same as mortgage_points (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "cashflow_npv_irr",
            "message": "described almost the same as mortgage_refinance (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "cashflow_npv_irr",
            "message": "described almost the same as portfolio_glidepath (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "cashflow_npv_irr",
            "message": "described almost the same as portfolio_rebalance (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "cashflow_npv_irr",
            "message": "described almost the same as retirement_hsa (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "cashflow_npv_irr",
            "message": "described almost the same as retirement_qlac (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "cashflow_npv_irr",
            "message": "described almost the same as retirement_sepp (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "cashflow_npv_irr",
            "message": "described almost the same as savings_waterfall (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "cashflow_npv_irr",
            "message": "described almost the same as tax_estimated_tax (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "cashflow_npv_irr",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as contribution_limits (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as debt_payoff (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as debt_vs_invest (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as education_529_to_roth (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as education_aid_estimate (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as education_student_loan (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as equity_comp_espp (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as equity_comp_iso (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as equity_comp_nso (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as equity_comp_nua (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as equity_comp_rsu (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as equity_comp_section_83b (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as goal_funding (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as healthcare_aca_optimize (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as healthcare_costs (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as inflation_adjust (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as inherited_ira (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as insurance_disability_needs (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as insurance_life_needs (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as ira_eligibility (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as loan_amortization (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as longevity (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as mortgage_affordability (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as mortgage_points (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as mortgage_refinance (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as mortgage_term_comparison (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as portfolio_glidepath (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as portfolio_rebalance (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as retirement_accumulation_projection (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as retirement_backdoor_roth (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as retirement_hsa (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as retirement_qlac (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as retirement_savings_target (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as retirement_self_employed (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as retirement_sepp (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as retirement_survivor_scenario (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as retirement_withdrawal_sequencing (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as roth_vs_traditional (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as savings_waterfall (92% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as tax_asset_location (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as tax_bracket_room (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as tax_estimated_tax (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as tax_filing_status (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as tax_gain_harvesting (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as tax_liquidation_schedule (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as tax_marginal_map (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as tax_qcd_plan (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as tax_qsbs_exclusion (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as tax_s_corp_salary (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as tax_state_income (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as tax_survivor_transition (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as tax_tlh_benefit (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as tax_w4_checkup (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "college_savings",
            "message": "described almost the same as tvm (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as debt_payoff (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as debt_vs_invest (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as education_529_to_roth (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as education_aid_estimate (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as education_student_loan (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as equity_comp_espp (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as equity_comp_iso (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as equity_comp_nso (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as equity_comp_nua (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as equity_comp_rsu (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as equity_comp_section_83b (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as goal_funding (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as healthcare_aca_optimize (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as healthcare_costs (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as inflation_adjust (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as inherited_ira (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as insurance_disability_needs (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as insurance_life_needs (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as ira_eligibility (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as loan_amortization (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as longevity (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as mortgage_affordability (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as mortgage_points (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as mortgage_refinance (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as mortgage_term_comparison (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as portfolio_glidepath (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as portfolio_rebalance (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as retirement_accumulation_projection (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as retirement_backdoor_roth (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as retirement_hsa (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as retirement_qlac (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as retirement_savings_target (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as retirement_self_employed (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as retirement_sepp (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as retirement_survivor_scenario (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as retirement_withdrawal_sequencing (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as roth_vs_traditional (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as savings_waterfall (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as tax_asset_location (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as tax_bracket_room (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as tax_estimated_tax (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as tax_filing_status (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as tax_gain_harvesting (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as tax_liquidation_schedule (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as tax_marginal_map (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as tax_qcd_plan (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as tax_qsbs_exclusion (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as tax_s_corp_salary (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as tax_state_income (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as tax_survivor_transition (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as tax_tlh_benefit (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as tax_w4_checkup (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "contribution_limits",
            "message": "described almost the same as tvm (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as debt_vs_invest (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as education_529_to_roth (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as education_aid_estimate (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as education_student_loan (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as equity_comp_espp (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as equity_comp_iso (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as equity_comp_nso (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as equity_comp_nua (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as equity_comp_rsu (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as equity_comp_section_83b (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as goal_funding (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as healthcare_aca_optimize (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as healthcare_costs (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as inflation_adjust (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as inherited_ira (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as insurance_disability_needs (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as insurance_life_needs (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as ira_eligibility (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as loan_amortization (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as longevity (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as mortgage_affordability (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as mortgage_points (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as mortgage_refinance (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as mortgage_term_comparison (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as portfolio_glidepath (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as portfolio_rebalance (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as retirement_accumulation_projection (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as retirement_backdoor_roth (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as retirement_hsa (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as retirement_qlac (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as retirement_savings_target (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as retirement_self_employed (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as retirement_sepp (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as retirement_survivor_scenario (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as retirement_withdrawal_sequencing (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as roth_vs_traditional (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as savings_waterfall (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as tax_asset_location (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as tax_bracket_room (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as tax_estimated_tax (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as tax_filing_status (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as tax_gain_harvesting (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as tax_liquidation_schedule (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as tax_marginal_map (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as tax_qcd_plan (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as tax_qsbs_exclusion (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as tax_s_corp_salary (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as tax_state_income (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as tax_survivor_transition (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as tax_tlh_benefit (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as tax_w4_checkup (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_payoff",
            "message": "described almost the same as tvm (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_vs_invest",
            "message": "described almost the same as education_529_to_roth (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_vs_invest",
            "message": "described almost the same as goal_funding (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_vs_invest",
            "message": "described almost the same as healthcare_costs (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_vs_invest",
            "message": "described almost the same as inflation_adjust (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_vs_invest",
            "message": "described almost the same as inherited_ira (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_vs_invest",
            "message": "described almost the same as ira_eligibility (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_vs_invest",
            "message": "described almost the same as loan_amortization (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_vs_invest",
            "message": "described almost the same as longevity (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_vs_invest",
            "message": "described almost the same as mortgage_affordability (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_vs_invest",
            "message": "described almost the same as mortgage_points (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_vs_invest",
            "message": "described almost the same as mortgage_refinance (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_vs_invest",
            "message": "described almost the same as mortgage_rent_vs_buy (83% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_vs_invest",
            "message": "described almost the same as pension_lump_sum_vs_annuity (80% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_vs_invest",
            "message": "described almost the same as portfolio_glidepath (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_vs_invest",
            "message": "described almost the same as portfolio_rebalance (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_vs_invest",
            "message": "described almost the same as retirement_hsa (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_vs_invest",
            "message": "described almost the same as retirement_qlac (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_vs_invest",
            "message": "described almost the same as retirement_sepp (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_vs_invest",
            "message": "described almost the same as roth_vs_traditional (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_vs_invest",
            "message": "described almost the same as savings_waterfall (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_vs_invest",
            "message": "described almost the same as tax_estimated_tax (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "debt_vs_invest",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as education_aid_estimate (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as education_student_loan (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as education_student_loan_refi (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as equity_comp_espp (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as equity_comp_iso (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as equity_comp_nso (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as equity_comp_nua (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as equity_comp_rsu (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as equity_comp_section_83b (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as goal_funding (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as healthcare_aca_optimize (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as healthcare_costs (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as inflation_adjust (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as inherited_ira (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as insurance_disability_needs (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as insurance_life_needs (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as ira_eligibility (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as loan_amortization (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as longevity (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as mortgage_affordability (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as mortgage_points (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as mortgage_refinance (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as mortgage_term_comparison (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as portfolio_glidepath (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as portfolio_rebalance (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as retirement_accumulation_projection (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as retirement_backdoor_roth (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as retirement_hsa (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as retirement_qlac (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as retirement_savings_target (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as retirement_self_employed (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as retirement_sepp (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as retirement_survivor_scenario (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as retirement_withdrawal_sequencing (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as roth_vs_traditional (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as savings_waterfall (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as tax_asset_location (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as tax_bracket_room (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as tax_estimated_tax (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as tax_filing_status (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as tax_gain_harvesting (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as tax_liquidation_schedule (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as tax_marginal_map (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as tax_qcd_plan (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as tax_qsbs_exclusion (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as tax_s_corp_salary (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as tax_state_income (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as tax_survivor_transition (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as tax_tlh_benefit (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as tax_w4_checkup (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_529_to_roth",
            "message": "described almost the same as tvm (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_aid_estimate",
            "message": "described almost the same as education_student_loan (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_aid_estimate",
            "message": "described almost the same as education_student_loan_refi (83% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_aid_estimate",
            "message": "described almost the same as goal_funding (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_aid_estimate",
            "message": "described almost the same as healthcare_costs (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_aid_estimate",
            "message": "described almost the same as inflation_adjust (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_aid_estimate",
            "message": "described almost the same as inherited_ira (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_aid_estimate",
            "message": "described almost the same as ira_eligibility (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_aid_estimate",
            "message": "described almost the same as loan_amortization (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_aid_estimate",
            "message": "described almost the same as longevity (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_aid_estimate",
            "message": "described almost the same as mortgage_affordability (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_aid_estimate",
            "message": "described almost the same as mortgage_points (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_aid_estimate",
            "message": "described almost the same as mortgage_refinance (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_aid_estimate",
            "message": "described almost the same as portfolio_glidepath (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_aid_estimate",
            "message": "described almost the same as portfolio_rebalance (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_aid_estimate",
            "message": "described almost the same as retirement_hsa (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_aid_estimate",
            "message": "described almost the same as retirement_qlac (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_aid_estimate",
            "message": "described almost the same as retirement_sepp (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_aid_estimate",
            "message": "described almost the same as savings_waterfall (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_aid_estimate",
            "message": "described almost the same as tax_estimated_tax (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_aid_estimate",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_student_loan",
            "message": "described almost the same as education_student_loan_refi (96% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_student_loan",
            "message": "described almost the same as goal_funding (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_student_loan",
            "message": "described almost the same as healthcare_costs (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_student_loan",
            "message": "described almost the same as inflation_adjust (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_student_loan",
            "message": "described almost the same as inherited_ira (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_student_loan",
            "message": "described almost the same as ira_eligibility (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_student_loan",
            "message": "described almost the same as loan_amortization (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_student_loan",
            "message": "described almost the same as longevity (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_student_loan",
            "message": "described almost the same as mortgage_affordability (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_student_loan",
            "message": "described almost the same as mortgage_points (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_student_loan",
            "message": "described almost the same as mortgage_refinance (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_student_loan",
            "message": "described almost the same as portfolio_glidepath (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_student_loan",
            "message": "described almost the same as portfolio_rebalance (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_student_loan",
            "message": "described almost the same as retirement_hsa (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_student_loan",
            "message": "described almost the same as retirement_qlac (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_student_loan",
            "message": "described almost the same as retirement_sepp (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_student_loan",
            "message": "described almost the same as savings_waterfall (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_student_loan",
            "message": "described almost the same as tax_estimated_tax (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_student_loan",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_student_loan_refi",
            "message": "described almost the same as loan_amortization (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_student_loan_refi",
            "message": "described almost the same as longevity (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "education_student_loan_refi",
            "message": "described almost the same as tvm (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_espp",
            "message": "described almost the same as equity_comp_iso (93% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_espp",
            "message": "described almost the same as equity_comp_iso_amt_capacity (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_espp",
            "message": "described almost the same as equity_comp_iso_schedule (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_espp",
            "message": "described almost the same as equity_comp_nso (93% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_espp",
            "message": "described almost the same as equity_comp_nua (93% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_espp",
            "message": "described almost the same as equity_comp_rsu (93% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_espp",
            "message": "described almost the same as equity_comp_section_83b (93% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_espp",
            "message": "described almost the same as goal_funding (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_espp",
            "message": "described almost the same as healthcare_costs (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_espp",
            "message": "described almost the same as inflation_adjust (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_espp",
            "message": "described almost the same as inherited_ira (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_espp",
            "message": "described almost the same as ira_eligibility (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_espp",
            "message": "described almost the same as loan_amortization (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_espp",
            "message": "described almost the same as longevity (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_espp",
            "message": "described almost the same as mortgage_affordability (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_espp",
            "message": "described almost the same as mortgage_points (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_espp",
            "message": "described almost the same as mortgage_refinance (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_espp",
            "message": "described almost the same as portfolio_glidepath (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_espp",
            "message": "described almost the same as portfolio_rebalance (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_espp",
            "message": "described almost the same as retirement_hsa (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_espp",
            "message": "described almost the same as retirement_qlac (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_espp",
            "message": "described almost the same as retirement_sepp (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_espp",
            "message": "described almost the same as savings_waterfall (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_espp",
            "message": "described almost the same as tax_estimated_tax (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_espp",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_iso",
            "message": "described almost the same as equity_comp_iso_amt_capacity (93% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_iso",
            "message": "described almost the same as equity_comp_iso_schedule (96% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_iso",
            "message": "described almost the same as equity_comp_nso (93% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_iso",
            "message": "described almost the same as equity_comp_nua (93% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_iso",
            "message": "described almost the same as equity_comp_rsu (93% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_iso",
            "message": "described almost the same as equity_comp_section_83b (93% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_iso",
            "message": "described almost the same as goal_funding (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_iso",
            "message": "described almost the same as healthcare_costs (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_iso",
            "message": "described almost the same as inflation_adjust (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_iso",
            "message": "described almost the same as inherited_ira (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_iso",
            "message": "described almost the same as ira_eligibility (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_iso",
            "message": "described almost the same as loan_amortization (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_iso",
            "message": "described almost the same as longevity (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_iso",
            "message": "described almost the same as mortgage_affordability (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_iso",
            "message": "described almost the same as mortgage_points (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_iso",
            "message": "described almost the same as mortgage_refinance (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_iso",
            "message": "described almost the same as portfolio_glidepath (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_iso",
            "message": "described almost the same as portfolio_rebalance (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_iso",
            "message": "described almost the same as retirement_hsa (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_iso",
            "message": "described almost the same as retirement_qlac (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_iso",
            "message": "described almost the same as retirement_sepp (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_iso",
            "message": "described almost the same as savings_waterfall (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_iso",
            "message": "described almost the same as tax_estimated_tax (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_iso",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_iso_amt_capacity",
            "message": "described almost the same as equity_comp_iso_schedule (90% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_iso_amt_capacity",
            "message": "described almost the same as equity_comp_nso (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_iso_amt_capacity",
            "message": "described almost the same as equity_comp_nua (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_iso_amt_capacity",
            "message": "described almost the same as equity_comp_rsu (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_iso_amt_capacity",
            "message": "described almost the same as equity_comp_section_83b (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_iso_schedule",
            "message": "described almost the same as equity_comp_nso (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_iso_schedule",
            "message": "described almost the same as equity_comp_nua (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_iso_schedule",
            "message": "described almost the same as equity_comp_rsu (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_iso_schedule",
            "message": "described almost the same as equity_comp_section_83b (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_iso_schedule",
            "message": "described almost the same as longevity (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_iso_schedule",
            "message": "described almost the same as tax_liquidation_schedule (83% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_iso_schedule",
            "message": "described almost the same as tvm (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nso",
            "message": "described almost the same as equity_comp_nua (93% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nso",
            "message": "described almost the same as equity_comp_rsu (93% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nso",
            "message": "described almost the same as equity_comp_section_83b (93% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nso",
            "message": "described almost the same as goal_funding (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nso",
            "message": "described almost the same as healthcare_costs (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nso",
            "message": "described almost the same as inflation_adjust (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nso",
            "message": "described almost the same as inherited_ira (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nso",
            "message": "described almost the same as ira_eligibility (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nso",
            "message": "described almost the same as loan_amortization (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nso",
            "message": "described almost the same as longevity (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nso",
            "message": "described almost the same as mortgage_affordability (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nso",
            "message": "described almost the same as mortgage_points (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nso",
            "message": "described almost the same as mortgage_refinance (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nso",
            "message": "described almost the same as portfolio_glidepath (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nso",
            "message": "described almost the same as portfolio_rebalance (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nso",
            "message": "described almost the same as retirement_hsa (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nso",
            "message": "described almost the same as retirement_qlac (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nso",
            "message": "described almost the same as retirement_sepp (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nso",
            "message": "described almost the same as savings_waterfall (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nso",
            "message": "described almost the same as tax_estimated_tax (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nso",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nua",
            "message": "described almost the same as equity_comp_rsu (93% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nua",
            "message": "described almost the same as equity_comp_section_83b (93% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nua",
            "message": "described almost the same as goal_funding (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nua",
            "message": "described almost the same as healthcare_costs (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nua",
            "message": "described almost the same as inflation_adjust (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nua",
            "message": "described almost the same as inherited_ira (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nua",
            "message": "described almost the same as ira_eligibility (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nua",
            "message": "described almost the same as loan_amortization (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nua",
            "message": "described almost the same as longevity (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nua",
            "message": "described almost the same as mortgage_affordability (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nua",
            "message": "described almost the same as mortgage_points (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nua",
            "message": "described almost the same as mortgage_refinance (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nua",
            "message": "described almost the same as portfolio_glidepath (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nua",
            "message": "described almost the same as portfolio_rebalance (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nua",
            "message": "described almost the same as retirement_hsa (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nua",
            "message": "described almost the same as retirement_qlac (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nua",
            "message": "described almost the same as retirement_sepp (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nua",
            "message": "described almost the same as savings_waterfall (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nua",
            "message": "described almost the same as tax_estimated_tax (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_nua",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_rsu",
            "message": "described almost the same as equity_comp_section_83b (93% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_rsu",
            "message": "described almost the same as goal_funding (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_rsu",
            "message": "described almost the same as healthcare_costs (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_rsu",
            "message": "described almost the same as inflation_adjust (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_rsu",
            "message": "described almost the same as inherited_ira (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_rsu",
            "message": "described almost the same as ira_eligibility (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_rsu",
            "message": "described almost the same as loan_amortization (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_rsu",
            "message": "described almost the same as longevity (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_rsu",
            "message": "described almost the same as mortgage_affordability (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_rsu",
            "message": "described almost the same as mortgage_points (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_rsu",
            "message": "described almost the same as mortgage_refinance (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_rsu",
            "message": "described almost the same as portfolio_glidepath (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_rsu",
            "message": "described almost the same as portfolio_rebalance (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_rsu",
            "message": "described almost the same as retirement_hsa (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_rsu",
            "message": "described almost the same as retirement_qlac (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_rsu",
            "message": "described almost the same as retirement_sepp (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_rsu",
            "message": "described almost the same as savings_waterfall (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_rsu",
            "message": "described almost the same as tax_estimated_tax (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_rsu",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_section_83b",
            "message": "described almost the same as goal_funding (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_section_83b",
            "message": "described almost the same as healthcare_costs (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_section_83b",
            "message": "described almost the same as inflation_adjust (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_section_83b",
            "message": "described almost the same as inherited_ira (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_section_83b",
            "message": "described almost the same as ira_eligibility (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_section_83b",
            "message": "described almost the same as loan_amortization (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_section_83b",
            "message": "described almost the same as longevity (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_section_83b",
            "message": "described almost the same as mortgage_affordability (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_section_83b",
            "message": "described almost the same as mortgage_points (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_section_83b",
            "message": "described almost the same as mortgage_refinance (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_section_83b",
            "message": "described almost the same as portfolio_glidepath (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_section_83b",
            "message": "described almost the same as portfolio_rebalance (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_section_83b",
            "message": "described almost the same as retirement_hsa (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_section_83b",
            "message": "described almost the same as retirement_qlac (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_section_83b",
            "message": "described almost the same as retirement_sepp (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_section_83b",
            "message": "described almost the same as savings_waterfall (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_section_83b",
            "message": "described almost the same as tax_estimated_tax (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "equity_comp_section_83b",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as healthcare_aca_optimize (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as healthcare_costs (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as inflation_adjust (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as inherited_ira (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as insurance_disability_needs (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as insurance_life_needs (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as ira_eligibility (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as loan_amortization (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as longevity (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as mortgage_affordability (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as mortgage_points (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as mortgage_refinance (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as mortgage_term_comparison (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as portfolio_glidepath (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as portfolio_rebalance (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as retirement_accumulation_projection (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as retirement_backdoor_roth (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as retirement_hsa (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as retirement_qlac (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as retirement_savings_target (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as retirement_self_employed (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as retirement_sepp (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as retirement_survivor_scenario (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as retirement_withdrawal_sequencing (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as roth_vs_traditional (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as savings_waterfall (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as tax_asset_location (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as tax_bracket_room (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as tax_estimated_tax (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as tax_filing_status (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as tax_gain_harvesting (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as tax_liquidation_schedule (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as tax_marginal_map (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as tax_qcd_plan (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as tax_qsbs_exclusion (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as tax_s_corp_salary (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as tax_state_income (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as tax_survivor_transition (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as tax_tlh_benefit (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as tax_w4_checkup (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "goal_funding",
            "message": "described almost the same as tvm (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_aca_optimize",
            "message": "described almost the same as healthcare_costs (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_aca_optimize",
            "message": "described almost the same as inflation_adjust (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_aca_optimize",
            "message": "described almost the same as inherited_ira (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_aca_optimize",
            "message": "described almost the same as ira_eligibility (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_aca_optimize",
            "message": "described almost the same as loan_amortization (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_aca_optimize",
            "message": "described almost the same as longevity (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_aca_optimize",
            "message": "described almost the same as mortgage_affordability (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_aca_optimize",
            "message": "described almost the same as mortgage_points (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_aca_optimize",
            "message": "described almost the same as mortgage_refinance (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_aca_optimize",
            "message": "described almost the same as portfolio_glidepath (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_aca_optimize",
            "message": "described almost the same as portfolio_rebalance (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_aca_optimize",
            "message": "described almost the same as retirement_hsa (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_aca_optimize",
            "message": "described almost the same as retirement_qlac (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_aca_optimize",
            "message": "described almost the same as retirement_sepp (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_aca_optimize",
            "message": "described almost the same as savings_waterfall (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_aca_optimize",
            "message": "described almost the same as tax_estimated_tax (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_aca_optimize",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as inflation_adjust (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as inherited_ira (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as insurance_disability_needs (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as insurance_life_needs (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as ira_eligibility (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as loan_amortization (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as longevity (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as mortgage_affordability (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as mortgage_points (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as mortgage_refinance (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as mortgage_term_comparison (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as portfolio_glidepath (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as portfolio_rebalance (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as retirement_accumulation_projection (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as retirement_backdoor_roth (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as retirement_hsa (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as retirement_qlac (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as retirement_savings_target (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as retirement_self_employed (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as retirement_sepp (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as retirement_survivor_scenario (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as retirement_withdrawal_sequencing (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as roth_vs_traditional (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as savings_waterfall (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as tax_asset_location (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as tax_bracket_room (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as tax_estimated_tax (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as tax_filing_status (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as tax_gain_harvesting (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as tax_liquidation_schedule (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as tax_marginal_map (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as tax_qcd_plan (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as tax_qsbs_exclusion (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as tax_s_corp_salary (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as tax_state_income (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as tax_survivor_transition (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as tax_tlh_benefit (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as tax_w4_checkup (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "healthcare_costs",
            "message": "described almost the same as tvm (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as inherited_ira (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as insurance_disability_needs (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as insurance_life_needs (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as ira_eligibility (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as loan_amortization (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as longevity (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as mortgage_affordability (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as mortgage_points (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as mortgage_refinance (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as mortgage_term_comparison (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as portfolio_glidepath (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as portfolio_rebalance (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as retirement_accumulation_projection (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as retirement_backdoor_roth (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as retirement_hsa (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as retirement_qlac (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as retirement_savings_target (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as retirement_self_employed (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as retirement_sepp (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as retirement_survivor_scenario (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as retirement_withdrawal_sequencing (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as roth_vs_traditional (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as savings_waterfall (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as tax_asset_location (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as tax_bracket_room (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as tax_estimated_tax (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as tax_filing_status (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as tax_gain_harvesting (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as tax_liquidation_schedule (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as tax_marginal_map (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as tax_qcd_plan (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as tax_qsbs_exclusion (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as tax_s_corp_salary (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as tax_state_income (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as tax_survivor_transition (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as tax_tlh_benefit (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as tax_w4_checkup (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inflation_adjust",
            "message": "described almost the same as tvm (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as insurance_disability_needs (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as insurance_life_needs (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as ira_eligibility (92% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as loan_amortization (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as longevity (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as mortgage_affordability (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as mortgage_points (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as mortgage_refinance (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as mortgage_term_comparison (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as portfolio_glidepath (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as portfolio_rebalance (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as retirement_accumulation_projection (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as retirement_backdoor_roth (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as retirement_hsa (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as retirement_qlac (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as retirement_savings_target (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as retirement_self_employed (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as retirement_sepp (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as retirement_survivor_scenario (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as retirement_withdrawal_sequencing (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as roth_vs_traditional (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as savings_waterfall (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as tax_asset_location (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as tax_bracket_room (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as tax_estimated_tax (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as tax_filing_status (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as tax_gain_harvesting (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as tax_liquidation_schedule (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as tax_marginal_map (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as tax_qcd_plan (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as tax_qsbs_exclusion (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as tax_s_corp_salary (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as tax_state_income (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as tax_survivor_transition (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as tax_tlh_benefit (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as tax_w4_checkup (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "inherited_ira",
            "message": "described almost the same as tvm (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "insurance_disability_needs",
            "message": "described almost the same as insurance_life_needs (93% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "insurance_disability_needs",
            "message": "described almost the same as insurance_long_term_care (83% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "insurance_disability_needs",
            "message": "described almost the same as ira_eligibility (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "insurance_disability_needs",
            "message": "described almost the same as loan_amortization (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "insurance_disability_needs",
            "message": "described almost the same as longevity (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "insurance_disability_needs",
            "message": "described almost the same as mortgage_affordability (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "insurance_disability_needs",
            "message": "described almost the same as mortgage_points (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "insurance_disability_needs",
            "message": "described almost the same as mortgage_refinance (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "insurance_disability_needs",
            "message": "described almost the same as portfolio_glidepath (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "insurance_disability_needs",
            "message": "described almost the same as portfolio_rebalance (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "insurance_disability_needs",
            "message": "described almost the same as retirement_hsa (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "insurance_disability_needs",
            "message": "described almost the same as retirement_qlac (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "insurance_disability_needs",
            "message": "described almost the same as retirement_sepp (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "insurance_disability_needs",
            "message": "described almost the same as savings_waterfall (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "insurance_disability_needs",
            "message": "described almost the same as tax_estimated_tax (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "insurance_disability_needs",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "insurance_life_needs",
            "message": "described almost the same as insurance_long_term_care (83% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "insurance_life_needs",
            "message": "described almost the same as ira_eligibility (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "insurance_life_needs",
            "message": "described almost the same as loan_amortization (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "insurance_life_needs",
            "message": "described almost the same as longevity (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "insurance_life_needs",
            "message": "described almost the same as mortgage_affordability (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "insurance_life_needs",
            "message": "described almost the same as mortgage_points (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "insurance_life_needs",
            "message": "described almost the same as mortgage_refinance (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "insurance_life_needs",
            "message": "described almost the same as portfolio_glidepath (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "insurance_life_needs",
            "message": "described almost the same as portfolio_rebalance (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "insurance_life_needs",
            "message": "described almost the same as retirement_hsa (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "insurance_life_needs",
            "message": "described almost the same as retirement_qlac (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "insurance_life_needs",
            "message": "described almost the same as retirement_sepp (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "insurance_life_needs",
            "message": "described almost the same as savings_waterfall (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "insurance_life_needs",
            "message": "described almost the same as tax_estimated_tax (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "insurance_life_needs",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "insurance_long_term_care",
            "message": "described almost the same as longevity (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "insurance_long_term_care",
            "message": "described almost the same as mortgage_term_comparison (83% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "insurance_long_term_care",
            "message": "described almost the same as tvm (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "ira_eligibility",
            "message": "described almost the same as loan_amortization (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "ira_eligibility",
            "message": "described almost the same as longevity (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "ira_eligibility",
            "message": "described almost the same as mortgage_affordability (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "ira_eligibility",
            "message": "described almost the same as mortgage_points (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "ira_eligibility",
            "message": "described almost the same as mortgage_refinance (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "ira_eligibility",
            "message": "described almost the same as mortgage_term_comparison (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "ira_eligibility",
            "message": "described almost the same as portfolio_glidepath (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "ira_eligibility",
            "message": "described almost the same as portfolio_rebalance (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "ira_eligibility",
            "message": "described almost the same as retirement_accumulation_projection (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "ira_eligibility",
            "message": "described almost the same as retirement_backdoor_roth (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "ira_eligibility",
            "message": "described almost the same as retirement_hsa (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "ira_eligibility",
            "message": "described almost the same as retirement_qlac (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "ira_eligibility",
            "message": "described almost the same as retirement_savings_target (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "ira_eligibility",
            "message": "described almost the same as retirement_self_employed (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "ira_eligibility",
            "message": "described almost the same as retirement_sepp (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "ira_eligibility",
            "message": "described almost the same as retirement_survivor_scenario (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "ira_eligibility",
            "message": "described almost the same as retirement_withdrawal_sequencing (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "ira_eligibility",
            "message": "described almost the same as roth_vs_traditional (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "ira_eligibility",
            "message": "described almost the same as savings_waterfall (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "ira_eligibility",
            "message": "described almost the same as tax_asset_location (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "ira_eligibility",
            "message": "described almost the same as tax_bracket_room (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "ira_eligibility",
            "message": "described almost the same as tax_estimated_tax (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "ira_eligibility",
            "message": "described almost the same as tax_filing_status (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "ira_eligibility",
            "message": "described almost the same as tax_gain_harvesting (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "ira_eligibility",
            "message": "described almost the same as tax_liquidation_schedule (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "ira_eligibility",
            "message": "described almost the same as tax_marginal_map (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "ira_eligibility",
            "message": "described almost the same as tax_qcd_plan (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "ira_eligibility",
            "message": "described almost the same as tax_qsbs_exclusion (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "ira_eligibility",
            "message": "described almost the same as tax_s_corp_salary (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "ira_eligibility",
            "message": "described almost the same as tax_state_income (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "ira_eligibility",
            "message": "described almost the same as tax_survivor_transition (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "ira_eligibility",
            "message": "described almost the same as tax_tlh_benefit (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "ira_eligibility",
            "message": "described almost the same as tax_w4_checkup (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "ira_eligibility",
            "message": "described almost the same as tvm (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "loan_amortization",
            "message": "described almost the same as longevity (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "loan_amortization",
            "message": "described almost the same as mortgage_affordability (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "loan_amortization",
            "message": "described almost the same as mortgage_points (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "loan_amortization",
            "message": "described almost the same as mortgage_refinance (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "loan_amortization",
            "message": "described almost the same as mortgage_term_comparison (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "loan_amortization",
            "message": "described almost the same as portfolio_glidepath (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "loan_amortization",
            "message": "described almost the same as portfolio_rebalance (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "loan_amortization",
            "message": "described almost the same as retirement_accumulation_projection (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "loan_amortization",
            "message": "described almost the same as retirement_backdoor_roth (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "loan_amortization",
            "message": "described almost the same as retirement_hsa (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "loan_amortization",
            "message": "described almost the same as retirement_qlac (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "loan_amortization",
            "message": "described almost the same as retirement_savings_target (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "loan_amortization",
            "message": "described almost the same as retirement_self_employed (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "loan_amortization",
            "message": "described almost the same as retirement_sepp (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "loan_amortization",
            "message": "described almost the same as retirement_survivor_scenario (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "loan_amortization",
            "message": "described almost the same as retirement_withdrawal_sequencing (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "loan_amortization",
            "message": "described almost the same as roth_vs_traditional (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "loan_amortization",
            "message": "described almost the same as savings_waterfall (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "loan_amortization",
            "message": "described almost the same as tax_asset_location (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "loan_amortization",
            "message": "described almost the same as tax_bracket_room (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "loan_amortization",
            "message": "described almost the same as tax_estimated_tax (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "loan_amortization",
            "message": "described almost the same as tax_filing_status (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "loan_amortization",
            "message": "described almost the same as tax_gain_harvesting (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "loan_amortization",
            "message": "described almost the same as tax_liquidation_schedule (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "loan_amortization",
            "message": "described almost the same as tax_marginal_map (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "loan_amortization",
            "message": "described almost the same as tax_qcd_plan (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "loan_amortization",
            "message": "described almost the same as tax_qsbs_exclusion (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "loan_amortization",
            "message": "described almost the same as tax_s_corp_salary (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "loan_amortization",
            "message": "described almost the same as tax_state_income (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "loan_amortization",
            "message": "described almost the same as tax_survivor_transition (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "loan_amortization",
            "message": "described almost the same as tax_tlh_benefit (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "loan_amortization",
            "message": "described almost the same as tax_w4_checkup (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "loan_amortization",
            "message": "described almost the same as tvm (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "longevity",
            "message": "described almost the same as medicare_late_enrollment_penalty (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "longevity",
            "message": "described almost the same as mortgage_affordability (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "longevity",
            "message": "described almost the same as mortgage_points (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "longevity",
            "message": "described almost the same as mortgage_refinance (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "longevity",
            "message": "described almost the same as mortgage_rent_vs_buy (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "longevity",
            "message": "described almost the same as mortgage_term_comparison (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "longevity",
            "message": "described almost the same as portfolio_glidepath (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "longevity",
            "message": "described almost the same as portfolio_rebalance (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "longevity",
            "message": "described almost the same as retirement_accumulation_projection (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "longevity",
            "message": "described almost the same as retirement_backdoor_roth (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "longevity",
            "message": "described almost the same as retirement_hsa (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "longevity",
            "message": "described almost the same as retirement_qlac (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "longevity",
            "message": "described almost the same as retirement_savings_target (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "longevity",
            "message": "described almost the same as retirement_self_employed (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "longevity",
            "message": "described almost the same as retirement_sepp (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "longevity",
            "message": "described almost the same as retirement_survivor_scenario (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "longevity",
            "message": "described almost the same as retirement_withdrawal_sequencing (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "longevity",
            "message": "described almost the same as roth_vs_traditional (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "longevity",
            "message": "described almost the same as savings_waterfall (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "longevity",
            "message": "described almost the same as social_security_couple_claim (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "longevity",
            "message": "described almost the same as tax_asset_location (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "longevity",
            "message": "described almost the same as tax_bracket_room (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "longevity",
            "message": "described almost the same as tax_estimated_tax (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "longevity",
            "message": "described almost the same as tax_filing_status (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "longevity",
            "message": "described almost the same as tax_gain_harvesting (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "longevity",
            "message": "described almost the same as tax_liquidation_schedule (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "longevity",
            "message": "described almost the same as tax_marginal_map (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "longevity",
            "message": "described almost the same as tax_qcd_plan (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "longevity",
            "message": "described almost the same as tax_qsbs_exclusion (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "longevity",
            "message": "described almost the same as tax_s_corp_salary (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "longevity",
            "message": "described almost the same as tax_social_security_benefits (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "longevity",
            "message": "described almost the same as tax_state_income (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "longevity",
            "message": "described almost the same as tax_survivor_transition (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "longevity",
            "message": "described almost the same as tax_tlh_benefit (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "longevity",
            "message": "described almost the same as tax_w4_checkup (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "longevity",
            "message": "described almost the same as tvm (92% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "medicare_late_enrollment_penalty",
            "message": "described almost the same as tvm (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_affordability",
            "message": "described almost the same as mortgage_points (92% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_affordability",
            "message": "described almost the same as mortgage_refinance (92% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_affordability",
            "message": "described almost the same as mortgage_rent_vs_buy (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_affordability",
            "message": "described almost the same as mortgage_term_comparison (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_affordability",
            "message": "described almost the same as portfolio_glidepath (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_affordability",
            "message": "described almost the same as portfolio_rebalance (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_affordability",
            "message": "described almost the same as retirement_accumulation_projection (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_affordability",
            "message": "described almost the same as retirement_backdoor_roth (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_affordability",
            "message": "described almost the same as retirement_hsa (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_affordability",
            "message": "described almost the same as retirement_qlac (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_affordability",
            "message": "described almost the same as retirement_savings_target (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_affordability",
            "message": "described almost the same as retirement_self_employed (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_affordability",
            "message": "described almost the same as retirement_sepp (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_affordability",
            "message": "described almost the same as retirement_survivor_scenario (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_affordability",
            "message": "described almost the same as retirement_withdrawal_sequencing (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_affordability",
            "message": "described almost the same as roth_vs_traditional (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_affordability",
            "message": "described almost the same as savings_waterfall (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_affordability",
            "message": "described almost the same as tax_asset_location (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_affordability",
            "message": "described almost the same as tax_bracket_room (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_affordability",
            "message": "described almost the same as tax_estimated_tax (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_affordability",
            "message": "described almost the same as tax_filing_status (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_affordability",
            "message": "described almost the same as tax_gain_harvesting (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_affordability",
            "message": "described almost the same as tax_liquidation_schedule (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_affordability",
            "message": "described almost the same as tax_marginal_map (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_affordability",
            "message": "described almost the same as tax_qcd_plan (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_affordability",
            "message": "described almost the same as tax_qsbs_exclusion (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_affordability",
            "message": "described almost the same as tax_s_corp_salary (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_affordability",
            "message": "described almost the same as tax_state_income (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_affordability",
            "message": "described almost the same as tax_survivor_transition (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_affordability",
            "message": "described almost the same as tax_tlh_benefit (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_affordability",
            "message": "described almost the same as tax_w4_checkup (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_affordability",
            "message": "described almost the same as tvm (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_points",
            "message": "described almost the same as mortgage_refinance (92% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_points",
            "message": "described almost the same as mortgage_rent_vs_buy (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_points",
            "message": "described almost the same as mortgage_term_comparison (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_points",
            "message": "described almost the same as portfolio_glidepath (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_points",
            "message": "described almost the same as portfolio_rebalance (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_points",
            "message": "described almost the same as retirement_accumulation_projection (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_points",
            "message": "described almost the same as retirement_backdoor_roth (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_points",
            "message": "described almost the same as retirement_hsa (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_points",
            "message": "described almost the same as retirement_qlac (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_points",
            "message": "described almost the same as retirement_savings_target (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_points",
            "message": "described almost the same as retirement_self_employed (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_points",
            "message": "described almost the same as retirement_sepp (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_points",
            "message": "described almost the same as retirement_survivor_scenario (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_points",
            "message": "described almost the same as retirement_withdrawal_sequencing (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_points",
            "message": "described almost the same as roth_vs_traditional (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_points",
            "message": "described almost the same as savings_waterfall (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_points",
            "message": "described almost the same as tax_asset_location (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_points",
            "message": "described almost the same as tax_bracket_room (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_points",
            "message": "described almost the same as tax_estimated_tax (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_points",
            "message": "described almost the same as tax_filing_status (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_points",
            "message": "described almost the same as tax_gain_harvesting (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_points",
            "message": "described almost the same as tax_liquidation_schedule (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_points",
            "message": "described almost the same as tax_marginal_map (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_points",
            "message": "described almost the same as tax_qcd_plan (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_points",
            "message": "described almost the same as tax_qsbs_exclusion (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_points",
            "message": "described almost the same as tax_s_corp_salary (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_points",
            "message": "described almost the same as tax_state_income (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_points",
            "message": "described almost the same as tax_survivor_transition (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_points",
            "message": "described almost the same as tax_tlh_benefit (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_points",
            "message": "described almost the same as tax_w4_checkup (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_points",
            "message": "described almost the same as tvm (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_refinance",
            "message": "described almost the same as mortgage_rent_vs_buy (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_refinance",
            "message": "described almost the same as mortgage_term_comparison (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_refinance",
            "message": "described almost the same as portfolio_glidepath (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_refinance",
            "message": "described almost the same as portfolio_rebalance (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_refinance",
            "message": "described almost the same as retirement_accumulation_projection (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_refinance",
            "message": "described almost the same as retirement_backdoor_roth (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_refinance",
            "message": "described almost the same as retirement_hsa (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_refinance",
            "message": "described almost the same as retirement_qlac (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_refinance",
            "message": "described almost the same as retirement_savings_target (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_refinance",
            "message": "described almost the same as retirement_self_employed (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_refinance",
            "message": "described almost the same as retirement_sepp (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_refinance",
            "message": "described almost the same as retirement_survivor_scenario (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_refinance",
            "message": "described almost the same as retirement_withdrawal_sequencing (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_refinance",
            "message": "described almost the same as roth_vs_traditional (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_refinance",
            "message": "described almost the same as savings_waterfall (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_refinance",
            "message": "described almost the same as tax_asset_location (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_refinance",
            "message": "described almost the same as tax_bracket_room (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_refinance",
            "message": "described almost the same as tax_estimated_tax (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_refinance",
            "message": "described almost the same as tax_filing_status (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_refinance",
            "message": "described almost the same as tax_gain_harvesting (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_refinance",
            "message": "described almost the same as tax_liquidation_schedule (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_refinance",
            "message": "described almost the same as tax_marginal_map (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_refinance",
            "message": "described almost the same as tax_qcd_plan (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_refinance",
            "message": "described almost the same as tax_qsbs_exclusion (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_refinance",
            "message": "described almost the same as tax_s_corp_salary (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_refinance",
            "message": "described almost the same as tax_state_income (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_refinance",
            "message": "described almost the same as tax_survivor_transition (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_refinance",
            "message": "described almost the same as tax_tlh_benefit (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_refinance",
            "message": "described almost the same as tax_w4_checkup (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_refinance",
            "message": "described almost the same as tvm (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_rent_vs_buy",
            "message": "described almost the same as mortgage_term_comparison (83% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_rent_vs_buy",
            "message": "described almost the same as roth_vs_traditional (83% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_rent_vs_buy",
            "message": "described almost the same as tvm (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_term_comparison",
            "message": "described almost the same as portfolio_glidepath (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_term_comparison",
            "message": "described almost the same as portfolio_rebalance (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_term_comparison",
            "message": "described almost the same as retirement_hsa (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_term_comparison",
            "message": "described almost the same as retirement_qlac (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_term_comparison",
            "message": "described almost the same as retirement_sepp (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_term_comparison",
            "message": "described almost the same as savings_waterfall (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_term_comparison",
            "message": "described almost the same as tax_estimated_tax (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "mortgage_term_comparison",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "pension_lump_sum_vs_annuity",
            "message": "described almost the same as roth_vs_traditional (80% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_glidepath",
            "message": "described almost the same as portfolio_rebalance (92% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_glidepath",
            "message": "described almost the same as retirement_accumulation_projection (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_glidepath",
            "message": "described almost the same as retirement_backdoor_roth (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_glidepath",
            "message": "described almost the same as retirement_hsa (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_glidepath",
            "message": "described almost the same as retirement_qlac (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_glidepath",
            "message": "described almost the same as retirement_savings_target (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_glidepath",
            "message": "described almost the same as retirement_self_employed (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_glidepath",
            "message": "described almost the same as retirement_sepp (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_glidepath",
            "message": "described almost the same as retirement_survivor_scenario (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_glidepath",
            "message": "described almost the same as retirement_withdrawal_sequencing (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_glidepath",
            "message": "described almost the same as roth_vs_traditional (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_glidepath",
            "message": "described almost the same as savings_waterfall (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_glidepath",
            "message": "described almost the same as tax_asset_location (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_glidepath",
            "message": "described almost the same as tax_bracket_room (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_glidepath",
            "message": "described almost the same as tax_estimated_tax (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_glidepath",
            "message": "described almost the same as tax_filing_status (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_glidepath",
            "message": "described almost the same as tax_gain_harvesting (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_glidepath",
            "message": "described almost the same as tax_liquidation_schedule (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_glidepath",
            "message": "described almost the same as tax_marginal_map (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_glidepath",
            "message": "described almost the same as tax_qcd_plan (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_glidepath",
            "message": "described almost the same as tax_qsbs_exclusion (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_glidepath",
            "message": "described almost the same as tax_s_corp_salary (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_glidepath",
            "message": "described almost the same as tax_state_income (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_glidepath",
            "message": "described almost the same as tax_survivor_transition (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_glidepath",
            "message": "described almost the same as tax_tlh_benefit (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_glidepath",
            "message": "described almost the same as tax_w4_checkup (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_glidepath",
            "message": "described almost the same as tvm (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_rebalance",
            "message": "described almost the same as retirement_accumulation_projection (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_rebalance",
            "message": "described almost the same as retirement_backdoor_roth (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_rebalance",
            "message": "described almost the same as retirement_hsa (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_rebalance",
            "message": "described almost the same as retirement_qlac (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_rebalance",
            "message": "described almost the same as retirement_savings_target (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_rebalance",
            "message": "described almost the same as retirement_self_employed (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_rebalance",
            "message": "described almost the same as retirement_sepp (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_rebalance",
            "message": "described almost the same as retirement_survivor_scenario (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_rebalance",
            "message": "described almost the same as retirement_withdrawal_sequencing (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_rebalance",
            "message": "described almost the same as roth_vs_traditional (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_rebalance",
            "message": "described almost the same as savings_waterfall (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_rebalance",
            "message": "described almost the same as tax_asset_location (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_rebalance",
            "message": "described almost the same as tax_bracket_room (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_rebalance",
            "message": "described almost the same as tax_estimated_tax (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_rebalance",
            "message": "described almost the same as tax_filing_status (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_rebalance",
            "message": "described almost the same as tax_gain_harvesting (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_rebalance",
            "message": "described almost the same as tax_liquidation_schedule (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_rebalance",
            "message": "described almost the same as tax_marginal_map (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_rebalance",
            "message": "described almost the same as tax_qcd_plan (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_rebalance",
            "message": "described almost the same as tax_qsbs_exclusion (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_rebalance",
            "message": "described almost the same as tax_s_corp_salary (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_rebalance",
            "message": "described almost the same as tax_state_income (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_rebalance",
            "message": "described almost the same as tax_survivor_transition (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_rebalance",
            "message": "described almost the same as tax_tlh_benefit (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_rebalance",
            "message": "described almost the same as tax_w4_checkup (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "portfolio_rebalance",
            "message": "described almost the same as tvm (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_accumulation_projection",
            "message": "described almost the same as retirement_backdoor_roth (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_accumulation_projection",
            "message": "described almost the same as retirement_hsa (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_accumulation_projection",
            "message": "described almost the same as retirement_qlac (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_accumulation_projection",
            "message": "described almost the same as retirement_savings_target (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_accumulation_projection",
            "message": "described almost the same as retirement_self_employed (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_accumulation_projection",
            "message": "described almost the same as retirement_sepp (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_accumulation_projection",
            "message": "described almost the same as retirement_survivor_scenario (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_accumulation_projection",
            "message": "described almost the same as retirement_withdrawal_sequencing (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_accumulation_projection",
            "message": "described almost the same as savings_waterfall (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_accumulation_projection",
            "message": "described almost the same as tax_estimated_tax (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_accumulation_projection",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_backdoor_roth",
            "message": "described almost the same as retirement_hsa (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_backdoor_roth",
            "message": "described almost the same as retirement_qlac (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_backdoor_roth",
            "message": "described almost the same as retirement_savings_target (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_backdoor_roth",
            "message": "described almost the same as retirement_self_employed (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_backdoor_roth",
            "message": "described almost the same as retirement_sepp (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_backdoor_roth",
            "message": "described almost the same as retirement_survivor_scenario (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_backdoor_roth",
            "message": "described almost the same as retirement_withdrawal_sequencing (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_backdoor_roth",
            "message": "described almost the same as roth_vs_traditional (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_backdoor_roth",
            "message": "described almost the same as savings_waterfall (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_backdoor_roth",
            "message": "described almost the same as tax_estimated_tax (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_backdoor_roth",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_hsa",
            "message": "described almost the same as retirement_qlac (92% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_hsa",
            "message": "described almost the same as retirement_savings_target (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_hsa",
            "message": "described almost the same as retirement_self_employed (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_hsa",
            "message": "described almost the same as retirement_sepp (92% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_hsa",
            "message": "described almost the same as retirement_survivor_scenario (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_hsa",
            "message": "described almost the same as retirement_withdrawal_sequencing (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_hsa",
            "message": "described almost the same as roth_vs_traditional (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_hsa",
            "message": "described almost the same as savings_waterfall (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_hsa",
            "message": "described almost the same as tax_asset_location (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_hsa",
            "message": "described almost the same as tax_bracket_room (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_hsa",
            "message": "described almost the same as tax_estimated_tax (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_hsa",
            "message": "described almost the same as tax_filing_status (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_hsa",
            "message": "described almost the same as tax_gain_harvesting (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_hsa",
            "message": "described almost the same as tax_liquidation_schedule (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_hsa",
            "message": "described almost the same as tax_marginal_map (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_hsa",
            "message": "described almost the same as tax_qcd_plan (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_hsa",
            "message": "described almost the same as tax_qsbs_exclusion (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_hsa",
            "message": "described almost the same as tax_s_corp_salary (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_hsa",
            "message": "described almost the same as tax_state_income (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_hsa",
            "message": "described almost the same as tax_survivor_transition (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_hsa",
            "message": "described almost the same as tax_tlh_benefit (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_hsa",
            "message": "described almost the same as tax_w4_checkup (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_hsa",
            "message": "described almost the same as tvm (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_qlac",
            "message": "described almost the same as retirement_savings_target (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_qlac",
            "message": "described almost the same as retirement_self_employed (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_qlac",
            "message": "described almost the same as retirement_sepp (92% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_qlac",
            "message": "described almost the same as retirement_survivor_scenario (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_qlac",
            "message": "described almost the same as retirement_withdrawal_sequencing (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_qlac",
            "message": "described almost the same as roth_vs_traditional (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_qlac",
            "message": "described almost the same as savings_waterfall (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_qlac",
            "message": "described almost the same as tax_asset_location (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_qlac",
            "message": "described almost the same as tax_bracket_room (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_qlac",
            "message": "described almost the same as tax_estimated_tax (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_qlac",
            "message": "described almost the same as tax_filing_status (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_qlac",
            "message": "described almost the same as tax_gain_harvesting (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_qlac",
            "message": "described almost the same as tax_liquidation_schedule (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_qlac",
            "message": "described almost the same as tax_marginal_map (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_qlac",
            "message": "described almost the same as tax_qcd_plan (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_qlac",
            "message": "described almost the same as tax_qsbs_exclusion (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_qlac",
            "message": "described almost the same as tax_s_corp_salary (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_qlac",
            "message": "described almost the same as tax_state_income (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_qlac",
            "message": "described almost the same as tax_survivor_transition (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_qlac",
            "message": "described almost the same as tax_tlh_benefit (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_qlac",
            "message": "described almost the same as tax_w4_checkup (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_qlac",
            "message": "described almost the same as tvm (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_savings_target",
            "message": "described almost the same as retirement_self_employed (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_savings_target",
            "message": "described almost the same as retirement_sepp (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_savings_target",
            "message": "described almost the same as retirement_survivor_scenario (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_savings_target",
            "message": "described almost the same as retirement_withdrawal_sequencing (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_savings_target",
            "message": "described almost the same as savings_waterfall (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_savings_target",
            "message": "described almost the same as tax_estimated_tax (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_savings_target",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_self_employed",
            "message": "described almost the same as retirement_sepp (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_self_employed",
            "message": "described almost the same as retirement_survivor_scenario (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_self_employed",
            "message": "described almost the same as retirement_withdrawal_sequencing (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_self_employed",
            "message": "described almost the same as savings_waterfall (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_self_employed",
            "message": "described almost the same as tax_estimated_tax (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_self_employed",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_sepp",
            "message": "described almost the same as retirement_survivor_scenario (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_sepp",
            "message": "described almost the same as retirement_withdrawal_sequencing (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_sepp",
            "message": "described almost the same as roth_vs_traditional (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_sepp",
            "message": "described almost the same as savings_waterfall (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_sepp",
            "message": "described almost the same as tax_asset_location (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_sepp",
            "message": "described almost the same as tax_bracket_room (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_sepp",
            "message": "described almost the same as tax_estimated_tax (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_sepp",
            "message": "described almost the same as tax_filing_status (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_sepp",
            "message": "described almost the same as tax_gain_harvesting (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_sepp",
            "message": "described almost the same as tax_liquidation_schedule (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_sepp",
            "message": "described almost the same as tax_marginal_map (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_sepp",
            "message": "described almost the same as tax_qcd_plan (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_sepp",
            "message": "described almost the same as tax_qsbs_exclusion (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_sepp",
            "message": "described almost the same as tax_s_corp_salary (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_sepp",
            "message": "described almost the same as tax_state_income (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_sepp",
            "message": "described almost the same as tax_survivor_transition (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_sepp",
            "message": "described almost the same as tax_tlh_benefit (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_sepp",
            "message": "described almost the same as tax_w4_checkup (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_sepp",
            "message": "described almost the same as tvm (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_survivor_scenario",
            "message": "described almost the same as retirement_withdrawal_sequencing (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_survivor_scenario",
            "message": "described almost the same as savings_waterfall (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_survivor_scenario",
            "message": "described almost the same as tax_estimated_tax (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_survivor_scenario",
            "message": "described almost the same as tax_survivor_transition (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_survivor_scenario",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_withdrawal_sequencing",
            "message": "described almost the same as savings_waterfall (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_withdrawal_sequencing",
            "message": "described almost the same as tax_estimated_tax (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "retirement_withdrawal_sequencing",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "roth_vs_traditional",
            "message": "described almost the same as savings_waterfall (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "roth_vs_traditional",
            "message": "described almost the same as tax_estimated_tax (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "roth_vs_traditional",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "savings_waterfall",
            "message": "described almost the same as tax_asset_location (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "savings_waterfall",
            "message": "described almost the same as tax_bracket_room (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "savings_waterfall",
            "message": "described almost the same as tax_estimated_tax (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "savings_waterfall",
            "message": "described almost the same as tax_filing_status (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "savings_waterfall",
            "message": "described almost the same as tax_gain_harvesting (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "savings_waterfall",
            "message": "described almost the same as tax_liquidation_schedule (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "savings_waterfall",
            "message": "described almost the same as tax_marginal_map (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "savings_waterfall",
            "message": "described almost the same as tax_qcd_plan (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "savings_waterfall",
            "message": "described almost the same as tax_qsbs_exclusion (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "savings_waterfall",
            "message": "described almost the same as tax_s_corp_salary (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "savings_waterfall",
            "message": "described almost the same as tax_state_income (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "savings_waterfall",
            "message": "described almost the same as tax_survivor_transition (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "savings_waterfall",
            "message": "described almost the same as tax_tlh_benefit (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "savings_waterfall",
            "message": "described almost the same as tax_w4_checkup (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "savings_waterfall",
            "message": "described almost the same as tvm (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "social_security_couple_claim",
            "message": "described almost the same as tax_social_security_benefits (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "social_security_couple_claim",
            "message": "described almost the same as tvm (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_asset_location",
            "message": "described almost the same as tax_bracket_room (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_asset_location",
            "message": "described almost the same as tax_estimated_tax (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_asset_location",
            "message": "described almost the same as tax_filing_status (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_asset_location",
            "message": "described almost the same as tax_gain_harvesting (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_asset_location",
            "message": "described almost the same as tax_liquidation_schedule (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_asset_location",
            "message": "described almost the same as tax_marginal_map (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_asset_location",
            "message": "described almost the same as tax_qcd_plan (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_asset_location",
            "message": "described almost the same as tax_qsbs_exclusion (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_asset_location",
            "message": "described almost the same as tax_s_corp_salary (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_asset_location",
            "message": "described almost the same as tax_social_security_benefits (83% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_asset_location",
            "message": "described almost the same as tax_state_income (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_asset_location",
            "message": "described almost the same as tax_survivor_transition (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_asset_location",
            "message": "described almost the same as tax_tlh_benefit (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_asset_location",
            "message": "described almost the same as tax_w4_checkup (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_asset_location",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_bracket_room",
            "message": "described almost the same as tax_estimated_tax (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_bracket_room",
            "message": "described almost the same as tax_filing_status (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_bracket_room",
            "message": "described almost the same as tax_gain_harvesting (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_bracket_room",
            "message": "described almost the same as tax_liquidation_schedule (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_bracket_room",
            "message": "described almost the same as tax_marginal_map (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_bracket_room",
            "message": "described almost the same as tax_qcd_plan (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_bracket_room",
            "message": "described almost the same as tax_qsbs_exclusion (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_bracket_room",
            "message": "described almost the same as tax_s_corp_salary (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_bracket_room",
            "message": "described almost the same as tax_social_security_benefits (83% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_bracket_room",
            "message": "described almost the same as tax_state_income (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_bracket_room",
            "message": "described almost the same as tax_survivor_transition (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_bracket_room",
            "message": "described almost the same as tax_tlh_benefit (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_bracket_room",
            "message": "described almost the same as tax_w4_checkup (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_bracket_room",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_estimated_tax",
            "message": "described almost the same as tax_filing_status (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_estimated_tax",
            "message": "described almost the same as tax_gain_harvesting (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_estimated_tax",
            "message": "described almost the same as tax_liquidation_schedule (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_estimated_tax",
            "message": "described almost the same as tax_marginal_map (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_estimated_tax",
            "message": "described almost the same as tax_qcd_plan (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_estimated_tax",
            "message": "described almost the same as tax_qsbs_exclusion (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_estimated_tax",
            "message": "described almost the same as tax_s_corp_salary (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_estimated_tax",
            "message": "described almost the same as tax_social_security_benefits (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_estimated_tax",
            "message": "described almost the same as tax_state_income (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_estimated_tax",
            "message": "described almost the same as tax_survivor_transition (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_estimated_tax",
            "message": "described almost the same as tax_tlh_benefit (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_estimated_tax",
            "message": "described almost the same as tax_w4_checkup (89% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_estimated_tax",
            "message": "described almost the same as tvm (88% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_filing_status",
            "message": "described almost the same as tax_gain_harvesting (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_filing_status",
            "message": "described almost the same as tax_liquidation_schedule (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_filing_status",
            "message": "described almost the same as tax_marginal_map (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_filing_status",
            "message": "described almost the same as tax_qcd_plan (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_filing_status",
            "message": "described almost the same as tax_qsbs_exclusion (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_filing_status",
            "message": "described almost the same as tax_s_corp_salary (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_filing_status",
            "message": "described almost the same as tax_social_security_benefits (83% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_filing_status",
            "message": "described almost the same as tax_state_income (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_filing_status",
            "message": "described almost the same as tax_survivor_transition (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_filing_status",
            "message": "described almost the same as tax_tlh_benefit (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_filing_status",
            "message": "described almost the same as tax_w4_checkup (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_filing_status",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_gain_harvesting",
            "message": "described almost the same as tax_liquidation_schedule (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_gain_harvesting",
            "message": "described almost the same as tax_marginal_map (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_gain_harvesting",
            "message": "described almost the same as tax_qcd_plan (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_gain_harvesting",
            "message": "described almost the same as tax_qsbs_exclusion (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_gain_harvesting",
            "message": "described almost the same as tax_s_corp_salary (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_gain_harvesting",
            "message": "described almost the same as tax_social_security_benefits (83% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_gain_harvesting",
            "message": "described almost the same as tax_state_income (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_gain_harvesting",
            "message": "described almost the same as tax_survivor_transition (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_gain_harvesting",
            "message": "described almost the same as tax_tlh_benefit (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_gain_harvesting",
            "message": "described almost the same as tax_w4_checkup (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_gain_harvesting",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_liquidation_schedule",
            "message": "described almost the same as tax_marginal_map (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_liquidation_schedule",
            "message": "described almost the same as tax_qcd_plan (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_liquidation_schedule",
            "message": "described almost the same as tax_qsbs_exclusion (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_liquidation_schedule",
            "message": "described almost the same as tax_s_corp_salary (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_liquidation_schedule",
            "message": "described almost the same as tax_social_security_benefits (83% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_liquidation_schedule",
            "message": "described almost the same as tax_state_income (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_liquidation_schedule",
            "message": "described almost the same as tax_survivor_transition (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_liquidation_schedule",
            "message": "described almost the same as tax_tlh_benefit (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_liquidation_schedule",
            "message": "described almost the same as tax_w4_checkup (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_liquidation_schedule",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_marginal_map",
            "message": "described almost the same as tax_qcd_plan (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_marginal_map",
            "message": "described almost the same as tax_qsbs_exclusion (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_marginal_map",
            "message": "described almost the same as tax_s_corp_salary (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_marginal_map",
            "message": "described almost the same as tax_social_security_benefits (83% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_marginal_map",
            "message": "described almost the same as tax_state_income (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_marginal_map",
            "message": "described almost the same as tax_survivor_transition (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_marginal_map",
            "message": "described almost the same as tax_tlh_benefit (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_marginal_map",
            "message": "described almost the same as tax_w4_checkup (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_marginal_map",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_qcd_plan",
            "message": "described almost the same as tax_qsbs_exclusion (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_qcd_plan",
            "message": "described almost the same as tax_s_corp_salary (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_qcd_plan",
            "message": "described almost the same as tax_social_security_benefits (83% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_qcd_plan",
            "message": "described almost the same as tax_state_income (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_qcd_plan",
            "message": "described almost the same as tax_survivor_transition (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_qcd_plan",
            "message": "described almost the same as tax_tlh_benefit (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_qcd_plan",
            "message": "described almost the same as tax_w4_checkup (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_qcd_plan",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_qsbs_exclusion",
            "message": "described almost the same as tax_s_corp_salary (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_qsbs_exclusion",
            "message": "described almost the same as tax_social_security_benefits (83% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_qsbs_exclusion",
            "message": "described almost the same as tax_state_income (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_qsbs_exclusion",
            "message": "described almost the same as tax_survivor_transition (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_qsbs_exclusion",
            "message": "described almost the same as tax_tlh_benefit (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_qsbs_exclusion",
            "message": "described almost the same as tax_w4_checkup (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_qsbs_exclusion",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_s_corp_salary",
            "message": "described almost the same as tax_social_security_benefits (83% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_s_corp_salary",
            "message": "described almost the same as tax_state_income (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_s_corp_salary",
            "message": "described almost the same as tax_survivor_transition (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_s_corp_salary",
            "message": "described almost the same as tax_tlh_benefit (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_s_corp_salary",
            "message": "described almost the same as tax_w4_checkup (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_s_corp_salary",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_social_security_benefits",
            "message": "described almost the same as tax_state_income (83% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_social_security_benefits",
            "message": "described almost the same as tax_survivor_transition (83% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_social_security_benefits",
            "message": "described almost the same as tax_tlh_benefit (83% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_social_security_benefits",
            "message": "described almost the same as tax_w4_checkup (83% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_social_security_benefits",
            "message": "described almost the same as tvm (82% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_state_income",
            "message": "described almost the same as tax_survivor_transition (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_state_income",
            "message": "described almost the same as tax_tlh_benefit (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_state_income",
            "message": "described almost the same as tax_w4_checkup (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_state_income",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_survivor_transition",
            "message": "described almost the same as tax_tlh_benefit (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_survivor_transition",
            "message": "described almost the same as tax_w4_checkup (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_survivor_transition",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_tlh_benefit",
            "message": "described almost the same as tax_w4_checkup (86% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_tlh_benefit",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC21",
            "severity": "warn",
            "tool": "tax_w4_checkup",
            "message": "described almost the same as tvm (85% of the same words)",
            "fix": "Say in each description when to use it instead of the other."
          },
          {
            "rule": "TC23",
            "severity": "warn",
            "message": "76 tools",
            "fix": "Offer a smaller default toolset and let clients opt into the rest."
          },
          {
            "rule": "TC24",
            "severity": "note",
            "message": "76 of 76 tools have no outputSchema",
            "fix": "Declare outputSchema for tools that return structured data, and return structuredContent that matches it."
          }
        ]
      },
      "checkedAt": "2026-10-04T22:23:30Z",
      "count": 76,
      "note": "answered without the initialize handshake",
      "schemaTokens": 25259,
      "status": "ok",
      "tools": [
        {
          "name": "annuity",
          "description": "Annuity. Numeratica POST /v1/annuity — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "age": {
                "type": "integer"
              },
              "assumed_rate": {
                "type": "number"
              },
              "payout_type": {
                "type": "string"
              },
              "period_certain_years": {
                "type": "integer"
              },
              "premium": {
                "type": "number"
              },
              "second_age": {
                "type": "integer"
              },
              "second_sex": {
                "type": "string"
              },
              "sex": {
                "type": "string"
              },
              "start_age": {
                "type": "integer"
              },
              "survivor_pct": {
                "type": "number"
              },
              "target_income": {
                "type": "number"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "benefits_dependent_care",
          "description": "Benefits dependent care. Numeratica POST /v1/benefits/dependent-care — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "dependent_care_expenses": {
                "type": "number"
              },
              "filing_status": {
                "type": "string"
              },
              "fsa_contribution_limit": {
                "type": "number"
              },
              "marginal_tax_rate": {
                "type": "number"
              },
              "ordinary_income": {
                "type": "number"
              },
              "qualifying_count": {
                "type": "integer"
              },
              "tax_year": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "benefits_health_plan",
          "description": "Benefits health plan. Numeratica POST /v1/benefits/health-plan — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "employer_hsa_seed": {
                "type": "number"
              },
              "expected_medical_spend": {
                "type": "number"
              },
              "hdhp": {
                "additionalProperties": false,
                "properties": {
                  "coinsurance": {
                    "type": "number"
                  },
                  "deductible": {
                    "type": "number"
                  },
                  "oop_max": {
                    "type": "number"
                  },
                  "premium": {
                    "type": "number"
                  }
                },
                "type": "object"
              },
              "hsa_contribution": {
                "type": "number"
              },
              "marginal_tax_rate": {
                "type": "number"
              },
              "ppo": {
                "additionalProperties": false,
                "properties": {
                  "coinsurance": {
                    "type": "number"
                  },
                  "deductible": {
                    "type": "number"
                  },
                  "oop_max": {
                    "type": "number"
                  },
                  "premium": {
                    "type": "number"
                  }
                },
                "type": "object"
              },
              "ppo_fsa_contribution": {
                "type": "number"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "capital_market_assumptions",
          "description": "Capital market assumptions. Numeratica POST /v1/capital-market-assumptions — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "assets": {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "expected_return": {
                      "type": "number"
                    },
                    "name": {
                      "type": "string"
                    },
                    "volatility": {
                      "type": "number"
                    },
                    "weight": {
                      "type": "number"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "correlation": {
                "items": {
                  "items": {
                    "type": "number"
                  },
                  "type": "array"
                },
                "type": "array"
              },
              "default_correlation": {
                "type": "number"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "cashflow_npv_irr",
          "description": "Cashflow npv irr. Numeratica POST /v1/cashflow/npv-irr — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "cashflows": {
                "items": {
                  "type": "number"
                },
                "type": "array"
              },
              "dated_cashflows": {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "amount": {
                      "type": "number"
                    },
                    "date": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "rate": {
                "type": "number"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "college_savings",
          "description": "College savings. Numeratica POST /v1/college-savings — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "annual_cost_today": {
                "type": "number"
              },
              "college_start_age": {
                "type": "integer"
              },
              "current_child_age": {
                "type": "integer"
              },
              "current_savings": {
                "type": "number"
              },
              "expected_return": {
                "type": "number"
              },
              "tuition_inflation": {
                "type": "number"
              },
              "years_in_college": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "contribution_limits",
          "description": "Contribution limits. Numeratica POST /v1/contribution-limits — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "age": {
                "type": "integer"
              },
              "compensation": {
                "type": "number"
              },
              "elective_deferral_ytd": {
                "type": "number"
              },
              "employer_match_cap_pct": {
                "type": "number"
              },
              "employer_match_rate": {
                "type": "number"
              },
              "hsa_contribution_ytd": {
                "type": "number"
              },
              "hsa_coverage": {
                "type": "string"
              },
              "ira_contribution_ytd": {
                "type": "number"
              },
              "prior_year_wages": {
                "type": "number"
              },
              "tax_year": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "debt_payoff",
          "description": "Debt payoff. Numeratica POST /v1/debt-payoff — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "debts": {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "annual_rate": {
                      "type": "number"
                    },
                    "balance": {
                      "type": "number"
                    },
                    "label": {
                      "type": "string"
                    },
                    "minimum_payment": {
                      "type": "number"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "monthly_budget": {
                "type": "number"
              },
              "strategy": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "debt_vs_invest",
          "description": "Debt vs invest. Numeratica POST /v1/debt-vs-invest — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "annual_fee_rate": {
                "type": "number"
              },
              "expected_return": {
                "type": "number"
              },
              "extra_monthly": {
                "type": "number"
              },
              "horizon_years": {
                "type": "integer"
              },
              "interest_deductible": {
                "type": "boolean"
              },
              "loan_annual_rate": {
                "type": "number"
              },
              "loan_balance": {
                "type": "number"
              },
              "loan_minimum_payment": {
                "type": "number"
              },
              "marginal_rate": {
                "type": "number"
              },
              "num_simulations": {
                "type": "integer"
              },
              "return_volatility": {
                "type": "number"
              },
              "seed": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "education_529_to_roth",
          "description": "Education 529 to roth. Numeratica POST /v1/education/529-to-roth — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "account_age_years": {
                "type": "integer"
              },
              "balance": {
                "type": "number"
              },
              "beneficiary_age": {
                "type": "integer"
              },
              "beneficiary_earned_income": {
                "type": "number"
              },
              "lifetime_rolled_already": {
                "type": "number"
              },
              "other_ira_contributions": {
                "type": "number"
              },
              "recent_contributions": {
                "type": "number"
              },
              "year": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "education_aid_estimate",
          "description": "Education aid estimate. Numeratica POST /v1/education/aid-estimate — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "award_year": {
                "type": "integer"
              },
              "cost_of_attendance": {
                "type": "number"
              },
              "family_size": {
                "type": "integer"
              },
              "parent2_earned_income": {
                "type": "number"
              },
              "parent_agi": {
                "type": "number"
              },
              "parent_business_farm_worth": {
                "type": "number"
              },
              "parent_cash_savings": {
                "type": "number"
              },
              "parent_earned_income": {
                "type": "number"
              },
              "parent_filing_status": {
                "type": "string"
              },
              "parent_income_tax_paid": {
                "type": "number"
              },
              "parent_investments_net": {
                "type": "number"
              },
              "parent_untaxed_income": {
                "type": "number"
              },
              "single_parent": {
                "type": "boolean"
              },
              "student_agi": {
                "type": "number"
              },
              "student_assets": {
                "type": "number"
              },
              "student_earned_income": {
                "type": "number"
              },
              "student_income_tax_paid": {
                "type": "number"
              },
              "student_untaxed_income": {
                "type": "number"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "education_student_loan",
          "description": "Education student loan. Numeratica POST /v1/education/student-loan — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "agi": {
                "type": "number"
              },
              "dependents": {
                "type": "integer"
              },
              "family_size": {
                "type": "integer"
              },
              "guideline_year": {
                "type": "integer"
              },
              "interest_rate": {
                "type": "number"
              },
              "loan_balance": {
                "type": "number"
              },
              "loan_before_2014": {
                "type": "boolean"
              },
              "pursuing_pslf": {
                "type": "boolean"
              },
              "standard_term_months": {
                "type": "integer"
              },
              "state": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "education_student_loan_refi",
          "description": "Education student loan refi. Numeratica POST /v1/education/student-loan-refi — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "discount_rate": {
                "type": "number"
              },
              "federal": {
                "additionalProperties": false,
                "properties": {
                  "agi": {
                    "type": "number"
                  },
                  "dependents": {
                    "type": "integer"
                  },
                  "family_size": {
                    "type": "integer"
                  },
                  "guideline_year": {
                    "type": "integer"
                  },
                  "interest_rate": {
                    "type": "number"
                  },
                  "loan_balance": {
                    "type": "number"
                  },
                  "loan_before_2014": {
                    "type": "boolean"
                  },
                  "pursuing_pslf": {
                    "type": "boolean"
                  },
                  "standard_term_months": {
                    "type": "integer"
                  },
                  "state": {
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "refi_rate": {
                "type": "number"
              },
              "refi_term_months": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "equity_comp_espp",
          "description": "Equity comp espp. Numeratica POST /v1/equity-comp/espp — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "discount_pct": {
                "type": "number"
              },
              "offering_date_price": {
                "type": "number"
              },
              "purchase_date_price": {
                "type": "number"
              },
              "sale_price": {
                "type": "number"
              },
              "shares": {
                "type": "number"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "equity_comp_iso",
          "description": "Equity comp iso. Numeratica POST /v1/equity-comp/iso — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "filing_status": {
                "type": "string"
              },
              "fmv_at_exercise": {
                "type": "number"
              },
              "ordinary_income": {
                "type": "number"
              },
              "other_amt_preference_items": {
                "type": "number"
              },
              "sale_price": {
                "type": "number"
              },
              "shares": {
                "type": "number"
              },
              "strike_price": {
                "type": "number"
              },
              "tax_year": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "equity_comp_iso_amt_capacity",
          "description": "Equity comp iso amt capacity. Numeratica POST /v1/equity-comp/iso-amt-capacity — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "filing_status": {
                "type": "string"
              },
              "fmv_at_exercise": {
                "type": "number"
              },
              "ordinary_income": {
                "type": "number"
              },
              "other_amt_preference_items": {
                "type": "number"
              },
              "strike_price": {
                "type": "number"
              },
              "tax_year": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "equity_comp_iso_schedule",
          "description": "Equity comp iso schedule. Numeratica POST /v1/equity-comp/iso-schedule — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "annual_amt_budget": {
                "type": "number"
              },
              "annual_fmv_growth": {
                "type": "number"
              },
              "annual_income_growth": {
                "type": "number"
              },
              "annual_ordinary_income": {
                "type": "number"
              },
              "filing_status": {
                "type": "string"
              },
              "fmv_at_start": {
                "type": "number"
              },
              "horizon_years": {
                "type": "integer"
              },
              "strike_price": {
                "type": "number"
              },
              "tax_year": {
                "type": "integer"
              },
              "total_shares": {
                "type": "number"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "equity_comp_nso",
          "description": "Equity comp nso. Numeratica POST /v1/equity-comp/nso — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "filing_status": {
                "type": "string"
              },
              "fmv_at_exercise": {
                "type": "number"
              },
              "other_ordinary_income": {
                "type": "number"
              },
              "shares": {
                "type": "number"
              },
              "strike_price": {
                "type": "number"
              },
              "tax_year": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "equity_comp_nua",
          "description": "Equity comp nua. Numeratica POST /v1/equity-comp/nua — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "cost_basis": {
                "type": "number"
              },
              "discount_rate": {
                "type": "number"
              },
              "filing_status": {
                "type": "string"
              },
              "growth_rate": {
                "type": "number"
              },
              "ltcg_rate": {
                "type": "number"
              },
              "marginal_ordinary_rate": {
                "type": "number"
              },
              "market_value": {
                "type": "number"
              },
              "sale_price": {
                "type": "number"
              },
              "tax_year": {
                "type": "integer"
              },
              "years_to_sale": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "equity_comp_rsu",
          "description": "Equity comp rsu. Numeratica POST /v1/equity-comp/rsu — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "filing_status": {
                "type": "string"
              },
              "fmv_at_vest": {
                "type": "number"
              },
              "other_ordinary_income": {
                "type": "number"
              },
              "shares": {
                "type": "number"
              },
              "tax_year": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "equity_comp_section_83b",
          "description": "Equity comp section 83b. Numeratica POST /v1/equity-comp/section-83b — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "filing_status": {
                "type": "string"
              },
              "fmv_at_grant": {
                "type": "number"
              },
              "fmv_at_vest": {
                "type": "number"
              },
              "other_ordinary_income": {
                "type": "number"
              },
              "price_paid": {
                "type": "number"
              },
              "shares": {
                "type": "number"
              },
              "tax_year": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "goal_funding",
          "description": "Goal funding. Numeratica POST /v1/goal-funding — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "annual_return": {
                "type": "number"
              },
              "contributions_at_beginning": {
                "type": "boolean"
              },
              "current_savings": {
                "type": "number"
              },
              "periods_per_year": {
                "type": "integer"
              },
              "target_amount": {
                "type": "number"
              },
              "years": {
                "type": "number"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "healthcare_aca_optimize",
          "description": "Healthcare aca optimize. Numeratica POST /v1/healthcare/aca-optimize — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "age": {
                "type": "integer"
              },
              "base_income": {
                "type": "number"
              },
              "benchmark_annual_premium": {
                "type": "number"
              },
              "deferred_balance": {
                "type": "number"
              },
              "filing_status": {
                "type": "string"
              },
              "household_size": {
                "type": "integer"
              },
              "roth_balance": {
                "type": "number"
              },
              "spending_need": {
                "type": "number"
              },
              "state": {
                "type": "string"
              },
              "tax_exempt_interest": {
                "type": "number"
              },
              "tax_year": {
                "type": "integer"
              },
              "taxable_balance": {
                "type": "number"
              },
              "taxable_gain_fraction": {
                "type": "number"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "healthcare_costs",
          "description": "Healthcare costs. Numeratica POST /v1/healthcare-costs — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "age": {
                "type": "integer"
              },
              "benchmark_annual_premium": {
                "type": "number"
              },
              "coverage_year": {
                "type": "integer"
              },
              "filing_status": {
                "type": "string"
              },
              "household_size": {
                "type": "integer"
              },
              "magi": {
                "type": "number"
              },
              "state": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "inflation_adjust",
          "description": "Inflation adjust. Numeratica POST /v1/inflation-adjust — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "amount": {
                "type": "number"
              },
              "annual_rate": {
                "type": "number"
              },
              "direction": {
                "type": "string"
              },
              "years": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "inherited_ira",
          "description": "Inherited ira. Numeratica POST /v1/inherited-ira — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "account_growth_rate": {
                "type": "number"
              },
              "annual_rmd_floor": {
                "type": "number"
              },
              "filing_status": {
                "type": "string"
              },
              "inherited_balance": {
                "type": "number"
              },
              "other_income": {
                "type": "number"
              },
              "other_income_schedule": {
                "items": {
                  "type": "number"
                },
                "type": "array"
              },
              "target_bracket": {
                "type": "number"
              },
              "tax_year": {
                "type": "integer"
              },
              "years": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "insurance_disability_needs",
          "description": "Insurance disability needs. Numeratica POST /v1/insurance/disability-needs — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "employer_group_fraction": {
                "type": "number"
              },
              "employer_group_monthly_max": {
                "type": "number"
              },
              "employer_paid_premium": {
                "type": "boolean"
              },
              "essential_monthly_expenses": {
                "type": "number"
              },
              "gross_annual_income": {
                "type": "number"
              },
              "individual_monthly_benefit": {
                "type": "number"
              },
              "marginal_tax_rate": {
                "type": "number"
              },
              "ssdi_monthly_benefit": {
                "type": "number"
              },
              "ssdi_offsets_group": {
                "type": "boolean"
              },
              "target_replacement_fraction": {
                "type": "number"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "insurance_life_needs",
          "description": "Insurance life needs. Numeratica POST /v1/insurance/life-needs — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "annual_income": {
                "type": "number"
              },
              "debts": {
                "type": "number"
              },
              "education_fund": {
                "type": "number"
              },
              "effective_tax_rate": {
                "type": "number"
              },
              "emergency_fund": {
                "type": "number"
              },
              "existing_assets": {
                "type": "number"
              },
              "existing_life_insurance": {
                "type": "number"
              },
              "final_expenses": {
                "type": "number"
              },
              "income_replace_fraction": {
                "type": "number"
              },
              "income_replace_years": {
                "type": "integer"
              },
              "mortgage_balance": {
                "type": "number"
              },
              "real_return": {
                "type": "number"
              },
              "self_consumption_fraction": {
                "type": "number"
              },
              "survivor_annual_income": {
                "type": "number"
              },
              "years_to_retirement": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "insurance_long_term_care",
          "description": "Insurance long term care. Numeratica POST /v1/insurance/long-term-care — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "annual_care_cost_today": {
                "type": "number"
              },
              "annual_premium": {
                "type": "number"
              },
              "care_cost_inflation": {
                "type": "number"
              },
              "care_duration_years": {
                "type": "integer"
              },
              "care_start_age": {
                "type": "integer"
              },
              "current_age": {
                "type": "integer"
              },
              "discount_rate": {
                "type": "number"
              },
              "policy_annual_benefit": {
                "type": "number"
              },
              "policy_benefit_inflation": {
                "type": "number"
              },
              "policy_benefit_years": {
                "type": "integer"
              },
              "premium_years": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "ira_eligibility",
          "description": "Ira eligibility. Numeratica POST /v1/ira-eligibility — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "age": {
                "type": "integer"
              },
              "compensation": {
                "type": "number"
              },
              "covered_by_workplace_plan": {
                "type": "boolean"
              },
              "elective_deferral": {
                "type": "number"
              },
              "employer_contributions": {
                "type": "number"
              },
              "filing_status": {
                "type": "string"
              },
              "magi": {
                "type": "number"
              },
              "plan_allows_mega_backdoor": {
                "type": "boolean"
              },
              "spouse_covered": {
                "type": "boolean"
              },
              "tax_year": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "loan_amortization",
          "description": "Loan amortization. Numeratica POST /v1/loan/amortization — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "annual_rate": {
                "type": "number"
              },
              "extra_monthly_payment": {
                "type": "number"
              },
              "include_schedule": {
                "type": "boolean"
              },
              "principal": {
                "type": "number"
              },
              "term_months": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "longevity",
          "description": "Longevity. Numeratica POST /v1/longevity — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "age": {
                "type": "integer"
              },
              "health_adjustment": {
                "type": "number"
              },
              "second_age": {
                "type": "integer"
              },
              "second_health_adjustment": {
                "type": "number"
              },
              "second_sex": {
                "type": "string"
              },
              "sex": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "medicare_irmaa",
          "description": "Medicare IRMAA: Part B and Part D income-related monthly adjustment by tier, plus headroom to the next tier. MAGI uses the 2-year lookback; filing_status is single/mfj/mfs.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "filing_status": {
                "type": "string"
              },
              "irmaa_year": {
                "type": "integer"
              },
              "magi": {
                "type": "number"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "medicare_late_enrollment_penalty",
          "description": "Medicare late enrollment penalty. Numeratica POST /v1/medicare/late-enrollment-penalty — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "part_b_months_late": {
                "type": "integer"
              },
              "part_d_months_late": {
                "type": "integer"
              },
              "projection_years": {
                "type": "integer"
              },
              "year": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "mortgage_affordability",
          "description": "Mortgage affordability. Numeratica POST /v1/mortgage/affordability — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "annual_income": {
                "type": "number"
              },
              "back_end_dti": {
                "type": "number"
              },
              "down_payment": {
                "type": "number"
              },
              "front_end_dti": {
                "type": "number"
              },
              "hoa_monthly": {
                "type": "number"
              },
              "insurance_rate": {
                "type": "number"
              },
              "interest_rate": {
                "type": "number"
              },
              "monthly_debts": {
                "type": "number"
              },
              "pmi_rate": {
                "type": "number"
              },
              "property_tax_rate": {
                "type": "number"
              },
              "term_months": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "mortgage_points",
          "description": "Mortgage points. Numeratica POST /v1/mortgage/points — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "base_rate": {
                "type": "number"
              },
              "buydown_rate": {
                "type": "number"
              },
              "loan_amount": {
                "type": "number"
              },
              "points": {
                "type": "number"
              },
              "term_months": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "mortgage_refinance",
          "description": "Mortgage refinance. Numeratica POST /v1/mortgage/refinance — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "closing_costs": {
                "type": "number"
              },
              "current_balance": {
                "type": "number"
              },
              "current_rate": {
                "type": "number"
              },
              "current_remaining_months": {
                "type": "integer"
              },
              "new_rate": {
                "type": "number"
              },
              "new_term_months": {
                "type": "integer"
              },
              "roll_in_closing_costs": {
                "type": "boolean"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "mortgage_rent_vs_buy",
          "description": "Mortgage rent vs buy. Numeratica POST /v1/mortgage/rent-vs-buy — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "closing_cost_rate": {
                "type": "number"
              },
              "down_payment": {
                "type": "number"
              },
              "hoa_monthly": {
                "type": "number"
              },
              "holding_period_months": {
                "type": "integer"
              },
              "home_appreciation": {
                "type": "number"
              },
              "home_price": {
                "type": "number"
              },
              "inflation": {
                "type": "number"
              },
              "insurance_rate": {
                "type": "number"
              },
              "investment_return": {
                "type": "number"
              },
              "loan_term_months": {
                "type": "integer"
              },
              "maintenance_rate": {
                "type": "number"
              },
              "monthly_rent": {
                "type": "number"
              },
              "mortgage_rate": {
                "type": "number"
              },
              "property_tax_rate": {
                "type": "number"
              },
              "rent_growth": {
                "type": "number"
              },
              "renters_insurance_monthly": {
                "type": "number"
              },
              "selling_cost_rate": {
                "type": "number"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "mortgage_term_comparison",
          "description": "Mortgage term comparison. Numeratica POST /v1/mortgage/term-comparison — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "investment_return": {
                "type": "number"
              },
              "loan_amount": {
                "type": "number"
              },
              "long_rate": {
                "type": "number"
              },
              "long_term_months": {
                "type": "integer"
              },
              "short_rate": {
                "type": "number"
              },
              "short_term_months": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "pension_lump_sum_vs_annuity",
          "description": "Pension lump sum vs annuity. Numeratica POST /v1/pension/lump-sum-vs-annuity — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "cola_rate": {
                "type": "number"
              },
              "current_age": {
                "type": "integer"
              },
              "discount_rate": {
                "type": "number"
              },
              "end_age": {
                "type": "integer"
              },
              "lump_sum_offer": {
                "type": "number"
              },
              "monthly_pension": {
                "type": "number"
              },
              "survivor_end_age": {
                "type": "integer"
              },
              "survivor_pct": {
                "type": "number"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "portfolio_glidepath",
          "description": "Portfolio glidepath. Numeratica POST /v1/portfolio/glidepath — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "current_age": {
                "type": "integer"
              },
              "end_age": {
                "type": "integer"
              },
              "end_equity": {
                "type": "number"
              },
              "equity_ceiling": {
                "type": "number"
              },
              "equity_floor": {
                "type": "number"
              },
              "final_age": {
                "type": "integer"
              },
              "final_equity": {
                "type": "number"
              },
              "glide_type": {
                "type": "string"
              },
              "method": {
                "type": "string"
              },
              "retirement_age": {
                "type": "integer"
              },
              "rule_base": {
                "type": "number"
              },
              "start_equity": {
                "type": "number"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "portfolio_rebalance",
          "description": "Portfolio rebalance. Numeratica POST /v1/portfolio/rebalance — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "band": {
                "type": "number"
              },
              "holdings": {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "cost_basis": {
                      "type": "number"
                    },
                    "label": {
                      "type": "string"
                    },
                    "target_weight": {
                      "type": "number"
                    },
                    "value": {
                      "type": "number"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "new_contribution": {
                "type": "number"
              },
              "tax_aware": {
                "type": "boolean"
              },
              "withdrawal": {
                "type": "number"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "retirement_accumulation_projection",
          "description": "Retirement accumulation projection. Numeratica POST /v1/retirement/accumulation-projection — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "accounts": {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "annual_contribution": {
                      "type": "number"
                    },
                    "contribution_cap": {
                      "type": "number"
                    },
                    "current_balance": {
                      "type": "number"
                    },
                    "name": {
                      "type": "string"
                    },
                    "receives_match": {
                      "type": "boolean"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "annual_fee_rate": {
                "type": "number"
              },
              "current_age": {
                "type": "integer"
              },
              "employer_match_limit": {
                "type": "number"
              },
              "employer_match_rate": {
                "type": "number"
              },
              "escalation_rate": {
                "type": "number"
              },
              "expected_return": {
                "type": "number"
              },
              "glide_path": {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "age": {
                      "type": "integer"
                    },
                    "expected_return": {
                      "type": "number"
                    },
                    "return_volatility": {
                      "type": "number"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "inflation": {
                "type": "number"
              },
              "num_simulations": {
                "type": "integer"
              },
              "return_volatility": {
                "type": "number"
              },
              "seed": {
                "type": "integer"
              },
              "years": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "retirement_backdoor_roth",
          "description": "Retirement backdoor roth. Numeratica POST /v1/retirement/backdoor-roth — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "age": {
                "type": "integer"
              },
              "conversion_amount": {
                "type": "number"
              },
              "elective_deferrals": {
                "type": "number"
              },
              "employer_contributions": {
                "type": "number"
              },
              "existing_basis": {
                "type": "number"
              },
              "filing_status": {
                "type": "string"
              },
              "nondeductible_contribution": {
                "type": "number"
              },
              "plan_after_tax_limit": {
                "type": "number"
              },
              "pretax_ira_balance": {
                "type": "number"
              },
              "tax_year": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "retirement_hsa",
          "description": "Retirement hsa. Numeratica POST /v1/retirement/hsa — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "age": {
                "type": "integer"
              },
              "annual_contribution": {
                "type": "number"
              },
              "coverage": {
                "type": "string"
              },
              "current_balance": {
                "type": "number"
              },
              "expected_return": {
                "type": "number"
              },
              "marginal_rate": {
                "type": "number"
              },
              "months_eligible": {
                "type": "integer"
              },
              "tax_year": {
                "type": "integer"
              },
              "use_last_month_rule": {
                "type": "boolean"
              },
              "years": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "retirement_monte_carlo",
          "description": "Monte Carlo retirement projection: probability of not running out of money over a horizon, with percentile balance bands. Deterministic given a seed (returned in the result).",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "annual_contribution": {
                "type": "number"
              },
              "annual_fee_rate": {
                "type": "number"
              },
              "annual_spending": {
                "type": "number"
              },
              "assets": {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "class": {
                      "type": "string"
                    },
                    "expected_return": {
                      "type": "number"
                    },
                    "return_volatility": {
                      "type": "number"
                    },
                    "weight": {
                      "type": "number"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "correlations": {
                "items": {
                  "items": {
                    "type": "number"
                  },
                  "type": "array"
                },
                "type": "array"
              },
              "current_age": {
                "type": "integer"
              },
              "current_balance": {
                "type": "number"
              },
              "end_age": {
                "type": "integer"
              },
              "expected_return": {
                "type": "number"
              },
              "glide_path": {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "age": {
                      "type": "integer"
                    },
                    "expected_return": {
                      "type": "number"
                    },
                    "return_volatility": {
                      "type": "number"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "guaranteed_income": {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "annual_amount": {
                      "type": "number"
                    },
                    "cola": {
                      "type": "boolean"
                    },
                    "end_age": {
                      "type": "integer"
                    },
                    "start_age": {
                      "type": "integer"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "inflation": {
                "type": "number"
              },
              "num_simulations": {
                "type": "integer"
              },
              "rebalance": {
                "type": "boolean"
              },
              "retirement_age": {
                "type": "integer"
              },
              "return_volatility": {
                "type": "number"
              },
              "seed": {
                "type": "integer"
              },
              "spending_rule": {
                "additionalProperties": false,
                "properties": {
                  "cut": {
                    "type": "number"
                  },
                  "final_years_frozen": {
                    "type": "integer"
                  },
                  "guard_lower": {
                    "type": "number"
                  },
                  "guard_upper": {
                    "type": "number"
                  },
                  "initial_rate": {
                    "type": "number"
                  },
                  "raise": {
                    "type": "number"
                  },
                  "type": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "retirement_qlac",
          "description": "Retirement qlac. Numeratica POST /v1/retirement/qlac — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "account_balance": {
                "type": "number"
              },
              "age": {
                "type": "integer"
              },
              "assumed_rate": {
                "type": "number"
              },
              "birth_year": {
                "type": "integer"
              },
              "qlac_premium": {
                "type": "number"
              },
              "sex": {
                "type": "string"
              },
              "start_age": {
                "type": "integer"
              },
              "tax_year": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "retirement_rmd",
          "description": "Required Minimum Distribution: prior-year-end balance divided by the IRS distribution period. Uniform Lifetime by default; Single Life (inherited/beneficiary) via table=single.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "account_balance": {
                "type": "number"
              },
              "age": {
                "type": "integer"
              },
              "birth_year": {
                "type": "integer"
              },
              "second_age": {
                "type": "integer"
              },
              "table": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "retirement_savings_target",
          "description": "Retirement savings target. Numeratica POST /v1/retirement/savings-target — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "annual_fee_rate": {
                "type": "number"
              },
              "current_age": {
                "type": "integer"
              },
              "current_savings": {
                "type": "number"
              },
              "end_age": {
                "type": "integer"
              },
              "expected_return": {
                "type": "number"
              },
              "inflation": {
                "type": "number"
              },
              "num_simulations": {
                "type": "integer"
              },
              "other_income": {
                "type": "number"
              },
              "retirement_age": {
                "type": "integer"
              },
              "return_volatility": {
                "type": "number"
              },
              "seed": {
                "type": "integer"
              },
              "success_probability_target": {
                "type": "number"
              },
              "target_annual_income": {
                "type": "number"
              },
              "withdrawal_rate": {
                "type": "number"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "retirement_self_employed",
          "description": "Retirement self employed. Numeratica POST /v1/retirement/self-employed — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "age": {
                "type": "integer"
              },
              "existing_w2_deferrals": {
                "type": "number"
              },
              "net_profit": {
                "type": "number"
              },
              "tax_year": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "retirement_sepp",
          "description": "Retirement sepp. Numeratica POST /v1/retirement/sepp — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "account_balance": {
                "type": "number"
              },
              "age": {
                "type": "integer"
              },
              "interest_rate": {
                "type": "number"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "retirement_survivor_scenario",
          "description": "Retirement survivor scenario. Numeratica POST /v1/retirement/survivor-scenario — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "deceased_spouse": {
                "type": "string"
              },
              "on_medicare": {
                "type": "boolean"
              },
              "shared_ordinary_income": {
                "type": "number"
              },
              "spouse_a": {
                "additionalProperties": false,
                "properties": {
                  "other_income": {
                    "type": "number"
                  },
                  "social_security": {
                    "type": "number"
                  }
                },
                "type": "object"
              },
              "spouse_b": {
                "additionalProperties": false,
                "properties": {
                  "other_income": {
                    "type": "number"
                  },
                  "social_security": {
                    "type": "number"
                  }
                },
                "type": "object"
              },
              "tax_year": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "retirement_withdrawal_sequencing",
          "description": "Retirement withdrawal sequencing. Numeratica POST /v1/retirement/withdrawal-sequencing — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "age": {
                "type": "integer"
              },
              "birth_year": {
                "type": "integer"
              },
              "bracket_ceiling": {
                "type": "number"
              },
              "filing_status": {
                "type": "string"
              },
              "other_ordinary_income": {
                "type": "number"
              },
              "other_qualified_income": {
                "type": "number"
              },
              "spending_need": {
                "type": "number"
              },
              "state_tax_rate": {
                "type": "number"
              },
              "strategy": {
                "type": "string"
              },
              "tax_deferred_balance": {
                "type": "number"
              },
              "tax_free_balance": {
                "type": "number"
              },
              "tax_year": {
                "type": "integer"
              },
              "taxable_balance": {
                "type": "number"
              },
              "taxable_cost_basis_fraction": {
                "type": "number"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "retirement_withdrawal_strategy",
          "description": "Dynamic retirement spending strategies over Monte Carlo paths: fixed_real, fixed_pct, guardrails (Guyton-Klinger), vpw, floor_and_ceiling. Returns the spending path, success probability, and ending bands.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "annual_fee_rate": {
                "type": "number"
              },
              "ceiling_mult": {
                "type": "number"
              },
              "current_age": {
                "type": "integer"
              },
              "current_balance": {
                "type": "number"
              },
              "end_age": {
                "type": "integer"
              },
              "expected_return": {
                "type": "number"
              },
              "floor_mult": {
                "type": "number"
              },
              "glide_path": {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "age": {
                      "type": "integer"
                    },
                    "expected_return": {
                      "type": "number"
                    },
                    "return_volatility": {
                      "type": "number"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "guard_adjust": {
                "type": "number"
              },
              "guard_width": {
                "type": "number"
              },
              "inflation": {
                "type": "number"
              },
              "initial_rate": {
                "type": "number"
              },
              "num_simulations": {
                "type": "integer"
              },
              "return_volatility": {
                "type": "number"
              },
              "seed": {
                "type": "integer"
              },
              "strategy": {
                "type": "string"
              },
              "vpw_real_return": {
                "type": "number"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "roth_conversion",
          "description": "Multi-year Roth conversion ladder (bracket-fill, IRMAA-aware) vs. a no-conversion baseline, with a year-by-year schedule and after-tax comparison. Optional pay-tax-from-external-funds.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "annual_return": {
                "type": "number"
              },
              "birth_year": {
                "type": "integer"
              },
              "conversion_end_age": {
                "type": "integer"
              },
              "current_age": {
                "type": "integer"
              },
              "end_age": {
                "type": "integer"
              },
              "external_return": {
                "type": "number"
              },
              "external_taxable_balance": {
                "type": "number"
              },
              "filing_status": {
                "type": "string"
              },
              "irmaa_tier_cap": {
                "type": "integer"
              },
              "other_ordinary_income": {
                "type": "number"
              },
              "pay_tax_from_external": {
                "type": "boolean"
              },
              "roth_balance": {
                "type": "number"
              },
              "state_tax_rate": {
                "type": "number"
              },
              "target_bracket": {
                "type": "number"
              },
              "tax_deferred_balance": {
                "type": "number"
              },
              "tax_year": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "roth_vs_traditional",
          "description": "Roth vs traditional. Numeratica POST /v1/roth-vs-traditional — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "annual_contribution": {
                "type": "number"
              },
              "capital_gains_rate": {
                "type": "number"
              },
              "current_marginal_rate": {
                "type": "number"
              },
              "expected_return": {
                "type": "number"
              },
              "invest_tax_savings": {
                "type": "boolean"
              },
              "retirement_marginal_rate": {
                "type": "number"
              },
              "years": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "savings_waterfall",
          "description": "Savings waterfall. Numeratica POST /v1/savings-waterfall — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "age": {
                "type": "integer"
              },
              "annual_savings": {
                "type": "number"
              },
              "compensation": {
                "type": "number"
              },
              "covered_by_workplace_plan": {
                "type": "boolean"
              },
              "employer_match_cap_pct": {
                "type": "number"
              },
              "employer_match_rate": {
                "type": "number"
              },
              "filing_status": {
                "type": "string"
              },
              "hsa_coverage": {
                "type": "string"
              },
              "magi": {
                "type": "number"
              },
              "prior_year_wages": {
                "type": "number"
              },
              "tax_year": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "social_security",
          "description": "Social Security claiming analysis (ages 62-70): monthly/lifetime benefit, breakeven, optimal claim age. Optional earnings test, spousal/survivor/divorced household, and COLA.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "annual_earnings": {
                "type": "number"
              },
              "birth_year": {
                "type": "integer"
              },
              "claim_age": {
                "type": "integer"
              },
              "cola_rate": {
                "type": "number"
              },
              "discount_rate": {
                "type": "number"
              },
              "earnings_test_year": {
                "type": "integer"
              },
              "longevity_age": {
                "type": "integer"
              },
              "pia_monthly": {
                "type": "number"
              },
              "spouse": {
                "additionalProperties": false,
                "properties": {
                  "birth_year": {
                    "type": "integer"
                  },
                  "claim_age": {
                    "type": "integer"
                  },
                  "divorced": {
                    "type": "boolean"
                  },
                  "pia_monthly": {
                    "type": "number"
                  }
                },
                "type": "object"
              },
              "survivor_claim_age": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "social_security_couple_claim",
          "description": "Social security couple claim. Numeratica POST /v1/social-security/couple-claim — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "discount_rate": {
                "type": "number"
              },
              "spouse_a": {
                "additionalProperties": false,
                "properties": {
                  "birth_year": {
                    "type": "integer"
                  },
                  "current_age": {
                    "type": "integer"
                  },
                  "health_adjustment": {
                    "type": "number"
                  },
                  "pia_monthly": {
                    "type": "number"
                  },
                  "sex": {
                    "type": "string"
                  }
                },
                "type": "object"
              },
              "spouse_b": {
                "additionalProperties": false,
                "properties": {
                  "birth_year": {
                    "type": "integer"
                  },
                  "current_age": {
                    "type": "integer"
                  },
                  "health_adjustment": {
                    "type": "number"
                  },
                  "pia_monthly": {
                    "type": "number"
                  },
                  "sex": {
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "tax_asset_location",
          "description": "Tax asset location. Numeratica POST /v1/tax/asset-location — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "assets": {
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "amount": {
                      "type": "number"
                    },
                    "expected_return": {
                      "type": "number"
                    },
                    "name": {
                      "type": "string"
                    },
                    "qualified_pct": {
                      "type": "number"
                    },
                    "turnover": {
                      "type": "number"
                    },
                    "yield": {
                      "type": "number"
                    }
                  },
                  "type": "object"
                },
                "type": "array"
              },
              "filing_status": {
                "type": "string"
              },
              "tax_advantaged_balance": {
                "type": "number"
              },
              "tax_year": {
                "type": "integer"
              },
              "taxable_balance": {
                "type": "number"
              },
              "taxable_income": {
                "type": "number"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "tax_bracket_room",
          "description": "Tax bracket room. Numeratica POST /v1/tax/bracket-room — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "filing_status": {
                "type": "string"
              },
              "tax_year": {
                "type": "integer"
              },
              "taxable_income": {
                "type": "number"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "tax_estimate",
          "description": "Federal income tax estimate (2025/2026): ordinary brackets, standard/itemized deduction, LTCG stacking, NIIT, Additional Medicare; optional AMT (include_amt) and real per-state tax via the state field. filing_status is one of single/mfj/mfs/hoh.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "adoption_expenses": {
                "type": "number"
              },
              "adoption_special_needs": {
                "type": "boolean"
              },
              "aged_blind_count": {
                "type": "integer"
              },
              "amt_preference_items": {
                "type": "number"
              },
              "aotc_student_expenses": {
                "items": {
                  "type": "number"
                },
                "type": "array"
              },
              "charitable_contributions": {
                "type": "number"
              },
              "dependent_care_count": {
                "type": "integer"
              },
              "dependent_care_expenses": {
                "type": "number"
              },
              "eitc_qualifying_children": {
                "type": "integer"
              },
              "filing_status": {
                "type": "string"
              },
              "force_itemize": {
                "type": "boolean"
              },
              "include_amt": {
                "type": "boolean"
              },
              "include_credits": {
                "type": "boolean"
              },
              "include_itemized_limit": {
                "type": "boolean"
              },
              "include_qbi": {
                "type": "boolean"
              },
              "itemized_deductions": {
                "type": "number"
              },
              "llc_expenses": {
                "type": "number"
              },
              "net_investment_income": {
                "type": "number"
              },
              "ordinary_income": {
                "type": "number"
              },
              "other_dependents": {
                "type": "integer"
              },
              "qbi": {
                "type": "number"
              },
              "qbi_is_sstb": {
                "type": "boolean"
              },
              "qbi_reit_ptp_dividends": {
                "type": "number"
              },
              "qbi_ubia": {
                "type": "number"
              },
              "qbi_w2_wages": {
                "type": "number"
              },
              "qualified_income": {
                "type": "number"
              },
              "qualifying_children": {
                "type": "integer"
              },
              "retirement_contributions": {
                "type": "number"
              },
              "salt_paid": {
                "type": "number"
              },
              "senior_count": {
                "type": "integer"
              },
              "social_security_income": {
                "type": "number"
              },
              "state": {
                "type": "string"
              },
              "state_tax_rate": {
                "type": "number"
              },
              "state_taxable_income": {
                "type": "number"
              },
              "tax_year": {
                "type": "integer"
              },
              "wages": {
                "type": "number"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "tax_estimated_tax",
          "description": "Tax estimated tax. Numeratica POST /v1/tax/estimated-tax — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "estimated_payments": {
                "items": {
                  "type": "number"
                },
                "type": "array"
              },
              "filing_status": {
                "type": "string"
              },
              "prior_year_agi": {
                "type": "number"
              },
              "prior_year_tax": {
                "type": "number"
              },
              "projected_current_tax": {
                "type": "number"
              },
              "tax_year": {
                "type": "integer"
              },
              "underpayment_rate": {
                "type": "number"
              },
              "withholding": {
                "type": "number"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "tax_filing_status",
          "description": "Tax filing status. Numeratica POST /v1/tax/filing-status — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "spouse_a": {
                "additionalProperties": false,
                "properties": {
                  "itemized_deductions": {
                    "type": "number"
                  },
                  "ordinary_income": {
                    "type": "number"
                  },
                  "qualified_income": {
                    "type": "number"
                  },
                  "wages": {
                    "type": "number"
                  }
                },
                "type": "object"
              },
              "spouse_b": {
                "additionalProperties": false,
                "properties": {
                  "itemized_deductions": {
                    "type": "number"
                  },
                  "ordinary_income": {
                    "type": "number"
                  },
                  "qualified_income": {
                    "type": "number"
                  },
                  "wages": {
                    "type": "number"
                  }
                },
                "type": "object"
              },
              "tax_year": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "tax_gain_harvesting",
          "description": "Tax gain harvesting. Numeratica POST /v1/tax/gain-harvesting — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "filing_status": {
                "type": "string"
              },
              "magi": {
                "type": "number"
              },
              "realize_amount": {
                "type": "number"
              },
              "tax_year": {
                "type": "integer"
              },
              "taxable_income": {
                "type": "number"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "tax_liquidation_schedule",
          "description": "Tax liquidation schedule. Numeratica POST /v1/tax/liquidation-schedule — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "cost_basis": {
                "type": "number"
              },
              "filing_status": {
                "type": "string"
              },
              "growth_rate": {
                "type": "number"
              },
              "horizon_years": {
                "type": "integer"
              },
              "market_value": {
                "type": "number"
              },
              "max_annual_gain": {
                "type": "number"
              },
              "objective": {
                "type": "string"
              },
              "other_ltcg": {
                "type": "number"
              },
              "other_ordinary_income": {
                "type": "number"
              },
              "state_tax_rate": {
                "type": "number"
              },
              "tax_year": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "tax_marginal_map",
          "description": "Tax marginal map. Numeratica POST /v1/tax/marginal-map — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "benchmark_annual_premium": {
                "type": "number"
              },
              "filing_status": {
                "type": "string"
              },
              "household_size": {
                "type": "integer"
              },
              "include_aca": {
                "type": "boolean"
              },
              "include_irmaa": {
                "type": "boolean"
              },
              "medicare_beneficiaries": {
                "type": "integer"
              },
              "ordinary_income": {
                "type": "number"
              },
              "qualified_income": {
                "type": "number"
              },
              "social_security_benefits": {
                "type": "number"
              },
              "state": {
                "type": "string"
              },
              "sweep_start": {
                "type": "number"
              },
              "sweep_step": {
                "type": "number"
              },
              "sweep_stop": {
                "type": "number"
              },
              "sweep_variable": {
                "type": "string"
              },
              "tax_exempt_interest": {
                "type": "number"
              },
              "tax_year": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "tax_qcd_plan",
          "description": "Tax qcd plan. Numeratica POST /v1/tax/qcd-plan — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "age": {
                "type": "integer"
              },
              "birth_year": {
                "type": "integer"
              },
              "filing_status": {
                "type": "string"
              },
              "intended_gift": {
                "type": "number"
              },
              "ira_balance": {
                "type": "number"
              },
              "medicare_beneficiaries": {
                "type": "integer"
              },
              "ordinary_income": {
                "type": "number"
              },
              "other_itemized": {
                "type": "number"
              },
              "qualified_income": {
                "type": "number"
              },
              "social_security_benefits": {
                "type": "number"
              },
              "tax_exempt_interest": {
                "type": "number"
              },
              "tax_year": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "tax_qsbs_exclusion",
          "description": "Tax qsbs exclusion. Numeratica POST /v1/tax/qsbs-exclusion — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "acquisition_date": {
                "type": "string"
              },
              "basis": {
                "type": "number"
              },
              "filing_status": {
                "type": "string"
              },
              "gain": {
                "type": "number"
              },
              "gross_assets_at_issuance": {
                "type": "number"
              },
              "holding_period_years": {
                "type": "number"
              },
              "other_income": {
                "type": "number"
              },
              "tax_year": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "tax_s_corp_salary",
          "description": "Tax s corp salary. Numeratica POST /v1/tax/s-corp-salary — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "business_net_income": {
                "type": "number"
              },
              "filing_status": {
                "type": "string"
              },
              "max_salary": {
                "type": "number"
              },
              "other_income": {
                "type": "number"
              },
              "reasonable_comp_floor": {
                "type": "number"
              },
              "sstb": {
                "type": "boolean"
              },
              "state_tax_rate": {
                "type": "number"
              },
              "tax_year": {
                "type": "integer"
              },
              "ubia": {
                "type": "number"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "tax_social_security_benefits",
          "description": "Tax social security benefits. Numeratica POST /v1/tax/social-security-benefits — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "filing_status": {
                "type": "string"
              },
              "marginal_ordinary_rate": {
                "type": "number"
              },
              "other_income": {
                "type": "number"
              },
              "social_security_benefits": {
                "type": "number"
              },
              "tax_exempt_interest": {
                "type": "number"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "tax_state_income",
          "description": "Tax state income. Numeratica POST /v1/tax/state-income — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "age": {
                "type": "integer"
              },
              "filing_status": {
                "type": "string"
              },
              "pension_income": {
                "type": "number"
              },
              "social_security_income": {
                "type": "number"
              },
              "state": {
                "type": "string"
              },
              "state_taxable_income": {
                "type": "number"
              },
              "tax_year": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "tax_survivor_transition",
          "description": "Tax survivor transition. Numeratica POST /v1/tax/survivor-transition — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "conversion_amount": {
                "type": "number"
              },
              "ordinary_income": {
                "type": "number"
              },
              "qualified_income": {
                "type": "number"
              },
              "social_security_higher": {
                "type": "number"
              },
              "social_security_lower": {
                "type": "number"
              },
              "survivor_ordinary_income": {
                "type": "number"
              },
              "tax_exempt_interest": {
                "type": "number"
              },
              "tax_year": {
                "type": "integer"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "tax_tlh_benefit",
          "description": "Tax tlh benefit. Numeratica POST /v1/tax/tlh-benefit — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "filing_status": {
                "type": "string"
              },
              "growth_rate": {
                "type": "number"
              },
              "harvestable_loss": {
                "type": "number"
              },
              "offsettable_gains": {
                "type": "number"
              },
              "reinvestment_years": {
                "type": "number"
              },
              "tax_year": {
                "type": "integer"
              },
              "taxable_income": {
                "type": "number"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "tax_w4_checkup",
          "description": "Tax w4 checkup. Numeratica POST /v1/tax/w4-checkup — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "pay_periods_remaining": {
                "type": "integer"
              },
              "per_paycheck_withholding": {
                "type": "number"
              },
              "prior_year_agi": {
                "type": "number"
              },
              "prior_year_tax": {
                "type": "number"
              },
              "tax": {
                "additionalProperties": false,
                "properties": {
                  "adoption_expenses": {
                    "type": "number"
                  },
                  "adoption_special_needs": {
                    "type": "boolean"
                  },
                  "aged_blind_count": {
                    "type": "integer"
                  },
                  "amt_preference_items": {
                    "type": "number"
                  },
                  "aotc_student_expenses": {
                    "items": {
                      "type": "number"
                    },
                    "type": "array"
                  },
                  "charitable_contributions": {
                    "type": "number"
                  },
                  "dependent_care_count": {
                    "type": "integer"
                  },
                  "dependent_care_expenses": {
                    "type": "number"
                  },
                  "eitc_qualifying_children": {
                    "type": "integer"
                  },
                  "filing_status": {
                    "type": "string"
                  },
                  "force_itemize": {
                    "type": "boolean"
                  },
                  "include_amt": {
                    "type": "boolean"
                  },
                  "include_credits": {
                    "type": "boolean"
                  },
                  "include_itemized_limit": {
                    "type": "boolean"
                  },
                  "include_qbi": {
                    "type": "boolean"
                  },
                  "itemized_deductions": {
                    "type": "number"
                  },
                  "llc_expenses": {
                    "type": "number"
                  },
                  "net_investment_income": {
                    "type": "number"
                  },
                  "ordinary_income": {
                    "type": "number"
                  },
                  "other_dependents": {
                    "type": "integer"
                  },
                  "qbi": {
                    "type": "number"
                  },
                  "qbi_is_sstb": {
                    "type": "boolean"
                  },
                  "qbi_reit_ptp_dividends": {
                    "type": "number"
                  },
                  "qbi_ubia": {
                    "type": "number"
                  },
                  "qbi_w2_wages": {
                    "type": "number"
                  },
                  "qualified_income": {
                    "type": "number"
                  },
                  "qualifying_children": {
                    "type": "integer"
                  },
                  "retirement_contributions": {
                    "type": "number"
                  },
                  "salt_paid": {
                    "type": "number"
                  },
                  "senior_count": {
                    "type": "integer"
                  },
                  "state_tax_rate": {
                    "type": "number"
                  },
                  "tax_year": {
                    "type": "integer"
                  },
                  "wages": {
                    "type": "number"
                  }
                },
                "type": "object"
              },
              "ytd_withheld": {
                "type": "number"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "tvm",
          "description": "Tvm. Numeratica POST /v1/tvm — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where applicable). See the input schema for the accepted fields.",
          "inputSchema": {
            "additionalProperties": false,
            "properties": {
              "fv": {
                "type": "number"
              },
              "nper": {
                "type": "number"
              },
              "payments_at_beginning": {
                "type": "boolean"
              },
              "pmt": {
                "type": "number"
              },
              "pv": {
                "type": "number"
              },
              "rate": {
                "type": "number"
              },
              "solve_for": {
                "type": "string"
              }
            },
            "type": "object"
          }
        }
      ]
    },
    "name": "Numeratica — financial planning calculations",
    "note": "Indexed from the official MCP registry: facts and our own checks, not reviewed, so no score, grade or rank.",
    "packages": [
      {
        "registryType": "npm",
        "identifier": "@numeratica/mcp",
        "version": "0.1.5",
        "transport": "stdio"
      }
    ],
    "pageJsonUrl": "https://www.anchorterminal.com/tools/numeratica-mcp.json",
    "popularity": {
      "githubStars": 0,
      "npmWeekly": 47
    },
    "registryName": "com.numeratica/mcp",
    "remotes": [
      {
        "type": "streamable-http",
        "url": "https://api.numeratica.com/mcp"
      }
    ],
    "repository": "https://github.com/numeratica/mcp",
    "reviewed": false,
    "slug": "numeratica-mcp",
    "source": "the official MCP registry",
    "sourceUrl": "https://registry.modelcontextprotocol.io/v0.1/servers?search=com.numeratica/mcp",
    "summary": "Deterministic US financial planning: retirement Monte Carlo, Roth conversion, RMD, tax, IRMAA, SS",
    "updatedAt": "2026-07-28T01:48:37Z",
    "url": "https://www.anchorterminal.com/tools/numeratica-mcp",
    "vendor": "numeratica.com",
    "vendorUrl": "https://docs.numeratica.com",
    "version": "0.1.5",
    "websiteUrl": "https://docs.numeratica.com",
    "where": "both",
    "why": [
      "vendor"
    ]
  }
}
