This documentation describes a mock MCP server. It does not file with the IRS and does not connect to any IRS system.
Form 941 (and 941-X)
MOCK. Does not file with the IRS. Not tax advice. Fake data only.
What it is
Employer's QUARTERLY Federal Tax Return: reports federal income tax withheld plus employer and employee social security and Medicare tax. Source: https://www.irs.gov/forms-pubs/about-form-941 (retrieved 2026-10-23; page lists the 03/2026 revision).
Due dates (public IRS instructions)
Source: https://www.irs.gov/instructions/i941 (retrieved 2026-10-23).
- Q1 April 30, Q2 July 31, Q3 October 31, Q4 January 31.
- If all deposits for the quarter were made on time and in full, filing is allowed by the 10th day of the 2nd month after quarter end (for example May 10 for Q1).
- Weekend/holiday rollover rules: UNVERIFIED here; check the instructions.
- The mock does not compute or enforce 941 due dates. It only checks
quarteris 1-4.
Other facts from the same page: deposits are required when line 12 is $2,500 or more (current and prior quarter); a $100,000 next-day deposit obligation also triggers deposits; monthly vs semiweekly depends on the lookback period ($50,000 threshold); semiweekly depositors complete Schedule B; CPEOs and section 3504 agents file Schedule R; e-file needs a valid EIN. Exact line numbering is UNVERIFIED against the 03/2026 form; the mock's line numbers are approximate.
Fields the mock models (validate_return input)
Required: filer {ein, businessName, tradeName?}, taxYear (2023-2100), quarter (1-4), numberOfEmployees, wages, fitWithheld, totalDeposits, depositSchedule (lessThan2500 | monthly | semiweekly).
Optional: noWagesSubjectToSsMedicare, ssWages, ssTips, medicareWages, addlMedicareWages, section3121qAmount, fractionsOfCentsAdj, sickPayAdj, tipsGtlAdj (adjustments may be negative), researchCredit, monthlyLiability {month1..3}, scheduleBTotal, scheduleB {month1..3: daily amounts[]}, scheduleR {filerType, clients[]}, form8974 {creditAmount, electedOnForm6765: true}, refund {choice, bank?}, header, stated.
Unknown keys are rejected. Money has at most 2 decimals. The mock computes: 5a = ssWages x 12.4%, 5b = ssTips x 12.4%, 5c = medicareWages x 2.9%, 5d = addlMedicareWages x 0.9%, line 6 = fit + 5e + 3121(q), line 10 = line 6 + adjustments, line 12 = line 10 - researchCredit, balance due / overpayment against totalDeposits. Rates are hard-coded and may lag current law (UNVERIFIED).
Validation enforced (codes illustrative; see the error catalog)
Wages with zero employees (F941-001); FIT above wages (F941-003); line-4 box vs wages (F941-004); stated totals vs recomputed, more than $1.00 off is an error, up to $1.00 a -RND warning (F941-010..019); credit above line 10 (F941-020); lessThan2500 with line 12 of $2,500 or more (F941-030); monthly liability missing or not equal to line 12 (F941-031/032); semiweekly needs Schedule B total or detail equal to line 12 (F941-033/034); Schedule B day counts and totals (F941-036..039); Schedule R sums, duplicate and self EINs (F941-050..052); Form 8974 rules (F941-040..044); refund rules (F941-060..062); header, signature and EIN rules (see catalog).
Common rejection causes in the mock
- Monthly liabilities not summing to line 12 to the cent (F941-032). 2. EIN not starting
00on a test transmission (R0000-148). 3. Resubmitting a return already accepted in this process (R0000-902-01). 4.researchCreditwith no matchingform8974(F941-040/042). 5. Signature option set without the 8453-EMP attachment, signer and ERO blocks (R0000-183-01, HDR-030, HDR-031).
941-X (corrections)
Per-row {corrected, previous} for wages, fitWithheld, ssWages, ssTips, medicareWages, addlMedicareWages, researchCredit; processType adjustment or claim; explanation required; dateDiscovered required when tax increases; claimCertification required for a claim that reduces tax. The mock key is EIN + year + quarter + correctionSequence. A 941-X with no accepted 941 in this process gets warning R941X-W01, not a rejection. Official 941-X instructions were not fetched: UNVERIFIED.