Skip to content

Jobroulette

de.jobroulette/jobroulettejobroulette.destreamable-httpv0.1.0Scanned

Jobs in Germany, Austria and Switzerland matched to your resume.

9 tools: 2 can delete or cancel things, 2 do something that can't be undone, 2 change things and 3 only read.

Tools: 2 delete, 2 irreversible, 2 write, 3 read.
  • Reads private data · 0
  • Reads text others write · 1
  • Can send data out · 1
  • No findings

Anlyon alternative

6 of these tools change something. Run those as governed actions.

Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.

Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.

Import an OpenAPI spec →

Tools

Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.

9 tools

Deletes or cancels 2Claude Code: deny
  • refresh_job_matchesUse this only when the user explicitly asks for new or different jobs (neue Stellen) than the ones already matched.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 destructive (destructiveHint: true).
    Description, as the server wrote it
    Use this only when the user explicitly asks for new or different jobs (neue Stellen) than the ones already matched. Replaces the current matches with up to five jobs never matched to this user before. Once every 24 hours; an earlier call is refused with zu_frueh and names the time from which it works. Scope: cv:schreiben.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: false
  • upload_resumeUse this when the user is looking for a job (Stelle) and shares their resume, CV or Lebenslauf, or wants to change the one on file.No findings

    Why it is in this group

    • The name "upload_resume" says "upload": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Use this when the user is looking for a job (Stelle) and shares their resume, CV or Lebenslauf, or wants to change the one on file. Two steps with the same tool. First call it with freitext (the resume as text) or pdf (a PDF, Base64): the resume is only **read**, the extracted fields come back under `entwurf`, and nothing is saved yet — except that a PDF is kept as the user’s one resume document and replaces the previous one. Show the user these fields and let them correct whatever was misread. Then call this tool again with felder: only that saves the resume, and the first time it also returns five job matches under `angelegt`. Never save fields the user has not seen. Each user has exactly one resume; saving again updates it and brings no new job matches — those come only from refresh_job_matches. Jobroulette covers IT, sales, operations, engineering, marketing, finance and legal, and HR: if the saved resume carries `imZuschnitt` false, tell the user that their resume does not look like any of these fields and the matches will therefore probably not fit them. Before the first resume, the user has to consent to its processing themselves on the Jobroulette website; until then this tool fails with einwilligung_fehlt, quoting the consent text and the page where the user gives it. Show both to the user — you cannot consent on their behalf. Exactly one of freitext, pdf, felder per call. Scope: cv:schreiben.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
Can't be undone 2Claude Code: ask
  • send_job_applicationUse this when the user has seen the draft of their job application (Bewerbung) and explicitly wants it sent.Reads text others writeCan send data outNo findings

    Why it is in this group

    • The name "send_job_application" says "send": a word for sending, and what is sent cannot be taken back.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "send_job_application" says "send": it sends or publishes something to other people.
    Description, as the server wrote it
    Use this when the user has seen the draft of their job application (Bewerbung) and explicitly wants it sent. Sends exactly one email to the employer, with the cover letter and the user’s resume document or another PDF as attachment. The call is the user’s consent for exactly this job: make it only after they have seen the draft and explicitly asked to send it. A second call for the same job sends nothing and names the first application. Scope: bewerbung:senden.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • withdraw_employer_introductionUse this when the user wants to take back their consent to be introduced to an employer for a job (Zustimmung zur Vermittlung widerrufen).No findings

    Why it is in this group

    • The name "withdraw_employer_introduction" says "withdraw": a word that usually means money moves, which cannot be taken back.
    Description, as the server wrote it
    Use this when the user wants to take back their consent to be introduced to an employer for a job (Zustimmung zur Vermittlung widerrufen). Works until Jobroulette has presented the user; after that the employer handles the data on its own responsibility, and this tool fails and says so. A second call changes nothing. Scope: vermittlung:zustimmen.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Changes things 2Claude Code: ask
  • answer_employer_introductionUse this when the user decides on an offer to be introduced to an employer for a job (Vermittlungsvorschlag).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.
    Description, as the server wrote it
    Use this when the user decides on an offer to be introduced to an employer for a job (Vermittlungsvorschlag). nein declines the offer on the user’s behalf; the first answer counts, and a second call changes nothing and says so. You cannot accept: the user consents only themselves, by ticking the box on the Jobroulette website. With ja this tool fails with zustimmung_nur_selbst and names the page where the user does it — show it to them. Scope: vermittlung:zustimmen.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • draft_job_applicationUse this when the user wants to apply for one of their matched jobs (Bewerbung).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
    Use this when the user wants to apply for one of their matched jobs (Bewerbung). Drafts an application by email for that job: recipient from the posting, subject, cover letter and the stored resume document as attachment. Sends nothing. Show the user the draft, let them edit the cover letter and sign it with their name. If the posting asks for more (salary expectation, earliest start date, a cover letter, certificates), forderungen names each with a hint for the user; the cover letter then holds a line with [bitte eintragen] that must be filled in or removed before sending. If the posting names no email address for applications, the call is refused and names the posting. Scope: cv:lesen.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Only reads 3Show 3 read-only tools
  • get_job_matchesUse this when the user asks for jobs (Stellen) that fit them or wants to see their job matches again.No findings

    Why it is in this group

    • The name "get_job_matches" says "get": a word for reading.
    Description, as the server wrote it
    Use this when the user asks for jobs (Stellen) that fit them or wants to see their job matches again. Returns the five jobs currently matched to their resume. Nothing is recalculated: the selection stays until the user replaces it with refresh_job_matches, even if they change their resume; `erneuerbarAb` says from when that is possible. A job with `zustand` `verschwunden` is no longer advertised: tell the user so and do not offer to apply; from the next day on it is left out. Scope: cv:lesen.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_employer_introductionsUse this when the user asks whether Jobroulette wants to introduce them to an employer for a job (Vermittlung).No findings

    Why it is in this group

    • The name "list_employer_introductions" says "list": a word for reading.
    Description, as the server wrote it
    Use this when the user asks whether Jobroulette wants to introduce them to an employer for a job (Vermittlung). Returns the introduction offers: at which employer Jobroulette would like to present the user, which job it is about and when the user was asked. Scope: cv:lesen.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_job_applicationsUse this when the user asks about the job applications (Bewerbungen) they have sent.No findings

    Why it is in this group

    • The name "list_job_applications" says "list": a word for reading.
    Description, as the server wrote it
    Use this when the user asks about the job applications (Bewerbungen) they have sent. Returns each application: to whom, when, with which attachment and how far delivery has got; "angenommen" means on its way, not delivered. Scope: cv:lesen.

    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.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

No private-data, untrusted-input, outbound path in this server alone: no tool is tagged private-data.

Reads private data0
Reads files, mail, messages, databases, secrets, calendars or repositories.
Reads text others write1
Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
Can send data out1
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Findings

Matches of fixed checks, with the text they matched.

No check matched anything in these tool definitions. That is not a safety guarantee.

History

Changes to its tool definitions and to its remote endpoint, newest first.

No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.

Install

Pinned to version 0.1.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http jobroulette https://mcp.jobroulette.de/mcp
claude mcp add --transport http jobroulette https://mcp.jobroulette.de/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__jobroulette__get_job_matches",
      "mcp__jobroulette__list_job_applications",
      "mcp__jobroulette__list_employer_introductions"
    ],
    "ask": [
      "mcp__jobroulette__draft_job_application",
      "mcp__jobroulette__send_job_application",
      "mcp__jobroulette__answer_employer_introduction",
      "mcp__jobroulette__withdraw_employer_introduction"
    ],
    "deny": [
      "mcp__jobroulette__upload_resume",
      "mcp__jobroulette__refresh_job_matches"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as jobroulette. Review it before you use it.

Capability tags behind 1 rule
  • mcp__jobroulette__send_job_application untrusted-input, outbound

Pin

Keep the decision: fail CI when the tools change, follow every change, or show a badge.

Pin in CI

Fail a build when the tools you reviewed are not the tools the server serves today.

curl -s "https://anlyon.dev/api/v1/servers/de.jobroulette/jobroulette/verify?hash=1c10e33d17d3f361f72b7f4057c02a50ebdf0425ca37347c5416eabb41e316f6" | jq -e '.changed == false'

Pinned hash 1c10e33d17d3, from Oct 26, 2026, 20:17 UTC.

Watch

Get told when its tools change: a new tool, a new description, a new class.

https://anlyon.dev/servers/de.jobroulette/jobroulette/changes.xml

An Atom feed. Works in any feed reader or Slack's RSS app.

Badge

anlyon.dev badge for de.jobroulette/jobroulette
[![anlyon.dev](https://anlyon.dev/badge/de.jobroulette/jobroulette.svg)](https://anlyon.dev/servers/de.jobroulette/jobroulette)

Source: MCP Registry. Synced Oct 26, 2026, 20:17 UTC.