# Connect to EarthOnline Visa

Your owner gave you this link to connect you to EarthOnline Visa (https://visa.earthonlines.com): US work-visa sponsorship for agents: 1,023,639 Labor Condition Applications (LCAs) that 89,776 employers filed with the US Department of Labor for H-1B, H-1B1 and E-3 workers, FY2025 (October 1, 2024 to September 30, 2025) and FY2026 (October 1, 2025 to June 30, 2026). Cleaned: one name per employer, every wage per year. A public MCP server: no account, no key.

- MCP server (Streamable HTTP, no authentication; name it `earthonline-visa`): https://visa.earthonlines.com/mcp
- Or plain HTTP, right away: POST https://visa.earthonlines.com/api/tools/<tool> with the arguments as a JSON body.

Once connected: ask your owner which companies or jobs they are looking at, find the employers that sponsor them with visa_search_employers, and look one up with visa_get_employer.

## How to connect: pick the first one that is you

### Claude Code

Run, in a terminal:

    claude mcp add --transport http --scope user earthonline-visa https://visa.earthonlines.com/mcp

The tools (their names start with `visa_`) appear in the next session, or after reconnecting with /mcp. Until then, use the HTTP way.

### Codex and other command-line agents

Add an MCP server named `earthonline-visa` with the address above, the way your tool adds one. For example:

    codex mcp add earthonline-visa --url https://visa.earthonlines.com/mcp
    gemini mcp add --transport http earthonline-visa https://visa.earthonlines.com/mcp

The tools appear in the next session. Until then, use the HTTP way.

### A cloud agent (a routine, a hosted agent, a bot)

If your platform takes a remote MCP server, add https://visa.earthonlines.com/mcp with no authentication. If it does not, use the HTTP way: it needs nothing but outgoing requests. EarthOnline Visa never calls you, so there is nothing to register.

### A chat app on the web (ChatGPT, Claude.ai)

You cannot add the server yourself. Tell your owner to add it once:

- ChatGPT: Settings, Apps & Connectors, Advanced settings: turn on Developer mode. Then Create: name EarthOnline Visa, MCP server URL https://visa.earthonlines.com/mcp, Authentication: No authentication.
- Claude.ai: Settings, Connectors, Add custom connector: name EarthOnline Visa, Remote MCP server URL https://visa.earthonlines.com/mcp.

Then they turn it on for this chat, and you have the `visa_` tools.

### None of these

Use HTTP. Every tool is POST https://visa.earthonlines.com/api/tools/<tool name> with the arguments as a JSON body; the answer is `{"ok": true, "result": …}` or `{"ok": false, "error": {"code", "message"}}`, where the message says what to do next. The same tools are described as OpenAPI at https://visa.earthonlines.com/openapi.json.

    curl -s -X POST https://visa.earthonlines.com/api/tools/visa_search_employers -H "Content-Type: application/json" -d '{"query":"data scientist","state":"NY","limit":5}'

## Tools

### visa_search_employers

Search EarthOnline Visa, a public record of US work-visa sponsorship: the employers that filed Labor Condition Applications (LCAs) with the US Department of Labor for H-1B, H-1B1 and E-3 workers, FY2025 (October 1, 2024 to September 30, 2025) and FY2026 (October 1, 2025 to June 30, 2026). Give `query`, words of a company's name ("google", "jp morgan") or of a job title ("data scientist"): companies whose name matches come first, then companies that filed for a job whose title matches; every word must match the start of a word. Without `query` it lists every employer. Narrow it with `state` (where the job is: "CA" or "California") and `min_certified`. Ordered by certified filings, most first. Returns `employers` (each: id, name, headquarters, certified (both years together), certified_by_year, median_wage (US dollars a year), top_titles, page_url), up to `limit` (default 20, at most 100). When `next_cursor` is not null, call again with `cursor` set to it for more. Then visa_get_employer with an id for its figures.

- `query` (string, optional): Words of a company name ("amazon", "goldman sachs") or of a job title ("software engineer"). Leave it out to list every employer.
- `state` (string, optional): Only employers with a certified filing for a job in this US state: its two-letter code ("CA") or its name ("California").
- `min_certified` (integer, optional): Only employers with at least this many certified filings, both years together.
- `cursor` (string, optional): The `next_cursor` of the previous result, for the next page.
- `limit` (integer, optional): How many employers at most (1 to 100, default 20).

Example arguments: `{"query":"data scientist","state":"NY"}`

### visa_get_employer

One employer's US work-visa sponsorship on EarthOnline Visa, from the Labor Condition Applications (LCAs) it filed with the US Department of Labor, FY2025 (October 1, 2024 to September 30, 2025) and FY2026 (October 1, 2025 to June 30, 2026). `id` is an id from visa_search_employers, its page link (…/company/<id>), a name it filed under ("Google LLC") or its FEIN. Returns: by_year (certified, certified then withdrawn, withdrawn and denied filings, and positions certified, per fiscal year, with the files they came from), wage (US dollars a year, over its certified full-time filings: 25th percentile, median, 75th percentile and how many filings), top_titles (with SOC code and median wage), top_occupations, top_locations, states, the names and FEINs it filed under, headquarters, sources (the official files) and page_url.

- `id` (string): The employer: its id (from visa_search_employers), its page link (https://…/company/<id>), a name it filed under, or its FEIN ("12-3456789").

Example arguments: `{"id":"google"}`

### visa_search_filings

Search the Labor Condition Applications (LCAs) on EarthOnline Visa: every H-1B, H-1B1 and E-3 LCA filed with the US Department of Labor, FY2025 (October 1, 2024 to September 30, 2025) and FY2026 (October 1, 2025 to June 30, 2026), newest decision first. Filter by `job_title` (every word must be in the title; "data scientists" finds "Data Scientist II"), `soc_code` ("15-1252", or its start "15-12"), `employer` (an id, page link, name or FEIN), `state` and `city` of the worksite, `min_wage` (US dollars a year), `fy`, `status` and `visa_class`. Returns `filings` (each: case_number, status, visa_class, decision_date, employer, job_title, soc_code, soc_title, worksite, wage with per_year_from and per_year_to, positions, fiscal_year, file, page_url), up to `limit` (default 25, at most 100); `next_cursor` for more. visa_get_filing gives one in full.

- `job_title` (string, optional): Words that must all be in the job title, for example "software engineer". Whole words; a plural also finds the singular.
- `soc_code` (string, optional): A Standard Occupational Classification code, "15-1252" (Software Developers), or its start, "15-12".
- `employer` (string, optional): Only this employer's filings: its id (from visa_search_employers), page link, a name it filed under, or its FEIN.
- `state` (string, optional): The worksite's US state: two-letter code ("WA") or name.
- `city` (string, optional): The worksite's city, for example "Seattle". Best with `state`.
- `min_wage` (integer, optional): Only filings whose offered wage, per year, is at least this many US dollars.
- `fy` (integer, optional): The federal fiscal year of the decision: 2025 (October 1, 2024 to September 30, 2025), 2026 (October 1, 2025 to June 30, 2026).
- `status` ("certified" | "certified_withdrawn" | "withdrawn" | "denied", optional): "certified" (DOL certified it), "certified_withdrawn" (certified, then the employer withdrew it), "withdrawn", or "denied".
- `visa_class` ("H-1B" | "H-1B1" | "E-3", optional): "H-1B", "H-1B1" (Chile and Singapore) or "E-3" (Australia).
- `cursor` (string, optional): The `next_cursor` of the previous result, for the next page.
- `limit` (integer, optional): How many filings at most (1 to 100, default 25).

Example arguments: `{"job_title":"data scientist","state":"NY","status":"certified","limit":10}`

### visa_get_filing

One Labor Condition Application (LCA) on EarthOnline Visa, as filed with the US Department of Labor, by its case number ("I-200-25273-349981") or its page link (…/filing/<case number>). Returns the decision (status, decision date, original certification date), the employer (name, doing business as, city, state, FEIN, NAICS, page_url), the job (title, SOC code and title, full time, positions, employment period and type), the worksite (city, county, state), the wage and the prevailing wage (as written, and per year), and `source`: the fiscal year, the official file and the row it was read from.

- `case_number` (string): The case number, for example "I-200-25273-349981", or the filing's page link.

Example arguments: `{"case_number":"I-200-25273-349981"}`

## How to read the numbers

- A filing is a Labor Condition Application (LCA): the form an employer must file with the US Department of Labor (DOL) before it petitions USCIS for an H-1B, H-1B1 or E-3 worker. "Certified" means DOL accepted the LCA. It is not a visa and not a hire: USCIS can still refuse the petition, and an employer may never file one.
- "Sponsored" on this site counts certified filings only. "Certified, then withdrawn", "withdrawn" and "denied" are counted apart. One LCA can cover several positions (`positions`).
- Wages are what the employer wrote on the LCA (the lower end of the range offered), turned into a year: x1 a year, x12 a month, x26 every two weeks, x52 a week, x2,080 an hour. Wage figures use certified full-time filings whose yearly wage is between $15,000 and $2,000,000.
- Employers: names are matched in upper case without punctuation or legal endings (INC, LLC, CORP …), and names filed under one FEIN from one ZIP code are one employer.
- Every figure says which fiscal year and which official file it came from (`sources`, `source`, `file`).

## Rules

- The data is a US Government work in the public domain. Credit it to the U.S. Department of Labor, and do not present it as endorsed by DOL.
- When you pass the numbers on, say what they are: LCAs filed, not visas granted.
