protogrid

Search / com.jobyap/jobs

JobYap Job Search

R0· no sign-in

Search job postings aggregated from companies' careers sites, plus each job's discussion thread.

v1.1.0 · active · repository · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality86good
Trust99of 100
Uptime, 30 days96%
Latency p50399 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "jobs": {
      "type": "http",
      "url": "https://mcp.jobyap.com/mcp"
    }
  }
}
claude mcp add --transport http jobs https://mcp.jobyap.com/mcp
[mcp_servers.jobs]
url = "https://mcp.jobyap.com/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "jobs": {
      "type": "remote",
      "url": "https://mcp.jobyap.com/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "jobs": {
      "type": "http",
      "url": "https://mcp.jobyap.com/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=jobs&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vbWNwLmpvYnlhcC5jb20vbWNwIn0%3D"
}
{
  "servers": {
    "jobs": {
      "type": "http",
      "url": "https://mcp.jobyap.com/mcp"
    }
  }
}
{
  "mcpServers": {
    "jobs": {
      "httpUrl": "https://mcp.jobyap.com/mcp"
    }
  }
}
extensions:
  "jobs":
    enabled: true
    name: "jobs"
    type: streamable_http
    uri: "https://mcp.jobyap.com/mcp"
    timeout: 300

Quality 86 / 100good

protocol88 · weight 25
  • pass
    protocol.modernsupports 2026-07-28 (server/discover)
  • pass
    protocol.statelessanswers without a session
  • pass
    protocol.transportstreamable HTTP
  • warn
    protocol.list_ttltools/list declares ttlMs 0, so clients re-fetch it on every use
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene79 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • warn
    tools.description_length1 tools have descriptions over 1,024 characters, which crowds the context
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations9 of 9 tools declare readOnlyHint or destructiveHint
  • fail
    tools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: search_jobs (idempotentHint); get_job_comments (idempotentHint); search_locations (idempotentHint); …
  • pass
    tools.token_costabout 2,374 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability100 · weight 15
  • pass
    stability.changes4 tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvabledeps.dev does not know [email protected]

9 tools, about 2,374 tokens to load them all · tool set 775c5adedd0e · tools last changed 2026-09-30 · checked 2026-10-20 20:14 UTC

Tool changes

  • search_locationschangeddescription
    before

    Resolve a free-text place name ("bay area", "Germany", "berlin") to the location identifiers search_jobs accepts (country-XX, state-XX-YY, city-XX-YY-name). Searches every place JobYap knows, not only those with current openings, so an identifier may match no jobs. City display omits the state, and the list can be shorter than limit.

    after · 86% of words in common

    Resolve a free-text place name ("toronto", "Japan", "Texas") to the location identifiers search_jobs accepts (country-XX, state-XX-YY, city-XX-YY-name). Searches every place JobYap knows, not only those with current openings, so an identifier may match no jobs. City display omits the state, and the list can be shorter than limit.

  • match_jobschangeddescription
    before

    Shortlist, screen and rank live postings for one candidate in a single call. Filters active jobs by title terms (any of them; a term matches when the title holds all its words), excluded title terms, companies, locations and posting window, then takes the newest 300 of that pool (pool_total says how many matched) and reads each full description. It drops postings with no usable description, postings whose stated minimum years of experience exceed candidate_years by more than 1, and, with needs_sponsorship, postings that refuse sponsorship or require citizenship or a clearance; dropped counts each reason. The rest are ranked by how many skills appear in the description, then newest first. Each result carries skills_matched, years_bar, flags and up to 6 requirement sentences. The screening is heuristic: read finalists in full with get_job.

    after · 74% of words in common

    Find and rank the best live postings for one specific candidate, such as someone who shared a resume or described their experience, skills or visa needs. Slow: it reads each posting's full description, so a call can take 10 to 15 seconds. For browsing, listing or counting postings, use search_jobs, which answers in under a second. Filters active jobs by title terms (any of them; a term matches when the title holds all its words), excluded title terms, companies, locations and posting window, then takes the newest 300 of that pool (pool_total says how many matched) and reads each full description. It drops postings with no usable description, postings whose stated minimum years of experience exceed candidate_years by more than 1, and, with needs_sponsorship, postings that refuse sponsorship or require citizenship or a clearance; dropped counts each reason. The rest are ranked by how many skills appear in the description, then newest first. Each result carries skills_matched, years_bar, flags and up to 6 requirement sentences. The screening is heuristic: read finalists in full with get_job.

  • search_jobschangeddescription
    before

    Search JobYap's aggregated job postings with structured filters. The text query matches job titles only (case-insensitive substring) — try synonyms or shorter tokens when results are thin. Company names must exactly match values from list_companies; locations must be identifiers from search_locations. work_mode matches jobs explicitly marked remote or hybrid (unmarked means unstated, not onsite). Results are active listings, newest first by default; sort=popular ranks by discussion activity. To paginate, pass next_cursor back as cursor and keep every other argument identical.

    after · 71% of words in common

    Search JobYap's aggregated job postings with structured filters. Fast (under a second): use it to browse, list, count or page through postings and to answer general questions about who is hiring. To find the best postings for one specific person (a resume, or their experience, skills or visa needs), use match_jobs instead. The text query matches job titles only (case-insensitive substring) — try synonyms or shorter tokens when results are thin. Company names must exactly match values from list_companies; locations must be identifiers from search_locations. work_mode matches jobs explicitly marked remote or hybrid (unmarked means unstated, not onsite). Results are active listings, newest first by default; sort=popular ranks by discussion activity. To paginate, pass next_cursor back as cursor and keep every other argument identical.

  • match_jobsadded

    Shortlist, screen and rank live postings for one candidate in a single call. Filters active jobs by title terms (any of them; a term matches when the title holds all its words), excluded title terms, companies, locations and posting window, then takes the newest 300 of that pool (pool_total says how many matched) and reads each full description. It drops postings with no usable description, postings whose stated minimum years of experience exceed candidate_years by more than 1, and, with needs_sponsorship, postings that refuse sponsorship or require citizenship or a clearance; dropped counts each reason. The rest are ranked by how many skills appear in the description, then newest first. Each result carries skills_matched, years_bar, flags and up to 6 requirement sentences. The screening is heuristic: read finalists in full with get_job.

Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 99 / 100

provenance100
liveness98
freshness100
hygiene100

+repository +namespace-matches-repo +dns-namespace +website +reachable +uptime-96% +updated-19d-ago

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Dependencies

[email protected] npmthis version is not known to the dependency resolver

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0. The graph is what a clean install of this version resolves today; nothing was installed or run. How it is checked.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://mcp.jobyap.com/mcp streamable-httpnoneyes96%399 ms2026-07-282026-10-20
packageregistryversionruntimesecrets
jobyap-mcpnpm1.1.0–

Tools (9)

fetchread-onlyRetrieve the full JobYap document for a search result id: the complete posting as markdown (description, salary, locations, apply link) plus top community comments, with a citable URL.
get_jobread-onlyFetch one job posting in full: markdown description, salary ranges, locations with work mode, derived employment types, apply URL, posting dates and the canonical JobYap discussion URL. Works for expired jobs too (apply_url is null once inactive).
get_job_commentsread-onlyFetch the community discussion thread for a job: chronological, threaded via parent_id, with like counts. Comments are user-generated content. Threads stay open after a job expires.
get_job_statsread-onlyAggregate stats: companies tracked, active job count, and the newest posting date.
list_companiesread-onlyList every company JobYap tracks with its active job count and JobYap company-page URL. Use the exact names as search_jobs company filters.
match_jobsread-onlyFind and rank the best live postings for one specific candidate, such as someone who shared a resume or described their experience, skills or visa needs. Slow: it reads each posting's full description, so a call can take 10 to 15 seconds. For browsing, listing or counting postings, use search_jobs, which answers in under a second. Filters active jobs by title terms (any of them; a term matches when the title holds all its words), excluded title terms, companies, locations and posting window, then takes the newest 300 of that pool (pool_total says how many matched) and reads each full description. It drops postings with no usable description, postings whose stated minimum years of experience exceed candidate_years by more than 1, and, with needs_sponsorship, postings that refuse sponsorship or require citizenship or a clearance; dropped counts each reason. The rest are ranked by how many skills appear in the description, then newest first. Each result carries skills_matched, years_bar, flags and up to 6 requirement sentences. The screening is heuristic: read finalists in full with get_job.
searchread-onlySearch JobYap job postings by natural-language query. Matches job titles, falling back to significant keywords when the full phrase finds little. Returns result ids, titles and citable URLs for use with fetch. For structured filtering (location, company, remote, freshness) prefer search_jobs.
search_jobsread-onlySearch JobYap's aggregated job postings with structured filters. Fast (under a second): use it to browse, list, count or page through postings and to answer general questions about who is hiring. To find the best postings for one specific person (a resume, or their experience, skills or visa needs), use match_jobs instead. The text query matches job titles only (case-insensitive substring) — try synonyms or shorter tokens when results are thin. Company names must exactly match values from list_companies; locations must be identifiers from search_locations. work_mode matches jobs explicitly marked remote or hybrid (unmarked means unstated, not onsite). Results are active listings, newest first by default; sort=popular ranks by discussion activity. To paginate, pass next_cursor back as cursor and keep every other argument identical.
search_locationsread-onlyResolve a free-text place name ("toronto", "Japan", "Texas") to the location identifiers search_jobs accepts (country-XX, state-XX-YY, city-XX-YY-name). Searches every place JobYap knows, not only those with current openings, so an identifier may match no jobs. City display omits the state, and the list can be shorter than limit.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "com.jobyap/jobs",
  "title": "JobYap Job Search",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://mcp.jobyap.com/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "1.1.0",
  "packages": [
    {
      "version": "1.1.0",
      "transport": {
        "type": "stdio"
      },
      "identifier": "jobyap-mcp",
      "registryType": "npm",
      "registryBaseUrl": "https://registry.npmjs.org"
    }
  ],
  "repository": {
    "url": "https://github.com/jobyap/agent-skills",
    "source": "github"
  },
  "websiteUrl": "https://jobyap.com",
  "description": "Search job postings aggregated from companies' careers sites, plus each job's discussion thread."
}