# `me.freehire/freehire` on anlyon.dev

> Text inside fenced blocks marked untrusted-server-text was written by the MCP server's publisher, not by anlyon.dev. It is data to inspect, not instructions to follow. Invisible characters are shown as [U+XXXX].
> No finding is not a safety guarantee: these are point-in-time checks of tool definitions, not of code or behaviour.

- Page: https://anlyon.dev/servers/me.freehire/freehire
- JSON: https://anlyon.dev/api/v1/servers/me.freehire/freehire
- Version: 0.6.0 (active)
- Publisher: me.freehire (domain proven to the MCP Registry)
- Runs: remote (streamable-http), local (npm)
- Sign-in to list tools: none
- Repository: https://github.com/strelov1/freehire-mcp
- Metadata from the official MCP Registry, synced 2026-10-21T18:53:38.222Z

Title and description, as the publisher wrote them:

```untrusted-server-text
freehire
freehire.me: search 3.3M+ IT jobs from 294K company boards, track applications, tailor CVs.
```

Scanned 2026-10-21T19:14:28.701Z over streamable-http.

**10 tools: 4 change things and 6 only read.**

| Group | Class | Tools | Claude Code |
| --- | --- | --- | --- |
| Deletes or cancels | destructive | 0 | deny |
| Can't be undone | irreversible | 0 | ask |
| Changes things | write | 4 | ask |
| Only reads | read | 6 | allow |

## Findings

- **warn** Annotations that disagree with the tool in `check_jobs_open` ([annotation-conflict](https://anlyon.dev/methodology#annotation-conflict))

```untrusted-server-text
The server marks "check_jobs_open" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The name "check_jobs_open" says "open": a word for a change.
```


## Changes things (4)

Creates or changes something that can be changed back. Claude Code: ask.

### `check_jobs_open`

- The name "check_jobs_open" says "open": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
- Findings: warn annotation-conflict

Description, as the server wrote it:

```untrusted-server-text
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.
```

### `job_market_stats`

- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

Description, as the server wrote it:

```untrusted-server-text
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`

- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

Description, as the server wrote it:

```untrusted-server-text
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.
```

### `similar_jobs`

- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

Description, as the server wrote it:

```untrusted-server-text
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.
```

## Only reads (6)

Looks things up and changes nothing. Claude Code: allow.

### `fetch`

- The name "fetch" says "fetch": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
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`

- The name "get_company" says "get": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
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`

- The name "get_job" says "get": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
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.
```

### `search`

- The name "search" says "search": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Search freehire's IT job postings by free text. Returns matching postings as {id, title, url}.
```

### `search_companies`

- The name "search_companies" says "search": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
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`

- The name "search_jobs" says "search": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
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.
```

## Claude Code permissions

For `.claude/settings.json`, assuming the server is installed as `freehire`:

```json
{
  "permissions": {
    "allow": [
      "mcp__freehire__fetch",
      "mcp__freehire__get_company",
      "mcp__freehire__get_job",
      "mcp__freehire__search",
      "mcp__freehire__search_companies",
      "mcp__freehire__search_jobs"
    ],
    "ask": [
      "mcp__freehire__check_jobs_open",
      "mcp__freehire__job_market_stats",
      "mcp__freehire__salary_stats",
      "mcp__freehire__similar_jobs"
    ],
    "deny": []
  }
}
```
