uk-visa-sponsor-register
Skill0 starsChanged 37 days agoMITView on GitHub
Checks whether a UK organisation is a licensed visa sponsor by reading the Home Office register of licensed sponsors (workers and temporary workers), a CSV published on GOV.UK, with no login, no API key and no account. Use when the user asks if a named UK company can sponsor a Skilled Worker or other work visa, which routes and rating it holds, or wants a short list of sponsors in one town. Not for job vacancies, not for student sponsors, not for checking a person, and not for lists of thousands of companies.
In this repository36 other files it gives its agents.
- sec-13f-holdingsSkill
- airport-reference-dataSkill
- ai-web-scraperSkill
- background-remover-localSkill
- bulk-image-downloaderSkill
- city-building-permitsSkill
- cve-kev-epssSkill
- doaj-open-access-apiSkill
- document-to-markdownSkill
- eu-funding-callsSkill
- ecb-exchange-ratesSkill
- federal-register-rulesSkill
- french-company-searchSkill
- gleif-lei-change-watchSkill
- image-metadata-exifSkill
- lighthouse-auditSkill
- nfl-games-lookupSkill
- openfda-drug-recallsSkill
- football-fixtures-lookupSkill
- oracle-recruiting-jobsSkill
- pdf-text-extractorSkill
- arxiv-preprint-metadataSkill
- public-holidays-lookupSkill
- pubmed-paper-metadataSkill
- raised-and-hiring-signalsSkill
- recruitee-jobsSkill
- remote-job-feedsSkill
- sec-8k-eventsSkill
- sec-company-financialsSkill
- sec-edgar-filings-lookupSkill
- seo-audit-toolSkill
- teamtailor-jobsSkill
- treasury-fiscal-dataSkill
- uk-companies-house-lookupSkill
- us-state-business-entity-searchSkill
- video-scene-keyframesSkill
The file
We split this skill into the rules it gives an agent
1 rule. About 0 are common, 1 is distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 69
If nothing matches, say "not found in the register dated YYYY-MM-DD".
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
UK visa sponsor register
Reads the register of licensed sponsors that the UK Home Office publishes on GOV.UK as a CSV file. It needs no credentials. The register is published under the Open Government Licence v3.0, which allows reuse if you credit the source.
Author: Don Mangu (GitHub). This skill needs no token and reads only GOV.UK files. For lists of companies, towns or routes, the author also runs a paid hosted version on the Apify Store: UK Visa Sponsor Register Search (Unofficial) (disclosure: the author owns it). You never need it for the steps below. This is an unofficial tool and is not affiliated with the Home Office.
Example prompts
- "Is Monzo a licensed UK visa sponsor, and for which routes?"
- "Which of these three companies are on the Home Office sponsor register: Octopus Energy, Revolut, Acme Trading Ltd?"
- "List five A-rated sponsors in Leeds."
Out of scope: "Does this company have a vacancy?" The register shows who holds a licence, not who is hiring. "Is this person a sponsor?" is out of scope too: some sole traders appear under their own name, and this skill does not look up or report private individuals.
Step 1: find the current file
The file address changes with every update, so look it up each time. GOV.UK serves the page content as JSON:
curl -s -A "uk-visa-sponsor-skill (+https://github.com/donmangudata-ops)" \
"https://www.gov.uk/api/content/government/publications/register-of-licensed-sponsors-workers" \
| python3 -c "import json,sys; a=json.load(sys.stdin)['details']['attachments'][0]; print(a['url'])"The address ends with the register date, for example ..._Register_-_2026-10-02.csv. Say that date in your answer. Only follow an address on assets.publishing.service.gov.uk.
Step 2: download once and search
Download the file once (about 11 MB) and search the copy. Do not download it again for every company. The columns are Organisation Name, Town/City, County, Type & Rating and Route.
import csv, io, json, urllib.request
API = "https://www.gov.uk/api/content/government/publications/register-of-licensed-sponsors-workers"
csv_url = json.load(urllib.request.urlopen(API))["details"]["attachments"][0]["url"]
rows = list(csv.DictReader(io.StringIO(urllib.request.urlopen(csv_url).read().decode("utf-8-sig"))))
print(len(rows), "rows from", csv_url.rsplit("/", 1)[-1])
word = "monzo"
for r in rows:
if word in r["Organisation Name"].lower().split():
print(r["Organisation Name"].strip(), "|", r["Town/City"].strip(), "|", r["Type & Rating"], "|", r["Route"])Real run on 4 October 2026:
143138 rows from SP_-_Worker_and_Temporary_Worker_Web_Register_-_2026-10-02.csv
Monzo Bank Ltd | London | Worker (A rating) | Skilled Worker
Monzo Bank Ltd | London | Worker (A rating) | Global Business Mobility: Senior or Specialist Worker
Monzo Bank Ltd | London | Worker (A rating) | Skilled WorkerStep 3: answer from the fields
- Match whole words, not substrings: "tesco" inside every name finds 11 rows in this file, but only 6 contain Tesco as a word (the rest are names such as ATESCO CONSULTANCY LTD).
- Trim spaces and ignore case before you compare. The file has stray spaces, and the same row can appear twice (see the first and third lines above). Remove duplicates before you count routes.
- One organisation has one row per route. List the routes, and say the rating from the Type & Rating column, for example "Worker (A rating)".
- If nothing matches, say "not found in the register dated YYYY-MM-DD". Do not guess. A trading name may be listed instead of the company name, so try both.
Rules
- Public GOV.UK files only. No login, no cookies, no CAPTCHA handling, no proxies, no attempts around blocks.
- One download per question, no repeated downloads in a loop. Stop on 403, 429 or repeated errors and tell the user.
- Organisation-level information only. Skip rows where the organisation field looks like a person's own name, such as a title followed by a name or "name T/A shop".
- Credit the source when you pass results on: "Contains public sector information licensed under the Open Government Licence v3.0."
- Say what you could not check: the register date, rows you left out, and that a licence can change after the file date.
Limits
This skill reads the register of Worker and Temporary Worker sponsors only. The file has no company number, website, full address or vacancy data. It supports exact and whole-word matching, not fuzzy matching, so a misspelt name is not found. For long lists, a spreadsheet or the hosted version is quicker than asking one question at a time.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

