Search live jobs, read postings, and look up how employers hire and pay. Free, no sign-in.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http job-search https://www.metaintro.com/api/mcp/public
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.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| limit | integer |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"limit": {
"type": "integer",
"default": 6,
"maximum": 10,
"minimum": 1
}
}
}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/<slug>.
| Argument | Type | Description |
|---|---|---|
| slug* | string |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"maxLength": 80,
"minLength": 1
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| id* | string |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| city | string | |
| limit | integer | |
| region | string | |
| country | string |
{
"type": "object",
"properties": {
"city": {
"type": "string",
"maxLength": 120
},
"limit": {
"type": "integer",
"maximum": 12,
"minimum": 1
},
"region": {
"type": "string",
"maxLength": 120
},
"country": {
"type": "string",
"maxLength": 120
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| query* | string | |
| locale | string | |
| filters | object | |
| commuteRadiusMiles | number | |
| fallbackToVisitorPlace | boolean | 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. |
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"maxLength": 300,
"minLength": 3
},
"locale": {
"type": "string",
"maxLength": 8
},
"filters": {
"type": "object",
"properties": {
"currency": {
"anyOf": [
{
"type": "string",
"maxLength": 5
},
{
"type": "null"
}
]
},
"hybridOk": {
"type": [
"boolean",
"null"
]
},
"industry": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"maxLength": 80
}
},
{
"type": "null"
}
]
},
"jobTitle": {
"anyOf": [
{
"type": "string",
"maxLength": 300
},
{
"type": "null"
}
]
},
"jobTypes": {
"anyOf": [
{
"type": "array",
"items": {
"enum": [
"FULL_TIME",
"PART_TIME",
"INTERNSHIP",
"CONTRACT",
"TEMPORARY",
"FREELANCE",
"APPRENTICESHIP",
"PHD",
"OTHER"
],
"type": "string"
},
"maxItems": 9
},
{
"type": "null"
}
]
},
"postedOn": {
"anyOf": [
{
"type": "string",
"maxLength": 10
},
{
"type": "null"
}
]
},
"remoteOk": {
"type": [
"boolean",
"null"
]
},
"locations": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"city": {
"type": "string"
},
"label": {
"type": "string"
},
"osmId": {
"type": "string"
},
"state": {
"type": "string"
},
"country": {
"type": "string"
},
"continent": {
"type": "string"
},
"proximity": {
"enum": [
"primary",
"nearby"
],
"type": "string"
},
"distanceMi": {
"type": "number",
"minimum": 0
},
"coordinates": {
"type": "object",
"required": [
"lon",
"lat"
],
"properties": {
"lat": {
"type": "number"
},
"lon": {
"type": "number"
}
}
},
"unstructured": {
"type": "string"
}
}
}
},
{
"type": "null"
}
]
},
"minSalary": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
]
},
"jobCategory": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
]
},
"fundingStage": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"searchPhrases": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"maxLength": 500
}
},
{
"type": "null"
}
]
},
"titleContains": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"maxLength": 500
}
},
{
"type": "null"
}
]
},
"titleExcludes": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"maxLength": 80
}
},
{
"type": "null"
}
]
},
"salaryListedOnly": {
"type": [
"boolean",
"null"
]
},
"strictTitleMatch": {
"type": [
"boolean",
"null"
]
},
"titleExcludePhrases": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"maxLength": 80
}
},
{
"type": "null"
}
]
},
"titleIncludePhrases": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"maxLength": 80
}
},
{
"type": "null"
}
]
}
}
},
"commuteRadiusMiles": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"fallbackToVisitorPlace": {
"type": "boolean",
"description": "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."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| slug* | string | |
| limit | integer | |
| cursor | integer |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"maxLength": 80,
"minLength": 1
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1
},
"cursor": {
"type": "integer",
"maximum": 1000,
"minimum": 0
}
}
}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/<id>.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| query* | string | |
| cursor | integer | |
| locale | string | |
| offset | integer | |
| filters | object |
We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 5, 2026.
| purpose | string |
| variants | array | 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 | number |
| fallbackToVisitorPlace | boolean | 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. |
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 10,
"minimum": 1
},
"query": {
"type": "string",
"maxLength": 300,
"minLength": 3
},
"cursor": {
"type": "integer",
"maximum": 1000,
"minimum": 0
},
"locale": {
"type": "string",
"maxLength": 8
},
"offset": {
"type": "integer",
"maximum": 1000,
"minimum": 0
},
"filters": {
"type": "object",
"properties": {
"currency": {
"anyOf": [
{
"type": "string",
"maxLength": 5
},
{
"type": "null"
}
]
},
"hybridOk": {
"type": [
"boolean",
"null"
]
},
"industry": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"maxLength": 80
}
},
{
"type": "null"
}
]
},
"jobTitle": {
"anyOf": [
{
"type": "string",
"maxLength": 300
},
{
"type": "null"
}
]
},
"jobTypes": {
"anyOf": [
{
"type": "array",
"items": {
"enum": [
"FULL_TIME",
"PART_TIME",
"INTERNSHIP",
"CONTRACT",
"TEMPORARY",
"FREELANCE",
"APPRENTICESHIP",
"PHD",
"OTHER"
],
"type": "string"
},
"maxItems": 9
},
{
"type": "null"
}
]
},
"postedOn": {
"anyOf": [
{
"type": "string",
"maxLength": 10
},
{
"type": "null"
}
]
},
"remoteOk": {
"type": [
"boolean",
"null"
]
},
"locations": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"properties": {
"city": {
"type": "string"
},
"label": {
"type": "string"
},
"osmId": {
"type": "string"
},
"state": {
"type": "string"
},
"country": {
"type": "string"
},
"continent": {
"type": "string"
},
"proximity": {
"enum": [
"primary",
"nearby"
],
"type": "string"
},
"distanceMi": {
"type": "number",
"minimum": 0
},
"coordinates": {
"type": "object",
"required": [
"lon",
"lat"
],
"properties": {
"lat": {
"type": "number"
},
"lon": {
"type": "number"
}
}
},
"unstructured": {
"type": "string"
}
}
}
},
{
"type": "null"
}
]
},
"minSalary": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
]
},
"jobCategory": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
]
},
"fundingStage": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
]
},
"searchPhrases": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"maxLength": 500
}
},
{
"type": "null"
}
]
},
"titleContains": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"maxLength": 500
}
},
{
"type": "null"
}
]
},
"titleExcludes": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"maxLength": 80
}
},
{
"type": "null"
}
]
},
"salaryListedOnly": {
"type": [
"boolean",
"null"
]
},
"strictTitleMatch": {
"type": [
"boolean",
"null"
]
},
"titleExcludePhrases": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"maxLength": 80
}
},
{
"type": "null"
}
]
},
"titleIncludePhrases": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"maxLength": 80
}
},
{
"type": "null"
}
]
}
}
},
"purpose": {
"type": "string",
"const": "similar_jobs"
},
"variants": {
"type": "array",
"items": {
"anyOf": [
{
"type": "string",
"maxLength": 300,
"minLength": 3
},
{
"type": "string",
"pattern": "^\\s{0,2}$"
}
]
},
"maxItems": 4,
"description": "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": {
"type": "number",
"maximum": 100,
"minimum": 0
},
"fallbackToVisitorPlace": {
"type": "boolean",
"description": "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."
}
}
}