Skip to main content
Glama

Server Details

USCIS fees, processing times, form editions, alerts, and the Visa Bulletin. Not legal advice.

Ownership verified
Status
Healthy
Uptime
99.9% over 20 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
–
Claude
–

TDQS

A4.6/5.0

Scored across 8 tools

Disambiguation5/5

Each tool targets a clearly distinct resource or query mode: form editions, fees, processing times, visa bulletin charts, DV cutoffs, bulletin notes, form changes, and keyword alerts. The descriptions explicitly route ambiguous-sounding cases, such as check_form_edition versus list_form_changes, and list_form_changes versus search_alerts.

Naming Consistency5/5

All tools use consistent snake_case verb_noun naming with semantically appropriate verbs such as check, get, list, and search. The visa bulletin variants are named predictably with clear suffixes (_dv, _notes).

Tool Count5/5

Eight tools is well-scoped for a published immigration reference-data server. Each tool covers a distinct data lookup area, and there is no obvious filler or redundancy.

Completeness4/5

The surface covers core published reference data: form editions, fees, processing times, visa bulletin charts, DV cutoffs, bulletin notes, edition changes, and alerts. Minor gaps remain, such as general form metadata or a complete visa bulletin table lookup, but agents can work around most needs.

Available Tools

8 tools
check_form_editionCheck form editionA
Read-only
Inspect

Returns the edition of one USCIS form that USCIS accepts today, with its accept-from and reject-from dates. Use it to check which edition of a form USCIS accepts, with the date of that answer. If USCIS has announced a newer edition it does not accept yet, announced_edition gives that edition and its accept-from date. For edition changes across all forms since a date, use list_form_changes. Covers I-90, I-129, I-130, I-131, I-140, I-485, I-539, I-765, and N-400; any other form returns not_found. Free, no sign-in required. Limit: 20 calls per minute per IP, then rate_limited. Not legal advice. Source: the form's page on uscis.gov, or a dated web.archive.org capture of that page.

NameRequiredDescriptionDefault
formYesUSCIS form number exactly as USCIS writes it, uppercase with the hyphen, e.g. "I-765". "i765" and "I765" do not match

Output Schema

NameRequiredDescription
dataYes
as_ofYes
source_urlYes
content_hashYes
not_legal_adviceYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already establish a safe read-only, closed-world operation, and the description adds substantial context beyond them: no sign-in, a 20-calls-per-minute-per-IP limit with a rate_limited response, the not_found path for unsupported forms, the announced_edition field for a future edition not yet accepted, and source attribution to uscis.gov or a dated web.archive.org capture. That is exactly the behavioral texture annotations cannot convey.

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?

Front-loaded with the return value, then usage, sibling routing, coverage, access terms, limits, and provenance. Every sentence carries operational information, though the tail end ("Not legal advice" plus source attribution) adds length after the key facts are already delivered.

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

Completeness5/5

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

An output schema exists, so return-value structure needn't be explained, and the description covers the remaining risks: valid versus invalid inputs, the announced_edition edge case, rate limiting, and source provenance. Nothing an agent needs in order to call this correctly is missing.

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

Parameters4/5

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

Schema coverage is 100% and the schema already specifies the exact uppercase hyphenated format with a counterexample. The description still adds value by enumerating which form identifiers are actually valid, converting the string parameter into an implicit enum and telling the agent what happens outside it.

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 and resource up front: returns the currently accepted edition of one USCIS form plus its accept-from and reject-from dates. It also distinguishes the sibling list_form_changes by scope (single form vs. all forms since a date), so an agent can route correctly without opening either schema.

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

Usage Guidelines5/5

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

Explicitly says when to use it ("check which edition of a form USCIS accepts, with the date of that answer") and names the alternative with its triggering condition ("For edition changes across all forms since a date, use list_form_changes"). It further bounds applicability by listing the nine supported forms and stating any other form returns not_found.

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

get_feeGet filing feeA
Read-only
Inspect

Returns a published government fee and its effective date. For US (the default), the general filing fee for a USCIS form and filing method. I-129, I-131, and I-907 have no general filing fee: pass category. For I-131, the label this tool uses: a short name of the Appendix B heading, a colon, and the item selector, such as "Reentry Permit: Part 1., Item Number 1." For I-129 and I-907, the category argument says how to name the classification. US covers I-90, I-130, I-140, I-485, I-539, I-765, and N-400, paper and online, and I-129, I-131, and I-907 by category; only some G-1055 categories are covered, and an uncovered one returns no fee. An I-129 amount is the filing fee G-1055 lists for that row. Fees G-1055 lists apart from it are not in the amount. An I-907 amount is the premium processing fee only, not the fee for the form it accompanies. Any other form returns not_found. For GB, the fee for a published Home Office fee category; pass the section heading as category when the name appears in more than one section. For AU, a visa application charge component that Migration Regulations 1994, Schedule 1 states for a visa subclass, from the item's table for any other applicant or its only charge table. Pass the subclass as form, such as "189", and the component as category, such as "Base application charge"; category is required when the subclass has more than one component. 500 and 590 are subclasses whose charge Schedule 1 states in item 1222. Other amounts apply to some applicants; notes names the item and compilation. amount_cents is in the minor unit of currency. filing is "unspecified" when the source states no filing channel. It does not say which fee applies to a case. For a USCIS form's current edition, use check_form_edition. Requires sign-in at https://immigrationlayer.com/login and an active plan. Without a plan it returns subscription_required. Limit: 30 calls per minute per account, shared by all paid tools, then rate_limited. Not legal advice. Sources: for US, the USCIS fee schedule (Form G-1055), the 2024 USCIS fee rule (89 FR 6194), and, for I-907, the 2026 premium processing fee rule (91 FR 1059); for GB, the Home Office visa regulations revised table on gov.uk, used under the Open Government Licence v3.0; for AU, Migration Regulations 1994, Schedule 1. Australian charges are based on content from the Federal Register of Legislation, CC BY 4.0.

NameRequiredDescriptionDefault
formYesFor US, the USCIS form number exactly as USCIS writes it, e.g. "I-765"; "i765" and "I765" do not match. For GB, the published Home Office fee category name. For AU, the three-digit visa subclass, such as "500".
filingNoHow the form is filed: "paper" (mailed) or "online" (USCIS online account). Required for US. Ignored for GB and AU.
countryNoISO 3166-1 alpha-2 country code. "US" (default), "GB", or "AU".
categoryNoFor US I-131, a short name of the Appendix B heading, a colon, and the item selector, such as "Reentry Permit: Part 1., Item Number 1." For US I-129, the classification label exactly as G-1055 Appendix A prints it, such as "If you are filing H-1B or H-1B1 petitions."; for a small employer row, that label, a space, and "If you are filing as a Small Employer or Nonprofit." For US I-907, the classification label exactly as G-1055 prints it, such as "H-2B or R nonimmigrant classification". Required for I-129, I-131, and I-907. For GB, the published section heading. Required when the fee category name appears in more than one section. For AU, the charge component exactly as the item states it, such as "Base application charge"; required when the subclass has more than one.

Output Schema

NameRequiredDescription
dataYes
as_ofYes
source_urlYes
content_hashYes
not_legal_adviceYes

TDQS

A4.5/5.0
Behavior5/5

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

Adds substantial behavior beyond the read-only annotations: sign-in and active-plan requirements, subscription_required and rate_limited errors, 30-calls-per-minute limit, not_found/no-fee outcomes, amount semantics, and filing-channel unspecified behavior. These details are directly useful to an agent invoking the tool.

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

Conciseness3/5

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

The purpose is front-loaded, but the description is very long and dense, with repeated parameter guidance and extensive source citations. It is complete yet not concise.

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

Completeness5/5

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

Given the multi-country fee lookup complexity, the description covers coverage limits, required category conditions, error behavior, authentication, rate limits, and source context. An output schema exists, so return-value details need not be fully elaborated.

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 carries the parameter semantics. The description largely repeats the form, filing, country, and category rules rather than adding much beyond the structured fields.

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 and resource: returns a published government fee and effective date, with clear US/GB/AU coverage. It distinguishes itself from check_form_edition by directing current-edition lookups there.

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

Usage Guidelines5/5

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

Provides explicit usage context by country, notes that it does not determine which fee applies to a case, and names check_form_edition as the alternative for current editions. It also explains fallback behavior for uncovered categories and unsupported forms.

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

get_processing_timeGet processing timeA
Read-only
Inspect

Returns a published processing time for one form or visa route, category, and office. For US (the default), the USCIS processing-time estimate: the time within which 80% of cases were completed, in months, weeks, or days. Use it when the user asks for USCIS's published processing time for a form. It reports past completions, not how long a given case will take. Pass form, category, and office exactly as the USCIS processing times tool lists them. Every US estimate on file has both a category and an office, so omitting either returns not_found. For GB, UK Visas and Immigration's published processing time for a visa route, as the page words it. Pass the route as form, such as "Skilled Worker", and office "inside the UK" or "outside the UK". Pass the page's section heading as category when the route appears in more than one section. A time the page marks with "*" carries the page's footnote in category_notes. It does not say how long a given application will take. For AU, the "90% processed in" figure the Department of Home Affairs global visa processing times page publishes for a visa subclass and stream, as the page words it. The page bases it on recently decided applications. Pass the three-digit subclass as form, such as "500", and the stream as the page lists it as category; category is required when the subclass has more than one stream. Omit office. category_notes carries the page's caveat and any note the page gives for that subclass and stream. It does not say how long a given application will take. For Visa Bulletin waits, use get_visa_bulletin. Requires sign-in at https://immigrationlayer.com/login and an active plan. Without a plan it returns subscription_required. Limit: 30 calls per minute per account, shared by all paid tools, then rate_limited. Not legal advice. Source: for US, the USCIS processing times tool (egov.uscis.gov); for GB, the UK Visas and Immigration visa processing times pages on gov.uk for applications inside and outside the UK; for AU, the Department of Home Affairs global visa processing times page (immi.homeaffairs.gov.au). UK processing-time data contains public sector information licensed under the Open Government Licence v3.0. Australian processing-time data: Australian Government Department of Home Affairs, licensed under CC BY 3.0 AU (https://creativecommons.org/licenses/by/3.0/au/). ImmigrationLayer extracted and reformatted it.

NameRequiredDescriptionDefault
formYesFor US, the USCIS form number exactly as USCIS writes it, e.g. "I-765"; "i765" and "I765" do not match. For GB, the visa route exactly as the UKVI page lists it, e.g. "Skilled Worker". For AU, the three-digit visa subclass, such as "500".
officeNoFor US, the USCIS office exactly as the processing times tool lists it, e.g. "Service Center Operations (SCOPS)", "National Benefits Center", or a field office such as "Houston TX". For GB, "inside the UK" or "outside the UK". Required for GB. Omit for AU.
countryNoISO 3166-1 alpha-2 country code. "US" (default), "GB", or "AU".
categoryNoFor US, the eligibility category exactly as the USCIS processing times tool lists it, e.g. "Based on an approved asylum application [(a)(5)]" for I-765. For GB, the page's section heading, such as "Popular work visas"; required when the route appears in more than one section. For AU, the visa stream exactly as the page lists it, such as "Higher Education Sector"; required when the subclass has more than one stream.

Output Schema

NameRequiredDescription
dataYes
as_ofYes
source_urlYes
content_hashYes
not_legal_adviceYes

TDQS

A4.5/5.0
Behavior5/5

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

Goes well past the readOnly/openWorld annotations: discloses auth requirements (sign-in plus active plan), the exact failure codes (not_found, subscription_required, rate_limited), a concrete rate limit (30 calls/min shared across all paid tools), and that omitting category or office for US yields not_found. It also names source provenance and licensing, which matters for how the numbers should be cited.

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

Conciseness3/5

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

Purpose is front-loaded and the country-by-country structure is scannable, but the text is long and repeats 'It does not say how long a given application will take' three times. The trailing licensing paragraphs are necessary for attribution yet consume a large share of an already bloated description.

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

Completeness5/5

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

Output schema exists, so return values need not be explained. For a multi-country, multi-source lookup with auth gating and rate limits, the description covers everything an agent needs to call it correctly and interpret failures.

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 per-country meaning of form/office/category is already fully documented — most of the description's parameter text duplicates it. It does add two things the schema does not: the not_found consequence of omitting category or office for US, and the fact that footnote data surfaces as category_notes. Useful but marginal over an already-complete schema, so baseline 3.

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 and resource ('Returns a published processing time for one form or visa route, category, and office') and immediately breaks it down per-country source (USCIS, UKVI, Home Affairs). It explicitly routes to a sibling ('For Visa Bulletin waits, use get_visa_bulletin'), so an agent can separate this from get_visa_bulletin and get_fee without opening a schema.

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

Usage Guidelines5/5

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

Gives an explicit trigger ('Use it when the user asks for USCIS's published processing time for a form'), an explicit exclusion ('It reports past completions, not how long a given case will take'), a named alternative for the adjacent need, and per-country conditions that determine what to pass. Nothing about when-to-call 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.

get_visa_bulletinGet Visa Bulletin chart entryA
Read-only
Inspect

Returns one family- or employment-based cutoff from a month's State Department Visa Bulletin: the Final Action Date or Date for Filing for a preference category and chargeability country. Use it when the user asks whether a priority date is current. date_or_status is a YYYY-MM-DD cutoff, "C" (current), or "U" (unavailable). For Diversity Visa lottery cutoffs, use get_visa_bulletin_dv. For the bulletin's advisory notes on future movement, use get_visa_bulletin_notes. A month or combination not on file returns not_found. Requires sign-in at https://immigrationlayer.com/login and an active plan. Without a plan it returns subscription_required. Limit: 30 calls per minute per account, shared by all paid tools, then rate_limited. Not legal advice. Source: the Department of State Visa Bulletin (travel.state.gov).

NameRequiredDescriptionDefault
chartYes"final_action" for the Final Action Dates chart, "dates_for_filing" for the Dates for Filing chart
monthYesBulletin month as YYYY-MM, e.g. "2026-10". A month not yet published or loaded returns not_found
countryYesChargeability country, exact: "China" (mainland-born), "India", "Mexico", "Philippines", or "All Chargeability Areas", the bulletin column for countries without their own column
categoryYesPreference category code, exact: F1, F2A, F2B, F3, F4, EB-1, EB-2, EB-3, EB-3-OW (other workers), EB-4, EB-4-R (religious workers), EB-5 (unreserved), EB-5-RURAL, EB-5-HUA (high unemployment), or EB-5-INFRA

Output Schema

NameRequiredDescription
dataYes
as_ofYes
source_urlYes
content_hashYes
not_legal_adviceYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnly/openWorld=false/destructive=false, and the description adds substantial context beyond them: sign-in requirement, plan gating, the subscription_required and not_found and rate_limited error paths, a 30/min shared rate limit, and the data source. This is exactly the behavioral detail an agent needs before calling.

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?

Front-loaded with purpose and trigger, then alternatives, then error/auth/rate-limit facts. Dense but every sentence carries operational value; only the trailing 'Not legal advice' and source line are marginally expendable.

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

Completeness5/5

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

For a 4-required-param lookup with an output schema, the description covers the trigger, the sibling alternatives, the value encoding of the returned cutoff, and all failure modes (not_found, subscription_required, rate_limited). Nothing an agent needs to call it correctly is missing.

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 coverage is 100% and each parameter already carries an enum or exact-value description, so the schema does the heavy lifting. The description's extra detail (the 'C'/'U'/'YYYY-MM-DD' cutoff values) describes the returned field rather than the inputs, so it adds little to parameter semantics beyond the schema. Baseline 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 and resource ('Returns one family- or employment-based cutoff from a month's State Department Visa Bulletin') and names the exact dimensions (chart type, category, country). It explicitly distinguishes itself from get_visa_bulletin_dv and get_visa_bulletin_notes, so an agent can route correctly without opening schemas.

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

Usage Guidelines5/5

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

Gives an explicit trigger ('Use it when the user asks whether a priority date is current') and names two alternatives with the conditions that select them (DV lottery cutoffs, advisory notes). Nothing 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.

get_visa_bulletin_dvGet Diversity Visa lottery cutoffA
Read-only
Inspect

Returns the Diversity Visa (DV lottery) rank cutoff for one region in a month's Visa Bulletin, or a country exception the bulletin lists within that region. Use it when a DV selectee asks whether their case number is current. For family and employment chart dates, use get_visa_bulletin. For the bulletin's advisory notes, use get_visa_bulletin_notes. A month or region not on file returns not_found. Free, no sign-in required. Limit: 20 calls per minute per IP, then rate_limited. Not legal advice. Source: the Department of State Visa Bulletin (travel.state.gov).

NameRequiredDescriptionDefault
monthYesBulletin month as YYYY-MM, e.g. "2026-10". A month not yet published or loaded returns not_found
regionYesDV region, exact: "Africa", "Asia", "Europe", "North America", "Oceania", or "South America and the Caribbean"
countryNoChargeability country within the region; falls back to the region's "All" rate when the country has no listed exception, or when omitted

Output Schema

NameRequiredDescription
dataYes
as_ofYes
source_urlYes
content_hashYes
not_legal_adviceYes

TDQS

A4.4/5.0
Behavior4/5

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

Goes well beyond the annotations by disclosing error semantics (a month or region not on file returns not_found), auth and cost ('free, no sign-in required'), and a concrete rate limit ('20 calls per minute per IP, then rate_limited'), plus the data source and a legal disclaimer. The annotations already carry the read-only/closed-world profile, so this is a genuinely additive disclosure; the only missing piece is whether the cutoff is a rank number versus a date field, which the output schema presumably covers.

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

Conciseness5/5

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

Five short sentences, front-loaded with the core behavior, then the routing to siblings, then failure mode, then operational facts. Every sentence carries distinct information; none repeats the schema or annotations.

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?

With an output schema present, return values need no explanation, and the description still covers failure modes, rate limits, cost, and data provenance. The only gap is that it does not say whether a missing country exception falls back silently or is flagged, though the schema hints at the fallback.

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 month format, the exact region list, and the country fallback behavior are already documented in the schema. The description's phrase about a 'country exception the bulletin lists within that region' reinforces the country parameter's semantics but adds little beyond what the schema states. Baseline 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 and resource: returns the Diversity Visa rank cutoff for one region in a given month's bulletin, plus any country exception listed within that region. This is clearly separable from get_visa_bulletin (family/employment chart dates) and get_visa_bulletin_notes (advisory notes) without opening either schema.

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

Usage Guidelines5/5

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

Gives the triggering scenario explicitly ('use it when a DV selectee asks whether their case number is current') and names both alternatives with the conditions that select them. Nothing is left to inference about when this is the wrong tool.

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

get_visa_bulletin_notesGet Visa Bulletin advisory notesA
Read-only
Inspect

Returns every lettered advisory note in a month's Visa Bulletin: the forward-looking text, e.g. "EB-1 India may become unavailable". Use it when the user asks whether dates are expected to advance, hold, or retrogress. For the chart dates themselves, use get_visa_bulletin or get_visa_bulletin_dv. An empty list means the month was loaded and had no notes; a month not on file returns not_found. Free, no sign-in required. Limit: 20 calls per minute per IP, then rate_limited. Not legal advice. Source: the Department of State Visa Bulletin (travel.state.gov).

NameRequiredDescriptionDefault
monthYesBulletin month as YYYY-MM, e.g. "2026-10". A month not yet published or loaded returns not_found

Output Schema

NameRequiredDescription
dataYes
as_ofYes
source_urlYes
content_hashYes
not_legal_adviceYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare a safe read-only, closed-world operation, and the description adds substantial context beyond them: empty-list vs not_found semantics, no auth or cost, a concrete rate limit (20/min per IP) with the resulting rate_limited error, and a data source. This is exactly the extra behavioral detail the agent cannot infer from annotations.

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

Conciseness5/5

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

The purpose and the routing guidance are front-loaded, and the trailing sentences each deliver a distinct operational fact (empty vs not_found, cost/auth, rate limit, disclaimer, source). No sentence is filler despite the density.

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

Completeness5/5

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

An output schema exists, so return-value shape needn't be documented, and the description still covers the two edge outcomes an agent must handle (empty list vs not_found). Combined with the rate-limit and auth notes, nothing needed to call this tool correctly is missing.

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 coverage is 100% and the single 'month' parameter already carries the YYYY-MM pattern, an example, and the not_found caveat. The description restates the not_found behavior but adds no new syntax or format meaning, so the baseline 3 for schema-complete parameters applies.

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?

Opens with a specific verb and resource ('Returns every lettered advisory note in a month's Visa Bulletin') and immediately illustrates the content with a concrete example ('EB-1 India may become unavailable'). It explicitly distinguishes itself from the sibling chart tools get_visa_bulletin and get_visa_bulletin_dv.

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

Usage Guidelines5/5

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

Gives an explicit trigger ('when the user asks whether dates are expected to advance, hold, or retrogress') and names the alternatives plus the condition that selects them ('For the chart dates themselves, use get_visa_bulletin or get_visa_bulletin_dv'). Both when-to-use and when-not-to-use are covered.

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

list_form_changesList form changesA
Read-only
Inspect

Lists the form edition changes and the USCIS newsroom and Federal Register alerts ImmigrationLayer has recorded on or after a date, newest first. Edition changes cover the forms check_form_edition lists. Use it to catch up on what changed since a last check. For one form's current edition, use check_form_edition. To find alerts by keyword, use search_alerts. Returns at most 100 form edition changes and 100 alerts per page. Pass next_cursor as cursor, with the same since, to continue until next_cursor is null. Empty lists on the first page mean nothing was recorded since that date. Free, no sign-in required. Limit: 20 calls per minute per IP, then rate_limited. Not legal advice. Sources: uscis.gov form pages or dated web.archive.org captures of them, USCIS newsroom alerts, and Federal Register notices. The top-level source URL identifies the exact aggregate query, including the page cursor. Each alert and form change keeps its own source URL and content hash.

NameRequiredDescriptionDefault
sinceYesISO 8601 date or date-time, e.g. "2026-08-01" or "2026-08-01T09:30:00Z"; returns changes on or after this instant. A date means midnight UTC; a date-time without an offset is UTC.
cursorNoOpaque navigation cursor from the preceding page's next_cursor. Omit for the first page.

Output Schema

NameRequiredDescription
dataYes
as_ofYes
source_urlYes
content_hashYes
not_legal_adviceYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnly, non-destructive, closed-world), and the description adds substantial context beyond them: 100-item-per-resource page caps, cursor continuation rules, the meaning of empty first-page lists, free/no-sign-in access, and a concrete 20-calls-per-minute-per-IP limit with the rate_limited failure mode. Source provenance and the per-item source URL/content hash round it out.

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?

Front-loaded with purpose and alternatives, and nearly every sentence carries operative information. The trailing provenance sentences about source URLs and content hashes are useful for verification but push the length near the limit for a two-parameter read tool.

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

Completeness5/5

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

With an output schema present, return shape need not be explained. The description still covers pagination, rate limits, access cost, empty-result semantics, and data provenance — nothing an agent needs to call this correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline would be 3, but the description adds real semantics: cursor must be passed as next_cursor with the same since value and paginated until next_cursor is null. That is a non-obvious usage constraint not visible in the schema.

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?

The first sentence names a specific verb and two concrete resources (form edition changes plus USCIS newsroom and Federal Register alerts), states the ordering (newest first) and the scope (edition changes are exactly those check_form_edition covers). This distinguishes it clearly from check_form_edition and search_alerts without opening either schema.

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

Usage Guidelines5/5

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

Explicitly states the use case ("catch up on what changed since a last check") and routes to both alternatives with their selecting conditions: check_form_edition for one form's current edition, search_alerts for keyword lookup. Both when-to-use and when-not-to-use are present.

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

search_alertsSearch alertsA
Read-only
Inspect

Searches published immigration announcements by keyword, newest first. For US (the default), USCIS newsroom alerts and Federal Register notices. Use it to find announcements about a form or topic, e.g. "I-765" or "fee". For GB, Home Office media statements and fact sheets that the Home Office in the media feed tags as immigration, matched by title. They are statements, not rule changes. GB results cover recent posts ImmigrationLayer has stored from the feed, not a full archive. Each GB item carries its feed categories and a licence attribution. Australian alerts list registered compilations of the Migration Regulations 1994, based on content from the Federal Register of Legislation, CC BY 4.0. AU titles state only the compilation number; search "compilation" to list them. Each AU item carries its start date and a licence attribution. To list everything published since a date without a keyword, use list_form_changes, which is free. Returns at most 100 matches per page. Pass next_cursor as cursor to continue until next_cursor is null. No match returns an empty list, not an error. Requires sign-in at https://immigrationlayer.com/login and an active plan. Without a plan it returns subscription_required. Limit: 30 calls per minute per account, shared by all paid tools, then rate_limited. Not legal advice. Sources: for US, USCIS newsroom alerts and Federal Register notices; for GB, the Home Office in the media blog feed (homeofficemedia.blog.gov.uk); for AU, the Federal Register of Legislation (legislation.gov.au). UK alert data contains public sector information licensed under the Open Government Licence v3.0. The top-level source URL identifies the exact aggregate query, including the page cursor; each result preserves its government URL, source, and content hash.

NameRequiredDescriptionDefault
queryYesKeyword matched case-insensitively anywhere in an alert's title. A form number such as "I-765" also matches alerts tagged with that form. Summaries are not searched
sinceNoISO 8601 date or date-time, e.g. "2026-08-01" or "2026-08-01T09:30:00Z"; limits results to alerts published on or after this instant. A date means midnight UTC; a date-time without an offset is UTC.
cursorNoOpaque navigation cursor from the preceding page's next_cursor. Omit for the first page.
countryNoISO 3166-1 alpha-2 country code. "US" (default), "GB" or "AU".

Output Schema

NameRequiredDescription
dataYes
as_ofYes
source_urlYes
content_hashYes
not_legal_adviceYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover the read-only, closed-world, non-destructive profile, and the description goes well beyond them: sign-in and active-plan requirements, subscription_required failure mode, 30 calls/minute shared rate limit with rate_limited signal, 100-match page cap with next_cursor paging, and empty list rather than error. It stops short of describing result field shape, but an output schema exists to cover that.

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

Conciseness3/5

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

Front-loaded and well organized by country, but bloated: the source list appears twice (inline per country and again in an explicit "Sources:" sentence), and provenance/licence paragraphs plus a disclaimer crowd out the operational content. Roughly a third of the text could be cut without losing decision-relevant information.

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

Completeness5/5

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

For a multi-corpus search tool with a full output schema and complete annotations, everything an agent needs to call it correctly is present: required keyword, country behavior, pagination loop termination, auth and rate-limit failure modes, and the sibling alternative for date-only listing.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents all four parameters. The description still adds real semantics the schema lacks — country-dependent corpora, title-only matching for GB, the default of US, and the fact that summaries are not searched. Slight deduction because cursor/since behavior is largely left to the schema.

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 and resource (searches published immigration announcements), the ordering (newest first), and enumerates exactly what corpus is searched per country (USCIS newsroom + Federal Register; Home Office media feed; Migration Regulations compilations). An agent can distinguish this from check_form_edition or get_fee purely from the text.

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

Usage Guidelines5/5

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

Gives a concrete usage example ("I-765" or "fee") and explicitly routes the no-keyword-by-date case to list_form_changes, even noting that alternative is free. It also warns that AU titles only carry compilation numbers and that searching "compilation" is the way to list them.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedsearch_alerts5 fields changed
      • changedInput schema / properties / country / description
        Previous value: -"ISO 3166-1 alpha-2 country code. \"US\" (default) or \"GB\"."New value: +"ISO 3166-1 alpha-2 country code. \"US\" (default), \"GB\" or \"AU\"."
      • changedInput schema / properties / country / enum
        Previous value: -[
        -  "US",
        -  "GB"
        -]New value: +[
        +  "US",
        +  "GB",
        +  "AU"
        +]
      • changedOutput schema / properties / data / properties / alerts / items / properties / attribution / description
        Previous value: -"Licence attribution for the source data. Present for GB, absent for US."New value: +"Licence attribution for the source data. Present for GB and AU, absent for US."
      • changedOutput schema / properties / data / properties / alerts / items / properties / source / enum
        Previous value: -[
        -  "uscis_newsroom",
        -  "federal_register",
        -  "home_office_media"
        -]New value: +[
        +  "uscis_newsroom",
        +  "federal_register",
        +  "home_office_media",
        +  "legislation_au"
        +]
      • addedOutput schema / properties / data / properties / alerts / items / properties / start_date
        Added value: +{
        +  "description": "The date the compilation shows the Regulations as in force from (YYYY-MM-DD). Present for AU, absent for US and GB.",
        +  "type": "string"
        +}
  2. 2 tool updates
    • Changedget_processing_time6 fields changed
      • changedInput schema / properties / category / description
        Previous value: -"For US, the eligibility category exactly as the USCIS processing times tool lists it, e.g. \"Based on an approved asylum application [(a)(5)]\" for I-765. For GB, the page's section heading, such as \"Popular work visas\"; required when the route appears in more than one section."New value: +"For US, the eligibility category exactly as the USCIS processing times tool lists it, e.g. \"Based on an approved asylum application [(a)(5)]\" for I-765. For GB, the page's section heading, such as \"Popular work visas\"; required when the route appears in more than one section. For AU, the visa stream exactly as the page lists it, such as \"Higher Education Sector\"; required when the subclass has more than one stream."
      • changedInput schema / properties / country / description
        Previous value: -"ISO 3166-1 alpha-2 country code. \"US\" (default) or \"GB\"."New value: +"ISO 3166-1 alpha-2 country code. \"US\" (default), \"GB\", or \"AU\"."
      • changedInput schema / properties / country / enum
        Previous value: -[
        -  "US",
        -  "GB"
        -]New value: +[
        +  "US",
        +  "GB",
        +  "AU"
        +]
      • changedInput schema / properties / form / description
        Previous value: -"For US, the USCIS form number exactly as USCIS writes it, e.g. \"I-765\"; \"i765\" and \"I765\" do not match. For GB, the visa route exactly as the UKVI page lists it, e.g. \"Skilled Worker\"."New value: +"For US, the USCIS form number exactly as USCIS writes it, e.g. \"I-765\"; \"i765\" and \"I765\" do not match. For GB, the visa route exactly as the UKVI page lists it, e.g. \"Skilled Worker\". For AU, the three-digit visa subclass, such as \"500\"."
      • changedInput schema / properties / office / description
        Previous value: -"For US, the USCIS office exactly as the processing times tool lists it, e.g. \"Service Center Operations (SCOPS)\", \"National Benefits Center\", or a field office such as \"Houston TX\". For GB, \"inside the UK\" or \"outside the UK\". Required for GB."New value: +"For US, the USCIS office exactly as the processing times tool lists it, e.g. \"Service Center Operations (SCOPS)\", \"National Benefits Center\", or a field office such as \"Houston TX\". For GB, \"inside the UK\" or \"outside the UK\". Required for GB. Omit for AU."
      • changedOutput schema / properties / data / properties / attribution / description
        Previous value: -"Licence attribution for the source data. Present for GB, absent for US."New value: +"Licence attribution for the source data. Present for GB and AU, absent for US."
    • Changedsearch_alerts4 fields changed
      • addedInput schema / properties / country
        Added value: +{
        +  "description": "ISO 3166-1 alpha-2 country code. \"US\" (default) or \"GB\".",
        +  "enum": [
        +    "US",
        +    "GB"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / data / properties / alerts / items / properties / attribution
        Added value: +{
        +  "description": "Licence attribution for the source data. Present for GB, absent for US.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / data / properties / alerts / items / properties / categories
        Added value: +{
        +  "description": "The feed's category terms for the post. Present for GB, absent for US.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / properties / data / properties / alerts / items / properties / source / enum
        Previous value: -[
        -  "uscis_newsroom",
        -  "federal_register"
        -]New value: +[
        +  "uscis_newsroom",
        +  "federal_register",
        +  "home_office_media"
        +]
  3. 1 tool update
    • Changedget_fee7 fields changed
      • changedInput schema / properties / category / description
        Previous value: -"For US I-131, a short name of the Appendix B heading, a colon, and the item selector, such as \"Reentry Permit: Part 1., Item Number 1.\" For US I-129, the classification label exactly as G-1055 Appendix A prints it, such as \"If you are filing H-1B or H-1B1 petitions.\"; for a small employer row, that label, a space, and \"If you are filing as a Small Employer or Nonprofit.\" For US I-907, the classification label exactly as G-1055 prints it, such as \"H-2B or R nonimmigrant classification\". Required for I-129, I-131, and I-907. For GB, the published section heading. Required when the fee category name appears in more than one section."New value: +"For US I-131, a short name of the Appendix B heading, a colon, and the item selector, such as \"Reentry Permit: Part 1., Item Number 1.\" For US I-129, the classification label exactly as G-1055 Appendix A prints it, such as \"If you are filing H-1B or H-1B1 petitions.\"; for a small employer row, that label, a space, and \"If you are filing as a Small Employer or Nonprofit.\" For US I-907, the classification label exactly as G-1055 prints it, such as \"H-2B or R nonimmigrant classification\". Required for I-129, I-131, and I-907. For GB, the published section heading. Required when the fee category name appears in more than one section. For AU, the charge component exactly as the item states it, such as \"Base application charge\"; required when the subclass has more than one."
      • changedInput schema / properties / country / description
        Previous value: -"ISO 3166-1 alpha-2 country code. \"US\" (default) or \"GB\"."New value: +"ISO 3166-1 alpha-2 country code. \"US\" (default), \"GB\", or \"AU\"."
      • changedInput schema / properties / country / enum
        Previous value: -[
        -  "US",
        -  "GB"
        -]New value: +[
        +  "US",
        +  "GB",
        +  "AU"
        +]
      • changedInput schema / properties / filing / description
        Previous value: -"How the form is filed: \"paper\" (mailed) or \"online\" (USCIS online account). Required for US. Ignored for GB."New value: +"How the form is filed: \"paper\" (mailed) or \"online\" (USCIS online account). Required for US. Ignored for GB and AU."
      • changedInput schema / properties / form / description
        Previous value: -"For US, the USCIS form number exactly as USCIS writes it, e.g. \"I-765\"; \"i765\" and \"I765\" do not match. For GB, the published Home Office fee category name."New value: +"For US, the USCIS form number exactly as USCIS writes it, e.g. \"I-765\"; \"i765\" and \"I765\" do not match. For GB, the published Home Office fee category name. For AU, the three-digit visa subclass, such as \"500\"."
      • addedOutput schema / properties / data / properties / attribution
        Added value: +{
        +  "description": "Licence attribution for the source data. Present for AU, absent for US and GB.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / data / properties / notes
        Added value: +{
        +  "description": "Where the source states the charge and what can change it. Present for AU, absent for US and GB.",
        +  "type": "string"
        +}
  4. 1 tool update
    • Changedget_processing_time9 fields changed
      • changedInput schema / properties / category / description
        Previous value: -"Eligibility category exactly as the USCIS processing times tool lists it, e.g. \"Based on an approved asylum application [(a)(5)]\" for I-765"New value: +"For US, the eligibility category exactly as the USCIS processing times tool lists it, e.g. \"Based on an approved asylum application [(a)(5)]\" for I-765. For GB, the page's section heading, such as \"Popular work visas\"; required when the route appears in more than one section."
      • addedInput schema / properties / country
        Added value: +{
        +  "description": "ISO 3166-1 alpha-2 country code. \"US\" (default) or \"GB\".",
        +  "enum": [
        +    "US",
        +    "GB"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / form / description
        Previous value: -"USCIS form number exactly as USCIS writes it, uppercase with the hyphen, e.g. \"I-765\". \"i765\" and \"I765\" do not match"New value: +"For US, the USCIS form number exactly as USCIS writes it, e.g. \"I-765\"; \"i765\" and \"I765\" do not match. For GB, the visa route exactly as the UKVI page lists it, e.g. \"Skilled Worker\"."
      • changedInput schema / properties / office / description
        Previous value: -"USCIS office exactly as the processing times tool lists it, e.g. \"Service Center Operations (SCOPS)\", \"National Benefits Center\", or a field office such as \"Houston TX\""New value: +"For US, the USCIS office exactly as the processing times tool lists it, e.g. \"Service Center Operations (SCOPS)\", \"National Benefits Center\", or a field office such as \"Houston TX\". For GB, \"inside the UK\" or \"outside the UK\". Required for GB."
      • addedOutput schema / properties / data / properties / attribution
        Added value: +{
        +  "description": "Licence attribution for the source data. Present for GB, absent for US.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / data / properties / basis / description
        Previous value: -"What value measures, as USCIS states it"New value: +"What value measures, as the source states it"
      • changedOutput schema / properties / data / properties / category_notes / description
        Previous value: -"USCIS's own note on the category, or null"New value: +"The source's own note on the category, or null"
      • changedOutput schema / properties / data / properties / unit / description
        Previous value: -"Unit of value as USCIS states it, e.g. \"Months\", \"Weeks\", or \"Days\""New value: +"Unit of value as the source states it, e.g. \"Months\", \"weeks\", or \"Days\""
      • changedOutput schema / properties / data / properties / value / description
        Previous value: -"The estimate, in unit"New value: +"The published time, in unit"
  5. 1 tool update
    • Changedget_fee1 field changed
      • changedInput schema / properties / category / description
        Previous value: -"For US, a short name of the Appendix B heading, a colon, and the item selector, such as \"Reentry Permit: Part 1., Item Number 1.\" Required for I-131; other US forms have no category fees. For GB, the published section heading. Required when the fee category name appears in more than one section."New value: +"For US I-131, a short name of the Appendix B heading, a colon, and the item selector, such as \"Reentry Permit: Part 1., Item Number 1.\" For US I-129, the classification label exactly as G-1055 Appendix A prints it, such as \"If you are filing H-1B or H-1B1 petitions.\"; for a small employer row, that label, a space, and \"If you are filing as a Small Employer or Nonprofit.\" For US I-907, the classification label exactly as G-1055 prints it, such as \"H-2B or R nonimmigrant classification\". Required for I-129, I-131, and I-907. For GB, the published section heading. Required when the fee category name appears in more than one section."
  6. 1 tool update
    • Changedget_fee1 field changed
      • changedInput schema / properties / category / description
        Previous value: -"For US, unsupported by the current dataset and returns not_found. For GB, the published section heading. Required when the fee category name appears in more than one section."New value: +"For US, a short name of the Appendix B heading, a colon, and the item selector, such as \"Reentry Permit: Part 1., Item Number 1.\" Required for I-131; other US forms have no category fees. For GB, the published section heading. Required when the fee category name appears in more than one section."
  7. 2 tool updates
    • Changedget_visa_bulletin2 fields changed
      • changedInput schema / properties / country / description
        Previous value: -"Chargeability country, exact: \"China\" (mainland-born), \"India\", \"Mexico\", \"Philippines\", or \"All Chargeability Areas\" for every other country"New value: +"Chargeability country, exact: \"China\" (mainland-born), \"India\", \"Mexico\", \"Philippines\", or \"All Chargeability Areas\", the bulletin column for countries without their own column"
      • changedOutput schema / properties / data / properties / date_or_status / description
        Previous value: -"Cutoff date as YYYY-MM-DD, \"C\" (current: no wait), or \"U\" (unavailable)"New value: +"Cutoff date as YYYY-MM-DD, \"C\" (current), or \"U\" (unavailable), as the bulletin prints it"
    • Changedget_visa_bulletin_dv1 field changed
      • changedOutput schema / properties / data / properties / cutoff_or_status / description
        Previous value: -"Rank cutoff: a case number such as \"35000\", or \"C\" (current: every case number qualifies)"New value: +"Rank cutoff: a case number such as \"35000\", or \"C\" (current), as the bulletin prints it"
  8. 1 tool update
    • Changedget_fee9 fields changed
      • changedInput schema / properties / category / description
        Previous value: -"Eligibility category; unsupported by the current dataset and returns not_found"New value: +"For US, unsupported by the current dataset and returns not_found. For GB, the published section heading. Required when the fee category name appears in more than one section."
      • addedInput schema / properties / country
        Added value: +{
        +  "description": "ISO 3166-1 alpha-2 country code. \"US\" (default) or \"GB\".",
        +  "enum": [
        +    "US",
        +    "GB"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / filing / description
        Previous value: -"How the form is filed: \"paper\" (mailed) or \"online\" (USCIS online account)"New value: +"How the form is filed: \"paper\" (mailed) or \"online\" (USCIS online account). Required for US. Ignored for GB."
      • changedInput schema / properties / form / description
        Previous value: -"USCIS form number exactly as USCIS writes it, uppercase with the hyphen, e.g. \"I-765\". \"i765\" and \"I765\" do not match"New value: +"For US, the USCIS form number exactly as USCIS writes it, e.g. \"I-765\"; \"i765\" and \"I765\" do not match. For GB, the published Home Office fee category name."
      • changedInput schema / required
        Previous value: -[
        -  "form",
        -  "filing"
        -]New value: +[
        +  "form"
        +]
      • changedOutput schema / properties / data / properties / amount_cents / description
        Previous value: -"Fee in US cents; 47000 is $470.00"New value: +"Fee in the minor unit of currency; 47000 with USD is $470.00."
      • addedOutput schema / properties / data / properties / currency
        Added value: +{
        +  "description": "ISO 4217 code for amount_cents, e.g. \"USD\" or \"GBP\".",
        +  "example": "USD",
        +  "type": "string"
        +}
      • changedOutput schema / properties / data / properties / filing / enum
        Previous value: -[
        -  "paper",
        -  "online"
        -]New value: +[
        +  "paper",
        +  "online",
        +  "unspecified"
        +]
      • changedOutput schema / properties / data / required
        Previous value: -[
        -  "form",
        -  "filing",
        -  "category",
        -  "amount_cents",
        -  "effective_date"
        -]New value: +[
        +  "form",
        +  "filing",
        +  "category",
        +  "amount_cents",
        +  "effective_date",
        +  "currency"
        +]
  9. 1 tool update
    • Changedlist_form_changes3 fields changed
      • addedInput schema / properties / cursor
        Added value: +{
        +  "description": "Opaque navigation cursor from the preceding page's next_cursor. Omit for the first page.",
        +  "maxLength": 4096,
        +  "type": "string"
        +}
      • addedOutput schema / properties / data / properties / next_cursor
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 4096,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Pass this cursor with the same since to read the next page. Null means no more changes."
        +}
      • changedOutput schema / properties / data / required
        Previous value: -[
        -  "form_editions",
        -  "alerts"
        -]New value: +[
        +  "form_editions",
        +  "alerts",
        +  "next_cursor"
        +]
  10. 7 tool updates
    • Changedcheck_form_edition5 fields changed
      • changedInput schema / properties / form / description
        Previous value: -"USCIS form number, e.g. \"I-765\""New value: +"USCIS form number exactly as USCIS writes it, uppercase with the hyphen, e.g. \"I-765\". \"i765\" and \"I765\" do not match"
      • addedOutput schema / properties / data / properties / accept_from / description
        Added value: +"First date USCIS accepts this edition, YYYY-MM-DD"
      • addedOutput schema / properties / data / properties / announced_edition / description
        Added value: +"The next edition USCIS has announced but does not accept yet; absent when none"
      • addedOutput schema / properties / data / properties / edition_date / description
        Added value: +"Edition date printed on the form, MM/DD/YY"
      • addedOutput schema / properties / data / properties / reject_from / description
        Added value: +"Date USCIS stops accepting this edition, YYYY-MM-DD; null when none is announced"
    • Changedget_fee5 fields changed
      • changedInput schema / properties / category / description
        Previous value: -"Eligibility category; unsupported by the current dataset and returns unavailable"New value: +"Eligibility category; unsupported by the current dataset and returns not_found"
      • changedInput schema / properties / filing / description
        Previous value: -"Filing method"New value: +"How the form is filed: \"paper\" (mailed) or \"online\" (USCIS online account)"
      • changedInput schema / properties / form / description
        Previous value: -"USCIS form number, e.g. \"I-765\""New value: +"USCIS form number exactly as USCIS writes it, uppercase with the hyphen, e.g. \"I-765\". \"i765\" and \"I765\" do not match"
      • addedOutput schema / properties / data / properties / amount_cents / description
        Added value: +"Fee in US cents; 47000 is $470.00"
      • addedOutput schema / properties / data / properties / effective_date / description
        Added value: +"Date this fee took effect, YYYY-MM-DD"
    • Changedget_processing_time10 fields changed
      • changedInput schema / properties / category / description
        Previous value: -"Eligibility category"New value: +"Eligibility category exactly as the USCIS processing times tool lists it, e.g. \"Based on an approved asylum application [(a)(5)]\" for I-765"
      • addedInput schema / properties / category / example
        Added value: +"Based on an approved asylum application [(a)(5)]"
      • changedInput schema / properties / form / description
        Previous value: -"USCIS form number, e.g. \"I-765\""New value: +"USCIS form number exactly as USCIS writes it, uppercase with the hyphen, e.g. \"I-765\". \"i765\" and \"I765\" do not match"
      • changedInput schema / properties / office / description
        Previous value: -"USCIS field office or service center"New value: +"USCIS office exactly as the processing times tool lists it, e.g. \"Service Center Operations (SCOPS)\", \"National Benefits Center\", or a field office such as \"Houston TX\""
      • addedInput schema / properties / office / example
        Added value: +"Service Center Operations (SCOPS)"
      • addedOutput schema / properties / data / properties / basis / description
        Added value: +"What value measures, as USCIS states it"
      • changedOutput schema / properties / data / properties / basis / example
        Previous value: -"Months"New value: +"80% of cases completed within"
      • addedOutput schema / properties / data / properties / category_notes / description
        Added value: +"USCIS's own note on the category, or null"
      • addedOutput schema / properties / data / properties / unit / description
        Added value: +"Unit of value as USCIS states it, e.g. \"Months\", \"Weeks\", or \"Days\""
      • addedOutput schema / properties / data / properties / value / description
        Added value: +"The estimate, in unit"
    • Changedget_visa_bulletin6 fields changed
      • changedInput schema / properties / category / description
        Previous value: -"Preference category, e.g. \"F2A\""New value: +"Preference category code, exact: F1, F2A, F2B, F3, F4, EB-1, EB-2, EB-3, EB-3-OW (other workers), EB-4, EB-4-R (religious workers), EB-5 (unreserved), EB-5-RURAL, EB-5-HUA (high unemployment), or EB-5-INFRA"
      • changedInput schema / properties / chart / description
        Previous value: -"Which chart to read"New value: +"\"final_action\" for the Final Action Dates chart, \"dates_for_filing\" for the Dates for Filing chart"
      • changedInput schema / properties / country / description
        Previous value: -"Chargeability country"New value: +"Chargeability country, exact: \"China\" (mainland-born), \"India\", \"Mexico\", \"Philippines\", or \"All Chargeability Areas\" for every other country"
      • changedInput schema / properties / month / description
        Previous value: -"Bulletin month as YYYY-MM, e.g. \"2026-10\""New value: +"Bulletin month as YYYY-MM, e.g. \"2026-10\". A month not yet published or loaded returns not_found"
      • addedOutput schema / properties / data / properties / date_or_status / description
        Added value: +"Cutoff date as YYYY-MM-DD, \"C\" (current: no wait), or \"U\" (unavailable)"
      • changedOutput schema / properties / data / properties / date_or_status / example
        Previous value: -"01JAN21"New value: +"2021-01-01"
    • Changedget_visa_bulletin_dv3 fields changed
      • changedInput schema / properties / month / description
        Previous value: -"Bulletin month as YYYY-MM, e.g. \"2026-10\""New value: +"Bulletin month as YYYY-MM, e.g. \"2026-10\". A month not yet published or loaded returns not_found"
      • changedInput schema / properties / region / description
        Previous value: -"DV region, e.g. \"Africa\""New value: +"DV region, exact: \"Africa\", \"Asia\", \"Europe\", \"North America\", \"Oceania\", or \"South America and the Caribbean\""
      • addedOutput schema / properties / data / properties / cutoff_or_status / description
        Added value: +"Rank cutoff: a case number such as \"35000\", or \"C\" (current: every case number qualifies)"
    • Changedget_visa_bulletin_notes1 field changed
      • changedInput schema / properties / month / description
        Previous value: -"Bulletin month as YYYY-MM, e.g. \"2026-10\""New value: +"Bulletin month as YYYY-MM, e.g. \"2026-10\". A month not yet published or loaded returns not_found"
    • Changedsearch_alerts1 field changed
      • changedInput schema / properties / query / description
        Previous value: -"Keyword to search for"New value: +"Keyword matched case-insensitively anywhere in an alert's title. A form number such as \"I-765\" also matches alerts tagged with that form. Summaries are not searched"
  11. 8 tool updates
    • First observedcheck_form_edition
    • First observedget_fee
    • First observedget_processing_time
    • First observedget_visa_bulletin
    • First observedget_visa_bulletin_dv
    • First observedget_visa_bulletin_notes
    • First observedlist_form_changes
    • First observedsearch_alerts

Publisher details

Operator
Zentered Studios
Vendor relationship
Not applicable
Trust center
Not applicable
Restrictions
Four tools are free with no sign-in. The other four need sign-in and an active plan.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    MCP server for US immigration guidance — live Visa Bulletin, priority date checker, and immigration term explanations powered by official government data
    3
    3
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables searching and analyzing real H-1B visa sponsorship data from the U.S. Department of Labor, including job titles, salaries, locations, and company statistics.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Read-only MCP server for querying H-1B sponsoring employers from the USCIS dataset, providing tools to search employers, get year-by-year approvals, top sponsors, and trends across FY2009-2026.
    2
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources