Skip to main content
Glama
tsushanth

simplyapply-jobs-mcp

by tsushanth

simplyapply-jobs-mcp

An MCP server for real, live job search — search open roles from Greenhouse, Lever, Ashby, and SmartRecruiters career pages across thousands of companies, refreshed daily. Backed by SimplyApply's job aggregation API.

No API key required.

Tools

  • search_jobs(keyword?, location?, remote?, company?, employment_type?, posted_since?, limit?) — full-text search over currently-open job postings.

  • get_company_jobs(company) — a company's profile and every currently-open role, by slug (as used in https://www.simplyappl.ai/companies/{slug}).

Related MCP server: mcp-ashby

Install

git clone https://github.com/tsushanth/simplyapply-jobs-mcp.git
cd simplyapply-jobs-mcp
npm install
npm run build

Add to your MCP client config:

{
  "mcpServers": {
    "simplyapply-jobs": {
      "command": "node",
      "args": ["/absolute/path/to/simplyapply-jobs-mcp/dist/index.js"]
    }
  }
}

No environment variables needed — the server talks to SimplyApply's public API directly.

Why this exists

Job search is a genuinely good fit for an agent: "find me remote staff engineer roles posted this week" is exactly the kind of multi-constraint query a human would otherwise do by hand across a dozen career pages. This server exposes the same aggregated listings that power simplyappl.ai directly to any MCP client.

License

MIT

Available Tools

2 tools
get_company_jobsA

Get a specific company's profile and all of its currently-open roles by company slug (as used in https://www.simplyappl.ai/companies/{slug} URLs — lowercase, hyphenated).

ParametersJSON Schema
NameRequiredDescriptionDefault
companyYesCompany slug, e.g. "stripe" or "boxlunch-hot-topic"

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose that only currently-open roles are returned, along with the profile, and clarifies the slug format. However, it does not mention failure modes, permissions, or rate limits. The added context is reasonable for a simple read operation but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence of 36 words, front-loads the primary function, and includes only essential details about the slug format. There is no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has only one parameter and no output schema, the description covers the essential information: what is returned (profile and open roles) and how to specify the company. It lacks details on edge cases like invalid slugs, but for a simple lookup this is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents the parameter with examples (100% coverage), so the baseline is 3. The description adds value by explaining the slug format (lowercase, hyphenated) and tying it to the URL structure, which goes beyond the schema's examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get'), a well-defined resource (a specific company's profile and currently-open roles), and the exact identifier format (slug). It clearly distinguishes from the sibling 'search_jobs' by focusing on a single company rather than a search across companies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the use case (when you have a specific company slug) and provides the URL context for slug format, but it does not explicitly mention the alternative 'search_jobs' or state when to use one over the other. The usage is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_jobsA

Search real, currently-open job postings aggregated from Greenhouse, Lever, Ashby, and SmartRecruiters career pages across thousands of companies (refreshed daily). No API key required.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results to return (default 20, max reasonable ~50)
remoteNoOnly remote-eligible roles
companyNoFilter to a specific company name (partial match)
keywordNoFull-text search over job title and description, e.g. "backend engineer" or "product designer"
locationNoCity, region, or country to filter by, e.g. "Austin" or "India"
posted_sinceNoISO date (YYYY-MM-DD) — only jobs posted on or after this date
employment_typeNoe.g. "full-time", "contract", "internship" (as listed by the source ATS, not normalized)

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It honestly notes that results are real, currently open, and refreshed daily, and that no API key is needed. However, it does not reveal potential limitations like pagination, rate limits, or that coverage is limited to the listed ATS platforms, nor does it describe the output format. These gaps are notable for a tool with no 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences with zero fluff. The first sentence states the core purpose and domain specifics, and the second provides a key prerequisite (no API key). Every word earns its place, and the main verb is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 7 parameters, no output schema, and no annotations, the description provides a reasonable overview but omits the return format and any caveats about result limits or coverage scope. An agent could call it correctly based on the schema, but might not know what to expect in the response. This is an adequate but not fully complete description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides descriptions for all 7 parameters (100% coverage), so the description does not need to add parameter-level detail. It adds no extra meaning beyond the schema definitions, which is acceptable given high coverage, but it also doesn't offer clarifications like the default limit or example values that might help.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches real, currently-open job postings from specific ATS sources across thousands of companies. The verb 'search' and resource 'job postings' are specific, and the mention of sources and freshness adds clarity. However, it does not explicitly contrast with the sibling tool get_company_jobs, though the general search scope implies a difference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides useful context (aggregated, refreshed daily, no API key required) that implies general usage, but it does not explicitly state when to use this tool versus the alternative get_company_jobs. There are no exclusions or conditions, but the purpose is clear enough to infer typical use for broad job searching.

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.

  1. 2 tool updatesv0.1.0
    • First observedget_company_jobs
    • First observedsearch_jobs

TDQS

A3.8/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have clearly distinct purposes: one performs a global search across all aggregated job boards, while the other retrieves jobs for a specific company. There is no ambiguity or overlap in their intended use cases.

Naming Consistency5/5

Both tool names follow the consistent verb_noun pattern (search_jobs, get_company_jobs), using snake_case and action-first naming. This makes the tool set predictable and easy to reason about.

Tool Count3/5

With only two tools, the surface feels minimal but not unreasonable for a narrow job-search aggregation domain. However, the count is at the low end of the spectrum and may limit agent flexibility—additional capabilities like filtering or retrieving specific job details would make it more useful.

Completeness3/5

The tools cover global search and company-specific retrieval, which are the core operations for job browsing. However, there is no way to retrieve a single job's full details, apply filters within search, or access other lifecycle operations like saving or applying, leaving notable gaps for a complete job-search workflow.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to pull live job listings from major ATS platforms (Greenhouse, Lever, Ashby, Workable), Hacker News hiring threads, and detect hiring signals on company career pages.
    -
  • A
    license
    A
    quality
    B
    maintenance
    Search and read public Ashby job boards for named companies, with filtering, full job details, and side-by-side compensation comparison. No API key required.
    5
    55 npm
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables querying open job postings directly from company applicant-tracking systems (Greenhouse, Ashby, Lever), finding a company's job board, listing and comparing roles, and accessing salary data, all without scraping or API keys.
    3
    128 PyPI
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables natural-language job search and aggregation from multiple recruitment websites with zero configuration, providing filtered results and standardized output for AI assistants.
    26 npm
    ISC