# io.github.prPMDev/jd-intel-mcp (npm · jd-intel-mcp)

Your AI fetches and reads full job descriptions across seven ATS platforms, no copy-paste.

- Trust score: 68/100 (medium)
- Change this week: +18
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `jd-intel-mcp`: 68/100 (this document), [markdown](https://verifymcp.io/servers/prpmdev-jd-intel-mcp/jd-intel-mcp.md), [page](https://verifymcp.io/servers/prpmdev-jd-intel-mcp/jd-intel-mcp)

## Channel facts

- Registry: `npm`
- Package: `jd-intel-mcp`
- Version: `0.8.1`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 87/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (96 of 100), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (96 of 100), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 36 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 74/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1330 tokens (~332/item across 4 items; 3 tools + 1 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 23/100
  - Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add prpmdev-jd-intel-mcp -- npx -y jd-intel-mcp
```

### Codex

```bash
codex mcp add prpmdev-jd-intel-mcp -- npx -y jd-intel-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "prpmdev-jd-intel-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "jd-intel-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add prpmdev-jd-intel-mcp --command npx --arg -y --arg jd-intel-mcp
```

### Hermes

```yaml
mcp_servers:
  prpmdev-jd-intel-mcp:
    command: "npx"
    args: ["-y", "jd-intel-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "prpmdev-jd-intel-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "jd-intel-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 68, +44)

- [security regression] Provenance: unverified → fail
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Install scripts: unverified → pass
- [security improvement] Malware scan: unverified → pass
- [functional regression] Security disclosure: fail → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Schema quality: 100 → unverified
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] License: unverified → pass
- [functional improvement] Stability: unverified → 0.20
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Schema quality: unverified → excellent
- [functional improvement] MCP protocol: unverified → pass
- [functional] Licence: MIT

### 2026-07-31 (score 24, −26)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 50, +26)

- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] Schema quality: unverified → 100

### 2026-07-28 (score 24, −26)

- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Schema quality: 100 → unverified

### 2026-07-27 (score 50)

First indexed and scored.

## MCP tools (3)

### `fetch_jobs` (~749 tokens)

Fetch jobs from a company ATS

Fetch open job postings from a specific company's ATS (Greenhouse, Lever, Ashby, SmartRecruiters, Teamtailor, Recruitee, Workday).

USE WHEN: the user asks about roles at a known company ("Is Stripe hiring?", "What's open at Figma?").

DON'T USE WHEN:
\- User doesn't know the company → read the registry Resource or call search_registry
\- User only asks which ATS a company uses → call detect_ats

ARGUMENT GUIDE:

company: lowercase slug, no spaces (e.g. "stripe", "cockroachlabs"). Hyphens and spaces auto-stripped.

title_filter: JavaScript-compatible regex matched against TITLE ONLY. Case-insensitive by default. Do NOT use inline flags like (?i) (not supported by V8). Use for role identity ("product manager", "staff engineer"). Does NOT match description text. That's the distinction from filter.

filter: JavaScript-compatible regex matched across title + department + description. Case-insensitive by default. Do NOT use inline flags like (?i). Use for topic/scope ("integrations", "growth"). AND'd with title_filter.

posted_within_days: number. "recent" or "new" → 30. "this week" → 7. "today" → 1.

location_includes: array of keywords. Case-insensitive substring match; short codes (US, UK) use word-boundary matching automatically. For US queries prefer ["United States", "US", "Remote - US"]. Avoid bare "Remote". It matches Remote-EMEA, Remote-LatAm.

location_excludes: array. Drop jobs whose location contains any keyword. Use as refinement on top of includes.

limit: default 100. Reduce for high-volume companies.

workday: optional { tenant, env, site }. Use ONLY for a Workday company not in the registry when the user gives a careers URL. Derive from https://{tenant}.{env}.myworkdayjobs.com/{site}: tenant is the first label, env is the part like wd108, site is the path segment. Overrides the registry for that fetch. Never guess or fabricate these values; use only what the user supplied or what is literally in the careers URL. Omit this argument entirely if you do not h…

Input parameters:

- `company` (string, required): Company slug or name (e.g. "stripe")
- `filter` (string): Regex matched across title, department, description — topic/scope
- `limit` (integer): Cap results (default 100)
- `location_excludes` (array): Drop jobs whose location contains any keyword
- `location_includes` (array): Keep jobs whose location contains any keyword
- `posted_within_days` (integer): Only jobs posted within N days
- `title_filter` (string): Regex matched against title only — role identity
- `workday` (object): Override the registry for a Workday board not indexed. Derive all three from the careers URL https://{tenant}.{env}.myworkdayjobs.com/{site}. Never guess these.

### `search_registry` (~217 tokens)

Search the company registry

Find companies in the indexed registry by name or sector.

USE WHEN: targeted lookups ("Is Stripe in your index?", "Show me fintech companies").

DON'T USE WHEN:
\- User wants a broad survey of the catalog → read the registry://jd-intel/all Resource instead (one fetch vs repeated tool calls)
\- User asks about a specific company's jobs → call fetch_jobs directly

ARGUMENT GUIDE:

query: optional. Substring match (case-insensitive) against company name.
sector: optional. Match against sector field. Examples: "fintech", "developer tools", "marketing tech".

At least one argument required. Returns companies matching either.

RESPONSE: { status, data: [{ slug, name, sector, ats }], metadata }. Each result includes the ATS platform for that company.

ERROR CODES:
\- invalid_args: both query and sector missing

Input parameters:

- `query` (string): Substring match against company name
- `sector` (string): Match against sector (e.g. "fintech", "developer tools")

### `detect_ats` (~262 tokens)

Detect which ATS a company uses

Detect which ATS platform (Greenhouse, Lever, Ashby, SmartRecruiters, Teamtailor, Recruitee) a company uses by probing. Workday is registry-only and never returned here; find Workday-hosted companies via search_registry or fetch_jobs (which auto-detects from the registry).

USE WHEN: user asks about the ATS platform explicitly ("What ATS does Stripe use?") or for debugging.

DON'T USE WHEN: you want to fetch jobs. Call fetch_jobs directly (it auto-detects internally).

ARGUMENT GUIDE:

company: company name or slug. Hyphens and spaces stripped automatically ("Cockroach Labs" → "cockroachlabs").

RESPONSE: { status, data: "greenhouse" | "lever" | "ashby" | "smartrecruiters" | "teamtailor" | "recruitee" | null, metadata }. data === null means none of the probeable ATS host this company (Workday is registry-only and never detected here). "partial" status means some probes failed. Result may be incomplete.

ERROR CODES:
\- invalid_args: company arg missing
\- partial_failure: some probes failed

Input parameters:

- `company` (string, required): Company name or slug

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/prpmdev-jd-intel-mcp/jd-intel-mcp#diagnostics

## Score history

- 2026-08-03: 68
- 2026-08-02: 68
- 2026-08-01: 24
- 2026-07-31: 24
- 2026-07-30: 50
- 2026-07-28: 24
- 2026-07-27: 50

## Links

- npm package: https://www.npmjs.com/package/jd-intel-mcp
- Socket report: https://socket.dev/npm/package/jd-intel-mcp
- Repository: https://github.com/prPMDev/jd-intel
- Changelog RSS feed: https://verifymcp.io/servers/prpmdev-jd-intel-mcp/jd-intel-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/prpmdev-jd-intel-mcp/jd-intel-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/prpmdev-jd-intel-mcp/jd-intel-mcp
