{
  "data": {
    "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"
      ]
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/tools/numeratica-mcp",
    "json": "https://www.anchorterminal.com/tools/numeratica-mcp.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/tools/numeratica-mcp.md",
    "slim": "https://www.anchorterminal.com/tools/numeratica-mcp.min.md"
  },
  "markdown": "# Numeratica — financial planning calculations\n\n\u003e Indexed, not reviewed: facts from the official MCP registry and our own checks. No score, grade or rank, and not in the rankings until the panel reviews it. How the index works: https://www.anchorterminal.com/indexed/\n\n- Kind: MCP server, by numeratica.com (https://docs.numeratica.com)\n- Listed because: It's published in the registry under numeratica.com, a namespace the registry only gives to whoever proves they control that domain.\n- What the official MCP registry says: Deterministic US financial planning: retirement Monte Carlo, Roth conversion, RMD, tax, IRMAA, SS\n\n## Facts\n\n- MCP registry: `com.numeratica/mcp` 0.1.5\n- Endpoint: https://api.numeratica.com/mcp (streamable HTTP)\n- Package: npm `@numeratica/mcp` (stdio)\n- Source: https://github.com/numeratica/mcp\n- Website: https://docs.numeratica.com\n- npm downloads a week: 47\n- GitHub stars: 0\n- Registry entry updated: 2026-07-28\n\n## Tools\n\n- Tools it lists (76, about 25,259 tokens of context, `tools/list` without credentials, checked 2026-10-04 22:23 UTC):\n  - `annuity`: Annuity. Numeratica POST /v1/annuity — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where…\n  - `benefits_dependent_care`: Benefits dependent care. Numeratica POST /v1/benefits/dependent-care — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed…\n  - `benefits_health_plan`: Benefits health plan. Numeratica POST /v1/benefits/health-plan — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for…\n  - `capital_market_assumptions`: Capital market assumptions. Numeratica POST /v1/capital-market-assumptions — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed…\n  - `cashflow_npv_irr`: 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…\n  - `college_savings`: College savings. Numeratica POST /v1/college-savings — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible…\n  - `contribution_limits`: Contribution limits. Numeratica POST /v1/contribution-limits — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for…\n  - `debt_payoff`: Debt payoff. Numeratica POST /v1/debt-payoff — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte…\n  - `debt_vs_invest`: 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…\n  - `education_529_to_roth`: 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…\n  - `education_aid_estimate`: Education aid estimate. Numeratica POST /v1/education/aid-estimate — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for…\n  - `education_student_loan`: Education student loan. Numeratica POST /v1/education/student-loan — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for…\n  - `education_student_loan_refi`: Education student loan refi. Numeratica POST /v1/education/student-loan-refi — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed…\n  - `equity_comp_espp`: 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…\n  - `equity_comp_iso`: 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…\n  - `equity_comp_iso_amt_capacity`: 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…\n  - `equity_comp_iso_schedule`: 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…\n  - `equity_comp_nso`: 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…\n  - `equity_comp_nua`: 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…\n  - `equity_comp_rsu`: 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…\n  - `equity_comp_section_83b`: 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…\n  - `goal_funding`: Goal funding. Numeratica POST /v1/goal-funding — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte…\n  - `healthcare_aca_optimize`: Healthcare aca optimize. Numeratica POST /v1/healthcare/aca-optimize — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed…\n  - `healthcare_costs`: Healthcare costs. Numeratica POST /v1/healthcare-costs — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible…\n  - `inflation_adjust`: Inflation adjust. Numeratica POST /v1/inflation-adjust — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible…\n  - `inherited_ira`: Inherited ira. Numeratica POST /v1/inherited-ira — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte…\n  - `insurance_disability_needs`: Insurance disability needs. Numeratica POST /v1/insurance/disability-needs — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed…\n  - `insurance_life_needs`: Insurance life needs. Numeratica POST /v1/insurance/life-needs — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for…\n  - `insurance_long_term_care`: 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…\n  - `ira_eligibility`: Ira eligibility. Numeratica POST /v1/ira-eligibility — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible…\n  - `loan_amortization`: Loan amortization. Numeratica POST /v1/loan/amortization — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for…\n  - `longevity`: Longevity. Numeratica POST /v1/longevity — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo…\n  - `medicare_irmaa`: 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…\n  - `medicare_late_enrollment_penalty`: Medicare late enrollment penalty. Numeratica POST /v1/medicare/late-enrollment-penalty — returns JSON with result_id, engine_version, and a not-advice…\n  - `mortgage_affordability`: Mortgage affordability. Numeratica POST /v1/mortgage/affordability — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for…\n  - `mortgage_points`: Mortgage points. Numeratica POST /v1/mortgage/points — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible…\n  - `mortgage_refinance`: Mortgage refinance. Numeratica POST /v1/mortgage/refinance — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for…\n  - `mortgage_rent_vs_buy`: 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…\n  - `mortgage_term_comparison`: Mortgage term comparison. Numeratica POST /v1/mortgage/term-comparison — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed…\n  - `pension_lump_sum_vs_annuity`: 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…\n  - `portfolio_glidepath`: Portfolio glidepath. Numeratica POST /v1/portfolio/glidepath — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for…\n  - `portfolio_rebalance`: Portfolio rebalance. Numeratica POST /v1/portfolio/rebalance — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for…\n  - `retirement_accumulation_projection`: Retirement accumulation projection. Numeratica POST /v1/retirement/accumulation-projection — returns JSON with result_id, engine_version, and a not-advice…\n  - `retirement_backdoor_roth`: Retirement backdoor roth. Numeratica POST /v1/retirement/backdoor-roth — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed…\n  - `retirement_hsa`: Retirement hsa. Numeratica POST /v1/retirement/hsa — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible…\n  - `retirement_monte_carlo`: Monte Carlo retirement projection: probability of not running out of money over a horizon, with percentile balance bands. Deterministic given a seed (returned…\n  - `retirement_qlac`: Retirement qlac. Numeratica POST /v1/retirement/qlac — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible…\n  - `retirement_rmd`: Required Minimum Distribution: prior-year-end balance divided by the IRS distribution period. Uniform Lifetime by default; Single Life (inherited/beneficiary)…\n  - `retirement_savings_target`: Retirement savings target. Numeratica POST /v1/retirement/savings-target — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed…\n  - `retirement_self_employed`: Retirement self employed. Numeratica POST /v1/retirement/self-employed — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed…\n  - `retirement_sepp`: Retirement sepp. Numeratica POST /v1/retirement/sepp — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible…\n  - `retirement_survivor_scenario`: Retirement survivor scenario. Numeratica POST /v1/retirement/survivor-scenario — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed…\n  - `retirement_withdrawal_sequencing`: Retirement withdrawal sequencing. Numeratica POST /v1/retirement/withdrawal-sequencing — returns JSON with result_id, engine_version, and a not-advice…\n  - `retirement_withdrawal_strategy`: Dynamic retirement spending strategies over Monte Carlo paths: fixed_real, fixed_pct, guardrails (Guyton-Klinger), vpw, floor_and_ceiling. Returns the spending…\n  - `roth_conversion`: 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…\n  - `roth_vs_traditional`: Roth vs traditional. Numeratica POST /v1/roth-vs-traditional — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for…\n  - `savings_waterfall`: Savings waterfall. Numeratica POST /v1/savings-waterfall — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for…\n  - `social_security`: Social Security claiming analysis (ages 62-70): monthly/lifetime benefit, breakeven, optimal claim age. Optional earnings test, spousal/survivor/divorced…\n  - `social_security_couple_claim`: Social security couple claim. Numeratica POST /v1/social-security/couple-claim — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed…\n  - `tax_asset_location`: Tax asset location. Numeratica POST /v1/tax/asset-location — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for…\n  - `tax_bracket_room`: 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…\n  - `tax_estimate`: Federal income tax estimate (2025/2026): ordinary brackets, standard/itemized deduction, LTCG stacking, NIIT, Additional Medicare; optional AMT (include_amt)…\n  - `tax_estimated_tax`: Tax estimated tax. Numeratica POST /v1/tax/estimated-tax — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for…\n  - `tax_filing_status`: Tax filing status. Numeratica POST /v1/tax/filing-status — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for…\n  - `tax_gain_harvesting`: Tax gain harvesting. Numeratica POST /v1/tax/gain-harvesting — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for…\n  - `tax_liquidation_schedule`: Tax liquidation schedule. Numeratica POST /v1/tax/liquidation-schedule — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed…\n  - `tax_marginal_map`: 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…\n  - `tax_qcd_plan`: 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…\n  - `tax_qsbs_exclusion`: Tax qsbs exclusion. Numeratica POST /v1/tax/qsbs-exclusion — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for…\n  - `tax_s_corp_salary`: 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…\n  - `tax_social_security_benefits`: Tax social security benefits. Numeratica POST /v1/tax/social-security-benefits — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed…\n  - `tax_state_income`: 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…\n  - `tax_survivor_transition`: Tax survivor transition. Numeratica POST /v1/tax/survivor-transition — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed…\n  - `tax_tlh_benefit`: 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…\n  - `tax_w4_checkup`: 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…\n  - `tvm`: Tvm. Numeratica POST /v1/tvm — returns JSON with result_id, engine_version, and a not-advice disclaimer (seed echoed for reproducible Monte Carlo where…\n- How its tools read to an agent (0 errors, 1441 warnings, 1 note, about 25,259 tokens; rules at https://www.anchorterminal.com/check.md; not part of the score):\n  - warn TC11 annuity: none of its 11 parameters has a description\n  - warn TC11 benefits_dependent_care: none of its 7 parameters has a description\n  - warn TC11 benefits_health_plan: none of its 7 parameters has a description\n  - warn TC11 capital_market_assumptions: none of its 3 parameters has a description\n  - warn TC11 cashflow_npv_irr: none of its 3 parameters has a description\n  - warn TC11 college_savings: none of its 7 parameters has a description\n  - warn TC11 contribution_limits: none of its 10 parameters has a description\n  - warn TC11 debt_payoff: none of its 3 parameters has a description\n  - warn TC11 debt_vs_invest: none of its 12 parameters has a description\n  - warn TC11 education_529_to_roth: none of its 8 parameters has a description\n  - warn TC11 education_aid_estimate: none of its 18 parameters has a description\n  - warn TC11 education_student_loan: none of its 10 parameters has a description\n  - warn TC11 education_student_loan_refi: none of its 4 parameters has a description\n  - warn TC11 equity_comp_espp: none of its 5 parameters has a description\n  - warn TC11 equity_comp_iso: none of its 8 parameters has a description\n  - warn TC11 equity_comp_iso_amt_capacity: none of its 6 parameters has a description\n  - warn TC11 equity_comp_iso_schedule: none of its 10 parameters has a description\n  - warn TC11 equity_comp_nso: none of its 6 parameters has a description\n  - warn TC11 equity_comp_nua: none of its 10 parameters has a description\n  - warn TC11 equity_comp_rsu: none of its 5 parameters has a description\n  - warn TC11 equity_comp_section_83b: none of its 7 parameters has a description\n  - warn TC11 goal_funding: none of its 6 parameters has a description\n  - warn TC11 healthcare_aca_optimize: none of its 13 parameters has a description\n  - warn TC11 healthcare_costs: none of its 7 parameters has a description\n\n- JSON: https://www.anchorterminal.com/api/v1/tools/numeratica-mcp.json\n- Being indexed says nothing about quality, and nobody can pay for it. Ask for a review: https://www.anchorterminal.com/builders/#claiming\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-05",
    "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"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Terminal",
        "url": "https://www.anchorterminal.com/tools/"
      },
      {
        "name": "Indexed",
        "url": "https://www.anchorterminal.com/indexed/"
      },
      {
        "name": "Numeratica — financial planning calculations",
        "url": ""
      }
    ],
    "description": "Numeratica — financial planning calculations, an MCP server by numeratica.com, listed from the official MCP registry. Indexed, not reviewed: facts and our own checks, no score or ranking. Deterministic US financial planning: retirement Monte Carlo, Roth conversion, RMD, tax…",
    "facts": [
      "not reviewed",
      "not ranked",
      "facts only"
    ],
    "h1": "Numeratica — financial planning calculations",
    "image": "https://www.anchorterminal.com/assets/og/indexed.png",
    "path": "/tools/numeratica-mcp",
    "published": "",
    "section": "indexed",
    "title": "Numeratica — financial planning calculations | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-05",
    "url": "https://www.anchorterminal.com/tools/numeratica-mcp"
  },
  "tokens": {
    "markdown": 4600,
    "slim": 4530
  },
  "version": 1
}
