Skip to main content
Glama

ITC Prevailing Wage & Apprenticeship Guide

Good Faith Effort Exception: does a request qualify?

check_good_faith_request
Read-onlyIdempotent

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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
todayNoThe date to judge from (YYYY-MM-DD); defaults to the response date or the request date.
responseNoThe program’s answer so far (default none).
request_dateYesWhen the request was sent (YYYY-MM-DD): the send date for email, the delivery date on the receipt for registered mail.
received_dateNoWhen the program received it (YYYY-MM-DD), if different: the five business days run from receipt (1.45-8(f)(1)(i)(C)).
response_dateNoWhen the program answered (YYYY-MM-DD), if it did.
needed_from_dateNoWhen the apprentices were asked to start (YYYY-MM-DD): coverage runs from here.
needed_through_dateNoThe last day of the employment period requested (YYYY-MM-DD), if the request named one.
later_request_to_same_programNotrue if this is a later request to a program already asked once (14-day lead time instead of 45).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnly, idempotent, non-destructive, closed world), and the description goes well beyond them by spelling out the legal model, the lead-time thresholds, the response-silence rule, the maximum exception length, and explicitly what is returned (lead-time check, response status, run length, next request date). That return-value disclosure is especially valuable given there is no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core judgment and followed by the return content; each clause carries substantive criteria rather than filler. The first sentence is dense and run-on, which slightly costs readability, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a high-complexity regulatory tool with no output schema, the description supplies the qualifying criteria, the timing rules, the coverage duration, and the shape of the result, which is close to complete. It stops short of describing the negative outcome (what an agent sees when a request fails to qualify), a minor remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all eight parameters including defaults and enum values. The description's mention of dates, occupation, location, number, expected hours and contact maps loosely onto the inputs but adds no per-parameter syntax or defaulting rules beyond what the schema carries, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (judges) and resource (a request for apprentices) and scopes it to the Good Faith Effort Exception with a precise regulatory citation, so the agent can separate it from siblings like check_applicability. The listed criteria (45-day/14-day lead time, denial or 5-business-day silence, 365/366-day window) pin down exactly what is being evaluated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description thoroughly establishes the conditions under which the exception applies, which implicitly tells the agent when this tool is the right one. It does not, however, name an alternative or state a when-not case (e.g., pointing to check_applicability for prerequisite questions), so routing between siblings is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources