Server definition
- Hash
- sha256:7b94b6e63216d2c3b4cde4bbe14d729a5ee3f01a5457085259da31791bce80df
- What it is
- What a remote MCP server returned when asked what it offers: 27 tools
The blob, as servednamed by its sha256
{
"instructions": "Finds current job listings by keywords, place (a city, state, country or remote), level and how recently they were posted. Every tool is read-only and nothing about the user is stored. Where an answer has a \"say\" field, it is a ready-to-read summary. More at https://jobspotter.pages.dev",
"tools": [
{
"description": "Everything needed to apply for a job. For \"help me apply for this\", \"write my cover letter\", \"what should I say in my application?\". Gives what the job asks for, the lines in the CV that prove each skill, what is missing, keywords to use if true, a cover letter outline and common application questions with how to answer them, so a tailored letter and answers can be written. Job Spotter never applies or sends anything. Nothing sent is stored.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"cv": {
"description": "The CV as plain text. Optional if titles and skills are given.",
"type": "string"
},
"education": {
"description": "Highest qualification, for example \"BSc Economics\".",
"type": "string"
},
"employers": {
"description": "Current and past employers, comma separated.",
"type": "string"
},
"id": {
"description": "A job id from a search result, copied exactly. Or give job_text.",
"type": "string"
},
"job_text": {
"description": "The job advert as plain text, when there is no id.",
"type": "string"
},
"location": {
"description": "Where the person lives or wants to work.",
"type": "string"
},
"schools": {
"description": "Universities or schools, comma separated.",
"type": "string"
},
"skills": {
"description": "Skills, comma separated.",
"type": "string"
},
"titles": {
"description": "Current and past job titles, comma separated.",
"type": "string"
},
"years_experience": {
"description": "Years of work experience.",
"type": "number"
}
},
"required": [],
"type": "object"
},
"name": "apply_kit",
"outputSchema": null
},
{
"description": "Check a job link someone pastes. For \"is this job real?\", \"what does this one pay?\" with a link. Reads the advert from the employer's job board (Greenhouse, Lever, SmartRecruiters, Ashby and most career pages) and gives the title, company, place, pay, when it was posted, whether it looks like a live, open job, visa sponsorship and a short summary. LinkedIn, Indeed and Glassdoor pages can't be read; the advert text can be pasted into the CV match instead.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"url": {
"description": "The full link to the job advert.",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "check_job_link",
"outputSchema": null
},
{
"description": "What a job pays in a place. For \"what does a nurse earn in Birmingham\", \"average salary for a data analyst in Austin\", \"is £35k good for a junior developer in London\". Gives the typical yearly range (middle half of current adverts), the middle figure and the average advertised, from current job adverts. Advertised pay, not offers.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"country": {
"description": "US or UK when the place exists in both, or a country by name.",
"type": "string"
},
"what": {
"description": "Job title or field, for example \"nurse\" or \"software engineer\".",
"type": "string"
},
"where": {
"description": "A city, region, postcode or country, for example Birmingham, Austin, TX or remote.",
"type": "string"
}
},
"required": [
"what"
],
"type": "object"
},
"name": "check_salary",
"outputSchema": null
},
{
"description": "Is this UK employer a licensed visa sponsor? For \"does Deliveroo sponsor visas?\", \"can this company sponsor a Skilled Worker visa?\". Looks the employer up in the UK Home Office register of licensed sponsors (workers), with its town and the visa routes it is licensed for, and the register date. A licence means the employer can sponsor; each job still has to qualify. Company names on the register are legal names, so try the legal name if the brand name is not found. For US jobs, the visa_sponsorship field on search results comes from the advert. Register data contains public sector information licensed under the Open Government Licence v3.0.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"company": {
"description": "The employer, for example \"Tesco\" or its legal name \"Tesco Stores Limited\".",
"type": "string"
}
},
"required": [
"company"
],
"type": "object"
},
"name": "check_visa_sponsor",
"outputSchema": null
},
{
"description": "Facts about an employer and its hiring. For \"tell me about Monzo as an employer\", \"is Tesco hiring?\", \"how big is this company?\". Gives what the company does, when it was founded, staff numbers, headquarters and website (from Wikidata), UK company records when available (Companies House, Open Government Licence), how many jobs it has open now with examples, and ready searches for people there. Staff reviews are not included. For US employers it adds what they offered on US work visa filings.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"name": {
"description": "The company name, for example \"Monzo\" or \"Tesco\".",
"type": "string"
},
"where": {
"description": "Optional place to narrow its open jobs, for example London.",
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "company_lookup",
"outputSchema": null
},
{
"description": "Compare jobs side by side. For \"compare the first three\", \"which of these pays best?\". Takes two to five ids from search results and gives each job's pay (and yearly equivalent), work type, job type, how new it is, direct employer or agency, visa sponsorship and ghost-job check, plus which is best on pay, newest and remote.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"ids": {
"description": "Two to five job ids from search results, comma separated, copied exactly.",
"type": "string"
}
},
"required": [
"ids"
],
"type": "object"
},
"name": "compare_jobs",
"outputSchema": null
},
{
"description": "How relevant a connection is to your goal. For \"should I connect with this person?\", \"is she worth messaging?\". Scores how relevant a connection is to the user's goal, out of 100, from two profiles the user provides (it rates the fit with the goal, not the person), the same way every time: works where they want to work, recruiter or likely hiring manager for the goal, same school, same past employer, shared skills, nearby, more senior. Gives the reasons, a short verdict and an outline for a short note. Profiles can be pasted text (for example from LinkedIn's Save to PDF). Nothing sent is stored.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"goal": {
"description": "What the person is aiming for, for example \"data analyst at Monzo\".",
"type": "string"
},
"me": {
"description": "A profile: text, and or fields title, company, past_companies, schools, location, skills.",
"properties": {
"company": {
"maxLength": 80,
"type": "string"
},
"employers": {
"maxLength": 300,
"type": "string"
},
"location": {
"maxLength": 60,
"type": "string"
},
"schools": {
"maxLength": 300,
"type": "string"
},
"skills": {
"maxLength": 1000,
"type": "string"
},
"text": {
"maxLength": 20000,
"type": "string"
},
"title": {
"maxLength": 120,
"type": "string"
}
},
"type": "object"
},
"them": {
"description": "A profile: text, and or fields title, company, past_companies, schools, location, skills.",
"properties": {
"company": {
"maxLength": 80,
"type": "string"
},
"employers": {
"maxLength": 300,
"type": "string"
},
"location": {
"maxLength": 60,
"type": "string"
},
"schools": {
"maxLength": 300,
"type": "string"
},
"skills": {
"maxLength": 1000,
"type": "string"
},
"text": {
"maxLength": 20000,
"type": "string"
},
"title": {
"maxLength": 120,
"type": "string"
}
},
"type": "object"
}
},
"required": [
"me",
"them"
],
"type": "object"
},
"name": "connection_score",
"outputSchema": null
},
{
"description": "Draft a cover letter and application answers. For \"write my cover letter for this job\" or \"help me answer these application questions\". Builds a first draft only from the person's own CV lines and the advert: the strongest matching achievements, the skills the job asks for in the CV's own words, an honest gap line, and draft answers to the form's questions. Anything only the person can know is left as a [bracketed] prompt. Job Spotter never applies or sends anything, and nothing sent is stored.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"availability": {
"description": "When they could start, for example \"I can start in May\".",
"type": "string"
},
"company": {
"description": "The employer's name, when the advert is pasted as job_text.",
"type": "string"
},
"cv": {
"description": "The CV as plain text. Optional if titles and skills are given.",
"type": "string"
},
"education": {
"description": "Highest qualification, for example \"BSc Economics\".",
"type": "string"
},
"employers": {
"description": "Current and past employers, comma separated.",
"type": "string"
},
"id": {
"description": "A job id from a search result, copied exactly. Or give job_text.",
"type": "string"
},
"job_text": {
"description": "The job advert as plain text, when there is no id.",
"type": "string"
},
"location": {
"description": "Where the person lives or wants to work.",
"type": "string"
},
"questions": {
"description": "Application form questions to draft answers for, one per line. Common questions are used if left out.",
"type": "string"
},
"schools": {
"description": "Universities or schools, comma separated.",
"type": "string"
},
"skills": {
"description": "Skills, comma separated.",
"type": "string"
},
"titles": {
"description": "Current and past job titles, comma separated.",
"type": "string"
},
"why_company": {
"description": "One specific reason they want this employer, in their words. Left as a gap to fill in if not given.",
"type": "string"
},
"years_experience": {
"description": "Years of work experience.",
"type": "number"
},
"your_name": {
"description": "The person's name, to sign the letter.",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "cover_letter",
"outputSchema": null
},
{
"description": "How often an employer replies to applications. For \"do they actually reply?\". From Job Spotter users who track their applications: the share of applications that got any answer (interview, offer or rejection) within the time tracked, and the usual wait. Shown only from 5 tracked applications, so nobody can be singled out.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"company": {
"description": "The employer, for example \"Monzo\".",
"type": "string"
}
},
"required": [
"company"
],
"type": "object"
},
"name": "employer_reply_rate",
"outputSchema": null
},
{
"description": "Check an employer against the fair hiring badge. For \"is this employer fair to applicants?\". Four checks from what the employer does: shows pay in its adverts on Job Spotter, replies to tracked applications, hires through scored consent-first introductions, and (UK employers with 250 or more staff) reports its gender pay gap on time. Each check comes with its figures; the badge is earned when every check with data passes and at least two have data. Includes a badge image link.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"company": {
"description": "The employer, for example \"Greggs\".",
"type": "string"
}
},
"required": [
"company"
],
"type": "object"
},
"name": "fair_hiring_check",
"outputSchema": null
},
{
"description": "People worth contacting at a company. For \"who should I contact at Monzo about data jobs?\", \"find the hiring manager\". Gives the people who posted the company's hiring ads publicly (they asked applicants to get in touch) and ready LinkedIn and Google searches that open the person's own connections there, its recruiters, likely hiring managers for the role, people in the role (for a referral) and alumni of a school. Nothing is read from LinkedIn and nothing is gathered about anyone.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"company": {
"description": "The company, for example \"Monzo\".",
"type": "string"
},
"role": {
"description": "The role, for example \"data analyst\".",
"type": "string"
},
"school": {
"description": "A university or school to look for alumni from.",
"type": "string"
},
"where": {
"description": "The city, for example London.",
"type": "string"
}
},
"required": [
"company"
],
"type": "object"
},
"name": "find_people",
"outputSchema": null
},
{
"description": "Details for one job from a search result. For when the user asks about one of the results, for example \"tell me more about the second one\" or \"what's the apply link for the Uber job?\". Takes the id from a search_jobs result exactly as given; ids carry what is needed, so they keep working later. NHS Jobs and Teaching Vacancies results include the closing date.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"id": {
"description": "The id from a search_jobs result, copied exactly, for example muse-22049500, remotive-2091141 or nhsjobs-C9413-26-0725. Some ids are longer, with a ~ and a code after it.",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "get_job",
"outputSchema": null
},
{
"description": "Posts from people saying they're hiring. For \"who's posting that they're hiring React developers?\", \"any startups hiring remote designers?\". Public posts from people saying they're hiring, from Hacker News (the monthly Who is hiring? thread), Mastodon and Bluesky, newest first, each with a link to the post. The person posting is often the hiring manager. Also gives a ready search link for X.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"limit": {
"description": "How many posts, 1 to 20. Default 10.",
"maximum": 20,
"minimum": 1,
"type": "integer"
},
"what": {
"description": "Job title or field, for example \"nurse\" or \"software engineer\".",
"type": "string"
},
"where": {
"description": "A city, region, postcode or country, for example Birmingham, Austin, TX or remote.",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "hiring_posts",
"outputSchema": null
},
{
"description": "Practise an interview, one question at a time. For \"practise an interview with me\" or \"how was that answer?\". Send the role to get the first question; send the question and the person's answer to get a score out of 10 with what went well, one thing to fix and the next question. Scored by fixed rules, the same for everyone: structure (situation, task, action, result), what the person did themselves, a concrete result, length and the question's own words. It scores the answer, never the person, and nothing is stored.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"answer": {
"description": "The person's answer, as they would say it. Leave out to get the next question.",
"type": "string"
},
"n": {
"description": "Which practice question to ask, from 0. The reply gives next_n.",
"maximum": 6,
"minimum": 0,
"type": "integer"
},
"question": {
"description": "The question that was answered, copied from the last reply. Leave out to get a question.",
"type": "string"
},
"role": {
"description": "The job being interviewed for, for example \"staff nurse\".",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "interview_practice",
"outputSchema": null
},
{
"description": "Interview questions and practice. For \"help me prepare for my interview\", \"what will they ask a staff nurse?\", \"do a mock interview\". Gives likely role questions, questions drawn from the advert, behavioural questions, good questions to ask them, tips for one-way video and AI interviews, and an order for a practice interview with timings. Takes a job id from a search, or the role and company.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"company": {
"description": "The company, for example \"NHS\" or \"Monzo\".",
"type": "string"
},
"id": {
"description": "A job id from a search result, copied exactly. Optional if what is given.",
"type": "string"
},
"what": {
"description": "The role, for example \"staff nurse\" or \"data analyst\".",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "interview_prep",
"outputSchema": null
},
{
"description": "What job seekers are searching for, by role and place. For \"how many people are looking for care jobs in Leeds?\" or \"what are people searching for in Bristol?\". Anonymous weekly counts of searches on Job Spotter by role words and place over the last 8 weeks, with the listings people found per search. Leave out what to get the most searched roles in a place (with a rising or falling trend), or where to get the places a role is searched most. For a role, it also gives the easiest places to find openings: where each search finds the most listings. A group is shown only when it holds 10 or more searches.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"country": {
"description": "US or UK.",
"enum": [
"US",
"UK"
],
"type": "string"
},
"what": {
"description": "The role, for example \"care assistant\".",
"type": "string"
},
"where": {
"description": "A town or city, or \"remote\".",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "job_demand",
"outputSchema": null
},
{
"description": "The best current jobs for a CV. For \"find jobs that fit my CV\", \"what jobs should I apply for?\". Searches current jobs for the person's target roles (or past titles) and place, and ranks them by match score, with matched and missing skills for each. Nothing sent is stored. The score is a fixed formula, not an AI judgement; the person decides what to apply for.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"cv": {
"description": "The CV as plain text. Optional if titles and skills are given.",
"type": "string"
},
"education": {
"description": "Highest qualification, for example \"BSc Economics\".",
"type": "string"
},
"employers": {
"description": "Current and past employers, comma separated.",
"type": "string"
},
"limit": {
"description": "How many jobs, 1 to 10.",
"maximum": 10,
"minimum": 1,
"type": "integer"
},
"location": {
"description": "Where the person lives or wants to work.",
"type": "string"
},
"schools": {
"description": "Universities or schools, comma separated.",
"type": "string"
},
"skills": {
"description": "Skills, comma separated.",
"type": "string"
},
"target_roles": {
"description": "Roles to look for, comma separated. Defaults to the CV's titles.",
"type": "string"
},
"titles": {
"description": "Current and past job titles, comma separated.",
"type": "string"
},
"where": {
"description": "Where to look, for example London or remote.",
"type": "string"
},
"years_experience": {
"description": "Years of work experience.",
"type": "number"
}
},
"required": [],
"type": "object"
},
"name": "jobs_for_me",
"outputSchema": null
},
{
"description": "Keep a job seeker's profile for introductions or offers (needs their email confirmation). Nothing is kept until the link is pressed. Candidates never pay.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"cv": {
"description": "CV text.",
"type": "string"
},
"email": {
"description": "The person's email address; a confirmation link goes there.",
"type": "string"
},
"intros": {
"description": "Employers may ask for introductions.",
"type": "boolean"
},
"location": {
"description": "Where they want to work.",
"type": "string"
},
"name": {
"description": "Their name (shown to an employer only after they say yes).",
"type": "string"
},
"offers": {
"description": "Quiet alerts about the right offer.",
"type": "boolean"
},
"shifts": {
"description": "Shift alerts nearby.",
"type": "boolean"
},
"skills": {
"description": "Skills, comma separated.",
"type": "string"
},
"target_roles": {
"description": "Jobs they want next.",
"type": "string"
},
"titles": {
"description": "Job titles they have had.",
"type": "string"
},
"years_experience": {
"type": "number"
}
},
"required": [
"email"
],
"type": "object"
},
"name": "join_matching",
"outputSchema": null
},
{
"description": "How well a CV matches a job. For \"how well do I match this job?\", \"should I apply?\", \"what's missing from my CV for this?\". Scores a CV or profile against a job from a search (or pasted advert) out of 100, the same way every time: skills 45, role 20, experience 15, education 10, place 10. Gives matched and missing skills, strengths, gaps and keywords to add if true. Nothing sent is stored. The score is a fixed formula, not an AI judgement; the person decides what to apply for.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"cv": {
"description": "The CV as plain text. Optional if titles and skills are given.",
"type": "string"
},
"education": {
"description": "Highest qualification, for example \"BSc Economics\".",
"type": "string"
},
"employers": {
"description": "Current and past employers, comma separated.",
"type": "string"
},
"id": {
"description": "A job id from a search result, copied exactly. Or give job_text.",
"type": "string"
},
"job_text": {
"description": "The job advert as plain text, when there is no id.",
"type": "string"
},
"location": {
"description": "Where the person lives or wants to work.",
"type": "string"
},
"schools": {
"description": "Universities or schools, comma separated.",
"type": "string"
},
"skills": {
"description": "Skills, comma separated.",
"type": "string"
},
"titles": {
"description": "Current and past job titles, comma separated.",
"type": "string"
},
"years_experience": {
"description": "Years of work experience.",
"type": "number"
}
},
"required": [],
"type": "object"
},
"name": "match_cv",
"outputSchema": null
},
{
"description": "Who to reach out to, from a CV. For \"who should I network with?\", \"how do I get a job as a data scientist without applying cold?\". From a CV or a few details and the role wanted, gives the kinds of people worth contacting in order (hiring managers at the employers hiring most for the role, recruiters who place it, alumni, former colleagues, people who made the same move, community organisers), with ready searches, the employers hiring most now and named people from public posts. Nothing sent is stored.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"cv": {
"description": "The CV as plain text. Optional if titles and skills are given.",
"type": "string"
},
"education": {
"description": "Highest qualification, for example \"BSc Economics\".",
"type": "string"
},
"employers": {
"description": "Current and past employers, comma separated.",
"type": "string"
},
"goal_role": {
"description": "The job the person is aiming for, for example \"data scientist\".",
"type": "string"
},
"location": {
"description": "Where the person lives or wants to work.",
"type": "string"
},
"school": {
"description": "A university or school, for alumni.",
"type": "string"
},
"schools": {
"description": "Universities or schools, comma separated.",
"type": "string"
},
"skills": {
"description": "Skills, comma separated.",
"type": "string"
},
"titles": {
"description": "Current and past job titles, comma separated.",
"type": "string"
},
"where": {
"description": "Where, for example London.",
"type": "string"
},
"years_experience": {
"description": "Years of work experience.",
"type": "number"
}
},
"required": [
"goal_role"
],
"type": "object"
},
"name": "networking_plan",
"outputSchema": null
},
{
"description": "Post a job or shift free (needs the employer's email confirmation). For small employers: posts a job or a single shift free. It goes live after the employer presses a link emailed to their work address (personal addresses get a quick check first), shows in Job Spotter's search, on its own page that Google for Jobs can list, and in alerts. Jobs close after 30 days, shifts when they end.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"apply_email": {
"description": "Or an email to apply to.",
"type": "string"
},
"apply_url": {
"description": "Apply link.",
"type": "string"
},
"company": {
"description": "Company.",
"type": "string"
},
"description": {
"description": "The advert text.",
"type": "string"
},
"email": {
"description": "The employer's work email; a confirmation link goes there.",
"type": "string"
},
"kind": {
"description": "Kind: job (default) or shift.",
"type": "string"
},
"location": {
"description": "Where.",
"type": "string"
},
"pay_cur": {
"description": "GBP, USD, EUR or CAD.",
"type": "string"
},
"pay_hi": {
"type": "number"
},
"pay_lo": {
"type": "number"
},
"pay_per": {
"description": "Pay per: year, hour, day or month.",
"type": "string"
},
"referral_bonus": {
"description": "Referral bonus offered, if any.",
"type": "string"
},
"remote": {
"type": "boolean"
},
"shift_end": {
"description": "Shift end, ISO date and time.",
"type": "string"
},
"shift_start": {
"description": "Shift start, ISO date and time.",
"type": "string"
},
"title": {
"description": "Job title.",
"type": "string"
},
"type": {
"description": "Type: full_time, part_time, contract, temporary, internship or per_diem.",
"type": "string"
},
"visa_sponsorship": {
"type": "boolean"
}
},
"required": [
"email",
"title",
"company",
"description"
],
"type": "object"
},
"name": "post_job",
"outputSchema": null
},
{
"description": "A ready note asking someone for a referral. For \"write to Amy at Monzo asking for a referral\". Gives a LinkedIn connection note under 300 characters and a longer email version that asks for a referral or a short chat, built from how they know each other and why the job fits. Nothing is sent or stored.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"ask": {
"description": "Ask: referral (default) or chat.",
"type": "string"
},
"company": {
"description": "The company.",
"type": "string"
},
"how_you_know": {
"description": "For example \"We worked together at Sunrise\".",
"type": "string"
},
"job_link": {
"description": "Link to the job.",
"type": "string"
},
"job_title": {
"description": "The job.",
"type": "string"
},
"their_name": {
"description": "The person being asked.",
"type": "string"
},
"why_fit": {
"description": "One line on why the job fits.",
"type": "string"
},
"your_name": {
"description": "The sender.",
"type": "string"
}
},
"required": [
"job_title",
"company"
],
"type": "object"
},
"name": "referral_note",
"outputSchema": null
},
{
"description": "Search current job listings. For requests like \"find remote Python jobs\", \"marketing jobs in New York\", \"junior data analyst jobs posted this week\", \"senior software engineer jobs in London\", \"nurse jobs in Manchester\". Job words go in what and the place in where. Everyday phrasing in what also works: level words (junior, senior), \"remote\", \"in <city>\" and \"this week\" are picked out. The say line credits listings from Remotive, Himalayas, Jobicy and Remote OK to their source.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"benefits": {
"description": "Benefits the advert must mention, comma separated, for example \"pension, private healthcare\".",
"type": "string"
},
"company": {
"description": "Only jobs at this company, for example \"Tesco\".",
"type": "string"
},
"country": {
"description": "US or UK, when the place exists in both (Birmingham, Manchester, Cambridge) and the user's country is known. Optional.",
"enum": [
"US",
"UK"
],
"type": "string"
},
"education": {
"description": "Education: degree for jobs asking for a degree, or no degree for jobs that don't.",
"enum": [
"degree",
"no degree"
],
"type": "string"
},
"employer": {
"description": "Employer: direct for jobs posted by the employer itself, or agency for recruitment agencies.",
"enum": [
"direct",
"agency"
],
"type": "string"
},
"exclude": {
"description": "Words the advert must not contain, comma separated, for example \"sales, commission\".",
"type": "string"
},
"include": {
"description": "Words the advert must contain, comma separated, for example \"python, aws\".",
"type": "string"
},
"job_type": {
"description": "Job type: full time, part time, contract, temporary or internship.",
"enum": [
"full time",
"part time",
"contract",
"temporary",
"internship"
],
"type": "string"
},
"level": {
"description": "Level: entry (junior, graduate, intern), mid or senior. With entry, jobs asking for more than 2 years of experience are left out and the answer adds apprenticeship and graduate routes.",
"enum": [
"entry",
"mid",
"senior"
],
"type": "string"
},
"limit": {
"description": "How many results, 1 to 10. Default 10.",
"maximum": 10,
"minimum": 1,
"type": "integer"
},
"page": {
"description": "Which page of results, 1 to 20. Default 1. Use 2 for \"show me more\".",
"maximum": 20,
"minimum": 1,
"type": "integer"
},
"posted_within_days": {
"description": "Only jobs posted in the last N days, 1 to 90. Default 30. 7 means this week.",
"maximum": 90,
"minimum": 1,
"type": "integer"
},
"radius_miles": {
"description": "How far from the place, in miles, 1 to 100 (boards that support distance).",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"salary_max": {
"description": "Highest yearly pay, in the local currency.",
"type": "string"
},
"salary_min": {
"description": "Lowest yearly pay, in the local currency, for example 40000 or 40k. Jobs that list no pay are left out when set.",
"type": "string"
},
"shift": {
"description": "Shift: day, evening, night, weekend or flexible.",
"enum": [
"day",
"evening",
"night",
"weekend",
"flexible"
],
"type": "string"
},
"sort": {
"description": "Sort: relevance (default), date (newest first) or pay (highest first).",
"enum": [
"relevance",
"date",
"pay"
],
"type": "string"
},
"visa_sponsorship": {
"description": "Set to yes for jobs whose advert says visa sponsorship is offered.",
"enum": [
"yes"
],
"type": "string"
},
"what": {
"description": "Job title, skill or field, for example \"python developer\" or \"marketing\". Required unless where is given.",
"type": "string"
},
"where": {
"description": "A city (New York, Austin, TX, London, Birmingham, UK), a US state (Texas), a UK county or region (Kent, Yorkshire), a UK postcode, a city or country abroad (Bangalore, Dublin, Dubai, Sydney, India), a country (USA, UK, Germany), \"remote\", or remote in a country (\"remote US\").",
"type": "string"
},
"work_type": {
"description": "Work type: remote, hybrid or on-site.",
"enum": [
"remote",
"hybrid",
"on-site"
],
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "search_jobs",
"outputSchema": null
},
{
"description": "Jobs like one from a search result. For \"show me more like the second one\" or \"anything similar to that Tesco job?\". Takes the id from a search result exactly as given. Returns jobs with a similar title in the same place, without the job itself.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"id": {
"description": "The id from a search result, copied exactly.",
"type": "string"
},
"limit": {
"description": "How many results, 1 to 10. Default 10.",
"maximum": 10,
"minimum": 1,
"type": "integer"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "similar_jobs",
"outputSchema": null
},
{
"description": "What a US employer offered on work visa filings. For \"what does Google pay software engineers?\" or \"how much does Infosys pay on H-1B?\". Wages US employers offered on certified H-1B, H-1B1 and E-3 labour condition applications (US Department of Labor disclosure data): the number of filings, the median and typical range, and the most common job titles with their median offered wage. Offered wages on filings, a guide to pay at that employer; contact people named in the filings are left out.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"company": {
"description": "The employer, for example \"Google\" or \"Amazon.com Services\".",
"type": "string"
},
"title": {
"description": "A job title to pick out, for example \"software engineer\".",
"type": "string"
}
},
"required": [
"company"
],
"type": "object"
},
"name": "us_visa_salaries",
"outputSchema": null
},
{
"description": "What's hiring most in a place. For \"who's hiring in Leeds?\", \"what jobs are in demand in Austin?\", \"which companies are hiring nurses in Manchester?\". Gives the roles advertised most and the employers with the most open jobs.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"country": {
"description": "US or UK when the place exists in both, or a country by name.",
"type": "string"
},
"what": {
"description": "Optional field to narrow it, for example \"nurse\" or \"engineering\".",
"type": "string"
},
"where": {
"description": "A city, region, postcode or country, for example Birmingham, Austin, TX or remote.",
"type": "string"
}
},
"required": [
"where"
],
"type": "object"
},
"name": "whats_hiring",
"outputSchema": null
},
{
"description": "Write a job advert and check the pay. For employers: \"help me write an advert for a care assistant\", \"is £12 an hour enough?\". Builds a clear advert from the title, duties, must-haves and pay, flags what puts applicants off (missing pay, too many must-haves, slang like \"rockstar\", age-coded or gendered wording, \"native speaker\") and compares the pay with current adverts for the role and place. Nothing is posted or stored; posting is free at jobspotter.pages.dev/employers.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"about": {
"description": "A line or two about the company.",
"type": "string"
},
"apply": {
"description": "How to apply.",
"type": "string"
},
"benefits": {
"description": "Benefits, comma separated.",
"type": "string"
},
"company": {
"description": "Company name.",
"type": "string"
},
"duties": {
"description": "What the person will do, one per line or comma separated.",
"type": "string"
},
"location": {
"description": "Where the job is.",
"type": "string"
},
"must": {
"description": "Must-haves, comma separated.",
"type": "string"
},
"nice": {
"description": "Nice to have, comma separated.",
"type": "string"
},
"pay_cur": {
"description": "GBP, USD, EUR or CAD.",
"type": "string"
},
"pay_hi": {
"description": "Pay to.",
"type": "number"
},
"pay_lo": {
"description": "Pay from.",
"type": "number"
},
"pay_per": {
"description": "Pay per: year, hour, day or month.",
"type": "string"
},
"remote": {
"description": "Remote job.",
"type": "boolean"
},
"title": {
"description": "Job title.",
"type": "string"
},
"type": {
"description": "Type: full_time, part_time, contract, temporary, internship or per_diem.",
"type": "string"
}
},
"required": [
"title"
],
"type": "object"
},
"name": "write_job_advert",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:7b94b6e63216d2c3b4cde4bbe14d729a5ee3f01a5457085259da31791bce80df | sha256sum