USCIS fees, processing times, form editions, alerts, and the Visa Bulletin. Not legal advice.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
USCIS form number exactly as USCIS writes it, uppercase with the hyphen, e.g. "I-765". "i765" and "I765" do not match
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.
| Argument | Type | Description |
|---|---|---|
| form* | string | USCIS form number exactly as USCIS writes it, uppercase with the hyphen, e.g. "I-765". "i765" and "I765" do not match |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"form"
],
"properties": {
"form": {
"type": "string",
"example": "I-765",
"maxLength": 256,
"minLength": 1,
"description": "USCIS form number exactly as USCIS writes it, uppercase with the hyphen, e.g. \"I-765\". \"i765\" and \"I765\" do not match"
}
}
}Returns a published government fee and its effective date. For US (the default), the general filing fee for a USCIS form and filing method; category-specific US fees are unavailable, so omit category. US covers I-90, I-130, I-140, I-485, I-539, I-765, and N-400, paper and online; 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. 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) and the 2024 USCIS fee rule (89 FR 6194); for GB, the Home Office visa regulations revised table on gov.uk, used under the Open Government Licence v3.0.
| Argument | Type | Description |
|---|---|---|
| form* | string | 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. |
| filing | string | How the form is filed: "paper" (mailed) or "online" (USCIS online account). Required for US. Ignored for GB. |
| country | string | ISO 3166-1 alpha-2 country code. "US" (default) or "GB". |
| category | string | 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. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"form"
],
"properties": {
"form": {
"type": "string",
"example": "I-765",
"maxLength": 256,
"minLength": 1,
"description": "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."
},
"filing": {
"enum": [
"paper",
"online"
],
"type": "string",
"example": "online",
"description": "How the form is filed: \"paper\" (mailed) or \"online\" (USCIS online account). Required for US. Ignored for GB."
},
"country": {
"enum": [
"US",
"GB"
],
"type": "string",
"description": "ISO 3166-1 alpha-2 country code. \"US\" (default) or \"GB\"."
},
"category": {
"type": "string",
"maxLength": 256,
"description": "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."
}
}
}Returns the USCIS processing-time estimate for one form, eligibility category, and office: 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 estimate on file has both a category and an office, so omitting either returns not_found. 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: the USCIS processing times tool (egov.uscis.gov).
| Argument | Type | Description |
|---|---|---|
| form* | string | USCIS form number exactly as USCIS writes it, uppercase with the hyphen, e.g. "I-765". "i765" and "I765" do not match |
| office | string | 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" |
| category | string | Eligibility category exactly as the USCIS processing times tool lists it, e.g. "Based on an approved asylum application [(a)(5)]" for I-765 |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"form"
],
"properties": {
"form": {
"type": "string",
"example": "I-765",
"maxLength": 256,
"minLength": 1,
"description": "USCIS form number exactly as USCIS writes it, uppercase with the hyphen, e.g. \"I-765\". \"i765\" and \"I765\" do not match"
},
"office": {
"type": "string",
"example": "Service Center Operations (SCOPS)",
"maxLength": 256,
"description": "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\""
},
"category": {
"type": "string",
"example": "Based on an approved asylum application [(a)(5)]",
"maxLength": 256,
"description": "Eligibility category exactly as the USCIS processing times tool lists it, e.g. \"Based on an approved asylum application [(a)(5)]\" for I-765"
}
}
}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).
| Argument | Type | Description |
|---|---|---|
| chart* | string | "final_action" for the Final Action Dates chart, "dates_for_filing" for the Dates for Filing chart |
| month* | string | Bulletin month as YYYY-MM, e.g. "2026-10". A month not yet published or loaded returns not_found |
| country* | string | Chargeability country, exact: "China" (mainland-born), "India", "Mexico", "Philippines", or "All Chargeability Areas", the bulletin column for countries without their own column |
| category* | string | 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 |
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).
| Argument | Type | Description |
|---|---|---|
| month* | string | Bulletin month as YYYY-MM, e.g. "2026-10". A month not yet published or loaded returns not_found |
| region* | string | DV region, exact: "Africa", "Asia", "Europe", "North America", "Oceania", or "South America and the Caribbean" |
| country | string | Chargeability country within the region; falls back to the region's "All" rate when the country has no listed exception, or when omitted |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"month",
"region"
],
"properties": {
"month": {
"type": "string",
"example": "2026-10",
"pattern": "^\\d{4}-(?:0[1-9]|1[0-2])$",
"maxLength": 256,
"description": "Bulletin month as YYYY-MM, e.g. \"2026-10\". A month not yet published or loaded returns not_found"
},
"region": {
"type": "string",
"example": "Africa",
"maxLength": 256,
"minLength": 1,
"description": "DV region, exact: \"Africa\", \"Asia\", \"Europe\", \"North America\", \"Oceania\", or \"South America and the Caribbean\""
},
"country": {
"type": "string",
"example": "Egypt",
"maxLength": 256,
"description": "Chargeability country within the region; falls back to the region's \"All\" rate when the country has no listed exception, or when omitted"
}
}
}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).
| Argument | Type | Description |
|---|---|---|
| month* | string | Bulletin month as YYYY-MM, e.g. "2026-10". A month not yet published or loaded returns not_found |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"month"
],
"properties": {
"month": {
"type": "string",
"example": "2026-10",
"pattern": "^\\d{4}-(?:0[1-9]|1[0-2])$",
"maxLength": 256,
"description": "Bulletin month as YYYY-MM, e.g. \"2026-10\". A month not yet published or loaded returns not_found"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| since* | string | ISO 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. |
| cursor | string | Opaque navigation cursor from the preceding page's next_cursor. Omit for the first page. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"since"
],
"properties": {
"since": {
"type": "string",
"example": "2026-08-01",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$|^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d))|(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?)$",
"maxLength": 256,
"description": "ISO 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."
},
"cursor": {
"type": "string",
"maxLength": 4096,
"description": "Opaque navigation cursor from the preceding page's next_cursor. Omit for the first page."
}
}
}Searches USCIS newsroom alerts and Federal Register notices by keyword, newest first. Use it to find announcements about a form or topic, e.g. "I-765" or "fee". 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: USCIS newsroom alerts and Federal Register notices. The top-level source URL identifies the exact aggregate query, including the page cursor; each result preserves its government URL, source, and content hash.
| Argument | Type | Description |
|---|---|---|
| query* | string | 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 |
| since | string | ISO 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. |
| cursor | string | Opaque navigation cursor from the preceding page's next_cursor. Omit for the first page. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"example": "I-765",
"maxLength": 256,
"minLength": 1,
"description": "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"
},
"since": {
"type": "string",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$|^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d))|(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?)$",
"maxLength": 256,
"description": "ISO 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."
},
"cursor": {
"type": "string",
"maxLength": 4096,
"description": "Opaque navigation cursor from the preceding page's next_cursor. Omit for the first page."
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"month",
"chart",
"category",
"country"
],
"properties": {
"chart": {
"enum": [
"final_action",
"dates_for_filing"
],
"type": "string",
"example": "final_action",
"description": "\"final_action\" for the Final Action Dates chart, \"dates_for_filing\" for the Dates for Filing chart"
},
"month": {
"type": "string",
"example": "2026-10",
"pattern": "^\\d{4}-(?:0[1-9]|1[0-2])$",
"maxLength": 256,
"description": "Bulletin month as YYYY-MM, e.g. \"2026-10\". A month not yet published or loaded returns not_found"
},
"country": {
"type": "string",
"example": "India",
"maxLength": 256,
"description": "Chargeability country, exact: \"China\" (mainland-born), \"India\", \"Mexico\", \"Philippines\", or \"All Chargeability Areas\", the bulletin column for countries without their own column"
},
"category": {
"type": "string",
"example": "F2A",
"maxLength": 256,
"description": "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"
}
}
}