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

A
Description quality
95%
Schema completeness
85%
Naming quality
83%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'visa_bulletin' description lacks action verbin visa_bulletin

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,048Tokens (tool definitions)
~764 BTypical response size
Moderate attention impact (0.82% of 128k context)

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-http

What it can do

Tool inventory

Tools (6)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools