PERM Tracker
PERM, prevailing wage and H-1B case status, DOL's queue and the visa bulletin, from federal records
Should I use this
Quality & Safety
Findings (1)
- LOWin visa_bulletin
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"perm-tracker": {
"url": "https://permtracker.app/mcp"
}
}
}Remote endpoints
https://permtracker.app/mcpstreamable-httpWhat it can do
Tool inventory
Tools (6)
🟢lookup_case(case_number)
One DOL case by number: status, filing date, employer, job and, once decided, DOL's decided record. PERM (G-100-...), prevailing wage (P-100- to P-203-...), H-1B LCA (I-200-...) and H-2A, H-2B or CW-1 numbers. Example: {"case_number": "G-100-26045-123456"}.
Input Schema
{
"type": "object",
"properties": {
"case_number": {
"type": "string",
"maxLength": 40,
"description": "As DOL prints it, e.g. G-100-26045-123456."
}
},
"required": [
"case_number"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢estimate_decision(case_number, filed)
When a pending PERM case is likely to be decided, with a range, the model used and its caveats. Pass a case number, or a filing date for a case in analyst review. An estimate, not a promise. Examples: {"case_number": "G-100-26045-123456"} or {"filed": "2026-01-15"}.
Input Schema
{
"type": "object",
"properties": {
"case_number": {
"description": "A PERM case number.",
"type": "string",
"maxLength": 40
},
"filed": {
"description": "Filing date, YYYY-MM-DD, when there's no case number.",
"type": "string",
"maxLength": 10
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢queue_status
DOL's processing times today: the month each PERM and prevailing wage queue is working on, average days to a decision, and how many PERM cases are pending from each filing month. Takes no arguments: {}.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢visa_bulletin(month)
A visa bulletin's employment and family final action and dates for filing charts, as printed. The newest by default; months back to June 2005. Examples: {} for the newest, or {"month": "2026-10"}.
Input Schema
{
"type": "object",
"properties": {
"month": {
"description": "YYYY-MM. Leave out for the newest.",
"type": "string",
"maxLength": 7
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢search_sponsors(kind, name)
Search DOL's PERM records by name. Returns each match's record and the slug that employer_profile takes. Example: {"kind": "employer", "name": "Microsoft"}.
Input Schema
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"employer",
"law firm",
"occupation"
],
"description": "One of \"employer\", \"law firm\" or \"occupation\" (singular)."
},
"name": {
"type": "string",
"minLength": 2,
"maxLength": 120,
"description": "Part of the name, 2 to 120 characters, e.g. Microsoft."
}
},
"required": [
"kind",
"name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢employer_profile(kind, slug)
Cases in DOL's published files (certified, denied, median days to a decision, filings in the last 12 months, and for an occupation the median offered wage), plus how many of its cases are pending at DOL right now and at which stage. Find the slug with search_sponsors first. Example: {"kind": "employer", "slug": "microsoft-corporation"}.
Input Schema
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"employer",
"law firm",
"occupation"
],
"description": "One of \"employer\", \"law firm\" or \"occupation\" (singular)."
},
"slug": {
"type": "string",
"maxLength": 120,
"description": "From search_sponsors, e.g. google-llc."
}
},
"required": [
"kind",
"slug"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence