Jobero job search
Server Details
Paid job search: 7 matched roles, each with a tailored CV and cover letter.
Glama couldn't complete the latest health check. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.
If you are the author, claim ownership, then add or update a test profile under Admin → Test Profile.
- Status
- Unhealthy
- Uptime
- 25.4% over 58 days
- 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.
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
Paid job search: 7 matched roles, each with a tailored CV and cover letter.
Tailored, graded job applications: a CV, cover letter and form answers built per vacancy.
Find jobs, then get a tailored résumé and cover letter for each one. Tracks your applications too.
1Auto-Apply That Ends on an Interview. Job matches, applications sent on the employer's own hiring system, employer-receipt tracking, per-role resumes, cover letters, interview prep.
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.359 PyPI216MIT
- AlicenseAqualityCmaintenanceTailor your CV to any job posting with ATS keyword scoring and clean PDF/DOCX export.63MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.