Jobero job search
Server Details
Paid job search: 7 matched roles, each with a tailored CV and cover letter.
- Status
- Unhealthy
- Last Tested
- Transport
- Streamable HTTP
- URL
TDQS
Scored across 5 tools
Each tool serves a distinct purpose: pricing, search initiation (quick vs full), status retrieval, and agent registration. The two search tools are explicitly differentiated by speed and output size, so there is no ambiguity.
Most tools follow a verb_noun pattern (get_pricing, get_search_status, register_agent, start_job_search), but 'quick_job_search' uses an adjective_noun construction. The naming is consistent in style (lowercase snake_case) and generally predictable, with only one minor deviation.
Five tools is well-scoped for a focused job search service, covering core operations without unnecessary redundancy. Each tool earns its place.
The tool set covers the essential workflow: registration, pricing, starting searches, and retrieving results. Minor gaps such as profile management or search history are not critical for the core purpose, making it reasonably complete.
Available Tools
5 toolsget_pricingGet pricingARead-onlyIdempotentInspect
What a Jobero search costs and how to pay for it, in card and stablecoin terms. No auth required.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| x402 | Yes | Stablecoin payment terms, null if x402 is not configured |
| packs | Yes | Buyable credit packs |
| service | Yes | Service name |
| products | Yes | The two things Jobero sells |
| card_checkout | Yes | URL for card payment |
| free_searches | Yes | Always false: registration grants no credits |
| credits_are_per_product | Yes | Always true: a quick credit cannot pay for a full search |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, but the description adds valuable behavioral context: no authentication is required, and it specifies the output will cover card and stablecoin terms.
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?
A single sentence that front-loads the purpose ('What a Jobero search costs') and adds one key qualifier. No wasted words.
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 no parameters and an output schema available, the description sufficiently covers the tool's purpose and key usage context. Nothing critical 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 has zero parameters, so the baseline of 4 applies. The description does not need to explain parameter semantics.
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 clearly states the tool provides cost and payment details for a Jobero search, distinguishing it from sibling tools like get_search_status or quick_job_search.
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?
The description clearly implies when to use it (to understand pricing and payment options), and notes 'No auth required' as a usage condition. It does not explicitly exclude alternatives, but siblings are obviously different in function.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_search_statusCheck a searchARead-onlyIdempotentInspect
Progress of a search, and the matched roles with the reason each was picked once it finishes.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | No | The run_id returned by start_job_search or quick_job_search. Omit to get the most recent run for this account |
Output Schema
| Name | Required | Description |
|---|---|---|
| done | No | True once the run has finished, whether or not it found anything |
| plan | No | Which product this run was: one_off or agent_quick |
| error | No | Present only on failure, e.g. "unauthorized" or "payment_required" |
| run_id | No | |
| status | No | running, success, no_matches or failed |
| matches | No | The delivered roles, each with its tailored documents. Absent until the run succeeds |
| message | No | Progress in plain language while running, or what to do about the error |
| started_at | No | |
| finished_at | No | |
| target_jobs | No | How many roles this run is meant to deliver |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, and the description adds useful behavioral context: it reports progress while a search is ongoing and matched roles with reasons once complete. This clarifies the two-phase behavior, which is not deducible from the annotations. It does not describe edge cases like error handling or timeouts, but it adds meaningful transparency.
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 description is extremely brief, but it is not a complete sentence ('Progress of a search, and the matched roles...'). It front-loads the core purpose and uses no unnecessary words. However, the fragmentary grammar and lack of a clear verb slightly reduce clarity, so it is concise but not perfectly structured.
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 tool's simplicity (1 optional parameter, no nested objects, and an output schema), the description adequately conveys the tool's function. Annotations cover read-only and idempotent behavior, and the output schema likely documents return details. The main missing context is a clearer statement of when to call it, but overall it is sufficiently complete for an agent to invoke 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?
Schema coverage for parameters is 100%; the run_id parameter is fully described in the schema including that it is optional and can be omitted for the most recent run. The description text itself adds no parameter-specific meaning beyond that, so it meets the baseline but does not exceed it.
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 title 'Check a search' and description 'Progress of a search, and the matched roles with the reason each was picked once it finishes' clearly identify a resource (search) and action (check/status). It distinguishes itself from sibling tools like start_job_search and quick_job_search by focusing on examining an existing search's progress and results rather than initiating one.
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?
The description does not explicitly state when to use this tool versus alternatives. It does not mention that it should be called after start_job_search or quick_job_search, nor does it exclude other scenarios. The only usage context comes from the schema's parameter description, not from the description itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quick_job_searchQuick job matchAInspect
The single best current role for a profile, with a tailored CV and cover letter, in minutes rather than an hour. $2.50 in USDC. Use this when you want one answer fast; use start_job_search when you want a shortlist of 7 to choose from. With no credit it returns an x402 PaymentRequired; retry the same call with the signed payment in _meta["x402/payment"].
| Name | Required | Description | Default |
|---|---|---|---|
| cv_json | No | The job seeker's existing CV as structured data, in the JSON Resume schema (jsonresume.org): basics, work, education, skills. Prefer this when you hold the CV as data — you do not need to render a file. Supply either cv_json or cv_base64 | |
| cv_type | No | Format of cv_base64: "pdf", "docx" or "txt". Ignored when cv_json is supplied | |
| profile | Yes | Who the job seeker is and what they want. Every field shapes matching, so guessing is worse than asking | |
| cv_base64 | No | The job seeker's existing CV as a file, base64 encoded. PDF, DOCX or plain text, up to 10MB. Use cv_json instead if you have the CV as data rather than a file |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present only on failure, e.g. "unauthorized" or "payment_required" |
| run_id | No | Pass this to get_search_status to poll |
| status | No | Run state at the moment of starting, normally "running" |
| message | No | What happens next and roughly when, or what to do about the error |
| credits_remaining | No | Credits left for this product after the spend |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, idempotentHint=false), the description discloses key behaviors: the $2.50 USDC cost, the x402 PaymentRequired response when credit is insufficient, and the exact retry mechanism via _meta["x402/payment"]. This is meaningful behavioral context not present in the structured metadata.
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 description is three sentences long, front-loaded with the core purpose, then cost, usage alternatives, and payment retry behavior. There is no filler or redundant repetition of schema fields; every sentence adds distinct value.
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 that an output schema exists and the input schema documents the 4 parameters thoroughly, the description covers the remaining contextual needs: cost, speed, choice between tools, and payment failure handling. It is complete for this complexity level.
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 description coverage is 100%, and the schema already provides detailed parameter descriptions for profile, cv_json, cv_base64, and cv_type. The tool description itself adds no parameter-specific semantics beyond referring to 'a profile', so the baseline score of 3 applies.
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 clearly states the tool returns 'the single best current role for a profile, with a tailored CV and cover letter' – a specific verb and resource. It distinguishes itself from the sibling tool start_job_search by contrasting the single result with a 7-option shortlist.
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 usage guidance is given: 'Use this when you want one answer fast; use start_job_search when you want a shortlist of 7 to choose from.' It also provides error-handling instructions for the payment-required case, including how to retry with the signed payment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_agentRegister for an API keyAInspect
Create an agent identity and receive an API key. Registration is free and includes no free searches.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Display name for the account. Optional; the profile name is used on documents regardless | |
| Yes | Email that will own the account and receive results. Must be the job seeker's own address, and must match cfg_email on every later search |
Output Schema
| Name | Required | Description |
|---|---|---|
| next | No | Suggested next call |
| note | No | |
| No | The address the account is registered to | |
| error | No | Present only on failure, e.g. "unauthorized" or "payment_required" |
| api_key | No | Bearer token for every later call. Shown once and never again |
| message | No | What to do about the error, when one is present |
| owner_action_url | No | Present only on account_owned_by_human. A person already owns this address, so no key can be issued here. Send them to this page to create one and paste it back |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, providing minimal safety or mutation context. The description adds useful behavioral information: 'Registration is free and includes no free searches,' and that it creates an identity and returns an API key. Yet it does not disclose potential caveats like rate limits, key activation, or the relationship between the key and later searches.
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 description is two sentences long, front-loaded with the main purpose and followed by a relevant caveat. Every word earns its place—no filler or repetition.
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 simple registration tool with an output schema and full parameter coverage, the description covers the essentials: what it creates, what it returns, and cost-related behavior. It does not need to explain output format given the output schema. A minor gap is the lack of explicit guidance on how the API key integrates with sibling tools, but this is not critical.
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% with descriptive parameter details (email must be job seeker's own address, must match cfg_email later). The description adds no parameter-level meaning, so it does not improve on the schema. Baseline 3 applies.
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 uses a specific verb ('Create') and identifies the resource ('agent identity and receive an API key'). It clearly distinguishes the tool from siblings like search and pricing tools, and the extra detail about free registration and no free searches reinforces its unique purpose.
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?
The context is clear: this tool is for registering to get an API key, distinct from the search and pricing siblings. However, it does not explicitly state when to use it versus alternatives, nor does it provide exclusions or prerequisites beyond the schema's email constraint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_job_searchStart a job searchAInspect
Spend one credit to run a full search: 7 roles matched to the profile, each with a tailored CV and cover letter returned as markdown by get_search_status and emailed as PDFs. Requires an API key. With no credit left it returns an x402 PaymentRequired; retry the same call with the signed payment in _meta["x402/payment"] to pay in USDC and run immediately.
| Name | Required | Description | Default |
|---|---|---|---|
| cv_json | No | The job seeker's existing CV as structured data, in the JSON Resume schema (jsonresume.org): basics, work, education, skills. Prefer this when you hold the CV as data — you do not need to render a file. Supply either cv_json or cv_base64 | |
| cv_type | No | Format of cv_base64: "pdf", "docx" or "txt". Ignored when cv_json is supplied | |
| profile | Yes | Who the job seeker is and what they want. Every field shapes matching, so guessing is worse than asking | |
| cv_base64 | No | The job seeker's existing CV as a file, base64 encoded. PDF, DOCX or plain text, up to 10MB. Use cv_json instead if you have the CV as data rather than a file |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present only on failure, e.g. "unauthorized" or "payment_required" |
| run_id | No | Pass this to get_search_status to poll |
| status | No | Run state at the moment of starting, normally "running" |
| message | No | What happens next and roughly when, or what to do about the error |
| credits_remaining | No | Credits left for this product after the spend |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond the annotations: it consumes a credit, emails PDFs, requires an API key, and returns an x402 PaymentRequired when no credit is left, with a retry payment mechanism. This complements the annotations (readOnlyHint false, openWorldHint true) and explains side effects clearly.
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 description is two sentences, front-loaded with the core action ('Spend one credit to run a full search'), and efficiently conveys cost, output, delivery method, authentication, and error handling. Every phrase contributes information, 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?
For a tool with four parameters (including a complex nested profile object) and an output schema, the description covers the essential aspects: what it does, cost, delivery, API key requirement, and payment retry. It doesn't detail the response structure but defers to get_search_status, which is acceptable. The description is complete enough for an agent to use the tool correctly in most scenarios.
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 schema already provides detailed descriptions for all four parameters (cv_json, cv_type, profile, cv_base64), covering semantics thoroughly. The description adds a small amount of value by mentioning '7 roles matched to the profile' and 'tailored CV and cover letter,' which ties the parameters to expected outcomes, but this is marginal. Baseline 3 is appropriate given 100% schema coverage.
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 clearly states the tool's function: 'run a full search: 7 roles matched to the profile, each with a tailored CV and cover letter.' It uses a specific verb ('run') and identifies the resource (profile, roles). It doesn't explicitly contrast with sibling tools like quick_job_search, but the phrase 'full search' hints at differentiation.
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?
The description provides context on when to use the tool: it requires one credit and an API key, and it describes the payment flow when credits are exhausted. However, it does not explicitly state when to prefer this tool over alternatives like quick_job_search or get_search_status. The guidance is implied through the 'full search' wording but not directly stated.
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.
2 tool updates
- Changed
quick_job_search9 fields changed- changed
Input schema / properties / profile / properties / cfg_industries / descriptionPrevious value: -"Comma-separated industries of interest, e.g. \"fintech, healthtech, climate\". Broad terms work better than niche ones"New value: +"Comma-separated sectors of interest, e.g. \"Music, Fintech, Healthcare\". Sectors only — job functions go in cfg_target_titles" - added
Input schema / properties / profile / properties / cfg_local_countryAdded value: +{ + "description": "ISO country name for where they live, e.g. \"Germany\". Required so local vs remote gating does not guess from a free-text city line", + "type": "string" +} - removed
Input schema / properties / profile / properties / cfg_seniorityRemoved value: -{ - "description": "Target level in the job seeker's own words, e.g. \"senior\", \"staff engineer\" or \"head of engineering\". Drives the seniority band a role must sit in to be delivered", - "type": "string" -} - added
Input schema / properties / profile / properties / cfg_seniority_levelAdded value: +{ + "description": "Seniority band as a single label or a contiguous range, e.g. \"Director\" or \"Manager – Head of Department\". Not a free-text mix of titles and industries", + "type": "string" +} - added
Input schema / properties / profile / properties / cfg_target_titlesAdded value: +{ + "description": "Comma-separated target job titles, e.g. \"Head of Production, COO, Product Director\"", + "type": "string" +} - added
Input schema / properties / profile / properties / cfg_uk_onsiteAdded value: +{ + "default": "no", + "description": "Also include on-site roles in the UK. Defaults to no; UK remote is a separate flag", + "enum": [ + "yes", + "no" + ], + "type": "string" +} - changed
Input schema / properties / profile / properties / cfg_work_style / descriptionPrevious value: -"remote_only rejects anything requiring office attendance; hybrid wants a mix of office and home; mix accepts any arrangement"New value: +"remote_only rejects anything requiring office attendance; mix means local or hybrid near the candidate plus remote in the chosen regions" - changed
Input schema / properties / profile / properties / cfg_work_style / enumPrevious value: -[ - "remote_only", - "mix", - "hybrid" -]New value: +[ + "remote_only", + "mix" +] - changed
Input schema / properties / profile / requiredPrevious value: -[ - "cfg_name", - "cfg_email", - "cfg_location", - "cfg_location_preference", - "cfg_work_style", - "cfg_want_remote_eu", - "cfg_want_remote_uk", - "cfg_want_usa", - "cfg_seniority", - "cfg_industries" -]New value: +[ + "cfg_name", + "cfg_email", + "cfg_location", + "cfg_location_preference", + "cfg_work_style", + "cfg_want_remote_eu", + "cfg_want_remote_uk", + "cfg_want_usa", + "cfg_seniority_level", + "cfg_target_titles", + "cfg_local_country", + "cfg_industries" +]
- Changed
start_job_search9 fields changed- changed
Input schema / properties / profile / properties / cfg_industries / descriptionPrevious value: -"Comma-separated industries of interest, e.g. \"fintech, healthtech, climate\". Broad terms work better than niche ones"New value: +"Comma-separated sectors of interest, e.g. \"Music, Fintech, Healthcare\". Sectors only — job functions go in cfg_target_titles" - added
Input schema / properties / profile / properties / cfg_local_countryAdded value: +{ + "description": "ISO country name for where they live, e.g. \"Germany\". Required so local vs remote gating does not guess from a free-text city line", + "type": "string" +} - removed
Input schema / properties / profile / properties / cfg_seniorityRemoved value: -{ - "description": "Target level in the job seeker's own words, e.g. \"senior\", \"staff engineer\" or \"head of engineering\". Drives the seniority band a role must sit in to be delivered", - "type": "string" -} - added
Input schema / properties / profile / properties / cfg_seniority_levelAdded value: +{ + "description": "Seniority band as a single label or a contiguous range, e.g. \"Director\" or \"Manager – Head of Department\". Not a free-text mix of titles and industries", + "type": "string" +} - added
Input schema / properties / profile / properties / cfg_target_titlesAdded value: +{ + "description": "Comma-separated target job titles, e.g. \"Head of Production, COO, Product Director\"", + "type": "string" +} - added
Input schema / properties / profile / properties / cfg_uk_onsiteAdded value: +{ + "default": "no", + "description": "Also include on-site roles in the UK. Defaults to no; UK remote is a separate flag", + "enum": [ + "yes", + "no" + ], + "type": "string" +} - changed
Input schema / properties / profile / properties / cfg_work_style / descriptionPrevious value: -"remote_only rejects anything requiring office attendance; hybrid wants a mix of office and home; mix accepts any arrangement"New value: +"remote_only rejects anything requiring office attendance; mix means local or hybrid near the candidate plus remote in the chosen regions" - changed
Input schema / properties / profile / properties / cfg_work_style / enumPrevious value: -[ - "remote_only", - "mix", - "hybrid" -]New value: +[ + "remote_only", + "mix" +] - changed
Input schema / properties / profile / requiredPrevious value: -[ - "cfg_name", - "cfg_email", - "cfg_location", - "cfg_location_preference", - "cfg_work_style", - "cfg_want_remote_eu", - "cfg_want_remote_uk", - "cfg_want_usa", - "cfg_seniority", - "cfg_industries" -]New value: +[ + "cfg_name", + "cfg_email", + "cfg_location", + "cfg_location_preference", + "cfg_work_style", + "cfg_want_remote_eu", + "cfg_want_remote_uk", + "cfg_want_usa", + "cfg_seniority_level", + "cfg_target_titles", + "cfg_local_country", + "cfg_industries" +]
3 tool updates
- Changed
quick_job_search5 fields changed- changed
Input schema / properties / cv_base64 / descriptionPrevious value: -"The job seeker's existing CV, base64 encoded. PDF or DOCX, up to 10MB. This is the only source for the tailored CVs, which never invent experience it does not contain"New value: +"The job seeker's existing CV as a file, base64 encoded. PDF, DOCX or plain text, up to 10MB. Use cv_json instead if you have the CV as data rather than a file" - added
Input schema / properties / cv_jsonAdded value: +{ + "description": "The job seeker's existing CV as structured data, in the JSON Resume schema (jsonresume.org): basics, work, education, skills. Prefer this when you hold the CV as data — you do not need to render a file. Supply either cv_json or cv_base64", + "properties": { + "awards": { + "items": { + "properties": { + "awarder": { + "maxLength": 200, + "type": "string" + }, + "date": { + "maxLength": 40, + "type": "string" + }, + "summary": { + "maxLength": 1000, + "type": "string" + }, + "title": { + "maxLength": 200, + "type": "string" + } + }, + "type": "object" + }, + "maxItems": 30, + "type": "array" + }, + "basics": { + "properties": { + "email": { + "maxLength": 200, + "type": "string" + }, + "label": { + "maxLength": 200, + "type": "string" + }, + "location": { + "properties": { + "address": { + "maxLength": 200, + "type": "string" + }, + "city": { + "maxLength": 120, + "type": "string" + }, + "countryCode": { + "maxLength": 10, + "type": "string" + }, + "postalCode": { + "maxLength": 30, + "type": "string" + }, + "region": { + "maxLength": 120, + "type": "string" + } + }, + "type": "object" + }, + "name": { + "maxLength": 120, + "type": "string" + }, + "phone": { + "maxLength": 60, + "type": "string" + }, + "profiles": { + "items": { + "properties": { + "network": { + "maxLength": 80, + "type": "string" + }, + "url": { + "maxLength": 300, + "type": "string" + }, + "username": { + "maxLength": 120, + "type": "string" + } + }, + "type": "object" + }, + "maxItems": 20, + "type": "array" + }, + "summary": { + "maxLength": 4000, + "type": "string" + }, + "url": { + "maxLength": 300, + "type": "string" + } + }, + "type": "object" + }, + "certificates": { + "items": { + "properties": { + "date": { + "maxLength": 40, + "type": "string" + }, + "issuer": { + "maxLength": 200, + "type": "string" + }, + "name": { + "maxLength": 200, + "type": "string" + } + }, + "type": "object" + }, + "maxItems": 30, + "type": "array" + }, + "education": { + "items": { + "properties": { + "area": { + "maxLength": 200, + "type": "string" + }, + "courses": { + "items": { + "maxLength": 2000, + "type": "string" + }, + "maxItems": 50, + "type": "array" + }, + "endDate": { + "maxLength": 40, + "type": "string" + }, + "institution": { + "maxLength": 200, + "type": "string" + }, + "score": { + "maxLength": 60, + "type": "string" + }, + "startDate": { + "maxLength": 40, + "type": "string" + }, + "studyType": { + "maxLength": 100, + "type": "string" + } + }, + "type": "object" + }, + "maxItems": 20, + "type": "array" + }, + "interests": { + "items": { + "properties": { + "keywords": { + "items": { + "maxLength": 80, + "type": "string" + }, + "maxItems": 30, + "type": "array" + }, + "name": { + "maxLength": 120, + "type": "string" + } + }, + "type": "object" + }, + "maxItems": 20, + "type": "array" + }, + "languages": { + "items": { + "properties": { + "fluency": { + "maxLength": 80, + "type": "string" + }, + "language": { + "maxLength": 80, + "type": "string" + } + }, + "type": "object" + }, + "maxItems": 20, + "type": "array" + }, + "projects": { + "items": { + "properties": { + "description": { + "maxLength": 3000, + "type": "string" + }, + "endDate": { + "maxLength": 40, + "type": "string" + }, + "highlights": { + "items": { + "maxLength": 2000, + "type": "string" + }, + "maxItems": 50, + "type": "array" + }, + "keywords": { + "items": { + "maxLength": 80, + "type": "string" + }, + "maxItems": 50, + "type": "array" + }, + "name": { + "maxLength": 200, + "type": "string" + }, + "startDate": { + "maxLength": 40, + "type": "string" + }, + "url": { + "maxLength": 300, + "type": "string" + } + }, + "type": "object" + }, + "maxItems": 30, + "type": "array" + }, + "publications": { + "items": { + "properties": { + "name": { + "maxLength": 300, + "type": "string" + }, + "publisher": { + "maxLength": 200, + "type": "string" + }, + "releaseDate": { + "maxLength": 40, + "type": "string" + }, + "summary": { + "maxLength": 1000, + "type": "string" + } + }, + "type": "object" + }, + "maxItems": 30, + "type": "array" + }, + "skills": { + "items": { + "properties": { + "keywords": { + "items": { + "maxLength": 80, + "type": "string" + }, + "maxItems": 60, + "type": "array" + }, + "level": { + "maxLength": 60, + "type": "string" + }, + "name": { + "maxLength": 120, + "type": "string" + } + }, + "type": "object" + }, + "maxItems": 40, + "type": "array" + }, + "volunteer": { + "items": { + "properties": { + "company": { + "maxLength": 200, + "type": "string" + }, + "endDate": { + "maxLength": 40, + "type": "string" + }, + "highlights": { + "items": { + "maxLength": 2000, + "type": "string" + }, + "maxItems": 50, + "type": "array" + }, + "location": { + "maxLength": 200, + "type": "string" + }, + "name": { + "maxLength": 200, + "type": "string" + }, + "position": { + "maxLength": 200, + "type": "string" + }, + "startDate": { + "maxLength": 40, + "type": "string" + }, + "summary": { + "maxLength": 3000, + "type": "string" + }, + "url": { + "maxLength": 300, + "type": "string" + } + }, + "type": "object" + }, + "maxItems": 20, + "type": "array" + }, + "work": { + "items": { + "properties": { + "company": { + "maxLength": 200, + "type": "string" + }, + "endDate": { + "maxLength": 40, + "type": "string" + }, + "highlights": { + "items": { + "maxLength": 2000, + "type": "string" + }, + "maxItems": 50, + "type": "array" + }, + "location": { + "maxLength": 200, + "type": "string" + }, + "name": { + "maxLength": 200, + "type": "string" + }, + "position": { + "maxLength": 200, + "type": "string" + }, + "startDate": { + "maxLength": 40, + "type": "string" + }, + "summary": { + "maxLength": 3000, + "type": "string" + }, + "url": { + "maxLength": 300, + "type": "string" + } + }, + "type": "object" + }, + "maxItems": 40, + "type": "array" + } + }, + "type": "object" +} - removed
Input schema / properties / cv_type / defaultRemoved value: -"application/pdf" - changed
Input schema / properties / cv_type / descriptionPrevious value: -"MIME type of cv_base64, or just \"pdf\" or \"docx\""New value: +"Format of cv_base64: \"pdf\", \"docx\" or \"txt\". Ignored when cv_json is supplied" - changed
Input schema / requiredPrevious value: -[ - "profile", - "cv_base64" -]New value: +[ + "profile" +]
- Changed
register_agent1 field changed- added
Output schema / properties / owner_action_urlAdded value: +{ + "description": "Present only on account_owned_by_human. A person already owns this address, so no key can be issued here. Send them to this page to create one and paste it back", + "type": "string" +}
- Changed
start_job_search5 fields changed- changed
Input schema / properties / cv_base64 / descriptionPrevious value: -"The job seeker's existing CV, base64 encoded. PDF or DOCX, up to 10MB. This is the only source for the tailored CVs, which never invent experience it does not contain"New value: +"The job seeker's existing CV as a file, base64 encoded. PDF, DOCX or plain text, up to 10MB. Use cv_json instead if you have the CV as data rather than a file" - added
Input schema / properties / cv_jsonAdded value: +{ + "description": "The job seeker's existing CV as structured data, in the JSON Resume schema (jsonresume.org): basics, work, education, skills. Prefer this when you hold the CV as data — you do not need to render a file. Supply either cv_json or cv_base64", + "properties": { + "awards": { + "items": { + "properties": { + "awarder": { + "maxLength": 200, + "type": "string" + }, + "date": { + "maxLength": 40, + "type": "string" + }, + "summary": { + "maxLength": 1000, + "type": "string" + }, + "title": { + "maxLength": 200, + "type": "string" + } + }, + "type": "object" + }, + "maxItems": 30, + "type": "array" + }, + "basics": { + "properties": { + "email": { + "maxLength": 200, + "type": "string" + }, + "label": { + "maxLength": 200, + "type": "string" + }, + "location": { + "properties": { + "address": { + "maxLength": 200, + "type": "string" + }, + "city": { + "maxLength": 120, + "type": "string" + }, + "countryCode": { + "maxLength": 10, + "type": "string" + }, + "postalCode": { + "maxLength": 30, + "type": "string" + }, + "region": { + "maxLength": 120, + "type": "string" + } + }, + "type": "object" + }, + "name": { + "maxLength": 120, + "type": "string" + }, + "phone": { + "maxLength": 60, + "type": "string" + }, + "profiles": { + "items": { + "properties": { + "network": { + "maxLength": 80, + "type": "string" + }, + "url": { + "maxLength": 300, + "type": "string" + }, + "username": { + "maxLength": 120, + "type": "string" + } + }, + "type": "object" + }, + "maxItems": 20, + "type": "array" + }, + "summary": { + "maxLength": 4000, + "type": "string" + }, + "url": { + "maxLength": 300, + "type": "string" + } + }, + "type": "object" + }, + "certificates": { + "items": { + "properties": { + "date": { + "maxLength": 40, + "type": "string" + }, + "issuer": { + "maxLength": 200, + "type": "string" + }, + "name": { + "maxLength": 200, + "type": "string" + } + }, + "type": "object" + }, + "maxItems": 30, + "type": "array" + }, + "education": { + "items": { + "properties": { + "area": { + "maxLength": 200, + "type": "string" + }, + "courses": { + "items": { + "maxLength": 2000, + "type": "string" + }, + "maxItems": 50, + "type": "array" + }, + "endDate": { + "maxLength": 40, + "type": "string" + }, + "institution": { + "maxLength": 200, + "type": "string" + }, + "score": { + "maxLength": 60, + "type": "string" + }, + "startDate": { + "maxLength": 40, + "type": "string" + }, + "studyType": { + "maxLength": 100, + "type": "string" + } + }, + "type": "object" + }, + "maxItems": 20, + "type": "array" + }, + "interests": { + "items": { + "properties": { + "keywords": { + "items": { + "maxLength": 80, + "type": "string" + }, + "maxItems": 30, + "type": "array" + }, + "name": { + "maxLength": 120, + "type": "string" + } + }, + "type": "object" + }, + "maxItems": 20, + "type": "array" + }, + "languages": { + "items": { + "properties": { + "fluency": { + "maxLength": 80, + "type": "string" + }, + "language": { + "maxLength": 80, + "type": "string" + } + }, + "type": "object" + }, + "maxItems": 20, + "type": "array" + }, + "projects": { + "items": { + "properties": { + "description": { + "maxLength": 3000, + "type": "string" + }, + "endDate": { + "maxLength": 40, + "type": "string" + }, + "highlights": { + "items": { + "maxLength": 2000, + "type": "string" + }, + "maxItems": 50, + "type": "array" + }, + "keywords": { + "items": { + "maxLength": 80, + "type": "string" + }, + "maxItems": 50, + "type": "array" + }, + "name": { + "maxLength": 200, + "type": "string" + }, + "startDate": { + "maxLength": 40, + "type": "string" + }, + "url": { + "maxLength": 300, + "type": "string" + } + }, + "type": "object" + }, + "maxItems": 30, + "type": "array" + }, + "publications": { + "items": { + "properties": { + "name": { + "maxLength": 300, + "type": "string" + }, + "publisher": { + "maxLength": 200, + "type": "string" + }, + "releaseDate": { + "maxLength": 40, + "type": "string" + }, + "summary": { + "maxLength": 1000, + "type": "string" + } + }, + "type": "object" + }, + "maxItems": 30, + "type": "array" + }, + "skills": { + "items": { + "properties": { + "keywords": { + "items": { + "maxLength": 80, + "type": "string" + }, + "maxItems": 60, + "type": "array" + }, + "level": { + "maxLength": 60, + "type": "string" + }, + "name": { + "maxLength": 120, + "type": "string" + } + }, + "type": "object" + }, + "maxItems": 40, + "type": "array" + }, + "volunteer": { + "items": { + "properties": { + "company": { + "maxLength": 200, + "type": "string" + }, + "endDate": { + "maxLength": 40, + "type": "string" + }, + "highlights": { + "items": { + "maxLength": 2000, + "type": "string" + }, + "maxItems": 50, + "type": "array" + }, + "location": { + "maxLength": 200, + "type": "string" + }, + "name": { + "maxLength": 200, + "type": "string" + }, + "position": { + "maxLength": 200, + "type": "string" + }, + "startDate": { + "maxLength": 40, + "type": "string" + }, + "summary": { + "maxLength": 3000, + "type": "string" + }, + "url": { + "maxLength": 300, + "type": "string" + } + }, + "type": "object" + }, + "maxItems": 20, + "type": "array" + }, + "work": { + "items": { + "properties": { + "company": { + "maxLength": 200, + "type": "string" + }, + "endDate": { + "maxLength": 40, + "type": "string" + }, + "highlights": { + "items": { + "maxLength": 2000, + "type": "string" + }, + "maxItems": 50, + "type": "array" + }, + "location": { + "maxLength": 200, + "type": "string" + }, + "name": { + "maxLength": 200, + "type": "string" + }, + "position": { + "maxLength": 200, + "type": "string" + }, + "startDate": { + "maxLength": 40, + "type": "string" + }, + "summary": { + "maxLength": 3000, + "type": "string" + }, + "url": { + "maxLength": 300, + "type": "string" + } + }, + "type": "object" + }, + "maxItems": 40, + "type": "array" + } + }, + "type": "object" +} - removed
Input schema / properties / cv_type / defaultRemoved value: -"application/pdf" - changed
Input schema / properties / cv_type / descriptionPrevious value: -"MIME type of cv_base64, or just \"pdf\" or \"docx\""New value: +"Format of cv_base64: \"pdf\", \"docx\" or \"txt\". Ignored when cv_json is supplied" - changed
Input schema / requiredPrevious value: -[ - "profile", - "cv_base64" -]New value: +[ + "profile" +]
5 tool updates
- Changed
get_pricing1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "card_checkout": { + "description": "URL for card payment", + "type": "string" + }, + "credits_are_per_product": { + "description": "Always true: a quick credit cannot pay for a full search", + "type": "boolean" + }, + "free_searches": { + "description": "Always false: registration grants no credits", + "type": "boolean" + }, + "packs": { + "description": "Buyable credit packs", + "items": { + "additionalProperties": false, + "properties": { + "buys": { + "description": "Which product these credits are valid for: search or quick", + "type": "string" + }, + "credits": { + "description": "How many runs the pack buys", + "type": "number" + }, + "description": { + "type": "string" + }, + "pack": { + "description": "Pack code to pass to checkout or to pay for over x402", + "type": "string" + }, + "price": { + "description": "Human-readable price", + "type": "string" + } + }, + "required": [ + "pack", + "credits", + "price", + "buys", + "description" + ], + "type": "object" + }, + "type": "array" + }, + "products": { + "description": "The two things Jobero sells", + "items": { + "additionalProperties": false, + "properties": { + "price": { + "description": "Human-readable price", + "type": "string" + }, + "tool": { + "description": "Which tool buys this product", + "type": "string" + }, + "typical_time": { + "description": "How long delivery usually takes", + "type": "string" + }, + "unit": { + "description": "What one purchase delivers", + "type": "string" + } + }, + "required": [ + "tool", + "unit", + "price", + "typical_time" + ], + "type": "object" + }, + "type": "array" + }, + "service": { + "description": "Service name", + "type": "string" + }, + "x402": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "asset": { + "description": "Token accepted, USDC", + "type": "string" + }, + "how": { + "description": "How to complete the payment loop", + "type": "string" + }, + "network": { + "description": "Chain the payment settles on", + "type": "string" + }, + "pay_to": { + "description": "Receiving address", + "type": "string" + }, + "prices": { + "additionalProperties": { + "type": "string" + }, + "description": "Pack code to atomic USDC amount", + "propertyNames": { + "type": "string" + }, + "type": "object" + } + }, + "required": [ + "network", + "asset", + "pay_to", + "prices", + "how" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Stablecoin payment terms, null if x402 is not configured" + } + }, + "required": [ + "service", + "products", + "packs", + "credits_are_per_product", + "card_checkout", + "x402", + "free_searches" + ], + "type": "object" +}
- Changed
get_search_status2 fields changed- changed
Input schema / properties / run_id / descriptionPrevious value: -"Omit to get the most recent run for this account"New value: +"The run_id returned by start_job_search or quick_job_search. Omit to get the most recent run for this account" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "done": { + "description": "True once the run has finished, whether or not it found anything", + "type": "boolean" + }, + "error": { + "description": "Present only on failure, e.g. \"unauthorized\" or \"payment_required\"", + "type": "string" + }, + "finished_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "matches": { + "description": "The delivered roles, each with its tailored documents. Absent until the run succeeds", + "items": { + "additionalProperties": false, + "properties": { + "company": { + "description": "Hiring company", + "type": "string" + }, + "documents": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "cover_letter_markdown": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "A cover letter written for this specific role, as markdown" + }, + "cv_markdown": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The CV rewritten for this specific role, as markdown" + } + }, + "required": [ + "cv_markdown", + "cover_letter_markdown" + ], + "type": "object" + }, + { + "type": "null" + } + ], + "description": "The tailored documents for this role. Null while the run is still going, and on older runs that predate document return" + }, + "match_reason": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Why this role was picked for this profile" + }, + "rank": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Position in the delivered set, 1 is the strongest match" + }, + "score": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "description": "Fit score out of 100, higher is better" + }, + "title": { + "description": "Job title as advertised", + "type": "string" + }, + "url": { + "description": "Link to the live posting", + "type": "string" + } + }, + "required": [ + "title", + "company", + "url" + ], + "type": "object" + }, + "type": "array" + }, + "message": { + "description": "Progress in plain language while running, or what to do about the error", + "type": "string" + }, + "plan": { + "description": "Which product this run was: one_off or agent_quick", + "type": "string" + }, + "run_id": { + "type": "string" + }, + "started_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "status": { + "description": "running, success, no_matches or failed", + "type": "string" + }, + "target_jobs": { + "description": "How many roles this run is meant to deliver", + "type": "number" + } + }, + "type": "object" +}
- Changed
quick_job_search19 fields changed- changed
Input schema / properties / cv_base64 / descriptionPrevious value: -"The job seeker CV as base64, PDF or DOCX"New value: +"The job seeker's existing CV, base64 encoded. PDF or DOCX, up to 10MB. This is the only source for the tailored CVs, which never invent experience it does not contain" - changed
Input schema / properties / cv_type / descriptionPrevious value: -"pdf, docx, or the MIME type"New value: +"MIME type of cv_base64, or just \"pdf\" or \"docx\"" - added
Input schema / properties / profile / descriptionAdded value: +"Who the job seeker is and what they want. Every field shapes matching, so guessing is worse than asking" - changed
Input schema / properties / profile / properties / cfg_additional_context / descriptionPrevious value: -"Anything else that shapes the search"New value: +"Anything else that shapes the search and is not covered by the other fields: visa position, notice period, salary floor, companies to avoid" - added
Input schema / properties / profile / properties / cfg_advisory_open / descriptionAdded value: +"Whether to include advisory, fractional, board and consulting roles alongside employment" - changed
Input schema / properties / profile / properties / cfg_email / descriptionPrevious value: -"Must match the email the API key is registered to"New value: +"Must match the email the API key is registered to. Results are emailed here as well as returned by get_search_status" - changed
Input schema / properties / profile / properties / cfg_industries / descriptionPrevious value: -"Comma-separated industries of interest"New value: +"Comma-separated industries of interest, e.g. \"fintech, healthtech, climate\". Broad terms work better than niche ones" - added
Input schema / properties / profile / properties / cfg_languages / descriptionAdded value: +"Working languages, lower case, e.g. [\"english\", \"german\"]. Roles requiring a language not listed here are dropped" - changed
Input schema / properties / profile / properties / cfg_location / descriptionPrevious value: -"Where they live, e.g. \"Limassol, Cyprus\""New value: +"Where the job seeker actually lives, e.g. \"Limassol, Cyprus\". Used for commute and time zone reasoning, not as a filter on its own" - changed
Input schema / properties / profile / properties / cfg_location_preference / descriptionPrevious value: -"Prose description of acceptable locations"New value: +"Prose description of acceptable locations, e.g. \"anywhere remote in Europe, or on-site in Berlin\". Free text; matching reads it as intent rather than parsing it" - changed
Input schema / properties / profile / properties / cfg_name / descriptionPrevious value: -"Full name of the job seeker"New value: +"Full name of the job seeker, as it should appear on the tailored CV" - changed
Input schema / properties / profile / properties / cfg_not_interested_in / descriptionPrevious value: -"Comma-separated industries to exclude"New value: +"Comma-separated industries or employer types to exclude, e.g. \"gambling, defence\". Applied as a hard filter" - changed
Input schema / properties / profile / properties / cfg_seniority / descriptionPrevious value: -"Target level, e.g. \"senior\" or \"head of engineering\""New value: +"Target level in the job seeker's own words, e.g. \"senior\", \"staff engineer\" or \"head of engineering\". Drives the seniority band a role must sit in to be delivered" - added
Input schema / properties / profile / properties / cfg_share_with_employers / descriptionAdded value: +"Consent to share the profile with employers. \"no\" keeps the search entirely one-way" - added
Input schema / properties / profile / properties / cfg_want_remote_eu / descriptionAdded value: +"Include roles advertised as remote within the EU. Set independently of the other regions; several can be yes" - added
Input schema / properties / profile / properties / cfg_want_remote_uk / descriptionAdded value: +"Include roles advertised as remote within the UK" - added
Input schema / properties / profile / properties / cfg_want_usa / descriptionAdded value: +"Include roles in the USA. Say no unless the job seeker can legally work there or the role is genuinely remote-worldwide" - added
Input schema / properties / profile / properties / cfg_work_style / descriptionAdded value: +"remote_only rejects anything requiring office attendance; hybrid wants a mix of office and home; mix accepts any arrangement" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "credits_remaining": { + "description": "Credits left for this product after the spend", + "type": "number" + }, + "error": { + "description": "Present only on failure, e.g. \"unauthorized\" or \"payment_required\"", + "type": "string" + }, + "message": { + "description": "What happens next and roughly when, or what to do about the error", + "type": "string" + }, + "run_id": { + "description": "Pass this to get_search_status to poll", + "type": "string" + }, + "status": { + "description": "Run state at the moment of starting, normally \"running\"", + "type": "string" + } + }, + "type": "object" +}
- Changed
register_agent3 fields changed- changed
Input schema / properties / email / descriptionPrevious value: -"Email that will own the account and receive results"New value: +"Email that will own the account and receive results. Must be the job seeker's own address, and must match cfg_email on every later search" - added
Input schema / properties / name / descriptionAdded value: +"Display name for the account. Optional; the profile name is used on documents regardless" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "api_key": { + "description": "Bearer token for every later call. Shown once and never again", + "type": "string" + }, + "email": { + "description": "The address the account is registered to", + "type": "string" + }, + "error": { + "description": "Present only on failure, e.g. \"unauthorized\" or \"payment_required\"", + "type": "string" + }, + "message": { + "description": "What to do about the error, when one is present", + "type": "string" + }, + "next": { + "description": "Suggested next call", + "type": "string" + }, + "note": { + "type": "string" + } + }, + "type": "object" +}
- Changed
start_job_search19 fields changed- changed
Input schema / properties / cv_base64 / descriptionPrevious value: -"The job seeker CV as base64, PDF or DOCX"New value: +"The job seeker's existing CV, base64 encoded. PDF or DOCX, up to 10MB. This is the only source for the tailored CVs, which never invent experience it does not contain" - changed
Input schema / properties / cv_type / descriptionPrevious value: -"pdf, docx, or the MIME type"New value: +"MIME type of cv_base64, or just \"pdf\" or \"docx\"" - added
Input schema / properties / profile / descriptionAdded value: +"Who the job seeker is and what they want. Every field shapes matching, so guessing is worse than asking" - changed
Input schema / properties / profile / properties / cfg_additional_context / descriptionPrevious value: -"Anything else that shapes the search"New value: +"Anything else that shapes the search and is not covered by the other fields: visa position, notice period, salary floor, companies to avoid" - added
Input schema / properties / profile / properties / cfg_advisory_open / descriptionAdded value: +"Whether to include advisory, fractional, board and consulting roles alongside employment" - changed
Input schema / properties / profile / properties / cfg_email / descriptionPrevious value: -"Must match the email the API key is registered to"New value: +"Must match the email the API key is registered to. Results are emailed here as well as returned by get_search_status" - changed
Input schema / properties / profile / properties / cfg_industries / descriptionPrevious value: -"Comma-separated industries of interest"New value: +"Comma-separated industries of interest, e.g. \"fintech, healthtech, climate\". Broad terms work better than niche ones" - added
Input schema / properties / profile / properties / cfg_languages / descriptionAdded value: +"Working languages, lower case, e.g. [\"english\", \"german\"]. Roles requiring a language not listed here are dropped" - changed
Input schema / properties / profile / properties / cfg_location / descriptionPrevious value: -"Where they live, e.g. \"Limassol, Cyprus\""New value: +"Where the job seeker actually lives, e.g. \"Limassol, Cyprus\". Used for commute and time zone reasoning, not as a filter on its own" - changed
Input schema / properties / profile / properties / cfg_location_preference / descriptionPrevious value: -"Prose description of acceptable locations"New value: +"Prose description of acceptable locations, e.g. \"anywhere remote in Europe, or on-site in Berlin\". Free text; matching reads it as intent rather than parsing it" - changed
Input schema / properties / profile / properties / cfg_name / descriptionPrevious value: -"Full name of the job seeker"New value: +"Full name of the job seeker, as it should appear on the tailored CV" - changed
Input schema / properties / profile / properties / cfg_not_interested_in / descriptionPrevious value: -"Comma-separated industries to exclude"New value: +"Comma-separated industries or employer types to exclude, e.g. \"gambling, defence\". Applied as a hard filter" - changed
Input schema / properties / profile / properties / cfg_seniority / descriptionPrevious value: -"Target level, e.g. \"senior\" or \"head of engineering\""New value: +"Target level in the job seeker's own words, e.g. \"senior\", \"staff engineer\" or \"head of engineering\". Drives the seniority band a role must sit in to be delivered" - added
Input schema / properties / profile / properties / cfg_share_with_employers / descriptionAdded value: +"Consent to share the profile with employers. \"no\" keeps the search entirely one-way" - added
Input schema / properties / profile / properties / cfg_want_remote_eu / descriptionAdded value: +"Include roles advertised as remote within the EU. Set independently of the other regions; several can be yes" - added
Input schema / properties / profile / properties / cfg_want_remote_uk / descriptionAdded value: +"Include roles advertised as remote within the UK" - added
Input schema / properties / profile / properties / cfg_want_usa / descriptionAdded value: +"Include roles in the USA. Say no unless the job seeker can legally work there or the role is genuinely remote-worldwide" - added
Input schema / properties / profile / properties / cfg_work_style / descriptionAdded value: +"remote_only rejects anything requiring office attendance; hybrid wants a mix of office and home; mix accepts any arrangement" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "credits_remaining": { + "description": "Credits left for this product after the spend", + "type": "number" + }, + "error": { + "description": "Present only on failure, e.g. \"unauthorized\" or \"payment_required\"", + "type": "string" + }, + "message": { + "description": "What happens next and roughly when, or what to do about the error", + "type": "string" + }, + "run_id": { + "description": "Pass this to get_search_status to poll", + "type": "string" + }, + "status": { + "description": "Run state at the moment of starting, normally \"running\"", + "type": "string" + } + }, + "type": "object" +}
1 tool update
- Added
quick_job_search
4 tool updates
- First observed
get_pricing - First observed
get_search_status - First observed
register_agent - First observed
start_job_search
Related MCP Connectors
Tailored, graded job applications: a CV, cover letter and form answers built per vacancy.
The serious candidate's edge: ATS scoring, per-role resumes, interview prep, applications sent.
Search jobs, tailor your resume, write cover letters, and file applications for you.
Auto-apply to jobs: matches your CV, tailors a fresh CV per posting, and applies for you.
Related MCP Servers
- 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 gradedqualityDmaintenanceAI-powered job matching and CV generation tool that searches jobs on LinkedIn and Seek, analyzes CV fit, and generates tailored CVs.-
- AlicenseAqualityAmaintenanceScans 130+ company careers pages and scores every role against your resume with an LLM (0–100), surfacing top matches. Drafts tailored cover letters and resume bullets for any job on demand, and exports scan results to CSV.3206MIT
- AlicenseAqualityAmaintenanceTailor your CV to any job posting with ATS keyword scoring and clean PDF/DOCX export.63MIT