{"data":{"slug":"freehire","verdict":"passed","scannedAt":"2026-10-26T10:54:44.142Z","scannerVersion":"1.2.1","latest":{"id":"df728dbc-92d4-464d-bd28-1d5d3e769b94","createdAt":"2026-10-26T10:54:44.142Z","version":"0.6.0","trigger":"changed","scannerVersion":"1.2.1","verdict":"passed","checks":[{"id":"hidden_instructions","status":"passed","findings":0,"label":"Hidden instructions"},{"id":"hidden_text","status":"passed","findings":0,"label":"Invisible text"},{"id":"sensitive_access","status":"passed","findings":0,"label":"Access to credentials"},{"id":"remote_code","status":"passed","findings":0,"label":"Downloads and runs code"},{"id":"exfiltration","status":"passed","findings":0,"label":"Sends data out"},{"id":"secrets","status":"passed","findings":0,"label":"Leaked secrets"}],"findings":[],"toolCount":10},"history":[{"id":"df728dbc-92d4-464d-bd28-1d5d3e769b94","createdAt":"2026-10-26T10:54:44.142Z","version":"0.6.0","trigger":"changed","scannerVersion":"1.2.1","verdict":"passed","checks":[{"id":"hidden_instructions","status":"passed","findings":0,"label":"Hidden instructions"},{"id":"hidden_text","status":"passed","findings":0,"label":"Invisible text"},{"id":"sensitive_access","status":"passed","findings":0,"label":"Access to credentials"},{"id":"remote_code","status":"passed","findings":0,"label":"Downloads and runs code"},{"id":"exfiltration","status":"passed","findings":0,"label":"Sends data out"},{"id":"secrets","status":"passed","findings":0,"label":"Leaked secrets"}],"findings":[],"toolCount":10},{"id":"87086cea-7e51-48f6-8b1c-a3dc2f0a0f22","createdAt":"2026-10-26T02:53:43.487Z","version":"0.6.0","trigger":"tools_changed","scannerVersion":"1.2.1","verdict":"passed","checks":[{"id":"hidden_instructions","status":"passed","findings":0,"label":"Hidden instructions"},{"id":"hidden_text","status":"passed","findings":0,"label":"Invisible text"},{"id":"sensitive_access","status":"passed","findings":0,"label":"Access to credentials"},{"id":"remote_code","status":"passed","findings":0,"label":"Downloads and runs code"},{"id":"exfiltration","status":"passed","findings":0,"label":"Sends data out"},{"id":"secrets","status":"passed","findings":0,"label":"Leaked secrets"}],"findings":[],"toolCount":10},{"id":"c847c598-660c-4d25-85f1-9ec2a56f72ea","createdAt":"2026-10-25T23:23:33.024Z","version":"0.6.0","trigger":"new","scannerVersion":"1.2.1","verdict":"passed","checks":[{"id":"hidden_instructions","status":"passed","findings":0,"label":"Hidden instructions"},{"id":"hidden_text","status":"passed","findings":0,"label":"Invisible text"},{"id":"sensitive_access","status":"passed","findings":0,"label":"Access to credentials"},{"id":"remote_code","status":"passed","findings":0,"label":"Downloads and runs code"},{"id":"exfiltration","status":"passed","findings":0,"label":"Sends data out"},{"id":"secrets","status":"passed","findings":0,"label":"Leaked secrets"}],"findings":[],"toolCount":null}],"endpoint":{"url":"https://freehire.me/api/v1/mcp","transport":"streamable-http","status":"ok","checkedAt":"2026-10-26T02:53:12.475Z","toolCount":10,"latencyMs":1183,"error":null},"tools":[{"name":"check_jobs_open","title":"Check whether postings are still open","description":"Check whether postings are still open, by the slugs search results carry — up to 50 per call. Use before acting on a saved shortlist: each posting answers open, closed or not_found, with when it closed or was last seen live.","access":"read","accessDeclared":true,"hash":"6a274ac48a31e69883c3d19df63fdfb3ca0458c8ad30405e91c76423602bac1d","inputSchema":"{\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"slugs\": {\n      \"description\": \"posting identifiers, as carried by search results' slug; up to 50 are checked per call\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": [\n        \"null\",\n        \"array\"\n      ]\n    }\n  },\n  \"required\": [\n    \"slugs\"\n  ],\n  \"type\": \"object\"\n}"},{"name":"fetch","title":"Read one job posting (research)","description":"Read one posting in full by an id search returned: its full text, the employer, the board it came from and whether it still looks live.","access":"read","accessDeclared":true,"hash":"8e11c29edabea107adfbc829c953e9856617cabe6d5ec0951160f5620db1f07f","inputSchema":"{\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"id\": {\n      \"description\": \"a result id from search\",\n      \"type\": \"string\"\n    }\n  },\n  \"required\": [\n    \"id\"\n  ],\n  \"type\": \"object\"\n}"},{"name":"get_company","title":"Read one employer","description":"Read what freehire holds about one employer by the slug a result carries: what they do, which industries they are in, where they are based, and how many postings they have open.","access":"read","accessDeclared":true,"hash":"ed1c0278dd742ba0e1e95bae74e4521d581c8aa7a666157d0c222cd6ab981c2e","inputSchema":"{\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"slug\": {\n      \"description\": \"the employer's identifier, as carried by a result's company_slug\",\n      \"type\": \"string\"\n    }\n  },\n  \"required\": [\n    \"slug\"\n  ],\n  \"type\": \"object\"\n}"},{"name":"get_job","title":"Read one job posting","description":"Read one posting in full by the slug a search result carries: the whole description, the stated requirements, which applicant tracking system handles applications, and whether the posting still looks live — when it was last seen open, a reality class, and any observed signs that it is not being filled.","access":"read","accessDeclared":true,"hash":"020c84000207ce405df8b4d1b8fe7ec3df725d4aa2f3c317f92de2722e7e8529","inputSchema":"{\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"slug\": {\n      \"description\": \"the posting's identifier, as carried by a search result's slug\",\n      \"type\": \"string\"\n    }\n  },\n  \"required\": [\n    \"slug\"\n  ],\n  \"type\": \"object\"\n}"},{"name":"job_market_stats","title":"Job market breakdown","description":"How many open postings match a set of filters, and their most common role families, seniorities, skills, work modes, countries and regions. Takes the same filters as a job search.","access":"read","accessDeclared":true,"hash":"96a88cd4f11d66dd64bda1e78e89fdf900428b7b468905830cd839fa47901b6b","inputSchema":"{\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"category\": {\n      \"description\": \"role family, e.g. backend, frontend, devops, data\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": [\n        \"null\",\n        \"array\"\n      ]\n    },\n    \"cities\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": [\n        \"null\",\n        \"array\"\n      ]\n    },\n    \"company_slugs\": {\n      \"description\": \"employer identifiers, as carried by a result's company_slug\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": [\n        \"null\",\n        \"array\"\n      ]\n    },\n    \"countries\": {\n      \"description\": \"ISO 3166-1 alpha-2 codes, e.g. DE, BR\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": [\n        \"null\",\n        \"array\"\n      ]\n    },\n    \"employment_type\": {\n      \"description\": \"any of full_time, part_time, contract, internship\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": [\n        \"null\",\n        \"array\"\n      ]\n    },\n    \"english_level\": {\n      \"description\": \"CEFR levels, e.g. B2, C1\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": [\n        \"null\",\n        \"array\"\n      ]\n    },\n    \"exclude_company_slugs\": {\n      \"description\": \"employers to leave out, as carried by a result's company_slug\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": [\n        \"null\",\n        \"array\"\n      ]\n    },\n    \"exclude_skills\": {\n      \"description\": \"technologies the posting must not ask for, e.g. php\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": [\n        \"null\",\n        \"array\"\n      ]\n    },\n    \"limit\": {\n      \"description\": \"results per page\",\n      \"type\": \"integer\"\n    },\n    \"offset\": {\n      \"type\": \"integer\"\n    },\n    \"posted_within_days\": {\n      \"type\": \"integer\"\n    },\n    \"query\": {\n      \"description\": \"free text, matched against title, company, description and location. Operators: double quotes require every quoted word in any order (not a phrase); -word excludes; uppercase OR between terms matches any alternative (at most 5), e.g. golang OR rust; title: at the start of an alternative matches it in the title only, e.g. title:\\\"product owner\\\" OR title:produktchef\",\n      \"type\": \"string\"\n    },\n    \"regions\": {\n      \"description\": \"any of global, north_america, latam, eu, uk, mena, africa, apac, cis\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": [\n        \"null\",\n        \"array\"\n      ]\n    },\n    \"relocation\": {\n      \"description\": \"any of supported (the employer helps you move), required (the role needs you to move), not_supported\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": [\n        \"null\",\n        \"array\"\n      ]\n    },\n    \"require_all_skills\": {\n      \"description\": \"true: every listed skill must be present, not just one\",\n      \"type\": \"boolean\"\n    },\n    \"salary_currency\": {\n      \"description\": \"ISO 4217 code, e.g. USD\",\n      \"type\": \"string\"\n    },\n    \"salary_min\": {\n      \"type\": \"integer\"\n    },\n    \"semantic\": {\n      \"description\": \"true: also match postings that describe the query in other words. Use it for a need described in words, e.g. 'keep our payment systems secure' or 'help kids learn to read'; leave it off for a job title or a non-technical role, which keywords answer better. Needs query\",\n      \"type\": [\n        \"null\",\n        \"boolean\"\n      ]\n    },\n    \"seniority\": {\n      \"description\": \"any of intern, junior, middle, senior, lead, staff, principal, c_level\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": [\n        \"null\",\n        \"array\"\n      ]\n    },\n    \"skills\": {\n      \"description\": \"technologies, e.g. go, kubernetes, react\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": [\n        \"null\",\n        \"array\"\n      ]\n    },\n    \"sources\": {\n      \"description\": \"job boards to restrict to\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": [\n        \"null\",\n        \"array\"\n      ]\n    },\n    \"visa_sponsorship\": {\n      \"type\": [\n        \"null\",\n        \"boolean\"\n      ]\n    },\n    \"work_mode\": {\n      \"description\": \"any of remote, hybrid, onsite\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": [\n        \"null\",\n        \"array\"\n      ]\n    }\n  },\n  \"type\": \"object\"\n}"},{"name":"salary_stats","title":"Salary ranges","description":"Salary percentiles (25th, median, 75th) from open postings that state pay, scoped by role family, seniority and country, with the sample size behind each figure. Currencies and pay periods are reported separately, never converted.","access":"read","accessDeclared":true,"hash":"1214d9675a7a2df2e43a110308f858388dfb65a3af6c909e6d2cef4382b6a048","inputSchema":"{\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"category\": {\n      \"description\": \"role family, e.g. backend, frontend, devops, data\",\n      \"type\": \"string\"\n    },\n    \"country\": {\n      \"description\": \"ISO 3166-1 alpha-2 code, e.g. DE\",\n      \"type\": \"string\"\n    },\n    \"seniority\": {\n      \"description\": \"any of intern, junior, middle, senior, lead, staff, principal, c_level\",\n      \"type\": \"string\"\n    }\n  },\n  \"type\": \"object\"\n}"},{"name":"search","title":"Search jobs (research)","description":"Search freehire's IT job postings by free text. Returns matching postings as {id, title, url}.","access":"read","accessDeclared":true,"hash":"9f371f14b972e3c5a082cdd6222bfb1594da76917319c4b2fcc2a288cd45b45b","inputSchema":"{\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"query\": {\n      \"description\": \"free text describing the jobs to find\",\n      \"type\": \"string\"\n    }\n  },\n  \"required\": [\n    \"query\"\n  ],\n  \"type\": \"object\"\n}"},{"name":"search_companies","title":"Search employers","description":"Find employers in freehire's catalogue by name or by where they hire, with how many postings each has open. Use when the question is about a company rather than about a role.","access":"read","accessDeclared":true,"hash":"1d01271956a85762e1c888a11a179242a28d130527f99e085fafa241cf3511fa","inputSchema":"{\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"countries\": {\n      \"description\": \"ISO 3166-1 alpha-2 codes the employer hires in\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": [\n        \"null\",\n        \"array\"\n      ]\n    },\n    \"limit\": {\n      \"type\": \"integer\"\n    },\n    \"offset\": {\n      \"type\": \"integer\"\n    },\n    \"query\": {\n      \"description\": \"free text, matched against the employer's name\",\n      \"type\": \"string\"\n    }\n  },\n  \"type\": \"object\"\n}"},{"name":"search_jobs","title":"Search jobs","description":"Search freehire's catalogue of IT job postings. Use for any question about which jobs are open — by technology, seniority, location, pay or employer. Returns a short preview of each posting. Set semantic for a need described in words (\"keep our payment systems secure\"), not for a job title or a non-technical role, where plain keywords answer better.","access":"read","accessDeclared":true,"hash":"2e19de441f2c58c844540be01686baef123d8e493451bf5da6d28857c3289c56","inputSchema":"{\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"category\": {\n      \"description\": \"role family, e.g. backend, frontend, devops, data\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": [\n        \"null\",\n        \"array\"\n      ]\n    },\n    \"cities\": {\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": [\n        \"null\",\n        \"array\"\n      ]\n    },\n    \"company_slugs\": {\n      \"description\": \"employer identifiers, as carried by a result's company_slug\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": [\n        \"null\",\n        \"array\"\n      ]\n    },\n    \"countries\": {\n      \"description\": \"ISO 3166-1 alpha-2 codes, e.g. DE, BR\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": [\n        \"null\",\n        \"array\"\n      ]\n    },\n    \"employment_type\": {\n      \"description\": \"any of full_time, part_time, contract, internship\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": [\n        \"null\",\n        \"array\"\n      ]\n    },\n    \"english_level\": {\n      \"description\": \"CEFR levels, e.g. B2, C1\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": [\n        \"null\",\n        \"array\"\n      ]\n    },\n    \"exclude_company_slugs\": {\n      \"description\": \"employers to leave out, as carried by a result's company_slug\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": [\n        \"null\",\n        \"array\"\n      ]\n    },\n    \"exclude_skills\": {\n      \"description\": \"technologies the posting must not ask for, e.g. php\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": [\n        \"null\",\n        \"array\"\n      ]\n    },\n    \"limit\": {\n      \"description\": \"results per page\",\n      \"type\": \"integer\"\n    },\n    \"offset\": {\n      \"type\": \"integer\"\n    },\n    \"posted_within_days\": {\n      \"type\": \"integer\"\n    },\n    \"query\": {\n      \"description\": \"free text, matched against title, company, description and location. Operators: double quotes require every quoted word in any order (not a phrase); -word excludes; uppercase OR between terms matches any alternative (at most 5), e.g. golang OR rust; title: at the start of an alternative matches it in the title only, e.g. title:\\\"product owner\\\" OR title:produktchef\",\n      \"type\": \"string\"\n    },\n    \"regions\": {\n      \"description\": \"any of global, north_america, latam, eu, uk, mena, africa, apac, cis\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": [\n        \"null\",\n        \"array\"\n      ]\n    },\n    \"relocation\": {\n      \"description\": \"any of supported (the employer helps you move), required (the role needs you to move), not_supported\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": [\n        \"null\",\n        \"array\"\n      ]\n    },\n    \"require_all_skills\": {\n      \"description\": \"true: every listed skill must be present, not just one\",\n      \"type\": \"boolean\"\n    },\n    \"salary_currency\": {\n      \"description\": \"ISO 4217 code, e.g. USD\",\n      \"type\": \"string\"\n    },\n    \"salary_min\": {\n      \"type\": \"integer\"\n    },\n    \"semantic\": {\n      \"description\": \"true: also match postings that describe the query in other words. Use it for a need described in words, e.g. 'keep our payment systems secure' or 'help kids learn to read'; leave it off for a job title or a non-technical role, which keywords answer better. Needs query\",\n      \"type\": [\n        \"null\",\n        \"boolean\"\n      ]\n    },\n    \"seniority\": {\n      \"description\": \"any of intern, junior, middle, senior, lead, staff, principal, c_level\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": [\n        \"null\",\n        \"array\"\n      ]\n    },\n    \"skills\": {\n      \"description\": \"technologies, e.g. go, kubernetes, react\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": [\n        \"null\",\n        \"array\"\n      ]\n    },\n    \"sources\": {\n      \"description\": \"job boards to restrict to\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": [\n        \"null\",\n        \"array\"\n      ]\n    },\n    \"visa_sponsorship\": {\n      \"type\": [\n        \"null\",\n        \"boolean\"\n      ]\n    },\n    \"work_mode\": {\n      \"description\": \"any of remote, hybrid, onsite\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"type\": [\n        \"null\",\n        \"array\"\n      ]\n    }\n  },\n  \"type\": \"object\"\n}"},{"name":"similar_jobs","title":"Find similar postings","description":"Postings most similar to one posting, by its slug, nearest first — for \"show me more like this\". Empty for the newest postings, whose neighbours are not computed yet.","access":"read","accessDeclared":true,"hash":"16f5b59c2d0f66872b3447ba2f7e454b83c73eda482432c6e78e33ea19a09287","inputSchema":"{\n  \"additionalProperties\": false,\n  \"properties\": {\n    \"limit\": {\n      \"description\": \"how many to return, up to 20\",\n      \"type\": \"integer\"\n    },\n    \"slug\": {\n      \"description\": \"the posting's identifier, as carried by a search result's slug\",\n      \"type\": \"string\"\n    }\n  },\n  \"required\": [\n    \"slug\"\n  ],\n  \"type\": \"object\"\n}"}],"toolsHash":"ff4538458b3f5e47397ea2fc0dc43ebbce65fdb188397f993a35faf82001603c","toolsPinnedAt":"2026-10-26T02:53:12.757Z","toolsLastSeenAt":"2026-10-26T02:53:12.475Z","toolChanges":[]}}