Level
by jobsbylevel.com · remote · no sign-in to list tools · v1.1.0 · published by com.jobsbylevel
Free, read-only access to job listings rated by AI level, from Little AI to Builds AI.
8 tools: 4 change things and 4 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things4Claude Code: ask: see these tools
- Only reads4Claude Code: allow: see these tools
2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http level-jobs https://jobsbylevel.com/mcpFindings
Matches of fixed checks, with the text they matched.
- Highsearch_jobs
The input schema at properties.visa_sponsorship.description contains "do not mention it", an instruction to keep something from the user.
What this check looks forMatched text
inputSchema.properties.visa_sponsorship.description: "...or in some cases, refuse sponsorship or do not mention it are left out."
- Highlatest_ai_jobs
The input schema at properties.visa_sponsorship.description contains "do not mention it", an instruction to keep something from the user.
What this check looks forMatched text
inputSchema.properties.visa_sponsorship.description: "...or in some cases, refuse sponsorship or do not mention it are left out."
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
8 tools
Changes things 4Claude Code: ask
latest_ai_jobsThe newest AI jobs published on Level (jobsbylevel.com): listings rated Works on AI (AI Level 3) or Builds AI (AI Level 4), posted in the last 24 hours by default, newest first.1 finding
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- High
The input schema at properties.visa_sponsorship.description contains "do not mention it", an instruction to keep something from the user.
What this check looks forMatched text
inputSchema.properties.visa_sponsorship.description: "...or in some cases, refuse sponsorship or do not mention it are left out."
Description, as the server wrote it The newest AI jobs published on Level (jobsbylevel.com): listings rated Works on AI (AI Level 3) or Builds AI (AI Level 4), posted in the last 24 hours by default, newest first. Level checks employer career sites every hour. Optional filters: free text, remote, visa sponsorship, minimum yearly salary in USD, seniority. Same data as the page https://jobsbylevel.com/new-ai-jobs. Every result links to its canonical page on jobsbylevel.com. The response also carries `search_url`, the page on jobsbylevel.com to browse the full list. Ranking never depends on payment: paid or boosted listings get no priority here.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
market_statsAggregated statistics over currently published Level listings: distribution by AI level (AI Level 1 to AI Level 4), share of remote roles, and the most frequent tools and categorie…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Aggregated statistics over currently published Level listings: distribution by AI level (AI Level 1 to AI Level 4), share of remote roles, and the most frequent tools and categories. Computed directly from the database, not an estimate.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
salary_statsSalary statistics over the live Level listings that publish a yearly salary range: number of listings, median, 25th and 75th percentile of the middle of each range, in one currency…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Salary statistics over the live Level listings that publish a yearly salary range: number of listings, median, 25th and 75th percentile of the middle of each range, in one currency at a time (default USD, currencies are never mixed). Hourly and monthly rates are excluded. Optional filters: keyword in the job title, AI level (1 = Little AI, 2 = Uses AI, 3 = Works on AI, 4 = Builds AI), remote. The response carries the date of the figures and the exact method. Computed directly from the database, not an estimate.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
top_hiring_companiesThe 10 companies with the most live AI jobs posted in the last N days on Level: listings rated Works on AI (AI Level 3) or Builds AI (AI Level 4).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it The 10 companies with the most live AI jobs posted in the last N days on Level: listings rated Works on AI (AI Level 3) or Builds AI (AI Level 4). Ranked by number of listings only, free, never by payment. Each company links to its page on jobsbylevel.com. Companies that only republish other employers' listings are excluded.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Only reads 4Claude Code: allow
get_jobReturns the full detail of a job listing published on Level, by its UUID or its slug (e.g.No findings
Why it is in this group
- The name "get_job" says "get": a word for reading.
Description, as the server wrote it Returns the full detail of a job listing published on Level, by its UUID or its slug (e.g. "senior-ml-engineer-acme-corp"). Includes recently expired listings, like the public page. Never returns a direct link to the employer's ATS: use the returned `url` (the canonical jobsbylevel.com page) to apply.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_level_definitionsReturns the definition of Level's four AI-impact levels (AI Level 1 to AI Level 4), the scale every job listing on jobsbylevel.com is rated against.No findings
Why it is in this group
- The name "get_level_definitions" says "get": a word for reading.
Description, as the server wrote it Returns the definition of Level's four AI-impact levels (AI Level 1 to AI Level 4), the scale every job listing on jobsbylevel.com is rated against.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_companies_by_ai_levelRanks companies currently hiring on Level by how central AI is to their open roles: the average AI rating (0-100) of their live listings.No findings
Why it is in this group
- The name "list_companies_by_ai_level" says "list": a word for reading.
Description, as the server wrote it Ranks companies currently hiring on Level by how central AI is to their open roles: the average AI rating (0-100) of their live listings. This is a Level-specific aggregation, not a third-party ranking. See the returned `method` field for the exact rule. Companies with too few live listings, and known job-board republishers, are excluded.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
search_jobsSearch job listings published on Level (jobsbylevel.com), an AI job board that rates every listing by how central AI is to the role, from Little AI (AI Level 1) to Builds AI (AI Le…1 finding
Why it is in this group
- The name "search_jobs" says "search": a word for reading.
Findings
- High
The input schema at properties.visa_sponsorship.description contains "do not mention it", an instruction to keep something from the user.
What this check looks forMatched text
inputSchema.properties.visa_sponsorship.description: "...or in some cases, refuse sponsorship or do not mention it are left out."
Description, as the server wrote it Search job listings published on Level (jobsbylevel.com), an AI job board that rates every listing by how central AI is to the role, from Little AI (AI Level 1) to Builds AI (AI Level 4). Filters: free-text query, AI level range, remote, city, company, posting age, visa sponsorship, minimum yearly salary in USD, seniority, job category. Returns at most 20 results per page. With `query`: whole-word search with stemming ("engineer" also matches "engineering", but a fragment like "eng" alone no longer matches), ranked by relevance, and `total` is capped at 1,000 (see `total_capped` in the response). Without `query`: ranked by AI rating and recency, `total` is exact. Every result links back to its canonical page on jobsbylevel.com. The response also carries `search_url`, the page on jobsbylevel.com that shows the same search as a full list: offer it to the user to browse beyond the first 20 (`search_url_omitted_filters` names any filter that page cannot apply). This tool never returns a direct link to the employer's ATS. Ranking never depends on payment: paid or boosted listings get no priority here.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.1.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http level-jobs https://jobsbylevel.com/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__level-jobs__search_jobs",
"mcp__level-jobs__get_job",
"mcp__level-jobs__list_companies_by_ai_level",
"mcp__level-jobs__get_level_definitions"
],
"ask": [
"mcp__level-jobs__latest_ai_jobs",
"mcp__level-jobs__market_stats",
"mcp__level-jobs__salary_stats",
"mcp__level-jobs__top_hiring_companies"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as level-jobs. Review it before you use it.