Full reference for the ImmigrationLayer MCP server: quick start, every tool's arguments and response shape, auth, rate limits, versioning, and the changelog. The machine-readable version is at /docs/llms-full.txt.
Quick start
Adds the server as a remote MCP connector over Streamable HTTP.
claude mcp add --transport http immigration-layer https://mcp.immigrationlayer.com/mcp
The MCP endpoint speaks JSON-RPC over HTTP, not a plain REST GET - there is no REST API yet (tracked in #50). This calls check_form_edition, which needs no Authorization header. Gated tools need "Authorization: Bearer $API_KEY", an API key from your account page.
Generated from the same zod schemas workers/mcp registers each tool with, so this can't drift from what's actually deployed.
check_form_edition
Current USCIS-accepted edition of a form, its accepted-from and rejected-from dates, and the alert that announced it. Free, no sign-in required. Not legal advice. Source: the form's page on uscis.gov.
Not legal advice. Verify against the cited source before filing.
list_form_changes
Form edition and alert changes published since a date. Free, no sign-in required. Not legal advice. Source: uscis.gov form pages and the USCIS newsroom alerts page.
Argument
Type
Required
Description
since
string
Yes
ISO 8601 date/time; returns changes after this timestamp
Not legal advice. Verify against the cited source before filing.
get_feeSign-in required
Filing fee and effective date for a USCIS form. Requires sign-in at https://immigrationlayer.com. Not legal advice. Source: the USCIS fee schedule (Form G-1055).
Argument
Type
Required
Description
form
string
Yes
USCIS form number, e.g. "I-765"
filing
paper | online
Yes
Filing method
category
string
No
Eligibility category, when the fee depends on it
get_fee({ form: "I-765", filing: "online" })
Not implemented yet - always returns a sign-in prompt
Not legal advice. Verify against the cited source before filing.
get_processing_timeSign-in required
USCIS processing-time estimate for a form (a percentile-basis figure, e.g. "80% of cases completed within N months"; unit varies by category). Requires sign-in at https://immigrationlayer.com. Not legal advice. Source: the USCIS processing times tool (egov.uscis.gov).
Argument
Type
Required
Description
form
string
Yes
USCIS form number, e.g. "I-765"
category
string
No
Eligibility category
office
string
No
USCIS field office or service center
get_processing_time({ form: "I-765" })
Not implemented yet - always returns a sign-in prompt
Not legal advice. Verify against the cited source before filing.
get_visa_bulletinSign-in required
Monthly Visa Bulletin final-action or dates-for-filing chart entry. Requires sign-in at https://immigrationlayer.com. Not legal advice. Source: the Department of State Visa Bulletin (travel.state.gov).
Not implemented yet - always returns a sign-in prompt
Not legal advice. Verify against the cited source before filing.
search_alertsSign-in required
Search USCIS and DOS alerts and notices by keyword. Requires sign-in at https://immigrationlayer.com. Not legal advice. Source: the USCIS newsroom alerts page (uscis.gov/newsroom/alerts).
Argument
Type
Required
Description
query
string
Yes
Keyword to search for
since
string
No
ISO 8601 date/time; limits results to alerts published after it
search_alerts({ query: "I-765" })
Not implemented yet - always returns a sign-in prompt
Not legal advice. Verify against the cited source before filing.
Auth
check_form_edition andlist_form_changes need no sign-in at all - they're rate-limited by IP instead. Every other tool needs a caller identity.
MCP clients (Claude, ChatGPT, Cursor, Claude Code): the server implements OAuth 2.1 with dynamic client registration and Client ID Metadata Documents, so "add connector" with the server URL alone is enough. Authorization opens an email magic-link page hosted at https://immigrationlayer.com; no password, no separate account creation step.
Scripts: create an API key athttps://immigrationlayer.com/account (sign in with the same email magic link first), then send it asAuthorization: Bearer <key> on the MCP request. It authenticates against the same /mcp JSON-RPC endpoint as an OAuth client - there's no separate REST surface yet (tracked in#50).
Rate limits, versioning, changelog, status
Rate limits
The two sign-in-free tools and the changes resource share one cap: 20 calls per minute per IP address. There's no monthly quota enforced yet - Stripe-backed plan entitlements and usage meters are tracked in#13, not shipped.
Versioning
The server negotiates the MCP protocol version at connect time, per the MCP spec. A tool's name and required arguments won't change without a new tool name; optional arguments may be added. There's no separate REST API version, since there's no REST API yet.