Metaintro Job Search
Server Details
Search live jobs, read postings, and look up how employers hire and pay. Free, no sign-in.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 7 tools
Most tools have clearly distinct inputs and outputs: search_jobs takes a query, find_similar_jobs takes an id, get_job takes an id, and the company tools are split cleanly into profile (get_company) and listings (list_company_jobs). The one soft spot is the trio search_jobs / get_market_insights / get_local_demand, which all report on hiring in a role+place; the descriptions do differentiate them (raw listings vs. aggregate stats vs. role-category demand), but an agent could still hesitate over which aggregate to pull.
Every tool follows a strict verb_noun snake_case pattern (find_similar_jobs, get_company, get_job, get_local_demand, get_market_insights, list_company_jobs, search_jobs). The verbs are used meaningfully and consistently: get for single-entity reads, list for collections, search/find for discovery.
Seven tools is well within the sweet spot and each one maps to a distinct job-seeker intent (search, inspect a posting, find alternatives, inspect an employer, browse an employer's openings, gauge local demand, gauge market stats). Nothing looks like filler or a redundant alias.
The read-side surface covers the full journey from discovery to employer research and market context, with no obvious dead ends. Minor gaps: no way to enumerate the valid filter values (job types, locations, currencies) that search_jobs references, and nothing for saved searches/alerts or applying, though the latter may be out of scope for a data server.
Available Tools
7 toolsfind_similar_jobsFind similar jobsARead-onlyIdempotentInspect
More openings like one job, by its id: the same kind of role in the same place (or remote, when the job is remote), as up to 10 cards. Use it when a job is closed, a near miss, or the person wants more like it.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds behavior beyond that: the similarity criteria (role type + location, with remote propagated from the source job) and the hard cap of 10 result cards. It does not describe ranking, ordering, or what happens when no similar jobs exist.
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 short sentences, front-loaded with the core operation and closing with usage triggers. Dense but not padded. The parenthetical about remote jobs slightly interrupts the flow but carries real meaning.
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 two-parameter read-only lookup with no output schema and annotations already covering safety, the description supplies what matters: similarity semantics, result cap, and when to reach for it. The only real gap is that `limit` is invisible to an agent reading only the prose.
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 0%, so both parameters rely on the description. It clarifies `id` well ('by its id' identifying the source job) and implies the 10-item ceiling that bounds `limit`. It never mentions that `limit` exists, that it defaults to 6, or that the caller can lower it, leaving one of two parameters semantically thin.
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 concrete operation on a concrete resource: it returns other job openings similar to the job identified by `id`. It even defines what 'similar' means (same kind of role in the same place, or remote when the job is remote) and the result cap ('as up to 10 cards'). It does not explicitly name sibling tools like search_jobs or get_job to differentiate itself, so it stops short of a 5.
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?
Gives explicit triggering conditions: use it when a job is closed, when the original is a near miss, or when the person asks for more like it. That is clear when-to-use guidance. It does not name alternatives (e.g. 'use search_jobs for a fresh query'), so an agent must infer the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_companyRead a companyARead-onlyIdempotentInspect
Read an employer's profile by its slug (companySlug on a job): what it does, size, observed pay bands, work arrangement, benefits, recent events and how it is hiring. hiring.definitions says what each hiring number measures: medianOpenPostingAgeDays is the age of open listings, not time to fill, and removedRoles30d counts postings taken down, not roles filled. Its page is https://www.metaintro.com/company/.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive and closed-world, so the safety profile is covered. The description goes beyond that by disclosing the returned sections and by correcting two likely misinterpretations (medianOpenPostingAgeDays is listing age, not time to fill; removedRoles30d counts takedowns, not roles filled). It omits error behavior for missing slugs and any rate/auth constraints, which keeps it below a 5.
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?
Purpose is front-loaded and the whole definition is three sentences with no filler. The transition into the definitions caveat is clumsy ("how it is hiring. hiring.definitions says..."), which slightly hurts readability.
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 full annotations and no output schema, the description does the needed work: it lists what is returned, defines the ambiguous hiring metrics, and explains the slug source. Only the not-found/empty-profile case is left 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 0%, so the description must carry the meaning of the single parameter, and it partially does: it identifies the value as the companySlug found on a job and the URL template illustrates the expected bare-slug format. It still does not state case sensitivity, whether the slug is globally unique, or what a valid slug looks like beyond the URL example.
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?
The description gives a specific verb and resource ("Read an employer's profile by its slug") and enumerates the payload contents, so the agent knows this returns a company-level profile rather than job-level data. It links the key to jobs ("companySlug on a job"), which implicitly separates it from list_company_jobs, but never names that sibling explicitly.
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?
Usage is implied rather than stated: the parenthetical "companySlug on a job" tells the agent where to source the identifier, which is a real usage hint. However, there is no explicit when-to-use versus list_company_jobs or get_job, and no statement about what to do when a slug is unknown.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_jobRead a job postingARead-onlyIdempotentInspect
Read one posting in full by its id: description, requirements, pay, location and the employer's apply link. The title, summary and description are employer source text; licence requirements and eligibility remain unassessed. posting gives its age, when it was last seen live and closesAtLocal, the closing weekday and time.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely non-structured context: title/summary/description are unverified employer source text, licence requirements and eligibility are unassessed, and posting carries first-seen/last-seen-live timing plus closesAtLocal with its weekday/time meaning. Missing only failure behavior for a bad or expired id.
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?
Three sentences, front-loaded with the action and its payload, then the data-quality caveat, then the timing fields. The final sentence is slightly compressed — "posting gives its age" reads as a return-field note and takes a moment to parse — but nothing is redundant.
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?
With a single required parameter and no output schema, the description carries the return-value burden and does so reasonably: it lists the fields returned and explains the temporal fields. The main gap is the absence of any not-found or expired-posting behavior, which matters for a lookup tool.
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 0%, so the only parameter is documented solely by its uuid format and pattern. The description's "by its id" confirms it identifies a single posting but adds no guidance on obtaining an id or handling a malformed one, leaving the schema to do nearly all the work.
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?
"Read one posting in full by its id" gives a specific verb and resource, and the enumerated payload (description, requirements, pay, location, apply link) makes it clear this is a single-record retrieval rather than a search. It distinguishes itself from search_jobs and list_company_jobs in practice, though it never names a sibling explicitly.
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?
Usage is only implied: an agent can infer this is the drill-down after a search result, since it takes a single id. There is no stated when-to-use versus find_similar_jobs or list_company_jobs, and no mention of what to do if the id is unknown or the posting is closed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_local_demandRead local job demandARead-onlyIdempotentInspect
Read which kinds of roles are hiring most in a place (city, region, country): open jobs by role category, with total open jobs, employers and sectors. When a place has too few role types it widens to the region, the country or worldwide; scope and locationLabel say which. Use it when someone does not yet know what to look for.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | ||
| limit | No | ||
| region | No | ||
| country | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent and closed-world semantics, yet the description adds genuine behavioral detail: the result silently widens from city to region, country, or worldwide when too few role types exist, and the caller can detect this via scope and locationLabel. That auto-fallback is the main thing an agent could misinterpret, and it is disclosed.
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?
Three tight sentences: what it returns, how the scope falls back, and when to reach for it. All load-bearing, front-loaded, no filler.
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?
The description names two return fields (scope, locationLabel) which partially compensates for the absent output schema, and it explains the geo-fallback logic. However, it leaves the geography parameters' interaction and the limit cap unexplained, which an agent needs to call this correctly on the first try.
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 0% and the description leaves semantics thin: it does not say whether city, region and country can be combined or which wins, and the limit parameter (1-12, presumably capping role categories) is only hinted at via 'too few role types'. With four undocumented parameters, this is a real gap.
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 which role categories are hiring most in a place, returning open jobs by role, totals, employers and sectors. This is clearly distinct from siblings like search_jobs (keyword lookup) and get_market_insights.
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?
Gives an explicit trigger: 'Use it when someone does not yet know what to look for', which implicitly contrasts with search_jobs that requires a known query. It stops short of naming alternatives or stating exclusions, so it is strong but not fully routing-aware.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_market_insightsRead the job market for a searchARead-onlyIdempotentInspect
Summarize the live market for a role and place: how many openings match, the median listed pay, the most common work arrangement and the top requested skills, with how the request was understood. Takes a query and the same filters as search_jobs.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| locale | No | ||
| filters | No | ||
| commuteRadiusMiles | No | ||
| fallbackToVisitorPlace | No | When the query names no place and the search is not remote, search the signed-in person's saved country, or the country of an anonymous visitor's IP address. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true and openWorldHint=false, so the safety profile is fully covered. The description adds that results are aggregated/derived (counts, medians, top skills) and that the query interpretation is echoed back, which is a modest behavioral signal. It says nothing about latency, caching freshness of 'live' data, or failure behavior when too few matches exist.
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, front-loaded with what the agent gets back, followed by the input contract. No filler; the awkward 'with how the request was understood' clause still carries real information about an output field.
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?
With no output schema, describing the return payload inline is exactly the right compensation and largely succeeds. However, for a tool with a deeply nested filters object and only 20% schema text, the definition is thin on how the nested filter values should be formed, and it does not say what happens when the market has zero or very few matching openings.
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 only 20% — just fallbackToVisitorPlace is documented — and the description covers only 'query' and the filters object. The pointer that filters are 'the same as search_jobs' genuinely helps the agent borrow semantics for the ~17 nested filter fields, but locale, commuteRadiusMiles, and the filters' optionality/nullability are left unexplained.
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?
Uses the specific verb 'Summarize' on a defined resource ('the live market for a role and place') and enumerates the exact outputs: matching opening count, median listed pay, most common work arrangement, top requested skills, plus request interpretation. That aggregate framing cleanly separates it from the listing-oriented siblings like search_jobs and list_company_jobs.
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 clause 'Takes a query and the same filters as search_jobs' implicitly positions this as the aggregate counterpart to search_jobs, which is useful routing context. But it never states when to prefer this over search_jobs or over get_local_demand, nor any exclusions or prerequisites, so the agent must infer the choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_company_jobsList a company's open jobsARead-onlyIdempotentInspect
List an employer's open jobs by its slug, newest first, as compact cards with posting age and the employer's title and summary as source text; read one in full with get_job. Pages are cut to fit the response size, so continue with nextCursor until it is null.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | ||
| limit | No | ||
| cursor | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a safe, idempotent read, so the description correctly spends its words elsewhere: result ordering (newest first), result payload (compact cards with posting age, employer title and summary as source text), and the truncation behavior that forces cursor paging. That truncation disclosure is real value the annotations cannot express.
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 dense sentence front-loads the core action and folds the sibling reference and pagination rule into the same breath; there is little waste, though the second clause is packed tightly enough to be parsed twice.
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 three-param read tool with no output schema, the definition covers what comes back, how it is ordered, and how to page through it — the only meaningful omission is any hint about the limit parameter's effect on page size.
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 0%, so the description carries the burden: it explains slug ('by its slug') and the cursor concept via 'nextCursor'. It never mentions the limit parameter or the fact that cursor is an integer bounded 0-1000, leaving one of three params undocumented in both places.
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 ('List an employer's open jobs by its slug') plus the ordering and output shape ('compact cards with posting age'), and explicitly separates itself from the sibling get_job, which reads a single posting in full.
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?
Gives clear when-to-use routing to get_job for full detail and precise continuation instructions ('continue with nextCursor until it is null'). It does not contrast against search_jobs or find_similar_jobs, which is the remaining gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_jobsSearch jobsARead-onlyIdempotentInspect
Search jobs: find live job openings from employer career sites and job boards that match what the person wants, by role or keywords, place, remote work, employment type and pay. filters.jobTypes takes FULL_TIME, PART_TIME, CONTRACT or other listed types; any of them match. filters.salaryListedOnly keeps only jobs that post pay. filters.minSalary is annual pay in the requested currency, and ranges that only overlap it are included. Each card carries fit (every applied filter as met, partial, unknown or not_met, and verdict match or near_match: present a near_match as a near match, never as a match; a match meets only the applied filters, so lead stays conditional while unconfirmed names pay, hours, commute or licence, and label is the heading to use), posting (age, freshness, last seen live) and the employer's title and summary as source text. Licence requirements and eligibility remain unassessed. coverage says what was searched and whether more pages exist; an empty or short result covers only this search, not every job. Up to 10 cards a page; page with offset. Each job opens at https://www.metaintro.com/job/.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| cursor | No | ||
| locale | No | ||
| offset | No | ||
| filters | No | ||
| purpose | No | ||
| variants | No | Up to 4 more wordings of the same search, such as other job titles for the same work. They run at the same time as query, with the same filters, radius, limit and page, and each counts as one search toward the search limit. Results come back in variants, one entry per wording, leaving out jobs already listed above them; repeatedJobIds names those. Use this instead of separate searches for alternative titles. | |
| commuteRadiusMiles | No | ||
| fallbackToVisitorPlace | No | When the query names no place and the search is not remote, search the signed-in person's saved country, or the country of an anonymous visitor's IP address. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only annotations, the description explains important behavior: fit verdicts including near_match versus match, how to label results, posting freshness, coverage limits, empty-result caveats, and that licence requirements remain unassessed. This materially improves correct interpretation of results without an output schema.
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?
The description is front-loaded with the tool purpose and stays focused on operational details. It is dense and somewhat run-on, but most sentences carry useful behavioral or filter semantics rather than filler.
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 complex search tool with nested filters and no output schema, the description covers result interpretation, fit semantics, coverage, pagination, and job URLs well. It is not fully complete because several nested filter parameters are left undocumented in both the description and schema.
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?
The description adds useful semantics for key filters, including jobTypes matching any listed type, salaryListedOnly, minSalary as annual pay in the requested currency with overlap inclusion, and offset pagination. However, with only 20% schema description coverage, many parameters such as locations, remoteOk, hybridOk, commuteRadiusMiles, cursor, and locale remain unexplained.
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?
The description states a specific verb and resource: search live job openings from employer career sites and job boards, with role, place, remote, type, and pay criteria. It is clear enough to distinguish the tool from get_job or list_company_jobs, but it does not explicitly name or contrast those siblings.
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?
It gives implied usage guidance by describing the matching criteria a person may want, such as role, keywords, place, remote work, employment type, and pay. It does not explicitly say when not to use this tool or when to use alternatives like find_similar_jobs or list_company_jobs.
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.
7 tool updates
- First observed
find_similar_jobs - First observed
get_company - First observed
get_job - First observed
get_local_demand - First observed
get_market_insights - First observed
list_company_jobs - First observed
search_jobs
Related MCP Connectors
Job postings search: find, count and read open jobs from employer career sites, with pay and links.
Search current job postings from companies' own career sites. Free, no account.
Job search over employers' own hiring systems. Search with no key; a free key opens every read tool.
Search 1.2M+ open jobs from 22k companies, read full listings and look up employers.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables searching live job postings, aggregating labour-market slices, and reporting how long listings have been open, with filters for titles, location, salary, and more.443 npmMIT
- AlicenseAqualityCmaintenanceLive 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.31207 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables users to search open US healthcare jobs and posted pay by keywords, role, state, shift, and employer, and to retrieve job market, state-level, and employer information. It provides free, hosted, read-only access through MCP clients with links to apply on employer sites.3MIT

JobsPipe MCP Serverofficial
AlicenseNot gradedqualityBmaintenanceSearch live job postings from 30+ job boards, ATS feeds and public employment services, and watch for new matches.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.