Install Jentic One Beta
Jentic One is a self-hosted execution layer for AI agents. It lets your agent call the PERM Tracker API, or any other public or private API you need. You set the rules, the agent never sees your credentials, and every call is logged.
Two steps, two machines. Install the instance in a safe environment, then register your agent from wherever it runs.
Step 1: Jentic One Host machine
# On the machine that will host your Jentic One instance:
curl -fsSL "https://jentic.com/install.sh?src=apis&api=%2Fapis%2Fpermtracker.app%2Fpermtracker" | shStep 2: Agent machine
# On the machine where your agent runs (keep this separate from the instance):
curl -fsSL "https://jentic.com/install.sh?src=apis&api=%2Fapis%2Fpermtracker.app%2Fpermtracker" | sh
jentic register # connects your agent to your Jentic One instanceJentic One is in public beta. The setup above keeps your agent separate from the instance, which is what you want before using real credentials: an agent running as the same OS user as Jentic One can read its stored keys directly. Just evaluating? A single local install is fine to start. See the secure deployment guide for the tiers.
What an agent can do with PERM Tracker API.
Look up a PERM, prevailing wage, or H-1B LCA case by its DOL case number, such as G-100-26045-123456
Estimate when a pending PERM case is likely to be decided from its case number or filing date
Read DOL processing times and pending PERM cases by filing month from the queue endpoint
Pull the employment and family charts of a visa bulletin for any month back to 2005-06
GET STARTED
Search employers, law firms, and occupations by name and read their certified and denied PERM counts
Export a full case, employer, law firm, or occupation search as CSV or JSON
Watch a case number or employer page and receive webhook events like case.status_changed
Patterns agents use PERM Tracker API for, with concrete tasks.
★ Immigration case assistant agent through Jentic
An AI agent answering an applicant's questions about a pending green card case needs DOL records, not guesswork. Through Jentic the agent searches for 'check a PERM case status', loads the PERM Tracker case lookup operation with its input schema, and reads the case's status, filing date, and employer, then calls the estimate operation for a likely decision window with its stated caveats. The bearer key is injected at call time by your own Jentic One instance.
Call GET /cases/{caseNumber} with caseNumber G-100-26045-123456, then call GET /estimate with case=G-100-26045-123456 and report the status, filing date, and estimated decision range
Employer sponsorship research
A job seeker or recruiter comparing companies wants to know which employers sponsor PERM and how those cases fare. The employer search returns matching employers with their PERM record and page slug, and the employer detail operation reports certified and denied cases, median days to decision, filings in the last 12 months, and cases pending at DOL by stage.
Call GET /employers with q=Acme and limit=5, then call GET /employers/{slug} for the top result and summarise its certified and denied PERM cases and median days to decision
Visa bulletin and queue tracking
Applicants waiting on a priority date track two moving numbers: the visa bulletin cut-off dates and how far DOL has worked through its PERM queue. The visa bulletin operation returns the employment and family charts as printed for a chosen month, and the queue operation returns the month each DOL queue is working on with average days.
Call GET /visa-bulletin with month=2026-11 and GET /queue, then report the employment-based chart and the month the PERM analyst review queue is working on
Case watch alerts by webhook
A paralegal tracking dozens of filings wants a push when DOL changes a case's status. After adding an https webhook endpoint for the events it wants, a watch on a case number fires case.status_changed when DOL's status for that case changes, and a watch on an employer page follows that employer's filings. Webhook operations need a key with the webhooks scope.
Call POST /webhooks with an https endpoint for case events, then call POST /watches with case number P-100-26045-123456 and confirm the watch appears in GET /watches
19 endpoints — the perm tracker api returns us department of labor perm, prevailing wage, h-1b lca, and h-2a, h-2b and cw-1 case records as json.
METHOD
PATH
DESCRIPTION
/cases/{caseNumber}
Get one DOL case by number
/estimate
Estimate a pending PERM decision date
/queue
Get DOL processing times and pending cases
/visa-bulletin
Get a visa bulletin's charts
/employers
Search employers by name
/employers/{slug}
Get an employer's PERM record
/exports/{kind}
Export a search as CSV or JSON
/watches
Watch a case number or employer
/cases/{caseNumber}
Get one DOL case by number
/estimate
Estimate a pending PERM decision date
/queue
Get DOL processing times and pending cases
/visa-bulletin
Get a visa bulletin's charts
/employers
Search employers by name
/employers/{slug}
Get an employer's PERM record
/exports/{kind}
Export a search as CSV or JSON
/watches
Watch a case number or employer
What agents get from Jentic-routed access to this vendor.
Setup
Wiring PERM Tracker by hand means generating a pt_live_ key, sending it as a bearer token, and tracking which operations need the export, webhooks, or live_lookup scopes. Through Jentic you install once, import the PERM Tracker API from the API Directory, store the key once, and your agent calls it.
Permission scoping
PERM Tracker puts the case number and employer slug in the URL path (/cases/{caseNumber}, /employers/{slug}), so a rule can pin your agent to the read operations it needs. You choose the operations it may call, so changes like DELETE /webhooks/{id} or DELETE /watches/{target} are not included unless you add them.
Credential isolation
Your PERM Tracker key is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
Intent-based discovery
Agents search Jentic by intent such as 'check a PERM case status' or 'get the latest visa bulletin', and Jentic returns the matching PERM Tracker operation with its input schema so the agent calls the right endpoint without browsing the reference docs.
Alternatives and complements available in the Jentic catalogue.
Specific to using PERM Tracker API through Jentic.
What authentication does the PERM Tracker API use?
The PERM Tracker API authenticates with an HTTP bearer token per its OpenAPI spec: your pt_live_ key from Settings > API keys, sent in the Authorization header. The employer lookup at GET /lookup/employer is open and needs no key, and some operations need extra key scopes, such as export for GET /exports/{kind} and webhooks for the webhook and watch operations. Through Jentic the key is stored by your own instance and attached at call time.
Can I estimate when a pending PERM case will be decided with the PERM Tracker API?
Yes. GET /estimate takes a PERM case number in the case parameter, or a filing date in the filed parameter for a case in analyst review, and returns a likely decision range with the model and its caveats. The spec describes it as an estimate, not a promise.
What are the rate limits for the PERM Tracker API?
Per the OpenAPI spec, the free plan allows 10 calls a minute, 300 a day, and 3,000 a month. The keyless GET /lookup/employer runs under shared limits of 60 calls a minute per address, and GET /me reports your key's plan, limits, and usage without counting against them. See https://permtracker.app/developers for current plan details.
Is there a PERM Tracker MCP server?
You don't need an MCP server to give your agent the PERM Tracker API. Jentic connects it directly from the API Directory: import it, store your key once, and your agent calls the case, estimate, and employer operations on demand without loading another server's tool definitions into its context.
How do I look up a PERM case through Jentic?
Search Jentic for 'check a PERM case status', load the GET /cases/{caseNumber} operation, and execute it with the case number as DOL prints it, for example G-100-26045-123456. The response carries the status, filing date, employer, and DOL's record once decided. To run it on your own infrastructure, install Jentic One from its GitHub repo.
Can I limit what my agent is allowed to do with the PERM Tracker API?
Yes. Write a rule that allows only GET /cases/{caseNumber} and GET /estimate, and the agent can read case records and decision estimates while webhook and watch changes stay out of reach. Each call it makes is logged for you to review.
For Agents
Look up DOL PERM and H-1B case records by case number, estimate PERM decision dates, read processing queues and visa bulletins, and search employer, law firm, and occupation PERM records.
Use for: Check the status of PERM case G-100-26045-123456, When is my pending PERM case likely to be decided?, Get the latest visa bulletin employment chart, Find an employer's PERM certification and denial record
Not supported: Does not file PERM or visa applications, give legal advice, or submit anything to DOL or USCIS. Use for reading DOL case records, estimates, and visa bulletin data only.
The PERM Tracker API returns US Department of Labor PERM, prevailing wage, H-1B LCA, and H-2A, H-2B and CW-1 case records as JSON. It looks up a single case by its DOL case number, estimates when a pending PERM case is likely to be decided, and reports DOL processing queues alongside the printed visa bulletin charts back to 2005. Employer, law firm, and occupation records summarise certified and denied cases, median days to decision, and median offered wage, and webhooks can watch a case number or employer for status changes.
This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.
Base layer of spec validity and structural soundness.
Aggregated quality score from linter diagnostics, weighted by severity.
Percentage of `$ref` references that resolve successfully.
Checks whether the API description parses successfully and conforms to its declared specification (e.g., OpenAPI).
Structural correctness score based on schema issues using logarithmic dampening.
Clarity, completeness, and ingestion readiness for developers and tooling.
How richly the API is illustrated with examples.
Percentage of examples that conform to their schemas.
Percentage of operations with complete response definitions (success, client error, server error).
Health of API ingestion, bundling, and resolution within Jentic pipelines.
Semantic breadth, depth, and agent comprehension for AI systems.
Coverage of descriptions across API elements.
Coverage of RFC 9457 Problem Details for error responses.
Coverage, uniqueness, and casing consistency of operationIds for AI inference.
Coverage of summaries across operations/tags/info.
Functional utility, complexity comfort, and AI orchestration readiness.
Agent comfort level based on API operational and structural complexity.
Trust, risk posture, and security compliance.
Average quality of security schemes based on authentication method strength (weakest link for OAuth2).
Findability, semantic richness, and reasoning readiness.
Clarity and depth of descriptions across API elements.
Score it yourself
Every API in the directory is allowlisted, so you can re-score it with no key required.
npx @jentic/api-scorecard-cli score <openapi-url>