Headcount Labs

Search, count and read open job postings from career sites and job boards, with source links.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
81%
Naming quality
97%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~6,149Tokens (tool definitions)
~10.1 KBTypical response size
Significant attention impact (4.80% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "jobs": {
      "url": "https://api.headcountlabs.com/mcp"
    }
  }
}

Remote endpoints

https://api.headcountlabs.com/mcpstreamable-http
https://api.headcountlabs.com/mcp/publicstreamable-http

What it can do

Tool inventory

Tools (6)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢search_docs(question, limit)

Ask a question about Headcount Labs (filters, limits, MCP setup, errors) and get the best-matching sections of the headcountlabs.com docs, each with its URL. Free, and works without an account.

Input Schema

{
  "type": "object",
  "properties": {
    "question": {
      "type": "string",
      "minLength": 1,
      "maxLength": 500
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10,
      "default": 5
    }
  },
  "required": [
    "question"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢search_jobs(filters, fields, limit, cursor, sort, ...)

Search current job postings by keyword, title, company, place, pay, date and more. No account needed. Call list_fields (free) to find the filter names. Country and employment_type accept comma-separated values or arrays and match any listed value. Pages return up to 25 jobs (limit, default 10); pass next_cursor as cursor to see the next page. One search shows up to 100 jobs in total, so narrow it with filters to find the right ones; count_jobs tells you how many jobs match without listing them. sort is relevance (best match) or updated (most recently updated). Each job has its employer, title, locations, pay with its period, dates, and the posting link in postings[].posting_url and postings[].application_url. Use fields to select top-level job properties; job_id is always included. Each job's description is cut to its first 400 characters (description_truncated: true); pass descriptions: "full" for the whole text of every job, or call get_job for one job. For job titles, title matches the words as one phrase in that order, so "senior software engineer" misses "Software Engineer, Senior"; title_advanced matches words in any order with AND, OR and NOT, for example senior AND ("software engineer" OR "software developer"), and usually finds more.

Input Schema

{
  "type": "object",
  "properties": {
    "filters": {
      "type": "object",
      "properties": {
        "q": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 200
            },
            {
              "type": "number"
            },
            {
              "type": "boolean"
            },
            {
              "type": "array",
              "items": {
                "type": "string",
                "maxLength": 200
              },
              "maxItems": 10
            }
          ],
          "description": "Words matched against title and description, ranked by relevance. Every word must match; for a list of skills where any may match, use description_advanced with OR, for example python OR sql OR \"data analysis\"."
        },
        "title_advanced": {
          "anyOf": [
            {
              "$ref": "#/properties/filters/properties/q/anyOf/0"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/1"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/2"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/3"
            }
          ]
        },
        "description_advanced": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "title": {
          "anyOf": [
            {
              "$ref": "#/properties/filters/properties/q/anyOf/0"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/1"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/2"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/3"
            }
          ],
          "description": "Words in the job title."
        },
        "company": {
          "anyOf": [
            {
              "$ref": "#/properties/filters/properties/q/anyOf/0"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/1"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/2"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/3"
            }
          ],
          "description": "Company name."
        },
        "company_id": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "location": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "state": {
          "anyOf": [
            {
              "$ref": "#/properties/filters/properties/q/anyOf/0"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/1"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/2"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/3"
            }
          ],
          "description": "US state, two letters (CA) or full name."
        },
        "country": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 16384
            },
            {
              "type": "array",
              "items": {
                "type": "string",
                "maxLength": 200
              }
            }
          ],
          "description": "One or more two-letter country codes, comma-separated or as an array (US,CA)."
        },
        "msa": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "near": {
          "anyOf": [
            {
              "$ref": "#/properties/filters/properties/q/anyOf/0"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/1"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/2"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/3"
            }
          ],
          "description": "A US place to search around: a ZIP code (78701), a city with its state (Austin, TX), or latitude,longitude. Use with radius_miles."
        },
        "radius_miles": {
          "anyOf": [
            {
              "$ref": "#/properties/filters/properties/q/anyOf/0"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/1"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/2"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/3"
            }
          ],
          "description": "Miles from near, 1-100 (default 25)."
        },
        "work_arrangement": {
          "anyOf": [
            {
              "$ref": "#/properties/filters/properties/q/anyOf/0"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/1"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/2"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/3"
            }
          ],
          "description": "remote, hybrid or in_person; comma-separate several."
        },
        "remote_type": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "employment_type": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 16384
            },
            {
              "type": "array",
              "items": {
                "type": "string",
                "maxLength": 200
              }
            }
          ],
          "description": "One or more employment type values, comma-separated or as an array."
        },
        "source": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "exclude_source": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "description": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "city": {
          "anyOf": [
            {
              "$ref": "#/properties/filters/properties/q/anyOf/0"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/1"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/2"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/3"
            }
          ],
          "description": "City name."
        },
        "source_type": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "source_class": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "posting_id": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "source_posting_id": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "posting_status": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "stale": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "company_linked": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "has_description": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "has_location": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "has_pay": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "has_posting_url": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "has_application_url": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "pay_currency": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "pay_min": {
          "anyOf": [
            {
              "$ref": "#/properties/filters/properties/q/anyOf/0"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/1"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/2"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/3"
            }
          ],
          "description": "Lowest yearly pay, in pay_currency (default USD). Hourly pay is about yearly / 2,080, so $45 an hour is about 93,600."
        },
        "pay_max": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "first_seen_until": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "updated_until": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "curated_until": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "last_fetch_since": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "last_fetch_until": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "application_check": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "application_check_since": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "job_id": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "currentness": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "active": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "posted_since": {
          "anyOf": [
            {
              "$ref": "#/properties/filters/properties/q/anyOf/0"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/1"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/2"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/3"
            }
          ],
          "description": "Date (YYYY-MM-DD) or ISO time; jobs posted on or after it."
        },
        "posted_until": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "published_since": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "first_seen_since": {
          "anyOf": [
            {
              "$ref": "#/properties/filters/properties/q/anyOf/0"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/1"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/2"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/3"
            }
          ],
          "description": "Date (YYYY-MM-DD) or ISO time; jobs we first found on or after it. For a daily check for new jobs, pass the time of the last check."
        },
        "updated_since": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "curated_since": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "remote": {
          "type": "boolean",
          "description": "true is the same as work_arrangement=remote."
        }
      },
      "additionalProperties": false,
      "default": {}
    },
    "fields": {
      "anyOf": [
        {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "job_id",
              "currentness",
              "stale",
              "company_id",
              "employer_name",
              "title",
              "description",
              "work_arrangement",
              "locations",
              "job_first_seen_at",
              "curated_at",
              "job_updated_at",
              "postings",
              "company"
            ]
          },
          "minItems": 1
        }
      ],
      "description": "Top-level job properties as a comma-separated string or field array; job_id is always included."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 25,
      "default": 10,
      "description": "Jobs per page, 1-25."
    },
    "cursor": {
      "type": "string",
      "minLength": 1,
      "maxLength": 4096,
      "description": "The next_cursor from the previous result, to see the next page."
    },
    "sort": {
      "type": "string",
      "enum": [
        "relevance",
        "updated"
      ]
    },
    "descriptions": {
      "type": "string",
      "enum": [
        "snippet",
        "full"
      ],
      "default": "snippet"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_job(job_id, fields)

Get a job by its job_id, including every linked posting and its links. No account needed. Use fields to select top-level job properties; job_id is always included.

Input Schema

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "format": "uuid"
    },
    "fields": {
      "anyOf": [
        {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "job_id",
              "currentness",
              "stale",
              "company_id",
              "employer_name",
              "title",
              "description",
              "work_arrangement",
              "locations",
              "job_first_seen_at",
              "curated_at",
              "job_updated_at",
              "postings",
              "company"
            ]
          },
          "minItems": 1
        }
      ],
      "description": "Top-level job properties as a comma-separated string or field array; job_id is always included."
    }
  },
  "required": [
    "job_id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢count_jobs(filters, group_by)

Count the current jobs matching the filters, without listing them. No account needed. To answer "which companies are hiring for X", pass group_by: "employer": the answer then also has employers (the top 25 by number of matching jobs, each with employer_name, company_id and jobs), employers_from_jobs (how many matching jobs were grouped, at most 1,000, taken in the default list order), employers_sampled (true when more jobs matched than were grouped, so the counts are from a sample) and employers_unknown_jobs (grouped jobs with no known employer name).

Input Schema

{
  "type": "object",
  "properties": {
    "filters": {
      "type": "object",
      "properties": {
        "q": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 200
            },
            {
              "type": "number"
            },
            {
              "type": "boolean"
            },
            {
              "type": "array",
              "items": {
                "type": "string",
                "maxLength": 200
              },
              "maxItems": 10
            }
          ],
          "description": "Words matched against title and description, ranked by relevance. Every word must match; for a list of skills where any may match, use description_advanced with OR, for example python OR sql OR \"data analysis\"."
        },
        "title_advanced": {
          "anyOf": [
            {
              "$ref": "#/properties/filters/properties/q/anyOf/0"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/1"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/2"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/3"
            }
          ]
        },
        "description_advanced": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "title": {
          "anyOf": [
            {
              "$ref": "#/properties/filters/properties/q/anyOf/0"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/1"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/2"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/3"
            }
          ],
          "description": "Words in the job title."
        },
        "company": {
          "anyOf": [
            {
              "$ref": "#/properties/filters/properties/q/anyOf/0"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/1"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/2"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/3"
            }
          ],
          "description": "Company name."
        },
        "company_id": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "location": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "state": {
          "anyOf": [
            {
              "$ref": "#/properties/filters/properties/q/anyOf/0"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/1"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/2"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/3"
            }
          ],
          "description": "US state, two letters (CA) or full name."
        },
        "country": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 16384
            },
            {
              "type": "array",
              "items": {
                "type": "string",
                "maxLength": 200
              }
            }
          ],
          "description": "One or more two-letter country codes, comma-separated or as an array (US,CA)."
        },
        "msa": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "near": {
          "anyOf": [
            {
              "$ref": "#/properties/filters/properties/q/anyOf/0"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/1"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/2"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/3"
            }
          ],
          "description": "A US place to search around: a ZIP code (78701), a city with its state (Austin, TX), or latitude,longitude. Use with radius_miles."
        },
        "radius_miles": {
          "anyOf": [
            {
              "$ref": "#/properties/filters/properties/q/anyOf/0"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/1"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/2"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/3"
            }
          ],
          "description": "Miles from near, 1-100 (default 25)."
        },
        "work_arrangement": {
          "anyOf": [
            {
              "$ref": "#/properties/filters/properties/q/anyOf/0"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/1"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/2"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/3"
            }
          ],
          "description": "remote, hybrid or in_person; comma-separate several."
        },
        "remote_type": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "employment_type": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 16384
            },
            {
              "type": "array",
              "items": {
                "type": "string",
                "maxLength": 200
              }
            }
          ],
          "description": "One or more employment type values, comma-separated or as an array."
        },
        "source": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "exclude_source": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "description": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "city": {
          "anyOf": [
            {
              "$ref": "#/properties/filters/properties/q/anyOf/0"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/1"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/2"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/3"
            }
          ],
          "description": "City name."
        },
        "source_type": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "source_class": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "posting_id": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "source_posting_id": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "posting_status": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "stale": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "company_linked": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "has_description": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "has_location": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "has_pay": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "has_posting_url": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "has_application_url": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "pay_currency": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "pay_min": {
          "anyOf": [
            {
              "$ref": "#/properties/filters/properties/q/anyOf/0"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/1"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/2"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/3"
            }
          ],
          "description": "Lowest yearly pay, in pay_currency (default USD). Hourly pay is about yearly / 2,080, so $45 an hour is about 93,600."
        },
        "pay_max": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "first_seen_until": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "updated_until": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "curated_until": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "last_fetch_since": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "last_fetch_until": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "application_check": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "application_check_since": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "job_id": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "currentness": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "active": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "posted_since": {
          "anyOf": [
            {
              "$ref": "#/properties/filters/properties/q/anyOf/0"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/1"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/2"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/3"
            }
          ],
          "description": "Date (YYYY-MM-DD) or ISO time; jobs posted on or after it."
        },
        "posted_until": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "published_since": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "first_seen_since": {
          "anyOf": [
            {
              "$ref": "#/properties/filters/properties/q/anyOf/0"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/1"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/2"
            },
            {
              "$ref": "#/properties/filters/properties/q/anyOf/3"
            }
          ],
          "description": "Date (YYYY-MM-DD) or ISO time; jobs we first found on or after it. For a daily check for new jobs, pass the time of the last check."
        },
        "updated_since": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "curated_since": {
          "$ref": "#/properties/filters/properties/title_advanced"
        },
        "remote": {
          "type": "boolean",
          "description": "true is the same as work_arrangement=remote."
        }
      },
      "additionalProperties": false,
      "default": {}
    },
    "group_by": {
      "type": "string",
      "const": "employer",
      "description": "Pass employer to also get the companies behind the matching jobs."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢market_insights(question, role, title, place, company, ...)

Answer job-market questions from a precomputed snapshot of current US jobs, rebuilt after each full pass over the job boards and checked by recomputing sample answers a second way. Ten ready-made questions (top employers, pay, remote share, top metros, jobs by state, top roles, new postings this week, pay transparency, posting age, employers hiring in the most states) plus a generic lookup of any metric (job count, pay 10th to 90th percentile, share showing pay, remote/hybrid/in-person shares, posting age, new postings, top employers) by one or two dimensions (title, place, company, seniority, employment type, remote), a breakdown that ranks one dimension, a negotiate question ("what salary should I ask for?" for a title, a place and an optional seniority) and a dimensions call that lists what can be asked. Cells with fewer than 30 jobs, and pay figures from fewer than 30 jobs with pay, are left out; every answer carries its sample size, as_of, a one-line method, the check result and search filters for search_jobs or count_jobs. Free.

Input Schema

{
  "type": "object",
  "properties": {
    "question": {
      "type": "string",
      "enum": [
        "top_employers",
        "pay",
        "work_arrangement",
        "top_metros",
        "jobs_by_state",
        "top_roles",
        "new_postings_employers",
        "pay_transparency",
        "posting_age",
        "multi_state_employers",
        "lookup",
        "breakdown",
        "negotiate",
        "dimensions"
      ],
      "description": "top_employers: Which employers have the most open jobs (for a role, in a state)? pay: What does a role pay (in a state)? work_arrangement: What share of jobs are remote, hybrid or on-site? top_metros: Which metro areas have the most open jobs (for a role)? jobs_by_state: How many open jobs are in each state? top_roles: What are the most common roles (in a state)? new_postings_employers: Which employers posted the most new jobs this week? pay_transparency: Which states have the highest share of postings that list pay? posting_age: How long have open jobs (for a role) been posted? multi_state_employers: Which employers hire in the most states? lookup: Any metric (job count, pay percentiles, share showing pay, remote/hybrid/in-person shares, posting age, new postings, top employers) for one or two dimensions, such as \"what is the average pay for Registered Nurses in Texas?\" Takes title (or role), place, company, seniority, employment_type, remote (at most two); metric (optional). breakdown: Rank the values of one dimension by a metric, over all jobs or inside one value of another dimension, such as \"which states pay Software Engineers the most?\" (by=state, title=Software Engineer, sort=pay_median). Takes by (title, state, metro, city, company, seniority, employment_type or remote; place means state); one filter from title, place, company, seniority, employment_type, remote (optional); sort (optional); limit (optional, 1 to 50). negotiate: What salary to negotiate for: a title, a place and an optional seniority give the 25th, 50th, 75th and 90th percentile of posted pay, the sample size and a plain recommendation. Takes title (or role); place (optional, default US); seniority (optional). dimensions: What can be asked: the dimensions, how many values each has, the metrics, and (with dimension, and optionally q) the values of one dimension. Takes dimension (optional); q (optional search text); limit (optional)."
    },
    "role": {
      "type": "string",
      "maxLength": 120,
      "description": "A standard job title such as \"Registered Nurse\" or \"Software Engineer\"; leave out for every job. Same as title."
    },
    "title": {
      "type": "string",
      "maxLength": 120,
      "description": "A standard job title; lookup, breakdown and negotiate match more than 6,000 titles. Same as role."
    },
    "place": {
      "type": "string",
      "maxLength": 60,
      "description": "US (the default), a state code such as TX, a state name, a metro area such as \"Austin-Round Rock-Georgetown, TX\" or a city such as \"Austin, TX\" (cities and metros only for lookup, breakdown and negotiate)."
    },
    "company": {
      "type": "string",
      "maxLength": 120,
      "description": "An employer name (lookup and breakdown)."
    },
    "seniority": {
      "type": "string",
      "maxLength": 40,
      "description": "intern, entry, senior, lead, manager, director or executive, read from the job title (lookup, breakdown, negotiate)."
    },
    "employment_type": {
      "type": "string",
      "maxLength": 40,
      "description": "full_time, part_time, contract, temporary, internship or per_diem (lookup and breakdown)."
    },
    "remote": {
      "type": "string",
      "maxLength": 20,
      "description": "remote, hybrid or in_person (lookup and breakdown)."
    },
    "metric": {
      "type": "string",
      "maxLength": 30,
      "description": "lookup only: job_count, pay, pay_share, work_arrangement, posting_age, new_postings or top_employers; leave out for all of them."
    },
    "by": {
      "type": "string",
      "maxLength": 30,
      "description": "breakdown only: what to rank (title, state, metro, city, company, seniority, employment_type or remote; place means state)."
    },
    "sort": {
      "type": "string",
      "maxLength": 30,
      "description": "breakdown only: jobs (the default), pay_median, pay_p75, pay_p90, share_with_pay, remote_share, new_7_days or new_30_days."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "description": "breakdown rows or dimension values to return."
    },
    "dimension": {
      "type": "string",
      "maxLength": 30,
      "description": "dimensions only: list the values of this dimension."
    },
    "q": {
      "type": "string",
      "maxLength": 80,
      "description": "dimensions only: search the values of dimension."
    }
  },
  "required": [
    "question"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_fields(keywords)

Find the search_jobs filters and the job fields that match some keywords, with each one's type and a short description. Pass words such as ["pay", "remote"]; no keywords lists everything. kind is filter (pass it in search_jobs filters) or field (a property of each returned job; postings[].x is a property of each linked posting). A field state is an object whose state says whether the source published the value (known), Atlas derived it, the source omitted it, or extraction failed. Free.

Input Schema

{
  "type": "object",
  "properties": {
    "keywords": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 100
      },
      "maxItems": 20,
      "default": []
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools
auth requiredversion not recorded—