Skip to content

ITC Prevailing Wage & Apprenticeship Guide

by ovanova-solar · remote · no sign-in to list tools · v1.0.0 · published by GitHub user ovanova-solar

IRS prevailing wage & apprenticeship (PWA) rules for the clean-energy ITC: checks, cures, rates.

Changes · 7

14 tools: 7 change things and 7 only read.

Scanned Oct 21, 2026

2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http itc-pwa-guide https://itc-pwa-guide.sitetime.workers.dev/mcp

Findings

Matches of fixed checks, with the text they matched.

2 warn
  • The server marks "pwa_overview" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "start": a word for a change.

    What this check looks for
  • The server marks "check_good_faith_request" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "check_good_faith_request" says "request": a word for a change.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

14 tools

Changes things 7Claude Code: ask
  • check_applicabilitySays whether a project must meet the prevailing wage and apprenticeship requirements to claim the increased (5x) credit, and which ones: the credit involved, when construction bega…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Says whether a project must meet the prevailing wage and apprenticeship requirements to claim the increased (5x) credit, and which ones: the credit involved, when construction began (before January 29, 2023 is exempt for 30C, 45, 45Q, 45V, 45Y, 48, 48E and 179D; 45L, 45U, 45Z and 48C have no such exception), the one-megawatt exception for 45, 45Y, 48 and 48E (maximum net output under 1 MW AC by nameplate, aggregated across the energy project or across facilities with integrated operations; for DC generation the lesser of the DC nameplate sum or the first inverter), construction versus alteration or repair after placed in service (apprenticeship applies to construction only; prevailing wages continue 5 years for the ITC, 10 for the PTC), the applicable apprentice percentage (10 / 12.5 / 15%), whether the project is under section 48 or 48E, and for solar and wind the 2025 law’s termination dates (construction after July 4, 2026 must be placed in service by December 31, 2027).

    Annotations the server declares

    • title: Do PWA requirements apply to this project?
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • check_apprentice_hoursThe apprenticeship labor-hours requirement for one facility (26 CFR 1.45-8(b)): qualified apprentices must perform the applicable percentage (10% if construction began before 2023,…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    The apprenticeship labor-hours requirement for one facility (26 CFR 1.45-8(b)): qualified apprentices must perform the applicable percentage (10% if construction began before 2023, 12.5% in 2023, 15% from 2024) of total labor hours, counting every contractor and subcontractor, after excluding hours of foremen, superintendents, owners and executive/administrative/professional staff, and counting apprentice hours only within the daily ratio. Returns the required hours, the shortfall, and the cure the IRS accepts: $50 per shortfall hour ($500 with intentional disregard), including participation failures (an employer with 4+ individuals and no apprentice: its labor hours divided by its number of laborers and mechanics).

    Annotations the server declares

    • title: Labor-hours test and the apprenticeship cure
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • check_daily_ratioThe ratio requirement (26 CFR 1.45-8(c)): on each day, for one employer and one occupation on the job site, the number of apprentices may not exceed what the registered program’s a…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    The ratio requirement (26 CFR 1.45-8(c)): on each day, for one employer and one occupation on the job site, the number of apprentices may not exceed what the registered program’s apprentice-to-journeyworker ratio allows for the journeyworkers present (or the ratio for the facility’s area). Give the program ratio and, for each day, the headcounts of journeyworkers and apprentices on site (the controlling input) with each apprentice’s hours; the tool returns the apprentice hours that count toward the percentage and the excess hours that do not (they stay in total labor hours and must be paid the full journeyworker prevailing rate: 1.45-7(b)(7)(iii), 29 CFR 5.5(a)(4)(i)). With hours only and no headcounts it prorates on hours, marked as an interpretation.

    Annotations the server declares

    • title: Daily apprentice-to-journeyworker ratio
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • check_good_faith_requestJudges a request for apprentices under the Good Faith Effort Exception (26 CFR 1.45-8(f)(1)): a written request (electronic or registered mail) to a registered apprenticeship progr…1 finding

    Why it is in this group

    • The name "check_good_faith_request" says "request": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "check_good_faith_request" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "check_good_faith_request" says "request": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Judges a request for apprentices under the Good Faith Effort Exception (26 CFR 1.45-8(f)(1)): a written request (electronic or registered mail) to a registered apprenticeship program covering the facility’s area and occupation, sent at least 45 days before the apprentices are needed (14 days for a later request to the same program), with the dates, occupation, location, number, expected hours, contact and a statement of intent to employ. Denied, or unanswered for 5 business days, it stands in for the apprentices for its period, up to 365 days (366 across a leap year). Returns the lead-time check, the response status, how long the exception runs and when to request again.

    Annotations the server declares

    • title: Good Faith Effort Exception: does a request qualify?
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • official_sourcesThe primary sources behind every answer here (IRS pages and FAQs, Form 7220, the Code, the regulations on eCFR, the Treasury decision with its preamble, DOL’s IRA page, SAM.gov wag…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    The primary sources behind every answer here (IRS pages and FAQs, Form 7220, the Code, the regulations on eCFR, the Treasury decision with its preamble, DOL’s IRA page, SAM.gov wage determinations, apprenticeship.gov and the Tennessee apprenticeship agency), with one line on what each is for.

    Annotations the server declares

    • title: Official sources and where to find things
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • pwa_overviewStart here.1 finding

    Why it is in this group

    • The description's first verb is "start": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "pwa_overview" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "start": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Start here. Explains the IRS prevailing wage and apprenticeship (PWA) requirements for the increased clean-energy credit (ITC under IRC 48 / 48E and the other IRA credits): what they are, when they apply (the 1 MW and January 29, 2023 exceptions), the prevailing wage rule, the three apprenticeship tests (labor-hours percentage, daily ratio, four-or-more participation), the good-faith exception, cures and penalties, records and Form 7220, with the regulation paragraph for every figure. Ask for one topic or all of them.

    Annotations the server declares

    • title: PWA overview: the rules in one place
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • records_checklistThe records the regulations expect for the prevailing wage and apprenticeship requirements (26 CFR 1.45-12), as a checklist for a taxpayer, a prime contractor or a subcontractor, w…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    The records the regulations expect for the prevailing wage and apprenticeship requirements (26 CFR 1.45-12), as a checklist for a taxpayer, a prime contractor or a subcontractor, with how they may be kept (each company keeps its own unredacted records, or hands PII-redacted copies to the taxpayer or a vendor; unredacted records go to the IRS on request) and how they feed Form 7220.

    Annotations the server declares

    • title: Records to keep (and who keeps them)
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Only reads 7Claude Code: allow
  • check_prevailing_wageCompares pay for one classification with the Davis-Bacon prevailing rate (basic hourly rate + fringe from the wage determination; look it up with lookup_wage_determination) and, if…No findings

    Why it is in this group

    • The description's first verb is "compare": a word for reading.
    Description, as the server wrote it
    Compares pay for one classification with the Davis-Bacon prevailing rate (basic hourly rate + fringe from the wage determination; look it up with lookup_wage_determination) and, if short, computes the IRS cure: the shortfall (x3 for intentional disregard), interest at the Federal short-term rate + 6 points, and the $5,000 per-worker penalty ($10,000 for intentional disregard), with the penalty waivers (corrected by the quarter deadline and either no more than 10% of pay periods short or no more than 5% short; or work under a qualifying project labor agreement). Cash plus bona fide fringe contributions together must reach base plus fringe (29 CFR 5.31).

    Annotations the server declares

    • title: Is this pay compliant, and what does a shortfall cost?
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • count_participationThe participation requirement (26 CFR 1.45-8(d)): a taxpayer, contractor or subcontractor that employs four or more individuals to perform construction, alteration or repair work o…No findings

    Why it is in this group

    • The name "count_participation" says "count": a word for reading.
    Description, as the server wrote it
    The participation requirement (26 CFR 1.45-8(d)): a taxpayer, contractor or subcontractor that employs four or more individuals to perform construction, alteration or repair work on the facility, counted over the whole construction (not at one time), must employ at least one qualified apprentice there. Give the people one employer used on this facility with their roles; the tool says who counts toward the four (laborers, mechanics and apprentices do; a supervising foreperson, an exempt 20%+ managing owner and office staff do not; a working foreperson or superintendent over 20% manual duties who is not 541-exempt, or a nonexempt owner doing trade work, does under this server’s reading), whether an apprentice is required, and whose hours are out of the labor-hours denominator either way.

    Annotations the server declares

    • title: Count the four: does this employer need an apprentice?
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • fetchReturns the full text of a document found with search: overview:<topic>, records:<requirement>, form7220, law2025, tennessee, or reg:<section>[(paragraph)] such as reg:1.45-8(d), w…No findings

    Why it is in this group

    • The name "fetch" says "fetch": a word for reading.
    Description, as the server wrote it
    Returns the full text of a document found with search: overview:<topic>, records:<requirement>, form7220, law2025, tennessee, or reg:<section>[(paragraph)] such as reg:1.45-8(d), which is read live from the eCFR.

    Annotations the server declares

    • title: Fetch a document from this guide (for research assistants)
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • find_apprenticeship_programsRegistered apprenticeship programs a contractor can send a good-faith request to (26 CFR 1.45-8(f)(1)): a program whose area covers the facility and that trains the occupation.No findings

    Why it is in this group

    • The name "find_apprenticeship_programs" says "find": a word for reading.
    Description, as the server wrote it
    Registered apprenticeship programs a contractor can send a good-faith request to (26 CFR 1.45-8(f)(1)): a program whose area covers the facility and that trains the occupation. For Tennessee it reads the State Apprenticeship Agency’s live list of registered programs (program, occupation, participating employers, county) and filters by occupation and county; for other states it gives the apprenticeship.gov partner finder and the State office to contact. Occupation is matched as text, so "electric" finds Electrician programs.

    Annotations the server declares

    • title: Find registered apprenticeship programs to request apprentices from
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • lookup_wage_determinationFetches a Davis-Bacon general wage determination live from SAM.gov: by number (e.g.No findings

    Why it is in this group

    • The name "lookup_wage_determination" says "lookup": a word for reading.
    Description, as the server wrote it
    Fetches a Davis-Bacon general wage determination live from SAM.gov: by number (e.g. TN20260124, newest modification unless a revision is given) or by state, county and construction type (Building, Residential, Heavy, Highway; utility-scale solar and wind farms are Heavy). Returns the determination’s counties, modifications and every classification’s basic rate and fringe, optionally filtered to one classification, with the SAM.gov page to cite. Use the determination in force when the contract was executed (26 CFR 1.45-7(b)). A classification that is missing needs DOL’s additional classification and rate (IRAprevailingwage@dol.gov).

    Annotations the server declares

    • title: Look up a Davis-Bacon wage determination (live, SAM.gov)
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • read_regulationReturns the current text of a paragraph of the governing regulations straight from the eCFR, with its citation and URL: 26 CFR 1.45-6, 1.45-7, 1.45-8, 1.45-12, 1.48-13, 1.48E-3 and…No findings

    Why it is in this group

    • The name "read_regulation" says "read": a word for reading.
    Description, as the server wrote it
    Returns the current text of a paragraph of the governing regulations straight from the eCFR, with its citation and URL: 26 CFR 1.45-6, 1.45-7, 1.45-8, 1.45-12, 1.48-13, 1.48E-3 and the Labor rules they rest on (29 CFR 541.101 owner exemption, 5.5 apprentices on Davis-Bacon work, 5.31 fringe, 29.5 program standards). Give a paragraph like "(d)" or "(g)(7)" to read one part; leave it out for the whole section. Sections: 1.45-6 (the 5x increased amount and when PWA applies to it); 1.45-7 (who is paid, which wage determination, corrections and penalties, definitions); 1.45-8 (labor hours (b), ratio (c), participation (d), examples (e), good faith and cure (f), definitions (g)); 1.45-12 (the records a taxpayer must keep for prevailing wage and apprenticeship); 1.48-13 (how 1.45-7/-8 apply to the energy credit, the 1 MW exception, alteration and repair); 1.48E-3 (how 1.45-7/-8 apply to section 48E facilities and energy storage); 541.101 (the 20% equity, actively-managing owner who is a bona fide exempt executive); 5.5 (apprentices: ratio, rates, registration (paragraph (a)(4))); 5.31 (cash, fringe benefits or a combination); 29.5 (what a registered program must provide: ratios, supervision, wage schedules).

    Annotations the server declares

    • title: Read the regulation text (live, eCFR)
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http itc-pwa-guide https://itc-pwa-guide.sitetime.workers.dev/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__itc-pwa-guide__count_participation",
      "mcp__itc-pwa-guide__check_prevailing_wage",
      "mcp__itc-pwa-guide__lookup_wage_determination",
      "mcp__itc-pwa-guide__find_apprenticeship_programs",
      "mcp__itc-pwa-guide__read_regulation",
      "mcp__itc-pwa-guide__search",
      "mcp__itc-pwa-guide__fetch"
    ],
    "ask": [
      "mcp__itc-pwa-guide__pwa_overview",
      "mcp__itc-pwa-guide__check_applicability",
      "mcp__itc-pwa-guide__check_apprentice_hours",
      "mcp__itc-pwa-guide__check_daily_ratio",
      "mcp__itc-pwa-guide__check_good_faith_request",
      "mcp__itc-pwa-guide__records_checklist",
      "mcp__itc-pwa-guide__official_sources"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as itc-pwa-guide. Review it before you use it.