# freehire

> freehire.me: search 3.3M+ IT jobs from 294K company boards, track applications, tailor CVs.

- name: me.freehire/freehire
- version: 0.6.0
- connection class: R0 (autonomous)
- trust: 95/100
- quality: 96/100 (strong)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/me.freehire%2Ffreehire
- tools: https://api.protogrid.dev/v1/servers/me.freehire%2Ffreehire/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "freehire": {
      "type": "http",
      "url": "https://freehire.me/api/v1/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 97
- freshness: 100
- provenance: 85
- drivers: +repository +dns-namespace +website +reachable +uptime-91% +updated-6d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 96/100 (strong)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 10 of 10 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 2,516 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: n/a (weight 15)

- n/a `stability.changes`, `stability.rug_pull`: tool history recorded for 6 of the 7 days needed

### dependencies: 100 (weight 15)

- pass `deps.known_vulns`: no known advisory in 99 resolved packages
- pass `deps.mcp_sdk_version`: @modelcontextprotocol/sdk 1.32.1, no known advisory
- pass `deps.resolvable`: freehire-mcp@0.6.0 resolved: 99 packages

- tools: 10, about 2,516 tokens to load them all
- tool set hash: d1189c1bfc2d36292e7750fd1a86d53a
- tools last changed: 2026-10-19T18:00:30.628Z
- badge: [![protogrid quality](https://protogrid.dev/badge/me.freehire/freehire.svg)](https://protogrid.dev/servers/me.freehire/freehire)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-19 `search_jobs` changed (inputSchema)
- 2026-10-19 `job_market_stats` changed (inputSchema)
- 2026-10-17 `similar_jobs` added
  - 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.
- 2026-10-17 `salary_stats` added
  - 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.
- 2026-10-17 `job_market_stats` added
  - 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.
- 2026-10-16 `search_jobs` changed (description, inputSchema, outputSchema)
  - before: 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; call get_job for one posting's full text.
  - after: 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.
- 2026-10-16 `search_companies` changed (outputSchema)
- 2026-10-16 `search` added
  - Search freehire's IT job postings by free text. Returns matching postings as {id, title, url}.
- 2026-10-16 `get_job` changed (description, outputSchema)
  - before: Read one posting in full by the slug a search result carries: the whole description, the stated requirements, and which applicant tracking system handles applications.
  - after: 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.
- 2026-10-16 `get_company` changed (outputSchema)

Full history: https://api.protogrid.dev/v1/servers/me.freehire%2Ffreehire/changes

## Dependencies

- npm freehire-mcp@0.6.0: resolved, 98 dependencies, MCP SDK @modelcontextprotocol/sdk 1.32.1

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0.

## Remotes

- https://freehire.me/api/v1/mcp (streamable-http, auth none, reachable true, uptime30d 0.9130435)

## Packages

- npm freehire-mcp@0.6.0 secrets: FREEHIRE_TOKEN

## Tools (10)

- `check_jobs_open`: 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.
- `fetch`: 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.
- `get_company`: 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.
- `get_job`: 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.
- `job_market_stats`: 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.
- `salary_stats`: 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.
- `search`: Search freehire's IT job postings by free text. Returns matching postings as {id, title, url}.
- `search_companies`: 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.
- `search_jobs`: 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.
- `similar_jobs`: 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.
