Jobroulette
Server Details
Jobs in Germany, Austria and Switzerland matched to your resume.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 9 tools
Most tools map to clearly distinct resource+action pairs (matches, applications, introductions, resume), and draft vs. send for applications is cleanly staged. The one soft spot is decline_employer_introduction vs. withdraw_employer_introduction, which both read as 'say no to an introduction'; the descriptions do disambiguate (pre-acceptance refusal vs. revoking consent), but the boundary requires careful reading, especially since no accept tool exists.
Every tool follows a consistent snake_case verb_noun pattern: get_/list_/refresh_ for reads, draft_/send_ for applications, decline_/withdraw_ for introductions, upload_resume. The singular/plural split (decline_employer_introduction vs. list_employer_introductions) tracks one-off action vs. collection listing rather than breaking the convention.
Nine tools for a two-domain workflow (resume–matches–applications and employer introductions) is well-scoped. Each tool covers a distinct step with no filler or redundant variants.
The core lifecycle is covered end to end: upload/update resume, get and refresh matches, draft and send applications, list sent applications, and list/decline/withdraw introductions, with website-side steps (consent, accepting offers) explicitly delegated. Minor gaps remain — no way to fetch a single posting's details, cancel an already-sent application, or re-send/duplicate an application — but these are edge cases an agent can narrate around.
Available Tools
9 toolsdecline_employer_introductionDecline an introduction to an employerADestructiveIdempotentInspect
Use this when the user does not want to be introduced to an employer for a job (Vermittlungsvorschlag ablehnen). Declines the offer on the user’s behalf. The first answer counts: a declined offer cannot be accepted later, and a second call changes nothing and says so. To accept, the user ticks the box themselves on the page named in list_employer_introductions. Scope: vermittlung:zustimmen.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The id of the offer from list_employer_introductions. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| stand | Yes | |
| titel | Yes | |
| gefragtAm | Yes | |
| standorte | Yes | |
| arbeitgeber | Yes | |
| stelleGeloescht | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations it discloses the decisive behavioral facts: the decision is irreversible, the first answer is binding, a repeat call is a no-op that reports itself, and the required scope is vermittlung:zustimmen. This is consistent with destructiveHint=true and idempotentHint=true while adding consequences the agent could not infer from the flags.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the trigger condition, then consequences, then the alternative path and scope. No sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive tool with an output schema, everything an agent needs is present: trigger, irreversibility, idempotency semantics, authorization scope, and where the id comes from.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single id parameter is already documented in the schema as coming from list_employer_introductions, so the description only echoes that provenance. Nothing extra (e.g. what an invalid or already-declined id yields) is added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource ('Declines the offer') plus the domain term 'Vermittlungsvorschlag ablehnen', so the action is unmistakable. It distinguishes the accept path and points at list_employer_introductions, but never contrasts with the sibling withdraw_employer_introduction, leaving a genuine ambiguity about which cancellation tool applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use this when the user does not want to be introduced to an employer' gives an explicit trigger condition, and the note that accepting must be done by the user ticking a box on the page tells the agent when NOT to call this tool. The missing piece is routing versus withdraw_employer_introduction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draft_job_applicationDraft a job application (Bewerbung) by emailARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| stelleId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| titel | Yes | |
| anhang | Yes | |
| betreff | Yes | |
| stelleId | Yes | |
| empfaenger | Yes | |
| anschreiben | Yes | |
| arbeitgeber | Yes | |
| forderungen | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses that the tool creates a draft only, builds recipient/subject/cover letter/resume attachment, refuses the call when no application email exists, and inserts [bitte eintragen] placeholders for missing requirements. These are substantive behavioral details an agent needs before invoking it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The trigger is front-loaded and the sentences are information-dense with little waste. It is somewhat long, but most of the length is justified by the draft, placeholder, and refusal behaviors it must convey.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the draft workflow, refusal condition, placeholder behavior, attachment handling, and scope, and an output schema exists so return values need not be explained. The main remaining gap is that it does not explicitly route the user to send_job_application for the send step or clarify the stelleId parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one required parameter, stelleId, but schema description coverage is 0%. The description refers only to 'that job' and 'matched jobs' and never explicitly explains that stelleId is the UUID of the matched posting to draft against.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it drafts an email application for a matched job. It also immediately distinguishes itself from send_job_application by saying 'Sends nothing', so an agent can tell which sibling to select.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear trigger: use when the user wants to apply for one of their matched jobs. It also says to show the draft for editing and signing, but it does not explicitly name send_job_application as the follow-up tool for actually sending.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_job_matchesShow your job matches (Stellen)ARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| hinweis | Yes | |
| stellen | Yes | |
| erneuerbarAb | Yes | |
| vollstaendig | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavior beyond annotations: the selection is not recalculated, persists even after resume changes, and refresh_job_matches is required to replace it. It explains erneuerbarAb, handling of zustand=verschwunden, next-day omission, and the cv:lesen scope, all of which matter operationally.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the use case and return value, then layers in the critical staleness and disappeared-job behavior. Every sentence carries operational meaning, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description does not need to fully explain return values, yet it still clarifies key fields. Combined with annotations, it gives an agent enough context to call the tool correctly and interpret the results, including scope and refresh semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero input parameters, so the baseline is 4. The description does add useful meaning about output fields such as erneuerbarAb and zustand, but parameter semantics concerns inputs and there are none.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: showing the user's job matches, and specifies it returns the five jobs currently matched to their resume. It clearly distinguishes this retrieval tool from refresh_job_matches, which recalculates the selection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it: when the user asks for fitting jobs or wants to see their matches again. It names refresh_job_matches as the alternative for replacing the selection and gives specific handling for disappeared jobs, including not offering to apply.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_employer_introductionsList offers to introduce you to an employer (Vermittlung)ARead-onlyIdempotentInspect
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. Only the user can accept an offer, on the Jobroulette website: zustimmungsseite is the page where they do it — give them this link. Scope: cv:lesen.
| Name | Required | Description | Default |
|---|---|---|---|
| nurOffene | No | Only the unanswered offers. false also returns the answered ones. |
Output Schema
| Name | Required | Description |
|---|---|---|
| vorschlaege | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile needs no restating; instead the description adds genuinely new context: the cv:lesen auth scope and the fact that acceptance is a user-only action that must be performed off-tool. It does not discuss pagination or volume, but for a scoped read with full annotations that is a minor omission.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The trigger condition is front-loaded, followed by return contents, the user-only acceptance rule, and the scope. It is dense but every sentence carries information; only the inline schema-field name 'zustimmungsseite' makes the middle feel slightly cluttered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't detail return values, and it correctly focuses on the trigger, the auth scope, and the crucial hand-off to the consent page. The one gap is that it never tells the agent that only unanswered offers are returned by default, which could lead to misinterpretation of results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter nurOffene is fully documented in the schema (100% coverage) including its default of true and what false adds, so the schema does the work. The description gives no hint about the open/answered filter, meaning it contributes nothing beyond the schema and leaves the agent to find the flag on its own.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (list) and resource (introduction offers / Vermittlung) and spells out exactly what the records contain: the employer, the job, and when the user was asked. That level of detail separates it cleanly from the sibling mutation tools (decline_employer_introduction, withdraw_employer_introduction) without needing to name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Opens with an explicit trigger ('Use this when the user asks whether Jobroulette wants to introduce them to an employer'), which is exactly the condition an agent needs. It also states a clear boundary — accepting happens only on the website — but never mentions the decline/withdraw siblings an agent might reach for when an offer is already answered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_job_applicationsList your job applications (Bewerbungen)ARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| bewerbungen | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly/idempotent/non-destructive), the description discloses the required scope 'cv:lesen' and a genuine semantic trap: '"angenommen" means on its way, not delivered.' That is real behavioral context an agent could otherwise misreport. It does not cover ordering, pagination, or behavior with zero applications, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: the usage trigger first, then the payload and scope. Every clause carries information — the returned fields, the status caveat, and the authorization scope — with no filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, yet the description still front-loads the key field semantics and the 'angenommen' interpretation caveat, and it names the required scope. For a zero-parameter read tool, an agent has everything it needs to call and report correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so the baseline of 4 applies; there is no argument syntax for the description to compensate for. Nothing in the description misleads about inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the resource precisely (job applications the user has sent) and enumerates what each returned record contains (recipient, date, attachment, delivery progress). That distinguishes it from the action siblings draft_job_application and send_job_application, though it does not name a sibling explicitly. Only the verb 'list' is carried by the name rather than the prose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit trigger: 'Use this when the user asks about the job applications (Bewerbungen) they have sent.' That is a clear, actionable condition, and the surrounding siblings are obviously mutating actions so no exclusion list is strictly needed. It stops short of stating when not to use it (e.g. for a single application's detail).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refresh_job_matchesGet five new job matchesADestructiveInspect
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 and says how many; call get_job_matches to show them. Once every 24 hours; an earlier call is refused with zu_frueh and names the time from which it works. Scope: cv:schreiben.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| anzahl | Yes | |
| hinweis | Yes | |
| erneuerbarAb | Yes | |
| vollstaendig | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: the previous matches are destroyed and replaced, the 24-hour rate limit is stated, the refusal code 'zu_frueh' and the time it names are disclosed, and the required scope cv:schreiben is given. Annotations alone would only say destructive=true; the description explains exactly what is destroyed and what failure looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the usage gate, then mechanics, then rate limit and scope. Dense but every sentence carries operational weight; only the parenthetical German gloss and the trailing 'Scope:' fragment feel slightly compressed rather than wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, destructive, rate-limited mutation with an output schema, the description covers trigger, effect, failure mode, follow-up call and authorization scope. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. The description correctly implies no input is needed and instead documents the constraints (24h window, scope) that would otherwise be parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (refresh job matches) plus concrete mechanics: replaces current matches with up to five jobs never matched to this user before. It is clearly distinguishable from get_job_matches, which merely displays existing matches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit gating: 'Use this only when the user explicitly asks for new or different jobs (neue Stellen)'. It also names the follow-up alternative ('call get_job_matches to show them'), so the agent knows both when to call this and what to do next.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_job_applicationSend a job application (Bewerbung) by emailADestructiveIdempotentInspect
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 (anhang or datei) 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.
| Name | Required | Description | Default |
|---|---|---|---|
| datei | No | The attachment as an attached PDF file. | |
| anhang | No | ||
| stelleId | Yes | ||
| anschreiben | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| titel | Yes | |
| anhang | Yes | |
| betreff | Yes | |
| stelleId | Yes | |
| empfaenger | Yes | |
| gesendetAm | Yes | |
| zustellung | Yes | |
| arbeitgeber | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds non-obvious behavior beyond the annotations: the call itself constitutes the user's consent, exactly one email is sent, and a repeat call for the same job is a no-op that names the first application (consistent with idempotentHint). It does not spell out that the send is irreversible, which the destructiveHint already signals, so this is useful but not exhaustive context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the trigger condition and the single-email scope before the constraint details. The consent point is restated three times ('explicitly wants it sent', 'explicitly asked to send it', 'call is the user's consent'), which is slight redundancy rather than wasted length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-recipient send operation with an output schema covering the return, the description supplies everything the agent needs: trigger, consent semantics, one-shot behavior, attachment options, and OAuth scope. The remaining gap is only the anhang/datei distinction.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 25% schema description coverage the description carries real weight, and it does identify anschreiben (cover letter) and the attachment parameter choices (anhang or datei). However it never explains the functional difference between the two attachment forms (inline base64 PDF vs. a file reference with a download URL), and stelleId is not mentioned at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action and resource ('Sends exactly one email to the employer, with the cover letter and the user's resume document... as attachment'), and the one-email scope plus the consent precondition clearly distinguishes it from draft_job_application and list_job_applications.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('when the user has seen the draft... and explicitly wants it sent'), an explicit prohibition ('make it only after they have seen the draft and explicitly asked'), and names the implied predecessor via 'draft'. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_resumeRead and save your resume (CV, Lebenslauf)ADestructiveIdempotentInspect
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), pdf (a PDF, Base64) or datei (an attached PDF): 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 selects five job matches — call get_job_matches to show them. 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, datei, felder per call. Scope: cv:schreiben.
| Name | Required | Description | Default |
|---|---|---|---|
| No | Der CV als PDF mit Textebene, Base64-kodiert, höchstens 5 MiB. Scans werden abgelehnt. Wird gelesen, nicht hinterlegt. | ||
| datei | No | The resume as an attached PDF file. | |
| felder | No | Der vom Pro bestätigte CV in einzelnen Angaben — nur damit wird hinterlegt. Pflicht: Berufsbezeichnung, Berufsjahre, mindestens eine Kenntnis. | |
| wunsch | No | Was der Pro sucht und seinem CV nicht zu entnehmen ist, in seinen Worten, höchstens 280 Zeichen — etwa „nur remote, Vollzeit, ab März". Daraus werden Umfang, Vertragsart, Arbeitsort, Orte, Seniorität, Branchen, Mindestgehalt, Unternehmensgröße und ausgeschlossene Arbeitgeber gelesen. Nur mit felder; ohne ihn bleibt der bisherige. | |
| freitext | No | Der CV als Text, so wie der Pro ihn geschrieben oder eingefügt hat. Wird gelesen, nicht hinterlegt. |
Output Schema
| Name | Required | Description |
|---|---|---|
| entwurf | No | Bei freitext oder pdf: die gelesenen Felder. Es ist nichts hinterlegt worden. Lege sie dem Pro vor, lass ihn korrigieren und rufe dann erneut mit felder auf. |
| angelegt | No | Bei felder: der hinterlegte CV. Beim ersten stehen damit fünf Stellenvorschläge bereit, get_job_matches zeigt sie. Ein geänderter CV ändert sie nicht; neue gibt es nur mit refresh_job_matches. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the destructiveHint/idempotentHint annotations: the first call only reads and returns `entwurf`, but a PDF is persisted and replaces any previous document; felder is the only call that saves; re-saving updates the single per-user resume and yields no new matches. It also discloses the consent precondition and the einwilligung_fehlt failure mode, plus the imZuschnitt=false caveat, which the agent cannot learn from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the trigger, then the two-step flow, then constraints and the consent exception; each paragraph maps to a decision the agent must make. It is dense and long, with the industry list and scope string packed into the same block, but little is genuinely removable given the two-mode behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers everything an agent needs to call this multi-mode, destructive, consent-gated tool correctly: mode selection, what persists vs. what is discarded, the confirmation step, post-save match behavior, and the failure path. Return values need no explanation since an output schema and the `entwurf` reference are already given.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real mode semantics the schema cannot express: exactly one of freitext/pdf/datei/felder per call, that freitext/pdf are read-only while felder commits, and that `wunsch` is only meaningful alongside felder. It does not restate every field's meaning, relying on the rich schema for that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the specific resource (resume/CV/Lebenslauf) and the exact two-step behavior (read via freitext/pdf/datei, then save via felder) in one tool. It distinguishes itself explicitly from get_job_matches and refresh_job_matches, so an agent can place it among the siblings without opening another schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the trigger condition ("when the user is looking for a job and shares their resume ... or wants to change the one on file") and the mandatory confirmation gate ("Never save fields the user has not seen"). It also names the correct alternatives for related goals: get_job_matches for the initial matches, refresh_job_matches when more matches are needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
withdraw_employer_introductionWithdraw consent to an introduction to an employerADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The id of the offer from list_employer_introductions. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| stand | Yes | |
| titel | Yes | |
| gefragtAm | Yes | |
| standorte | Yes | |
| arbeitgeber | Yes | |
| stelleGeloescht | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it explains the temporal cutoff (only before presentation), that the employer then holds the data on its own responsibility, and that the tool fails with an explanatory error. 'A second call changes nothing' merely restates idempotentHint=true, so there is some redundancy, but the failure semantics and data-handover context are genuine additions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the use case, then the cutoff condition, then idempotency and scope in a tight sequence with no filler. Only the redundant idempotency sentence fails to earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, and the description covers the two things an agent must know for a destructive mutation: when it is valid and what happens when it is not. Nothing required for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single id parameter is documented as coming from list_employer_introductions, so the schema already carries the load. The description adds nothing about the identifier itself, which is the correct baseline for full-coverage schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (withdraw/take back) and resource (consent to be introduced to an employer), including the German term, so the agent knows exactly what is being undone. It is clear on its own but never contrasts with the close sibling decline_employer_introduction, leaving the agent to infer which one a user's intent maps to.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this when the user wants to take back their consent' and adds a hard boundary: it works only until Jobroulette has presented the user, after which it fails. That is a real when/when-not rule. It does not, however, point to decline_employer_introduction as the alternative for someone who simply wants to turn down a specific offer.
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.
9 tool updates
- Removed
answer_employer_introduction - Added
decline_employer_introduction - Changed
get_job_matches11 fields changed- removed
Output schema / properties / anlassRemoved value: -{ - "enum": [ - "cv", - "erneuert" - ], - "type": "string" -} - removed
Output schema / properties / cvIdRemoved value: -{ - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" -} - removed
Output schema / properties / erzeugtAmRemoved value: -{ - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", - "type": "string" -} - removed
Output schema / properties / grenzeRemoved value: -{ - "maximum": 9007199254740991, - "minimum": 1, - "type": "integer" -} - removed
Output schema / properties / idRemoved value: -{ - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" -} - removed
Output schema / properties / protokollIdRemoved value: -{ - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" -} - removed
Output schema / properties / stellen / items / properties / bestandteileRemoved value: -{ - "additionalProperties": false, - "properties": { - "abschluss": { - "anyOf": [ - { - "enum": [ - "erfuellt", - "fehlt" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "aehnlichkeit": { - "type": "number" - }, - "familiennaehe": { - "type": [ - "number", - "null" - ] - }, - "ueberlappung": { - "type": [ - "number", - "null" - ] - } - }, - "required": [ - "aehnlichkeit", - "ueberlappung", - "familiennaehe", - "abschluss" - ], - "type": "object" -} - removed
Output schema / properties / stellen / items / properties / scoreRemoved value: -{ - "type": "number" -} - removed
Output schema / properties / stellen / items / properties / urteilRemoved value: -{ - "anyOf": [ - { - "enum": [ - "gemerkt", - "verworfen", - "entfernt" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "default": null -} - changed
Output schema / properties / stellen / items / requiredPrevious value: -[ - "stelleId", - "titel", - "arbeitgeber", - "url", - "standorte", - "arbeitsort", - "bewerbungsweg", - "formularUrl", - "begruendung", - "umfang", - "vertragsart", - "beschaeftigungsstatus", - "gehalt", - "score", - "bestandteile", - "urteil", - "zustand" -]New value: +[ + "stelleId", + "titel", + "arbeitgeber", + "url", + "standorte", + "arbeitsort", + "bewerbungsweg", + "formularUrl", + "begruendung", + "umfang", + "vertragsart", + "beschaeftigungsstatus", + "gehalt", + "zustand" +] - changed
Output schema / requiredPrevious value: -[ - "id", - "cvId", - "anlass", - "stellen", - "grenze", - "vollstaendig", - "hinweis", - "protokollId", - "erzeugtAm", - "erneuerbarAb" -]New value: +[ + "vollstaendig", + "hinweis", + "erneuerbarAb", + "stellen" +]
- Changed
list_employer_introductions11 fields changed- removed
Output schema / properties / vorschlaege / items / properties / antwortRemoved value: -{ - "anyOf": [ - { - "enum": [ - "ja", - "nein" - ], - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / vorschlaege / items / properties / beantwortetAmRemoved value: -{ - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / vorschlaege / items / properties / cvFassungVomRemoved value: -{ - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / vorschlaege / items / properties / cvVorhandenRemoved value: -{ - "type": "boolean" -} - removed
Output schema / properties / vorschlaege / items / properties / kanalRemoved value: -{ - "anyOf": [ - { - "enum": [ - "mail", - "deck", - "mcp" - ], - "type": "string" - }, - { - "type": "null" - } - ] -} - added
Output schema / properties / vorschlaege / items / properties / standAdded value: +{ + "enum": [ + "offen", + "abgelehnt", + "zugestimmt", + "widerrufen", + "vorgestellt" + ], + "type": "string" +} - removed
Output schema / properties / vorschlaege / items / properties / vorgestelltAmRemoved value: -{ - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / vorschlaege / items / properties / widerrufKanalRemoved value: -{ - "anyOf": [ - { - "enum": [ - "mail", - "deck", - "mcp" - ], - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / vorschlaege / items / properties / widerrufenAmRemoved value: -{ - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] -} - added
Output schema / properties / vorschlaege / items / properties / zustimmungsseiteAdded value: +{ + "format": "uri", + "type": "string" +} - changed
Output schema / properties / vorschlaege / items / requiredPrevious value: -[ - "id", - "arbeitgeber", - "titel", - "standorte", - "url", - "stelleGeloescht", - "gefragtAm", - "antwort", - "beantwortetAm", - "kanal", - "cvFassungVom", - "cvVorhanden", - "widerrufenAm", - "widerrufKanal", - "vorgestelltAm" -]New value: +[ + "id", + "arbeitgeber", + "titel", + "standorte", + "url", + "stelleGeloescht", + "gefragtAm", + "stand", + "zustimmungsseite" +]
- Changed
list_job_applications4 fields changed- removed
Output schema / properties / bewerbungen / items / properties / eingewilligtAmRemoved value: -{ - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", - "type": "string" -} - added
Output schema / properties / bewerbungen / items / properties / gesendetAmAdded value: +{ + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", + "type": "string" +} - removed
Output schema / properties / bewerbungen / items / properties / idRemoved value: -{ - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" -} - changed
Output schema / properties / bewerbungen / items / requiredPrevious value: -[ - "id", - "stelleId", - "titel", - "arbeitgeber", - "empfaenger", - "betreff", - "anhang", - "eingewilligtAm", - "zustellung" -]New value: +[ + "stelleId", + "titel", + "arbeitgeber", + "empfaenger", + "betreff", + "anhang", + "zustellung", + "gesendetAm" +]
- Changed
refresh_job_matches9 fields changed- removed
Output schema / properties / anlassRemoved value: -{ - "enum": [ - "cv", - "erneuert" - ], - "type": "string" -} - added
Output schema / properties / anzahlAdded value: +{ + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - removed
Output schema / properties / cvIdRemoved value: -{ - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" -} - removed
Output schema / properties / erzeugtAmRemoved value: -{ - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", - "type": "string" -} - removed
Output schema / properties / grenzeRemoved value: -{ - "maximum": 9007199254740991, - "minimum": 1, - "type": "integer" -} - removed
Output schema / properties / idRemoved value: -{ - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" -} - removed
Output schema / properties / protokollIdRemoved value: -{ - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" -} - removed
Output schema / properties / stellenRemoved value: -{ - "items": { - "additionalProperties": false, - "properties": { - "arbeitgeber": { - "minLength": 1, - "type": "string" - }, - "arbeitsort": { - "anyOf": [ - { - "enum": [ - "vor_ort", - "hybrid", - "fern" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "begruendung": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "dafuer": { - "items": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "art": { - "const": "skills", - "type": "string" - }, - "gefordert": { - "maximum": 9007199254740991, - "minimum": 1, - "type": "integer" - }, - "treffer": { - "items": { - "minLength": 1, - "type": "string" - }, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "art", - "treffer", - "gefordert" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "art": { - "const": "ort", - "type": "string" - }, - "entfernungKm": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "stellenort": { - "minLength": 1, - "type": "string" - }, - "wunschort": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "art", - "stellenort", - "wunschort", - "entfernungKm" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "art": { - "const": "arbeitsort", - "type": "string" - }, - "wert": { - "enum": [ - "vor_ort", - "hybrid", - "fern" - ], - "type": "string" - } - }, - "required": [ - "art", - "wert" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "art": { - "const": "fern", - "type": "string" - }, - "orte": { - "items": { - "minLength": 1, - "type": "string" - }, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "art", - "orte" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "art": { - "const": "umfang", - "type": "string" - }, - "wert": { - "enum": [ - "vollzeit", - "teilzeit" - ], - "type": "string" - } - }, - "required": [ - "art", - "wert" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "art": { - "const": "vertragsart", - "type": "string" - }, - "wert": { - "enum": [ - "befristet", - "unbefristet" - ], - "type": "string" - } - }, - "required": [ - "art", - "wert" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "art": { - "const": "stufe", - "type": "string" - }, - "wert": { - "enum": [ - "praktikum", - "einstieg", - "junior", - "mittel", - "senior", - "lead", - "leitung" - ], - "type": "string" - } - }, - "required": [ - "art", - "wert" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "art": { - "const": "branche", - "type": "string" - }, - "wert": { - "enum": [ - "software", - "it_dienstleistung", - "telekommunikation", - "finanzen", - "versicherung", - "krypto", - "handel", - "konsumgueter", - "gesundheit", - "pharma_biotech", - "industrie", - "automobil", - "luft_raumfahrt", - "ruestung", - "energie", - "logistik", - "immobilien_bau", - "medien", - "marketing", - "gaming", - "gluecksspiel", - "beratung", - "recht_steuern", - "personal", - "bildung_forschung", - "freizeit", - "oeffentlich_gemeinnuetzig" - ], - "type": "string" - } - }, - "required": [ - "art", - "wert" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "art": { - "const": "gehalt", - "type": "string" - }, - "bis": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "mindestens": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - "von": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "waehrung": { - "enum": [ - "EUR", - "CHF" - ], - "type": "string" - } - }, - "required": [ - "art", - "von", - "bis", - "waehrung", - "mindestens" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "art": { - "const": "groesse", - "type": "string" - }, - "klassen": { - "items": { - "enum": [ - "klein", - "mittel", - "gross", - "konzern" - ], - "type": "string" - }, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "art", - "klassen" - ], - "type": "object" - } - ] - }, - "type": "array" - }, - "dagegen": { - "items": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "art": { - "const": "skills_fehlen", - "type": "string" - }, - "fehlend": { - "items": { - "minLength": 1, - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "gefordert": { - "maximum": 9007199254740991, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "art", - "fehlend", - "gefordert" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "art": { - "const": "keine_skills", - "type": "string" - } - }, - "required": [ - "art" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "art": { - "const": "unscharf", - "type": "string" - }, - "wunsch": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "art", - "wunsch" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "art": { - "const": "unbekannt", - "type": "string" - }, - "kriterium": { - "enum": [ - "ort", - "arbeitsort", - "umfang", - "vertragsart", - "stufe", - "branche", - "groesse" - ], - "type": "string" - } - }, - "required": [ - "art", - "kriterium" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "art": { - "const": "gehalt_unbekannt", - "type": "string" - }, - "mindestens": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - "schaetzung": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "bis": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "herkunft": { - "enum": [ - "anzeige", - "branche" - ], - "type": "string" - }, - "von": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "waehrung": { - "enum": [ - "EUR", - "CHF" - ], - "type": "string" - } - }, - "required": [ - "von", - "bis", - "waehrung", - "herkunft" - ], - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "art", - "mindestens", - "schaetzung" - ], - "type": "object" - } - ] - }, - "type": "array" - } - }, - "required": [ - "dafuer", - "dagegen" - ], - "type": "object" - }, - { - "type": "null" - } - ], - "default": null - }, - "beschaeftigungsstatus": { - "anyOf": [ - { - "enum": [ - "regulaer", - "werkstudent", - "praktikum", - "ausbildung", - "freiberuflich" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "bestandteile": { - "additionalProperties": false, - "properties": { - "abschluss": { - "anyOf": [ - { - "enum": [ - "erfuellt", - "fehlt" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "aehnlichkeit": { - "type": "number" - }, - "familiennaehe": { - "type": [ - "number", - "null" - ] - }, - "ueberlappung": { - "type": [ - "number", - "null" - ] - } - }, - "required": [ - "aehnlichkeit", - "ueberlappung", - "familiennaehe", - "abschluss" - ], - "type": "object" - }, - "bewerbungsweg": { - "anyOf": [ - { - "enum": [ - "mail", - "kontakt", - "formular" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "formularUrl": { - "anyOf": [ - { - "minLength": 1, - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "gehalt": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "bis": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "herkunft": { - "enum": [ - "anzeige", - "branche" - ], - "type": "string" - }, - "von": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "waehrung": { - "enum": [ - "EUR", - "CHF" - ], - "type": "string" - } - }, - "required": [ - "von", - "bis", - "waehrung", - "herkunft" - ], - "type": "object" - }, - { - "type": "null" - } - ], - "default": null - }, - "score": { - "type": "number" - }, - "standorte": { - "items": { - "type": "string" - }, - "type": "array" - }, - "stelleId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "titel": { - "minLength": 1, - "type": "string" - }, - "umfang": { - "anyOf": [ - { - "enum": [ - "vollzeit", - "teilzeit" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "url": { - "minLength": 1, - "type": "string" - }, - "urteil": { - "anyOf": [ - { - "enum": [ - "gemerkt", - "verworfen", - "entfernt" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "vertragsart": { - "anyOf": [ - { - "enum": [ - "befristet", - "unbefristet" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "zustand": { - "default": "offen", - "enum": [ - "offen", - "verschwunden" - ], - "type": "string" - } - }, - "required": [ - "stelleId", - "titel", - "arbeitgeber", - "url", - "standorte", - "arbeitsort", - "bewerbungsweg", - "formularUrl", - "begruendung", - "umfang", - "vertragsart", - "beschaeftigungsstatus", - "gehalt", - "score", - "bestandteile", - "urteil", - "zustand" - ], - "type": "object" - }, - "type": "array" -} - changed
Output schema / requiredPrevious value: -[ - "id", - "cvId", - "anlass", - "stellen", - "grenze", - "vollstaendig", - "hinweis", - "protokollId", - "erzeugtAm", - "erneuerbarAb" -]New value: +[ + "vollstaendig", + "hinweis", + "erneuerbarAb", + "anzahl" +]
- Changed
send_job_application5 fields changed- added
Input schema / properties / dateiAdded value: +{ + "description": "The attachment as an attached PDF file.", + "properties": { + "download_url": { + "minLength": 1, + "type": "string" + }, + "file_id": { + "minLength": 1, + "type": "string" + }, + "file_name": { + "type": "string" + }, + "mime_type": { + "type": "string" + } + }, + "required": [ + "download_url", + "file_id" + ], + "type": "object" +} - removed
Output schema / properties / eingewilligtAmRemoved value: -{ - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", - "type": "string" -} - added
Output schema / properties / gesendetAmAdded value: +{ + "format": "date-time", + "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", + "type": "string" +} - removed
Output schema / properties / idRemoved value: -{ - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" -} - changed
Output schema / requiredPrevious value: -[ - "id", - "stelleId", - "titel", - "arbeitgeber", - "empfaenger", - "betreff", - "anhang", - "eingewilligtAm", - "zustellung" -]New value: +[ + "stelleId", + "titel", + "arbeitgeber", + "empfaenger", + "betreff", + "anhang", + "zustellung", + "gesendetAm" +]
- Changed
upload_resume4 fields changed- added
Input schema / properties / dateiAdded value: +{ + "description": "The resume as an attached PDF file.", + "properties": { + "download_url": { + "minLength": 1, + "type": "string" + }, + "file_id": { + "minLength": 1, + "type": "string" + }, + "file_name": { + "type": "string" + }, + "mime_type": { + "type": "string" + } + }, + "required": [ + "download_url", + "file_id" + ], + "type": "object" +} - changed
Output schema / properties / angelegt / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "angelegtAm": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", - "type": "string" - }, - "auswahl": { - "additionalProperties": false, - "properties": { - "anlass": { - "enum": [ - "cv", - "erneuert" - ], - "type": "string" - }, - "cvId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "erneuerbarAb": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "erzeugtAm": { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", - "type": "string" - }, - "grenze": { - "maximum": 9007199254740991, - "minimum": 1, - "type": "integer" - }, - "hinweis": { - "type": [ - "string", - "null" - ] - }, - "id": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "protokollId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "stellen": { - "items": { - "additionalProperties": false, - "properties": { - "arbeitgeber": { - "minLength": 1, - "type": "string" - }, - "arbeitsort": { - "anyOf": [ - { - "enum": [ - "vor_ort", - "hybrid", - "fern" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "begruendung": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "dafuer": { - "items": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "art": { - "const": "skills", - "type": "string" - }, - "gefordert": { - "maximum": 9007199254740991, - "minimum": 1, - "type": "integer" - }, - "treffer": { - "items": { - "minLength": 1, - "type": "string" - }, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "art", - "treffer", - "gefordert" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "art": { - "const": "ort", - "type": "string" - }, - "entfernungKm": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "stellenort": { - "minLength": 1, - "type": "string" - }, - "wunschort": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "art", - "stellenort", - "wunschort", - "entfernungKm" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "art": { - "const": "arbeitsort", - "type": "string" - }, - "wert": { - "enum": [ - "vor_ort", - "hybrid", - "fern" - ], - "type": "string" - } - }, - "required": [ - "art", - "wert" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "art": { - "const": "fern", - "type": "string" - }, - "orte": { - "items": { - "minLength": 1, - "type": "string" - }, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "art", - "orte" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "art": { - "const": "umfang", - "type": "string" - }, - "wert": { - "enum": [ - "vollzeit", - "teilzeit" - ], - "type": "string" - } - }, - "required": [ - "art", - "wert" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "art": { - "const": "vertragsart", - "type": "string" - }, - "wert": { - "enum": [ - "befristet", - "unbefristet" - ], - "type": "string" - } - }, - "required": [ - "art", - "wert" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "art": { - "const": "stufe", - "type": "string" - }, - "wert": { - "enum": [ - "praktikum", - "einstieg", - "junior", - "mittel", - "senior", - "lead", - "leitung" - ], - "type": "string" - } - }, - "required": [ - "art", - "wert" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "art": { - "const": "branche", - "type": "string" - }, - "wert": { - "enum": [ - "software", - "it_dienstleistung", - "telekommunikation", - "finanzen", - "versicherung", - "krypto", - "handel", - "konsumgueter", - "gesundheit", - "pharma_biotech", - "industrie", - "automobil", - "luft_raumfahrt", - "ruestung", - "energie", - "logistik", - "immobilien_bau", - "medien", - "marketing", - "gaming", - "gluecksspiel", - "beratung", - "recht_steuern", - "personal", - "bildung_forschung", - "freizeit", - "oeffentlich_gemeinnuetzig" - ], - "type": "string" - } - }, - "required": [ - "art", - "wert" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "art": { - "const": "gehalt", - "type": "string" - }, - "bis": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "mindestens": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - "von": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "waehrung": { - "enum": [ - "EUR", - "CHF" - ], - "type": "string" - } - }, - "required": [ - "art", - "von", - "bis", - "waehrung", - "mindestens" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "art": { - "const": "groesse", - "type": "string" - }, - "klassen": { - "items": { - "enum": [ - "klein", - "mittel", - "gross", - "konzern" - ], - "type": "string" - }, - "minItems": 1, - "type": "array" - } - }, - "required": [ - "art", - "klassen" - ], - "type": "object" - } - ] - }, - "type": "array" - }, - "dagegen": { - "items": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "art": { - "const": "skills_fehlen", - "type": "string" - }, - "fehlend": { - "items": { - "minLength": 1, - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "gefordert": { - "maximum": 9007199254740991, - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "art", - "fehlend", - "gefordert" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "art": { - "const": "keine_skills", - "type": "string" - } - }, - "required": [ - "art" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "art": { - "const": "unscharf", - "type": "string" - }, - "wunsch": { - "minLength": 1, - "type": "string" - } - }, - "required": [ - "art", - "wunsch" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "art": { - "const": "unbekannt", - "type": "string" - }, - "kriterium": { - "enum": [ - "ort", - "arbeitsort", - "umfang", - "vertragsart", - "stufe", - "branche", - "groesse" - ], - "type": "string" - } - }, - "required": [ - "art", - "kriterium" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "art": { - "const": "gehalt_unbekannt", - "type": "string" - }, - "mindestens": { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - "schaetzung": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "bis": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "herkunft": { - "enum": [ - "anzeige", - "branche" - ], - "type": "string" - }, - "von": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "waehrung": { - "enum": [ - "EUR", - "CHF" - ], - "type": "string" - } - }, - "required": [ - "von", - "bis", - "waehrung", - "herkunft" - ], - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "art", - "mindestens", - "schaetzung" - ], - "type": "object" - } - ] - }, - "type": "array" - } - }, - "required": [ - "dafuer", - "dagegen" - ], - "type": "object" - }, - { - "type": "null" - } - ], - "default": null - }, - "beschaeftigungsstatus": { - "anyOf": [ - { - "enum": [ - "regulaer", - "werkstudent", - "praktikum", - "ausbildung", - "freiberuflich" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "bestandteile": { - "additionalProperties": false, - "properties": { - "abschluss": { - "anyOf": [ - { - "enum": [ - "erfuellt", - "fehlt" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "aehnlichkeit": { - "type": "number" - }, - "familiennaehe": { - "type": [ - "number", - "null" - ] - }, - "ueberlappung": { - "type": [ - "number", - "null" - ] - } - }, - "required": [ - "aehnlichkeit", - "ueberlappung", - "familiennaehe", - "abschluss" - ], - "type": "object" - }, - "bewerbungsweg": { - "anyOf": [ - { - "enum": [ - "mail", - "kontakt", - "formular" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "formularUrl": { - "anyOf": [ - { - "minLength": 1, - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "gehalt": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "bis": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "herkunft": { - "enum": [ - "anzeige", - "branche" - ], - "type": "string" - }, - "von": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "waehrung": { - "enum": [ - "EUR", - "CHF" - ], - "type": "string" - } - }, - "required": [ - "von", - "bis", - "waehrung", - "herkunft" - ], - "type": "object" - }, - { - "type": "null" - } - ], - "default": null - }, - "score": { - "type": "number" - }, - "standorte": { - "items": { - "type": "string" - }, - "type": "array" - }, - "stelleId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "titel": { - "minLength": 1, - "type": "string" - }, - "umfang": { - "anyOf": [ - { - "enum": [ - "vollzeit", - "teilzeit" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "url": { - "minLength": 1, - "type": "string" - }, - "urteil": { - "anyOf": [ - { - "enum": [ - "gemerkt", - "verworfen", - "entfernt" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "vertragsart": { - "anyOf": [ - { - "enum": [ - "befristet", - "unbefristet" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - }, - "zustand": { - "default": "offen", - "enum": [ - "offen", - "verschwunden" - ], - "type": "string" - } - }, - "required": [ - "stelleId", - "titel", - "arbeitgeber", - "url", - "standorte", - "arbeitsort", - "bewerbungsweg", - "formularUrl", - "begruendung", - "umfang", - "vertragsart", - "beschaeftigungsstatus", - "gehalt", - "score", - "bestandteile", - "urteil", - "zustand" - ], - "type": "object" - }, - "type": "array" - }, - "vollstaendig": { - "type": "boolean" - } - }, - "required": [ - "id", - "cvId", - "anlass", - "stellen", - "grenze", - "vollstaendig", - "hinweis", - "protokollId", - "erzeugtAm", - "erneuerbarAb" - ], - "type": "object" - }, - "felder": { - "additionalProperties": false, - "properties": { - "ausbildung": { - "default": [], - "items": { - "minLength": 1, - "type": "string" - }, - "type": "array" - }, - "berufsbezeichnung": { - "minLength": 1, - "type": "string" - }, - "berufsjahre": { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - "kenntnisse": { - "items": { - "minLength": 1, - "type": "string" - }, - "minItems": 1, - "type": "array" - }, - "sprachen": { - "default": [], - "items": { - "minLength": 1, - "type": "string" - }, - "type": "array" - }, - "stationen": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "arbeitgeber": { - "minLength": 1, - "type": "string" - }, - "beschreibung": { - "type": [ - "string", - "null" - ] - }, - "bis": { - "anyOf": [ - { - "pattern": "^\\d{4}-(0[1-9]|1[0-2])$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "rolle": { - "minLength": 1, - "type": "string" - }, - "von": { - "pattern": "^\\d{4}-(0[1-9]|1[0-2])$", - "type": "string" - } - }, - "required": [ - "arbeitgeber", - "rolle", - "von", - "bis" - ], - "type": "object" - }, - "type": "array" - }, - "studienabschluss": { - "default": null, - "type": [ - "boolean", - "null" - ] - } - }, - "required": [ - "berufsbezeichnung", - "berufsjahre", - "kenntnisse", - "stationen", - "ausbildung", - "studienabschluss", - "sprachen" - ], - "type": "object" - }, - "freitext": { - "minLength": 1, - "type": "string" - }, - "gesetzteFelder": { - "items": { - "enum": [ - "senioritaetMindestens", - "umfang", - "vertragsart", - "beschaeftigungsstatus", - "arbeitsort", - "orte", - "skills", - "berufsjahre", - "zeitfensterAb", - "deutsch", - "englisch", - "branchenAusschliessen", - "branchenNur", - "gehaltMindestens", - "groessenAusschliessen", - "groessenNur", - "arbeitgeberAusschliessen", - "arbeitgeberUngeklaert", - "unscharf", - "umkreisKm" - ], - "type": "string" - }, - "type": "array" - }, - "gewonneneFelder": { - "items": { - "enum": [ - "berufsbezeichnung", - "berufsjahre", - "kenntnisse", - "stationen", - "ausbildung", - "studienabschluss", - "sprachen" - ], - "type": "string" - }, - "type": "array" - }, - "id": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "imZuschnitt": { - "description": "Whether the resume falls within the fields Jobroulette covers: IT; sales and business development; operations, strategy and projects; engineering and R&D outside IT; marketing, content and design; finance, legal and compliance; HR and recruiting. If false, tell the user that their resume does not look like any of these fields and the job matches will therefore probably not fit them; they may continue anyway.", - "type": "boolean" - }, - "kriterien": { - "additionalProperties": false, - "properties": { - "arbeitgeberAusschliessen": { - "items": { - "minLength": 1, - "type": "string" - }, - "type": "array" - }, - "arbeitgeberUngeklaert": { - "items": { - "minLength": 1, - "type": "string" - }, - "type": "array" - }, - "arbeitsort": { - "anyOf": [ - { - "enum": [ - "vor_ort", - "hybrid", - "fern" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "berufsjahre": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "beschaeftigungsstatus": { - "anyOf": [ - { - "enum": [ - "regulaer", - "werkstudent", - "praktikum", - "ausbildung", - "freiberuflich" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "branchenAusschliessen": { - "items": { - "enum": [ - "software", - "it_dienstleistung", - "telekommunikation", - "finanzen", - "versicherung", - "krypto", - "handel", - "konsumgueter", - "gesundheit", - "pharma_biotech", - "industrie", - "automobil", - "luft_raumfahrt", - "ruestung", - "energie", - "logistik", - "immobilien_bau", - "medien", - "marketing", - "gaming", - "gluecksspiel", - "beratung", - "recht_steuern", - "personal", - "bildung_forschung", - "freizeit", - "oeffentlich_gemeinnuetzig" - ], - "type": "string" - }, - "type": "array" - }, - "branchenNur": { - "items": { - "enum": [ - "software", - "it_dienstleistung", - "telekommunikation", - "finanzen", - "versicherung", - "krypto", - "handel", - "konsumgueter", - "gesundheit", - "pharma_biotech", - "industrie", - "automobil", - "luft_raumfahrt", - "ruestung", - "energie", - "logistik", - "immobilien_bau", - "medien", - "marketing", - "gaming", - "gluecksspiel", - "beratung", - "recht_steuern", - "personal", - "bildung_forschung", - "freizeit", - "oeffentlich_gemeinnuetzig" - ], - "type": "string" - }, - "type": "array" - }, - "deutsch": { - "anyOf": [ - { - "enum": [ - "grundkenntnisse", - "gut", - "fliessend", - "muttersprachlich" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "englisch": { - "anyOf": [ - { - "enum": [ - "grundkenntnisse", - "gut", - "fliessend", - "muttersprachlich" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "gehaltMindestens": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "groessenAusschliessen": { - "items": { - "enum": [ - "klein", - "mittel", - "gross", - "konzern" - ], - "type": "string" - }, - "type": "array" - }, - "groessenNur": { - "items": { - "enum": [ - "klein", - "mittel", - "gross", - "konzern" - ], - "type": "string" - }, - "type": "array" - }, - "orte": { - "items": { - "minLength": 1, - "type": "string" - }, - "type": "array" - }, - "senioritaetMindestens": { - "anyOf": [ - { - "enum": [ - "praktikum", - "einstieg", - "junior", - "mittel", - "senior", - "lead", - "leitung" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "skills": { - "items": { - "minLength": 1, - "type": "string" - }, - "type": "array" - }, - "umfang": { - "anyOf": [ - { - "enum": [ - "vollzeit", - "teilzeit" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "umkreisKm": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "unscharf": { - "items": { - "minLength": 1, - "type": "string" - }, - "type": "array" - }, - "vertragsart": { - "anyOf": [ - { - "enum": [ - "befristet", - "unbefristet" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "zeitfensterAb": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "senioritaetMindestens", - "umfang", - "vertragsart", - "beschaeftigungsstatus", - "arbeitsort", - "orte", - "skills", - "berufsjahre", - "zeitfensterAb", - "deutsch", - "englisch", - "branchenAusschliessen", - "branchenNur", - "gehaltMindestens", - "groessenAusschliessen", - "groessenNur", - "arbeitgeberAusschliessen", - "arbeitgeberUngeklaert", - "unscharf", - "umkreisKm" - ], - "type": "object" - }, - "strangId": { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - "vorgaengerId": { - "anyOf": [ - { - "format": "uuid", - "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "wunsch": { - "anyOf": [ - { - "minLength": 1, - "type": "string" - }, - { - "type": "null" - } - ] - }, - "zustand": { - "enum": [ - "offen", - "geschlossen" - ], - "type": "string" - } - }, - "required": [ - "id", - "strangId", - "vorgaengerId", - "zustand", - "freitext", - "felder", - "kriterien", - "gesetzteFelder", - "gewonneneFelder", - "wunsch", - "imZuschnitt", - "angelegtAm", - "auswahl" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "felder": { + "additionalProperties": false, + "properties": { + "ausbildung": { + "default": [], + "items": { + "minLength": 1, + "type": "string" + }, + "type": "array" + }, + "berufsbezeichnung": { + "minLength": 1, + "type": "string" + }, + "berufsjahre": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "kenntnisse": { + "items": { + "minLength": 1, + "type": "string" + }, + "minItems": 1, + "type": "array" + }, + "sprachen": { + "default": [], + "items": { + "minLength": 1, + "type": "string" + }, + "type": "array" + }, + "stationen": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "arbeitgeber": { + "minLength": 1, + "type": "string" + }, + "beschreibung": { + "type": [ + "string", + "null" + ] + }, + "bis": { + "anyOf": [ + { + "pattern": "^\\d{4}-(0[1-9]|1[0-2])$", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "rolle": { + "minLength": 1, + "type": "string" + }, + "von": { + "pattern": "^\\d{4}-(0[1-9]|1[0-2])$", + "type": "string" + } + }, + "required": [ + "arbeitgeber", + "rolle", + "von", + "bis" + ], + "type": "object" + }, + "type": "array" + }, + "studienabschluss": { + "default": null, + "type": [ + "boolean", + "null" + ] + } + }, + "required": [ + "berufsbezeichnung", + "berufsjahre", + "kenntnisse", + "stationen", + "ausbildung", + "studienabschluss", + "sprachen" + ], + "type": "object" + }, + "imZuschnitt": { + "description": "Whether the resume falls within the fields Jobroulette covers: IT; sales and business development; operations, strategy and projects; engineering and R&D outside IT; marketing, content and design; finance, legal and compliance; HR and recruiting. If false, tell the user that their resume does not look like any of these fields and the job matches will therefore probably not fit them; they may continue anyway.", + "type": "boolean" + }, + "wunsch": { + "anyOf": [ + { + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "felder", + "wunsch", + "imZuschnitt" + ], + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / angelegt / descriptionPrevious value: -"Bei felder: der hinterlegte CV samt den fünf Stellenvorschlägen, die gelten. Ein geänderter CV ändert sie nicht; neue gibt es nur mit refresh_job_matches."New value: +"Bei felder: der hinterlegte CV. Beim ersten stehen damit fünf Stellenvorschläge bereit, get_job_matches zeigt sie. Ein geänderter CV ändert sie nicht; neue gibt es nur mit refresh_job_matches." - changed
Output schema / properties / entwurf / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "felder": { - "additionalProperties": false, - "properties": { - "ausbildung": { - "default": [], - "items": { - "minLength": 1, - "type": "string" - }, - "type": "array" - }, - "berufsbezeichnung": { - "anyOf": [ - { - "minLength": 1, - "type": "string" - }, - { - "type": "null" - } - ] - }, - "berufsjahre": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "kenntnisse": { - "default": [], - "items": { - "minLength": 1, - "type": "string" - }, - "type": "array" - }, - "sprachen": { - "default": [], - "items": { - "minLength": 1, - "type": "string" - }, - "type": "array" - }, - "stationen": { - "default": [], - "items": { - "additionalProperties": false, - "properties": { - "arbeitgeber": { - "minLength": 1, - "type": "string" - }, - "beschreibung": { - "type": [ - "string", - "null" - ] - }, - "bis": { - "anyOf": [ - { - "pattern": "^\\d{4}-(0[1-9]|1[0-2])$", - "type": "string" - }, - { - "type": "null" - } - ] - }, - "rolle": { - "minLength": 1, - "type": "string" - }, - "von": { - "pattern": "^\\d{4}-(0[1-9]|1[0-2])$", - "type": "string" - } - }, - "required": [ - "arbeitgeber", - "rolle", - "von", - "bis" - ], - "type": "object" - }, - "type": "array" - }, - "studienabschluss": { - "default": null, - "type": [ - "boolean", - "null" - ] - } - }, - "required": [ - "berufsbezeichnung", - "berufsjahre", - "kenntnisse", - "stationen", - "ausbildung", - "studienabschluss", - "sprachen" - ], - "type": "object" - }, - "freitext": { - "minLength": 1, - "type": "string" - }, - "gewonneneFelder": { - "items": { - "enum": [ - "berufsbezeichnung", - "berufsjahre", - "kenntnisse", - "stationen", - "ausbildung", - "studienabschluss", - "sprachen" - ], - "type": "string" - }, - "type": "array" - }, - "kriterien": { - "additionalProperties": false, - "properties": { - "arbeitgeberAusschliessen": { - "items": { - "minLength": 1, - "type": "string" - }, - "type": "array" - }, - "arbeitgeberUngeklaert": { - "items": { - "minLength": 1, - "type": "string" - }, - "type": "array" - }, - "arbeitsort": { - "anyOf": [ - { - "enum": [ - "vor_ort", - "hybrid", - "fern" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "berufsjahre": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": 0, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "beschaeftigungsstatus": { - "anyOf": [ - { - "enum": [ - "regulaer", - "werkstudent", - "praktikum", - "ausbildung", - "freiberuflich" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "branchenAusschliessen": { - "items": { - "enum": [ - "software", - "it_dienstleistung", - "telekommunikation", - "finanzen", - "versicherung", - "krypto", - "handel", - "konsumgueter", - "gesundheit", - "pharma_biotech", - "industrie", - "automobil", - "luft_raumfahrt", - "ruestung", - "energie", - "logistik", - "immobilien_bau", - "medien", - "marketing", - "gaming", - "gluecksspiel", - "beratung", - "recht_steuern", - "personal", - "bildung_forschung", - "freizeit", - "oeffentlich_gemeinnuetzig" - ], - "type": "string" - }, - "type": "array" - }, - "branchenNur": { - "items": { - "enum": [ - "software", - "it_dienstleistung", - "telekommunikation", - "finanzen", - "versicherung", - "krypto", - "handel", - "konsumgueter", - "gesundheit", - "pharma_biotech", - "industrie", - "automobil", - "luft_raumfahrt", - "ruestung", - "energie", - "logistik", - "immobilien_bau", - "medien", - "marketing", - "gaming", - "gluecksspiel", - "beratung", - "recht_steuern", - "personal", - "bildung_forschung", - "freizeit", - "oeffentlich_gemeinnuetzig" - ], - "type": "string" - }, - "type": "array" - }, - "deutsch": { - "anyOf": [ - { - "enum": [ - "grundkenntnisse", - "gut", - "fliessend", - "muttersprachlich" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "englisch": { - "anyOf": [ - { - "enum": [ - "grundkenntnisse", - "gut", - "fliessend", - "muttersprachlich" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "gehaltMindestens": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "groessenAusschliessen": { - "items": { - "enum": [ - "klein", - "mittel", - "gross", - "konzern" - ], - "type": "string" - }, - "type": "array" - }, - "groessenNur": { - "items": { - "enum": [ - "klein", - "mittel", - "gross", - "konzern" - ], - "type": "string" - }, - "type": "array" - }, - "orte": { - "items": { - "minLength": 1, - "type": "string" - }, - "type": "array" - }, - "senioritaetMindestens": { - "anyOf": [ - { - "enum": [ - "praktikum", - "einstieg", - "junior", - "mittel", - "senior", - "lead", - "leitung" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "skills": { - "items": { - "minLength": 1, - "type": "string" - }, - "type": "array" - }, - "umfang": { - "anyOf": [ - { - "enum": [ - "vollzeit", - "teilzeit" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "umkreisKm": { - "anyOf": [ - { - "exclusiveMinimum": 0, - "maximum": 9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "unscharf": { - "items": { - "minLength": 1, - "type": "string" - }, - "type": "array" - }, - "vertragsart": { - "anyOf": [ - { - "enum": [ - "befristet", - "unbefristet" - ], - "type": "string" - }, - { - "type": "null" - } - ] - }, - "zeitfensterAb": { - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "senioritaetMindestens", - "umfang", - "vertragsart", - "beschaeftigungsstatus", - "arbeitsort", - "orte", - "skills", - "berufsjahre", - "zeitfensterAb", - "deutsch", - "englisch", - "branchenAusschliessen", - "branchenNur", - "gehaltMindestens", - "groessenAusschliessen", - "groessenNur", - "arbeitgeberAusschliessen", - "arbeitgeberUngeklaert", - "unscharf", - "umkreisKm" - ], - "type": "object" - } - }, - "required": [ - "freitext", - "felder", - "kriterien", - "gewonneneFelder" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "felder": { + "additionalProperties": false, + "properties": { + "ausbildung": { + "default": [], + "items": { + "minLength": 1, + "type": "string" + }, + "type": "array" + }, + "berufsbezeichnung": { + "anyOf": [ + { + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ] + }, + "berufsjahre": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "kenntnisse": { + "default": [], + "items": { + "minLength": 1, + "type": "string" + }, + "type": "array" + }, + "sprachen": { + "default": [], + "items": { + "minLength": 1, + "type": "string" + }, + "type": "array" + }, + "stationen": { + "default": [], + "items": { + "additionalProperties": false, + "properties": { + "arbeitgeber": { + "minLength": 1, + "type": "string" + }, + "beschreibung": { + "type": [ + "string", + "null" + ] + }, + "bis": { + "anyOf": [ + { + "pattern": "^\\d{4}-(0[1-9]|1[0-2])$", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "rolle": { + "minLength": 1, + "type": "string" + }, + "von": { + "pattern": "^\\d{4}-(0[1-9]|1[0-2])$", + "type": "string" + } + }, + "required": [ + "arbeitgeber", + "rolle", + "von", + "bis" + ], + "type": "object" + }, + "type": "array" + }, + "studienabschluss": { + "default": null, + "type": [ + "boolean", + "null" + ] + } + }, + "required": [ + "berufsbezeichnung", + "berufsjahre", + "kenntnisse", + "stationen", + "ausbildung", + "studienabschluss", + "sprachen" + ], + "type": "object" + }, + "freitext": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "freitext", + "felder" + ], + "type": "object" + }, + { + "type": "null" + } +]
- Changed
withdraw_employer_introduction10 fields changed- removed
Output schema / properties / antwortRemoved value: -{ - "anyOf": [ - { - "enum": [ - "ja", - "nein" - ], - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / beantwortetAmRemoved value: -{ - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / cvFassungVomRemoved value: -{ - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / cvVorhandenRemoved value: -{ - "type": "boolean" -} - removed
Output schema / properties / kanalRemoved value: -{ - "anyOf": [ - { - "enum": [ - "mail", - "deck", - "mcp" - ], - "type": "string" - }, - { - "type": "null" - } - ] -} - added
Output schema / properties / standAdded value: +{ + "enum": [ + "offen", + "abgelehnt", + "zugestimmt", + "widerrufen", + "vorgestellt" + ], + "type": "string" +} - removed
Output schema / properties / vorgestelltAmRemoved value: -{ - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / widerrufKanalRemoved value: -{ - "anyOf": [ - { - "enum": [ - "mail", - "deck", - "mcp" - ], - "type": "string" - }, - { - "type": "null" - } - ] -} - removed
Output schema / properties / widerrufenAmRemoved value: -{ - "anyOf": [ - { - "format": "date-time", - "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$", - "type": "string" - }, - { - "type": "null" - } - ] -} - changed
Output schema / requiredPrevious value: -[ - "id", - "arbeitgeber", - "titel", - "standorte", - "url", - "stelleGeloescht", - "gefragtAm", - "antwort", - "beantwortetAm", - "kanal", - "cvFassungVom", - "cvVorhanden", - "widerrufenAm", - "widerrufKanal", - "vorgestelltAm" -]New value: +[ + "id", + "arbeitgeber", + "titel", + "standorte", + "url", + "stelleGeloescht", + "gefragtAm", + "stand" +]
9 tool updates
- First observed
answer_employer_introduction - First observed
draft_job_application - First observed
get_job_matches - First observed
list_employer_introductions - First observed
list_job_applications - First observed
refresh_job_matches - First observed
send_job_application - First observed
upload_resume - First observed
withdraw_employer_introduction
Related MCP Connectors
Job search engine with 500k+ listings across Austria, Germany and Switzerland (alleskralle.com).
Jobs, salaries, net pay and labour-market data for Germany from the JobJump job board.
Your ranked corporate job matches in five European countries, read from your AI assistant.
Your personal career coach. Scanning jobs for you, daily.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceAI Job search over 3.5M+ live US jobs2MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to browse recent job postings from a keyless European (Germany-heavy) job board, keyword-search them client-side by title, company or tag, and fetch full HTML descriptions for individual listings, with pagination and remote-only filtering.159 npmMIT
- AlicenseAqualityAmaintenanceEnables local job-search automation, from finding and scoring postings to drafting tailored CVs and cover letters, compiling PDFs, and tracking applications through your AI assistant.19MIT
- FlicenseNot gradedqualityAmaintenanceEnables searching, filtering, and applying to roughly 4,700 salary-transparent tech jobs across nine job boards and eight countries — plus Swiss all-industry and Singapore IT postings — directly from an AI agent. Returns results as structured JSON, supports salary, remote, tech, and country filters, and tracks which postings have already been applied to so duplicates never reappear.-
Glama MCP Gateway
Add one secure layer between your agents and this server.