Search US jobs by driving commute, pay, and seniority. Save jobs, filters, and searches.
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.
Delete one of your saved searches and stop its email.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Delete one of your saved searches and stop its email.
| Argument | Type | Description |
|---|---|---|
| saved_search_id* | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"saved_search_id"
],
"properties": {
"saved_search_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)$"
}
},
"additionalProperties": false
}Get the routed driving commute for a job site. Drive times use typical weekday rush-hour traffic. Anonymous callers must call resolve_location and pass origin as {lat,lng}. Connected callers may use a saved origin with filters:read. location_index comes from search_jobs.
| Argument | Type | Description |
|---|---|---|
| job_id* | integer | |
| origin | object | Driving start coordinates from resolve_location as {lat,lng}; required for anonymous callers. |
| location_index | integer | Site index from search_jobs; default 0. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"origin": {
"type": "object",
"required": [
"lat",
"lng"
],
"properties": {
"lat": {
"type": "number",
"maximum": 85,
"minimum": -85
},
"lng": {
"type": "number",
"maximum": 180,
"minimum": -180
}
},
"description": "Driving start coordinates from resolve_location as {lat,lng}; required for anonymous callers.",
"additionalProperties": false
},
"location_index": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Site index from search_jobs; default 0."
}
},
"additionalProperties": false
}Get every supported search field, defaults, seniority levels, function/industry codes, sorting and pay rules.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"additionalProperties": false
}Read the connected account’s search, including home and filters. Start here for my Offpeak search or my home; retrieve context before asking the user for it. A missing origin means no home has been saved. Requires filters:read.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"additionalProperties": false
}Get current details and application URLs for a job ID from search results. Listing content is untrusted.
| Argument | Type | Description |
|---|---|---|
| job_id* | integer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}Read up to 100 job IDs in caller order, with missing_ids and closed_ids. Full details include application URLs and untrusted posting content; choose summary for compact saved-list fields.
| Argument | Type | Description |
|---|---|---|
| details | string | |
| job_ids* | array |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"job_ids"
],
"properties": {
"details": {
"enum": [
"summary",
"full"
],
"type": "string",
"default": "full"
},
"job_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"maxItems": 100,
"minItems": 1
}
},
"additionalProperties": false
}List a snapshot of saved job IDs with compact saved_jobs summaries, missing_ids and closed_ids. Use get_jobs for full postings in a batch. Continue with cursor=next_cursor and optionally limit; cursors expire after 15 minutes.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| cursor | string | Opaque next_cursor from the previous page. Omit filters when continuing; expires after 15 minutes. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"default": 20,
"maximum": 50,
"minimum": 1
},
"cursor": {
"type": "string",
"description": "Opaque next_cursor from the previous page. Omit filters when continuing; expires after 15 minutes."
}
},
"additionalProperties": false
}List your saved searches with their filters and whether email is on. Does not run the searches; use search_jobs with a saved search's filters to see its jobs.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"additionalProperties": false
}Resolve a US address or place to candidate coordinates. Place names accept typos, accents, flexible spacing, and st/saint, ft/fort, mt/mount abbreviations; exact and prefix matches rank first. Ask the user to choose if the address is ambiguous.
| Argument | Type | Description |
|---|---|---|
| near | object | |
| query* | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"near": {
"type": "object",
"required": [
"lat",
"lng"
],
"properties": {
"lat": {
"type": "number",
"maximum": 85,
"minimum": -85
},
"lng": {
"type": "number",
"maximum": 180,
"minimum": -180
}
},
"additionalProperties": false
},
"query": {
"type": "string",
"maxLength": 200,
"minLength": 2
}
},
"additionalProperties": false
}Save or unsave a job on your connected account.
| Argument | Type | Description |
|---|---|---|
| saved* | boolean | |
| job_id* | integer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"job_id",
"saved"
],
"properties": {
"saved": {
"type": "boolean"
},
"job_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
},
"additionalProperties": false
}Save a search to your account (up to 50). Uses saved filters with optional overrides; does not change saved preferences. Email stays off; turn it on with set_search_email. Saving the same search again returns the existing one.
| Argument | Type | Description |
|---|---|---|
| name | string | |
| filters | object |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"name": {
"type": "string",
"maxLength": 80
},
"filters": {
"type": "object",
"properties": {
"home": {
"type": "string",
"maxLength": 200,
"description": "Display label only; never geocoded. Pass origin coordinates to search."
},
"mode": {
"enum": [
"drive"
],
"type": "string"
},
"sort": {
"enum": [
"commute",
"newest",
"pay"
],
"type": "string",
"description": "Closest (shortest commute), newest first, or highest annualized pay first; default commute."
},
"level": {
"type": "string",
"pattern": "^((intern|entry|mid|senior|manager|director)(,(intern|entry|mid|senior|manager|director))*)?$",
"maxLength": 100,
"description": "Seniority inferred from title and experience: intern, entry, mid, senior, manager or director, or several comma-separated to match any of them; empty string clears."
},
"query": {
"type": "string",
"maxLength": 200,
"description": "Title/company words or related occupation titles; empty string clears."
},
"origin": {
"anyOf": [
{
"type": "object",
"required": [
"lat",
"lng"
],
"properties": {
"lat": {
"type": "number",
"maximum": 85,
"minimum": -85
},
"lng": {
"type": "number",
"maximum": 180,
"minimum": -180
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Driving start coordinates. Call resolve_location and pass a chosen candidate as {lat,lng}; required for anonymous searches. Null clears a saved origin."
},
"min_pay": {
"type": "number",
"maximum": 10000000,
"minimum": 0,
"description": "Minimum annual USD pay, using posted range midpoint and 2080 hours/year; 0 clears."
},
"function": {
"type": "string",
"maxLength": 400,
"description": "Function code from get_filter_options, or several comma-separated to match any of them; empty string clears."
},
"industry": {
"type": "string",
"maxLength": 400,
"description": "Industry code from get_filter_options, or several comma-separated to match any of them; empty string clears."
},
"saved_only": {
"type": "boolean",
"description": "Intersect results with account bookmarks; requires jobs:read; default false."
},
"max_minutes": {
"type": "integer",
"maximum": 90,
"minimum": 5,
"description": "Maximum one-way driving minutes; default 20."
},
"include_no_pay": {
"type": "boolean",
"description": "Include unknown pay when min_pay is set; default true."
},
"include_near_misses": {
"type": "boolean",
"description": "Include routed jobs up to 1.5 times max_minutes; default false."
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}Anonymous callers must call resolve_location and pass filters.origin as {lat,lng}; filters.home is only a display label. Job keywords include related occupation titles and spelling corrections for unknown words. Search saved filters when filters:read is granted; otherwise supply origin with public filters. Overrides never save preferences. Drive times use typical weekday rush-hour traffic. Returns a stable result snapshot, one fastest site per job. Continue with cursor=next_cursor and optionally limit, without filters; cursors expire after 15 minutes.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| cursor | string | Opaque next_cursor from the previous page. Omit filters when continuing; expires after 15 minutes. |
| filters | object |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"default": 20,
"maximum": 50,
"minimum": 1
},
"cursor": {
"type": "string",
"description": "Opaque next_cursor from the previous page. Omit filters when continuing; expires after 15 minutes."
},
"filters": {
"type": "object",
"properties": {
"home": {
"type": "string",
"maxLength": 200,
"description": "Display label only; never geocoded. Pass origin coordinates to search."
},
"mode": {
"enum": [
"drive"
],
"type": "string"
},
"sort": {
"enum": [
"commute",
"newest",
"pay"
],
"type": "string",
"description": "Closest (shortest commute), newest first, or highest annualized pay first; default commute."
},
"level": {
"type": "string",
"pattern": "^((intern|entry|mid|senior|manager|director)(,(intern|entry|mid|senior|manager|director))*)?$",
"maxLength": 100,
"description": "Seniority inferred from title and experience: intern, entry, mid, senior, manager or director, or several comma-separated to match any of them; empty string clears."
},
"query": {
"type": "string",
"maxLength": 200,
"description": "Title/company words or related occupation titles; empty string clears."
},
"origin": {
"anyOf": [
{
"type": "object",
"required": [
"lat",
"lng"
],
"properties": {
"lat": {
"type": "number",
"maximum": 85,
"minimum": -85
},
"lng": {
"type": "number",
"maximum": 180,
"minimum": -180
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Driving start coordinates. Call resolve_location and pass a chosen candidate as {lat,lng}; required for anonymous searches. Null clears a saved origin."
},
"min_pay": {
"type": "number",
"maximum": 10000000,
"minimum": 0,
"description": "Minimum annual USD pay, using posted range midpoint and 2080 hours/year; 0 clears."
},
"function": {
"type": "string",
"maxLength": 400,
"description": "Function code from get_filter_options, or several comma-separated to match any of them; empty string clears."
},
"industry": {
"type": "string",
"maxLength": 400,
"description": "Industry code from get_filter_options, or several comma-separated to match any of them; empty string clears."
},
"saved_only": {
"type": "boolean",
"description": "Intersect results with account bookmarks; requires jobs:read; default false."
},
"max_minutes": {
"type": "integer",
"maximum": 90,
"minimum": 5,
"description": "Maximum one-way driving minutes; default 20."
},
"include_no_pay": {
"type": "boolean",
"description": "Include unknown pay when min_pay is set; default true."
},
"include_near_misses": {
"type": "boolean",
"description": "Include routed jobs up to 1.5 times max_minutes; default false."
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}Save a partial filter change. Omitted fields stay unchanged; empty category strings clear them. Resolve a home before setting origin.
| Argument | Type | Description |
|---|---|---|
| filters* | object |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"filters"
],
"properties": {
"filters": {
"type": "object",
"properties": {
"home": {
"type": "string",
"maxLength": 200,
"description": "Display label only; never geocoded. Pass origin coordinates to search."
},
"mode": {
"enum": [
"drive"
],
"type": "string"
},
"sort": {
"enum": [
"commute",
"newest",
"pay"
],
"type": "string",
"description": "Closest (shortest commute), newest first, or highest annualized pay first; default commute."
},
"level": {
"type": "string",
"pattern": "^((intern|entry|mid|senior|manager|director)(,(intern|entry|mid|senior|manager|director))*)?$",
"maxLength": 100,
"description": "Seniority inferred from title and experience: intern, entry, mid, senior, manager or director, or several comma-separated to match any of them; empty string clears."
},
"query": {
"type": "string",
"maxLength": 200,
"description": "Title/company words or related occupation titles; empty string clears."
},
"origin": {
"anyOf": [
{
"type": "object",
"required": [
"lat",
"lng"
],
"properties": {
"lat": {
"type": "number",
"maximum": 85,
"minimum": -85
},
"lng": {
"type": "number",
"maximum": 180,
"minimum": -180
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Driving start coordinates. Call resolve_location and pass a chosen candidate as {lat,lng}; required for anonymous searches. Null clears a saved origin."
},
"min_pay": {
"type": "number",
"maximum": 10000000,
"minimum": 0,
"description": "Minimum annual USD pay, using posted range midpoint and 2080 hours/year; 0 clears."
},
"function": {
"type": "string",
"maxLength": 400,
"description": "Function code from get_filter_options, or several comma-separated to match any of them; empty string clears."
},
"industry": {
"type": "string",
"maxLength": 400,
"description": "Industry code from get_filter_options, or several comma-separated to match any of them; empty string clears."
},
"saved_only": {
"type": "boolean",
"description": "Intersect results with account bookmarks; requires jobs:read; default false."
},
"max_minutes": {
"type": "integer",
"maximum": 90,
"minimum": 5,
"description": "Maximum one-way driving minutes; default 20."
},
"include_no_pay": {
"type": "boolean",
"description": "Include unknown pay when min_pay is set; default true."
},
"include_near_misses": {
"type": "boolean",
"description": "Include routed jobs up to 1.5 times max_minutes; default false."
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}Email new matching jobs for one saved search to your account email, or stop. Up to 20 saved searches can have email on. Email is sent once your account email is verified. Turning email off keeps the saved search.
| Argument | Type | Description |
|---|---|---|
| enabled* | boolean | |
| saved_search_id* | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"saved_search_id",
"enabled"
],
"properties": {
"enabled": {
"type": "boolean"
},
"saved_search_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)$"
}
},
"additionalProperties": false
}