Ss tax torpedo
Free, open-source Claude Code Agent Skills for personal finance — FIRE planning, rent-vs-buy, tax optimization & gain-harvesting, equity comp, retirement income (pensions/annuities, bond ladders), debt & student loans, relocation, and self-employed/business-owner planning. Powered by the public planfi MCP (no auth). Not financial advice.
npx -y skills add KameronKales/planfi-skills --skill ss-tax-torpedoAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Model the Social Security provisional-income tax torpedo and survivor single-filer cliffs
SKILL.md
8.9 KB, ~2.3k tokens by cl100k_base, as published. Nobody here has run it
ss-tax-torpedo
A thin orchestration layer over the planfi MCP (https://ai.planfi.app/mcp/free). All math + financial logic live server-side. This skill only gathers inputs and calls the tools — it does not compute anything locally, carries no business logic, math, or defaults, and is read-only (it never changes the user's data). The server is the source of truth.
Step 0 — Make sure the planfi tools are connected
This skill uses these tools (may be namespaced, e.g. mcp__planfi__analyze_ss_tax_torpedo):
analyze_ss_tax_torpedo, analyze_roth_conversion, analyze_irmaa, analyze_rmd,
analyze_survivor_stress_test, optimize_social_security, plus optional generate_financial_plan
(to mint a plan_id for chaining + a share_url). Use whichever name your environment exposes
(bare or mcp__planfi__-prefixed); below they are written bare.
If they're NOT available, tell the user to connect the MCP, then continue:
claude mcp add --transport http planfi https://ai.planfi.app/mcp/free
Try free, then add your key. The command above adds the free connector —
https://ai.planfi.app/mcp/free(no key needed). Once you create an API key, add a new connector with the MCP url —https://ai.planfi.app/mcp— and authorize it with your key.
(On claude.ai: add a custom connector pointing at https://ai.planfi.app/mcp/free.)
Access — free for personal use. The planfi MCP is free to try (a small monthly allowance, no key needed). Heavy automated abuse forced us to add limits — but it stays free for personal use: email [email protected] and we'll send you a free API key, no charge. (Companies and commercial use have paid plans.) To use a key, pass it as an
Authorization: Bearer pft_…header in your MCP client config.
Step 1 — Gather inputs (prefer a plan_id)
Ask only for what the user's question needs. Every input has a sensible server default, so the
tools run cold — but the cleanest path is to mint a plan_id first and chain off it:
- Optional but recommended: call
generate_financial_planwith whatever household model you have. CAPTURE the returnedplan_idand theshare_url. Pass{ plan_id }to every specialist tool below — any field you also pass becomes a shallow override. This is also the ONLY way to get ashare_url(the specialist tools don't emit one). - Or run cold: pass the specialist tool its required raw inputs directly. Anything omitted is
defaulted server-side and reported in
assumed_defaults[].
Engine facts to bake in: all dollars are today's (real) dollars; all decimals are fractions (24% →
0.24); tax brackets/limits are ~2026 values (the §86 $25k/$32k and $34k/$44k provisional thresholds are statutory and have NOT been inflation-indexed since 1983/1993 — they bite harder every year). Noted in each tool'sdisclosures.
Step 2 — Route by intent
"Will my Social Security get taxed if I do a Roth conversion / take an RMD / realize gains?" / "what's the Social Security tax torpedo?" / "why is my marginal rate 40%+ when I'm only in the 22% bracket?" / "how much can I convert before more of my SS becomes taxable?" / "what happens to my taxes as a widow filing single?" → analyze_ss_tax_torpedo
Always CALL analyze_ss_tax_torpedo for these — do not answer from general knowledge or quote
the $25k/$32k rule-of-thumb from memory. When the user gives the SS benefit + other income +
filing status, run it and lead with its real effective_marginal_rate_pct and fill_to_ceiling
output. The tool encodes the exact IRC §86 / Pub 915 provisional-income formula, the
effective-vs-nominal marginal rate and torpedo multiplier, the marginal-rate curve, the torpedo
zone boundaries, the optimal fill-to ceiling, an IRMAA cross-reference, and the widowed
single-filer cliff. Rules of thumb get the cliff wrong — call the tool.
REQUIRED: annual_ss_benefit. Optional: other_taxable_income (RMDs / pension / IRA withdrawals /
wages, default 0), qualified_dividends_ltcg (default 0), tax_exempt_interest (muni interest —
raises provisional income even though tax-free, default 0), filing_status
(single | married_joint, default single — drives both the §86 thresholds AND the survivor
cliff), current_age (feeds IRMAA cross-ref), marginal_dollars (income-sweep span, default
100000), tax_year (default 2026), plan_id, overrides.
Returns: ss_taxability_tier (0%/50%/85%), taxable_ss_amount + taxable_ss_fraction_pct,
effective_marginal_rate_pct vs nominal_marginal_rate_pct + torpedo_multiplier, torpedo_zone
(start/end provisional + peak rate), marginal_rate_curve, fill_to_ceiling
(provisional_ceiling, additional_income_room, binding_constraint), irmaa_cross_reference,
survivor_single_filer (null when filing single).
analyze_ss_tax_torpedo({
annual_ss_benefit: 30000,
other_taxable_income: 40000,
filing_status: "married_joint",
current_age: 70
})
"How much can I convert to Roth this year?" → analyze_roth_conversion
After the torpedo tool gives the fill_to_ceiling, size the actual conversion. Self-orchestrating
ladder. Optional plan_id. Use the torpedo's ceiling as the target so the conversion stops before
it drags more SS into the 85% tier.
"Will this push my Medicare premiums up (IRMAA)?" → analyze_irmaa
The torpedo tool returns an irmaa_cross_reference; for the full two-year-lookback surcharge
schedule and the MAGI thresholds, call analyze_irmaa directly. Optional plan_id.
"What will my RMD be / how big is the forced withdrawal?" → analyze_rmd
RMDs are the most common torpedo trigger. Size the RMD, then feed it as other_taxable_income into
analyze_ss_tax_torpedo. Optional plan_id.
"What happens to our finances / taxes when one of us dies?" → analyze_survivor_stress_test
Broader survivor analysis (income drop, expense changes, portfolio survival). The torpedo tool's
survivor_single_filer block covers the tax cliff specifically; chain to
analyze_survivor_stress_test for the full household picture. Optional plan_id.
"When should I claim Social Security? / claim at 62 vs 67 vs 70 / what's my benefit / what if the trust fund is cut?" → optimize_social_security
Compares claiming ages and returns the breakeven + recommended claim age. Provide earnings_history
({ year, earnings }[] — runs the full SSA pipeline: NAWI indexing, AIME, projected bend points,
dime-floored PIA, COLA compounding, and an optional trust_fund_cut { year, cut_pct }), or
aime, or monthly_amount. Optional birth_year, fra, claim_age, cola_rate,
nawi_growth_rate, plan_id. See the retirement-income skill for the full routing.
Step 3 — Surface the result
- Lead with the headline: the
effective_marginal_rate_pctvs thenominal_marginal_rate_pct(and thetorpedo_multiplier), thess_taxability_tier, and thefill_to_ceiling(additional_income_room+binding_constraint) — "you can add $X more before the torpedo / an IRMAA cliff fires." - For
married_joint, always relay thesurvivor_single_filerblock — the extra tax and extra SS taxed the surviving spouse faces on the same income. assumed_defaults[]—analyze_ss_tax_torpedoreturns a structuredassumed_defaults[](filing status, other income, etc.). Read these back so the user can correct any and re-call.disclosures— relaynot_advice(planning estimate, not tax advice) andkey_assumptions.next_actions[]— each{ tool, why, prefilled_args }; follow the server's suggested chains (typicallyanalyze_roth_conversion,analyze_irmaa) rather than guessing.share_url— onlygenerate_financial_planreturns one; offer it if you minted aplan_id.
Recommended call sequence (typical session)
- (optional)
generate_financial_plan→ captureplan_id+share_url. analyze_ss_tax_torpedowith the SS benefit + other income + filing status (or{ plan_id }).- If decumulating:
analyze_rmdto size the forced withdrawal, then re-run the torpedo with it asother_taxable_income;analyze_roth_conversionto fill to thefill_to_ceiling;analyze_irmaafor the surcharge schedule. - Surface headline + survivor cliff +
assumed_defaults+next_actions+share_url.
Notes
- See also the tax-optimizer and retirement-income skills — the torpedo is the tax-aware decumulation overlay that sits between them (Roth-conversion ladder ↔ IRMAA cliff ↔ RMD timing).
- All decimals are fractions; all dollars are today's (real) dollars.
- The §86 thresholds are statutory and un-indexed — confirm
tax_yearis 2026 unless told otherwise. - Not financial advice. Planning estimates only (approximate ~2026 brackets/limits).