Skip to main content
Glama

Role requirements

role_requirements
Read-only

What postings for a role or category ask for: skills, years, salary, remote share, companies and countries, over up to 300 postings close to query (8 a company unless company). Say what was counted, and when nothing matches, that HeadStart has none. Filters are search_jobs'.

Input Schema

NameRequiredDescriptionDefault
queryNoThe role only.
remoteNo
companyNoText in a company's name, or a Board key ('ashby:openai'); no per-company cap.
countryNo
categoryNoA job category: its newest, or with `query`.
locationNo
max_yearsNo
operatorsNo
has_salaryNo
salary_maxNo
salary_minNo
india_placeNo
max_age_daysNo
employment_typeNo
salary_currencyNo
include_non_techNo
work_authorizationNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed17 schema fields changed
    • changedInput schema / properties / category / description
      Previous value: -"A job category: its newest postings, or with `query` the closest within it. A label or close name ('AI/ML') is read as its id."New value: +"A job category: its newest, or with `query`."
    • changedInput schema / properties / company / description
      Previous value: -"Any company name containing this text, or a Board key such as 'ashby:openai': that company's postings, with no per-company cap."New value: +"Text in a company's name, or a Board key ('ashby:openai'); no per-company cap."
    • removedInput schema / properties / country / description
      Removed value: -"As in search_jobs."
    • removedInput schema / properties / employment_type / description
      Removed value: -"As in search_jobs."
    • removedInput schema / properties / has_salary / description
      Removed value: -"As in search_jobs."
    • removedInput schema / properties / include_non_tech / description
      Removed value: -"As in search_jobs."
    • removedInput schema / properties / india_place / description
      Removed value: -"As in search_jobs."
    • removedInput schema / properties / location / description
      Removed value: -"As in search_jobs."
    • removedInput schema / properties / max_age_days / description
      Removed value: -"As in search_jobs."
    • removedInput schema / properties / max_years / description
      Removed value: -"As in search_jobs."
    • removedInput schema / properties / operators / description
      Removed value: -"As in search_jobs."
    • changedInput schema / properties / query / description
      Previous value: -"The role only, such as 'data engineer'."New value: +"The role only."
    • removedInput schema / properties / remote / description
      Removed value: -"As in search_jobs."
    • removedInput schema / properties / salary_currency / description
      Removed value: -"As in search_jobs."
    • removedInput schema / properties / salary_max / description
      Removed value: -"As in search_jobs."
    • removedInput schema / properties / salary_min / description
      Removed value: -"As in search_jobs."
    • removedInput schema / properties / work_authorization / description
      Removed value: -"As in search_jobs."
  2. Changed20 schema fields changed
    • changedInput schema / properties / category / description
      Previous value: -"A job category: its postings across the whole index, or with `query` the closest within it. A label or close name ('AI/ML') is read as its id."New value: +"A job category: its newest postings, or with `query` the closest within it. A label or close name ('AI/ML') is read as its id."
    • changedInput schema / properties / company / description
      Previous value: -"A company name, matched as the site's company box matches (any company name containing the text), or a Board key from an earlier answer such as 'ashby:openai'. In search_jobs beside `category` it needs a directory company: a key such as 'greenhouse:stripe', or an exact name."New value: +"Any company name containing this text, or a Board key such as 'ashby:openai': that company's postings, with no per-company cap."
    • changedInput schema / properties / country / description
      Previous value: -"ISO 3166-1 alpha-2 code (US, GB, DE, IN); a country's name or 'UK', 'USA', 'UAE' is read as its code. Matches every way a job's location names the country: its name, states, cities and codes. IN is india_place 'india'."New value: +"As in search_jobs."
    • removedInput schema / properties / country / enum
      Removed value: -[
      -  "US",
      -  "IN",
      -  "GB",
      -  "CA",
      -  "SG",
      -  "DE",
      -  "CN",
      -  "AU",
      -  "PL",
      -  "MY",
      -  "PH",
      -  "ES",
      -  "MX",
      -  "NL",
      -  "IE",
      -  "AE",
      -  "TW",
      -  "JP",
      -  "PT",
      -  "RO",
      -  "BR",
      -  "EG",
      -  "SA",
      -  "FR",
      -  "IL",
      -  "VN",
      -  "ZA",
      -  "BE",
      -  "IT",
      -  "CH",
      -  "SE",
      -  "TH",
      -  "GR",
      -  "CO",
      -  "HK",
      -  "AR",
      -  "PK",
      -  "HU",
      -  "BG",
      -  "ID",
      -  "NZ",
      -  "NG",
      -  "UA",
      -  "QA",
      -  "RS",
      -  "DK",
      -  "CZ",
      -  "AT",
      -  "CR",
      -  "KR",
      -  "LT",
      -  "FI",
      -  "NO",
      -  "TR",
      -  "LK",
      -  "CL",
      -  "PE",
      -  "LB",
      -  "LU",
      -  "KE",
      -  "CY",
      -  "SK",
      -  "MT",
      -  "JO",
      -  "PR",
      -  "UY",
      -  "EE",
      -  "LV",
      -  "HR",
      -  "PA",
      -  "AM",
      -  "TN",
      -  "DO",
      -  "GE",
      -  "SI",
      -  "GT",
      -  "KZ",
      -  "BO",
      -  "EC",
      -  "SV",
      -  "OM",
      -  "MA",
      -  "NI",
      -  "AL",
      -  "KW",
      -  "BH",
      -  "MD",
      -  "MU",
      -  "GH",
      -  "BD",
      -  "HN",
      -  "PY",
      -  "BA",
      -  "MK",
      -  "TZ",
      -  "GY",
      -  "SR",
      -  "IQ",
      -  "DZ",
      -  "XK",
      -  "NP",
      -  "ZM",
      -  "UG",
      -  "BZ",
      -  "KH",
      -  "IS",
      -  "BY",
      -  "RW",
      -  "ZW",
      -  "UZ",
      -  "KY",
      -  "MV",
      -  "CI",
      -  "LY",
      -  "SY",
      -  "MM",
      -  "MG",
      -  "ET",
      -  "CM",
      -  "BS",
      -  "TO",
      -  "BN",
      -  "PG",
      -  "TT",
      -  "LI",
      -  "JM",
      -  "PS",
      -  "AZ"
      -]
    • addedInput schema / properties / country / maxLength
      Added value: +60
    • changedInput schema / properties / employment_type / description
      Previous value: -"full-time also keeps jobs whose source states no type; part-time, contract and internship keep only jobs that say so."New value: +"As in search_jobs."
    • changedInput schema / properties / has_salary / description
      Previous value: -"Only jobs that state a salary."New value: +"As in search_jobs."
    • changedInput schema / properties / include_non_tech / description
      Previous value: -"Also list the jobs HeadStart's classifier is confident are not tech (a store cashier, a plant's process engineer), which are left out unless this is true, as the site leaves them out unless its 'Include non-tech roles' switch is on. The answer says how many were left out. Send it for a role the user really wants that is not software or tech."New value: +"As in search_jobs."
    • changedInput schema / properties / india_place / description
      Previous value: -"An Indian city or region, or 'india' for anywhere in India."New value: +"As in search_jobs."
    • removedInput schema / properties / india_place / enum
      Removed value: -[
      -  "india",
      -  "delhi ncr",
      -  "bengaluru",
      -  "hyderabad",
      -  "pune",
      -  "chennai",
      -  "mumbai",
      -  "gurgaon",
      -  "noida",
      -  "kolkata",
      -  "delhi",
      -  "ahmedabad",
      -  "coimbatore",
      -  "vadodara",
      -  "indore",
      -  "chandigarh",
      -  "thane",
      -  "jaipur",
      -  "kochi",
      -  "bhubaneswar",
      -  "thiruvananthapuram",
      -  "surat",
      -  "faridabad",
      -  "nagpur",
      -  "visakhapatnam",
      -  "vijayawada",
      -  "mysuru",
      -  "nashik",
      -  "goa",
      -  "ghaziabad",
      -  "anand",
      -  "jajpur",
      -  "meerut",
      -  "savli",
      -  "guntur",
      -  "jammu",
      -  "madurai",
      -  "bhopal",
      -  "jamshedpur",
      -  "hosur",
      -  "bharuch",
      -  "shahjahanpur",
      -  "lucknow",
      -  "sikkim",
      -  "tiruchirappalli",
      -  "gandhinagar",
      -  "halol",
      -  "palghar",
      -  "aurangabad",
      -  "jalandhar",
      -  "vellore",
      -  "rajkot",
      -  "mangaluru",
      -  "kozhikode",
      -  "jodhpur",
      -  "patna",
      -  "ludhiana",
      -  "raipur",
      -  "anakapalli",
      -  "belagavi",
      -  "puducherry",
      -  "kanpur",
      -  "ranchi",
      -  "dehradun",
      -  "amritsar",
      -  "tirupati",
      -  "udaipur",
      -  "guwahati",
      -  "srinagar",
      -  "baddi"
      -]
    • addedInput schema / properties / india_place / maxLength
      Added value: +40
    • changedInput schema / properties / location / description
      Previous value: -"Text the job's location contains, any country. Accents and a city's other spellings read alike: Zurich finds Zürich, Bangalore finds Bengaluru."New value: +"As in search_jobs."
    • changedInput schema / properties / max_age_days / description
      Previous value: -"Leaves out postings older than this many days: the posted date, else the day HeadStart first saw the job. 365 unless sent; 0 for any age."New value: +"As in search_jobs."
    • changedInput schema / properties / max_years / description
      Previous value: -"The user's own years of experience ('3+ years' is 3): keeps jobs asking for at most this many, and jobs that state no experience (their rows say 'experience not stated')."New value: +"As in search_jobs."
    • changedInput schema / properties / operators / description
      Previous value: -"Who may post the jobs, as hiring_now labels companies: employer, services (an IT services firm), staffing (an agency posting clients' contracts) or aggregator (a job board re-posting others' jobs). Staffing and aggregator are left out unless named, as on the site's Hiring now tab, or a `company` is named; the answer says how many jobs that left out. Labels come from a curated list: an unlisted company counts as an employer."New value: +"As in search_jobs."
    • changedInput schema / properties / remote / description
      Previous value: -"Remote jobs only."New value: +"As in search_jobs."
    • changedInput schema / properties / salary_currency / description
      Previous value: -"ISO 4217 code, such as USD, INR, EUR, GBP."New value: +"As in search_jobs."
    • changedInput schema / properties / salary_max / description
      Previous value: -"Annual; needs salary_currency. Keeps a job whose stated range starts at or below it."New value: +"As in search_jobs."
    • changedInput schema / properties / salary_min / description
      Previous value: -"Annual; needs salary_currency (30 lakh = 3000000 INR). Keeps a job whose stated range reaches it; other currencies are converted at fixed rates."New value: +"As in search_jobs."
    • changedInput schema / properties / work_authorization / description
      Previous value: -"Use this, not `keyword`, for visa sponsorship or relocation: a description that mentions sponsorship usually refuses it. offers_sponsorship: the description offers this job visa sponsorship and nothing in it refuses or hedges it; an offer limited to another country than the job's (or a move to another country's city), to levels above its title, or to full-time roles on an internship, does not count. may_offer_sponsorship: those jobs, plus the ones whose offer is hedged ('not guaranteed', 'not for every role', 'case by case', 'may be available', 'if possible', 'subject to approval', 'only if already based in'), is a visa transfer only, or names a country or level the job's place or title does not show; each row says which kind it is, so say it. refuses_sponsorship: it refuses sponsorship ('now or in the future', 'Visa Sponsorship: No'), requires citizenship of this job or work authorisation already held, or offers it only to another country or level; offers_relocation: it offers relocation help. Text-derived, not a field the employer set: HeadStart's rules (headstart.jobs.work_authorization) read each sponsorship, citizenship and relocation sentence with its negation, and read an offer against the job's place, title and type. Of 50 offers_sponsorship jobs drawn from the live index after the rules froze (ADR-0368; 25 in the US, 25 elsewhere, at most 5 a company), read strictly, 47 (0.94) offered this job sponsorship firmly and all 50 at least may; the 0.98 to 0.99 precision on 1,062 hand-read descriptions (ADR-0333 to ADR-0368) is on the rules' own tuning set. Before telling a user a job sponsors visas, read its sponsorship sentences with get_job. A posting without a description never matches."New value: +"As in search_jobs."
  3. First observed

TDQS

B3.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only and open-world safety, but the description adds important behavioral detail: results are limited to up to 300 postings near `query`, capped at 8 per company unless `company` is specified. It also instructs the agent to report what was counted and to state that HeadStart has none when nothing matches, which is useful beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loads the core output dimensions and sampling limit. The second sentence efficiently points to `search_jobs` for filter semantics and gives reporting instructions, though the telegraphic style makes some clauses feel compressed rather than fully clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex 17-parameter aggregate tool with low schema description coverage and no output schema, the description is too sparse. It names output dimensions and sampling constraints but does not explain most filter parameters or the structure of returned aggregates, leaving significant gaps an agent would need to resolve.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 18% across 17 parameters, so the description must compensate. It clarifies the role-only nature of `query`, the per-company cap exception for `company`, and that filters mirror `search_jobs`, but it leaves most parameters (e.g., `operators`, `max_years`, `salary_currency`, `work_authorization`, `include_non_tech`) unexplained in both schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the resource (postings for a role or category) and the output dimensions (skills, years, salary, remote share, companies and countries). It also signals a key distinction from sibling `search_jobs` by noting that filters are shared, though the phrasing 'What postings ... ask for' is slightly indirect rather than a clean verb+resource statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this is an aggregate analysis tool versus `search_jobs` listing individual postings, and 'Filters are search_jobs'' links the two. However, it never explicitly says when to choose this tool over `search_jobs` or when not to use it, leaving the agent to infer the distinction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources