freehire
Server Details
freehire.me: search 3.3M+ IT jobs from 294K company boards, track applications, tailor CVs.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- strelov1/freehire-mcp
- GitHub Stars
- 2
- Server Listing
- freehire
TDQS
Scored across 4 tools
The four tools split cleanly along two axes: entity (company vs job) and mode (search vs single-item read). get_company/get_job fetch one record by slug while search_companies/search_jobs query the catalogue, so an agent can pick the right tool without guessing.
All names follow a strict verb_noun snake_case pattern (get_company, get_job, search_companies, search_jobs). The verbs map predictably to intent, with no mixed conventions or vague verbs.
Four tools is a tight, well-scoped set for a read-only job/company catalogue, with no redundancy. It sits just below the ideal range in absolute terms, but nothing feels missing or padded.
The domain is a consumer-facing read surface, and it covers both search and detail retrieval for its two entities (jobs and companies). Write operations are sensibly absent, though there are no listing/browse or taxonomy tools beyond search.
Available Tools
4 toolsget_companyRead one employerARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | the employer's identifier, as carried by a result's company_slug |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | the employer's page on freehire |
| name | Yes | |
| slug | Yes | the employer's identifier, to pass to get_company |
| tagline | No | |
| open_jobs | Yes | how many postings this employer has open right now |
| hq_country | No | ISO 3166-1 alpha-2 code |
| industries | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds that the returned data is a curated held record (activities, industries, location, open-posting count), which is modest added context for a read tool whose output schema carries the return contract.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the action and resource, then the returned content. No filler, though the colon-list makes it slightly run-on where two shorter sentences would read cleaner.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with an output schema and full annotation coverage, the definition gives what an agent needs: what it fetches, the key it needs, and the shape of the payload. Only the sibling routing and invalid-slug behavior are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is already documented in the schema as an identifier carried by a result's company_slug. The description restates that same meaning without adding format, casing, or validation detail, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb-and-resource pair ('Read ... one employer') with the lookup key named explicitly ('by the slug a result carries') and the payload enumerated. It implicitly separates itself from search_companies by emphasizing a single employer, but it never names the sibling tools outright.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'By the slug a result carries' implies the precondition that a slug must come from a prior search result, which is useful implied guidance. There is, however, no explicit when-to-use versus search_companies or get_job, and no stated failure behavior for an invalid slug.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_jobRead one job postingARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | the posting's identifier, as carried by a search result's slug |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | the posting's page on freehire |
| slug | Yes | the posting's identifier, to pass to get_job |
| title | Yes | |
| skills | No | |
| source | Yes | the job board this posting was collected from |
| company | Yes | |
| summary | No | a short preview; call get_job for the full description |
| category | No | |
| location | No | |
| apply_via | No | the applicant tracking system handling applications |
| countries | No | ISO 3166-1 alpha-2 codes the role is open in |
| posted_at | No | RFC3339 UTC |
| seniority | No | |
| work_mode | No | remote, hybrid or onsite |
| salary_max | No | |
| salary_min | No | |
| description | Yes | the posting's full text |
| company_slug | No | the employer's identifier, to pass to get_company |
| requirements | No | |
| english_level | No | |
| salary_period | No | year, month, day or hour |
| apply_requires | No | what the employer's application form requires |
| employment_type | No | |
| salary_currency | No | ISO 4217 code |
| official_job_url | No | the employer's own posting, when known |
| visa_sponsorship | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds that the call returns the full description, requirements, and ATS handler, but says nothing about auth needs, rate limits, or behavior on an unknown slug.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the required input source and the returned content are packed into one clause without repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with an output schema, the description covers purpose, input provenance, and the shape of the content returned, so an agent has what it needs. It omits any mention of failure modes (missing/invalid slug), which keeps it just short of complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single well-documented parameter, so the baseline is 3. The description's restatement that the slug comes from a search result reinforces the schema but adds no format or validation detail beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read one posting in full') and scopes it precisely via the slug. It is immediately distinguishable from the sibling search_jobs, which returns many results, since this tool explicitly reads a single posting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by the slug a search result carries' establishes the intended workflow — call search_jobs first, then use this tool on a returned slug — which is clear contextual guidance. It stops short of an explicit exclusion (e.g., 'do not use for listing or filtering'), so it is not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_companiesSearch employersARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | free text, matched against the employer's name | |
| offset | No | ||
| countries | No | ISO 3166-1 alpha-2 codes the employer hires in |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | No | |
| total | Yes | |
| offset | Yes | |
| companies | Yes | |
| ignored_params | No | filters that were not applied; the answer is wider than asked |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds the useful output trait that results include open-posting counts, but says nothing about pagination behavior or result size limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, with the capability statement and the routing rule in that order. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and purpose plus routing are covered. The one gap is paging semantics for limit/offset, which neither the schema nor the description addresses.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: query and countries are documented in the schema, while limit and offset carry no description anywhere. The phrase "by name or by where they hire" maps loosely onto query and countries but adds no format or syntax detail, so the undocumented paging params are not compensated for.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Find) and resource (employers) plus the two lookup axes (name, hiring location) and the returned posting counts. An agent can distinguish it from search_jobs and get_company without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use when the question is about a company rather than about a role" gives a clear selection rule against search_jobs, but it never names get_company, the natural alternative for a single known employer, so the when-not case is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_jobsSearch jobsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | results per page | |
| query | No | free text, matched against title, company and description | |
| cities | No | ||
| offset | No | ||
| skills | No | technologies, e.g. go, kubernetes, react | |
| sources | No | job boards to restrict to | |
| category | No | role family, e.g. backend, frontend, devops, data | |
| countries | No | ISO 3166-1 alpha-2 codes, e.g. DE, BR | |
| seniority | No | any of intern, junior, middle, senior, lead, staff, principal, c_level | |
| work_mode | No | any of remote, hybrid, onsite | |
| salary_min | No | ||
| company_slugs | No | employer identifiers, as carried by a result's company_slug | |
| english_level | No | CEFR levels, e.g. B2, C1 | |
| employment_type | No | any of full_time, part_time, contract, internship | |
| salary_currency | No | ISO 4217 code, e.g. USD | |
| visa_sponsorship | No | ||
| posted_within_days | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| jobs | Yes | |
| query | No | |
| total | Yes | |
| offset | Yes | |
| ignored_params | No | filters that were not applied; the answer is wider than asked |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=true, idempotentHint=false, destructiveHint=false), so the bar is lower. The description adds the useful note that results are a 'short preview' versus get_job's full text, but says nothing about pagination behavior despite limit/offset, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste, with the scoping purpose front-loaded and the sibling routing in the clause that follows. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 17-parameter, zero-required search with an output schema present, the description covers domain, usage, the preview-vs-fulltext distinction, and routing to get_job. The remaining gap is pagination/limit semantics, which the schema names but never explains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 71%, above the midpoint, so the schema does most of the work. The description gestures at the facet groups (technology, seniority, location, pay, employer) that map to skills, seniority, cities/countries, salary_min and company_slugs, but adds no syntax or combination guidance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search freehire's catalogue of IT job postings') and immediately scopes the domain to IT jobs. It also names the sibling get_job and distinguishes this tool as the preview-level search, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use for any question about which jobs are open — by technology, seniority, location, pay or employer' gives clear when-to-use context and enumerates the question types it answers. It also routes to get_job for full text, but offers no explicit when-not-to-use or condition for the sibling search_companies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- First observed
get_company - First observed
get_job - First observed
search_companies - First observed
search_jobs
Related MCP Connectors
Find jobs, then get a tailored résumé and cover letter for each one. Tracks your applications too.
Search 6.3M+ live jobs from companies' own career pages, plus resume tailoring & cover letters.
Live jobs from ~5,000 employer ATS boards, hiring profiles, your job profile and tracker.
Search 260,000+ open jobs at 8,000+ companies, list any company's open roles live, detect its ATS.
Related MCP Servers
- AlicenseAqualityBmaintenanceLive tech-hiring intelligence for AI agents. Search 130K+ open jobs collected daily from ~500 tech companies' own career sites â plus company hiring profiles, tech stacks, salary benchmarks, and skill trends. Five tools work with no account.3197 npmMIT
- AlicenseAqualityAmaintenanceWatches company job boards (Greenhouse, Lever, Ashby, Workable, Workday and more) for new roles that match your filters, ranks them in a digest optionally fit-scored against your resume, and tracks every application with interview prep sheets. It never applies for you.217748 PyPIMIT
- AlicenseBqualityBmaintenanceEnables multi-source tech job search and application with CV-based skill extraction, deduplication, and scoring across HireMeTech, Comeet, and AllJobs, supporting autonomous or supervised workflows.201MIT
- AlicenseAqualityCmaintenanceTailor your CV to any job posting with ATS keyword scoring and clean PDF/DOCX export.63MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.