accueil / serveurs / Recherche & Web / io.github.worklittle/jobs
io.github.worklittle/jobs
serveur MCP (Model Context Protocol) · worklittle-jobs-mcp 3.0
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que io.github.worklittle/jobs est sûr ?
Au dernier audit MCP Hub, le serveur MCP « io.github.worklittle/jobs » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 19 outils
- apply_for_job≈ 336 tokens
Jobs — Apply to a job for the user: Worklittle fills out and submits the application in a browser. Pass job_id from search_jobs. For a Worklittle-hosted posting also include name, email and resume. It submits by default; pass auto_submit false when the user wants to review first, then show them the answers from check_application_status and send it with submit_application only after they say so.
Paramètres, retour & exemple (4)
Paramètresjob_id· string · requis
Worklittle job id from search_jobs / get_job_details.auto_submit· boolean · optionnel
Default true: submit when the form is complete. false: stop at review (status awaiting_submit) so the user can check every answer; send it with submit_application.resume_html· string · optionnel
Optional resume HTML to seed.cover_letter_html· string · optionnel
Optional cover letter HTML to seed.
Exemple d'appel{"name": "apply_for_job", "arguments": {"job_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - check_application_status≈ 174 tokens
Jobs — Check an application Worklittle is filling out: its status, which form fields are filled, and a live view link. Only the status completed means it was submitted.
Paramètres, retour & exemple (1)
Paramètressession_id· string · requis
Exemple d'appel{"name": "check_application_status", "arguments": {"session_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - delete_my_resume≈ 138 tokens
Jobs — Delete the user's saved resume from their profile.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "delete_my_resume", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"ok": true, "deleted": true}} - get_job_details≈ 374 tokens
Jobs — Fetch detailed information about a specific job, including full responsibilities, qualifications, and company details. Pass job_id from search_jobs when you have one. If the user asks for full details of a role without an id (e.g. the first software engineer job in Austin), pass query and optional location instead — the tool loads the first matching live listing.
Paramètres, retour & exemple (4)
Paramètresquery· string · optionnel
Role/title search used when job_id is missing (picks the first live match).job_id· string · optionnel
The job ID from a previous search_jobs result when available.summary· boolean · optionnel
If true, request first-time AI generation via GET /jobs/:id?summary=true. Default is raw plus cached AI only.location· string · optionnel
Optional location substring when resolving details by query.
Exemple d'appel{"name": "get_job_details", "arguments": {"query": "texte", "job_id": "texte", "summary": true, "location": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"id": "texte", "url": "texte", "title": "texte", "location": "texte", "description": "texte", "company_name": "texte"}} - get_market_overview≈ 329 tokens
Jobs — Returns aggregate job-market statistics from Worklittle. Call with no args for the full indexed market (counts, workplace mix, top hiring companies). When the user names a role and/or city (e.g. product managers in San Francisco), pass query and location. The filtered slice includes match count, top companies in the sample, and salary signals from listings that publish pay.
Paramètres, retour & exemple (3)
Paramètresquery· string · optionnel
Role or title filter for a market slice (e.g. product manager).location· string · optionnel
Location substring for a market slice (e.g. San Francisco).workplace_type· string · optionnel · remote | hybrid | on_site
Optional workplace filter for the slice.
Exemple d'appel{"name": "get_market_overview", "arguments": {"query": "texte", "location": "texte", "workplace_type": "remote"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"total_jobs": 1, "top_companies": []}} - get_my_profile≈ 153 tokens
Jobs — Get the user's Worklittle profile (name, location, contact details and job preferences). If they have not linked their account it returns connected false; use get_my_resume or apply_for_job to sign them in.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "get_my_profile", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_my_resume≈ 154 tokens
Jobs — Get the user's saved resume: its status (ready, processing or missing) and, when ready, the resume text and profile details read from it. Use it to tailor advice or an application to the user's real experience.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "get_my_resume", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_active_applications≈ 155 tokens
Jobs — List the user's applications that Worklittle is filling out right now (queued, running, or waiting on the user), with job_id and session_id. Use it to find which one to stop or check.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "list_active_applications", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_recent_chats≈ 164 tokens
Jobs — List the user's recent Worklittle chats (title and status) for the app sidebar.
Paramètres, retour & exemple (2)
Paramètreslimit· number · optionnel
Max chats (default 20, max 50).cursor· string · optionnel
next_cursor from the previous page.
Exemple d'appel{"name": "list_recent_chats", "arguments": {"limit": 1, "cursor": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - logout_connected_account≈ 122 tokens
Jobs — Sign the user out of Worklittle in this app.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "logout_connected_account", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - mint_mcp_ui_embed_session≈ 134 tokens
Jobs — Create a sign-in link so the Worklittle app can open the user's chats on worklittle.com.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "mint_mcp_ui_embed_session", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - save_about_me≈ 264 tokens
Jobs — Save standing facts about the user that Worklittle's Apply with AI uses on every future application: work authorization and visa sponsorship by country, relocation, notice period, desired salary, languages, qualifications, who referred them, or other standing answers they ask applications to use. Stored as the 'More about you' text in their Settings. Pass the complete text to keep (read get_my_profile first and merge with what is there, so nothing is lost). Write it in the user's words; never invent facts.
Paramètres, retour & exemple (1)
Paramètresabout_me· string · requis
The full More about you text to store (replaces the old text).
Exemple d'appel{"name": "save_about_me", "arguments": {"about_me": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - search_companies≈ 295 tokens
Jobs — Search the Worklittle market company index by name or slug (ranked typeahead). Returns id, name, slug, logo_url, and enrichment fields for employers with open jobs. Use when the user names an employer and you need a real slug/id for search_jobs company= filters, job alerts, or automations. If zero hits, try alternate spellings or related employer names from further search_companies calls — do not invent company ids or slugs. If still empty, tell the user that employer is not in the index yet and offer any close matches you found.
Paramètres, retour & exemple (2)
Paramètresq· string · requis
Company name or slug query (min 2 characters, max 80).limit· number · optionnel
Max results to return. Default 5, max 20.
Exemple d'appel{"name": "search_companies", "arguments": {"q": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - search_jobs≈ 2432 tokens
Jobs — Opens the Worklittle jobs MAP for a place and an optional role. This is a map query, not a list of jobs: the map recenters on the place and shows jobs there, so send the place and the role as SEPARATE fields. Never write 'product manager in San Francisco' as one query. PLACE: always pass near_lat + near_lng (the city's coordinates, which you know) and location as the display name (e.g. 'San Francisco, CA'). radius_km 25-50 for a city. If the user names no place, omit all place fields; the map opens at the user's approximate (IP-based) area. When a nearby search runs short, results widen to the rest of the country and then worldwide (search.scope says which: near, country or world), so say where the roles are. ROLE: query holds only the job title text (e.g. 'product manager') and may be omitted for 'any job'. Search Worklittle job listings. People say Worklittle plus a role, city, company, or filters (or just 'jobs') — they will not name this tool. Call it whenever they want Worklittle jobs. Search by keyword, company, location, job type, seniority, or recency. Use for ANY industry (retail, finance, healthcare, tech, etc.). Search matches title and filter text (substring / FTS), not vector embeddings. Role / title text goes in query (+ optional keywords). The API matches job TITLE substrings only for that text — it does not mix company names into the same field. Preserve negative title terms with a leading dash, e.g. 'software engineer, -senior' excludes titles containing senior. Use company for employer slugs (include or exclude). Never concatenate many job titles into one query unless the user supplied comma-separated roles. Do not add seniority_level, stacks, or resume-derived terms unless they asked. Omit seniority_level unless they explicitly name a level as an inclusion filter (never infer from profile). Expand abbreviations only; umbrella phrases use neutral roles and/or company slugs. Umbrella or vague phrases ('big tech', 'FAANG', 'top retailers'): interpret intent, then one search_jobs with comma-separated company slugs and/or a broad role query — prefer one API call over many. company MUST be employer slug(s): bare slugs include (OR), e.g. meta,google,apple. Prefix a slug with '-' to exclude, e.g. -lucid-motors,-tesla. Same leading-dash rule as title negatives, but in company not query. Expand 'no car companies' / 'don't show Lucid' into -slug tokens. Never pass display names as query. If unsure of slug, try lowercase hyphenated brand. Add skills or stack to query/keywords only when the user mentioned them — not from profile by default. When an include company filter returns 0 results, try a broader query (drop include company, use role keywords) before telling the user nothing matched. Pass cursor from a previous response to paginate. Search is anonymous. Do not call get_account, apply, or ask the user to Connect to search or skip. Connect / OAuth is only when they apply. After the map renders, briefly say what was found and where (listed pay shows on each job). For visa / H-1B: set visa_sponsorship to 'yes' (plus optional query). Postings must be explicitly tagged. When visa_sponsorship is set and posted_within_days is omitted, do not apply the default 7-day recency cutoff — tagged visa roles are sparse. For regional / nearby intent: near_lat, near_lng, radius_km (e.g. 50–65). Prefer this over the location substring when coordinates are known. For two or more metros in one user message (e.g. SF or NYC), pass location_or as comma-separated place names — one API request matches ANY listed place. Do not use near_* for multi-metro; use location_or or location with 'or' between cities. Recency: set posted_within_days from the user's words — today/just posted → 1; past few days → 3; this week → 7; past two weeks → 14; this month → 30. Omit when they did not mention timing (defaults to the last 7 days, the map's default). Set 0 only when they want any age / no date limit. Never put today/new/this week into query. Filters are the same as the map's filter chips, and nothing else: posted_within_days (Past 24 hours / 3 / 7 / 14 / 30 days), seniority_level (Experience: intern, entry/new grad, senior, manager, director/executive), employment_type (Type: full-time, part-time, contract), and visa_sponsorship (Visa). Prefer no filters: use one only when the user explicitly asks for it, because each filter shrinks the results a lot. There is no salary, remote/hybrid, or benefits filter. If the user asks to filter by salary, search without it and say they can see salaries on the map (listed pay shows on each job).
Paramètres, retour & exemple (18)
Paramètreslimit· number · optionnel
Number of results to return. Default 10, max 50.query· string · optionnel
Job title or role phrase (merged with keywords). Sent as API title= — matches job TITLE text only, separate from company. Preserve negative title terms with a leading dash, e.g. 'product manager, software engineer, -senior'. If they want any role / all jobs, omit. Never merge many titles into one string unless the user supplied comma-separated roles. Expand shorthand (swe, pm, sre) when applicable.cursor· string · optionnel
Pagination cursor from a previous search_jobs response to fetch the next page.company· string · optionnel
Employer slug(s): bare slug or comma-separated OR include (e.g. meta,google,apple). Prefix with '-' to exclude (e.g. -lucid-motors,-tesla). Mix allowed (meta,google,-amazon). Lowercase hyphenated. Mid-slug hyphens are part of the slug; only a leading '-' excludes. If include-only returns 0, retry without include slugs.country· string · optionnel
ISO 3166-1 alpha-2 country filter (e.g. US, GB, DE). Returns jobs in that country or workplace_type remote.keywords· string · optionnel
Only if the user named skills or stacks in this turn. Omit by default — do not pull from resume or profile.location· string · optionnel
Display name of the place (e.g. 'San Francisco, CA'). When near_lat/near_lng are set this is only a label and is NOT used as a text filter. Otherwise a text filter on job location strings (partial match). For metro-area or 'near me' intent, prefer near_lat + near_lng + radius_km (50–65 km typical) so results are not tied to one city spelling. Use location only when you cannot geocode, or as a fallback. Avoid long 'City, Country' strings; use country for country filters. For multiple metros, prefer location_or.near_lat· number · optionnel
Latitude for distance search. Use with near_lng. Typical source: browser geolocation or geocoded city.near_lng· number · optionnel
Longitude for distance search. Required with near_lat.radius_km· number · optionnel
Radius in kilometers around near_lat/near_lng. Default 50, max 500.exclude_ids· string · optionnel
Comma-separated job IDs to exclude (e.g. postings already shown in the conversation).location_or· string · optionnel
Comma-separated place substrings when the user names two or more metros at once (e.g. San Francisco,New York). The API returns jobs whose location text matches ANY term. Mutually exclusive with distance search (near_lat/near_lng).exclude_remote· boolean · optionnel
When using near_lat/near_lng: false includes remote-only jobs; true (default) excludes them so results are geographically local.employment_type· string · optionnel · full_time | part_time | contract | internship | temporary
Type of employment contract.seniority_level· string · optionnel · new_grad | entry | mid | senior | staff | manager | director | executive
Omit unless the user explicitly asked for a band. Never infer from profile. Enum when set:visa_sponsorship· string · optionnel · yes | no
Filter by explicit visa sponsorship text in the posting (AI-extracted). Use 'yes' for jobs that sponsor visas (H-1B, etc.). Use 'no' only when the user wants roles that explicitly state no sponsorship. Omit when not relevant.posted_within_days· number · optionnel
Days of posted-date lookback. Omit → default 7 (map default). 0 → no cutoff (any age). 1 → today/last 24h. 7 → this week. Any positive integer allowed (e.g. 90, 365). Never encode recency words in query.description_language· string · optionnel
ISO 639-1 code for the language of the job posting body. Examples: en, es, de, fr, pt.
Exemple d'appel{"name": "search_jobs", "arguments": {"limit": 1, "query": "texte", "cursor": "texte", "company": "texte", "country": "texte", "keywords": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"jobs": [], "query": "texte", "total": 1, "cursor": "texte", "search": {}, "location": "texte", "near_lat": 1, "near_lng": 1}} - steer_application≈ 308 tokens
Jobs — Change what an application in progress fills in, without stopping it. Use when the user says something about an application Worklittle is filling right now ("say my notice period is one month", "my friend Ana Ruiz referred me", "I need visa sponsorship for the US", "make that answer shorter"). Pass their wish as plain instructions with their exact facts; never add facts. Works while the application is running, ready to submit, or waiting for answers. Needs the session_id from apply_for_job or list_active_applications. For facts that should apply to every future application too, also call save_about_me.
Paramètres, retour & exemple (2)
Paramètressession_id· string · requisinstructions· string · requis
What to change, in plain words.
Exemple d'appel{"name": "steer_application", "arguments": {"session_id": "texte", "instructions": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - stop_application≈ 187 tokens
Jobs — Stop an application that Worklittle is filling out for the user. This cancels the application in progress and it cannot be resumed; the user would have to start it again. Needs the session_id from apply_for_job or list_active_applications.
Paramètres, retour & exemple (1)
Paramètressession_id· string · requis
Exemple d'appel{"name": "stop_application", "arguments": {"session_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - submit_application≈ 180 tokens
Jobs — Send an application that stopped for review (apply_for_job with auto_submit false, status awaiting_submit). Call it only after the user has seen the answers from check_application_status and said to send it.
Paramètres, retour & exemple (1)
Paramètressession_id· string · requis
Exemple d'appel{"name": "submit_application", "arguments": {"session_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - track_applied_job≈ 315 tokens
Jobs — Add a job to the user's Applied or Saved list, or change its status, so they can find it later.
Paramètres, retour & exemple (6)
Paramètresjob_id· string · requis
Worklittle job id from search_jobs or get_job_details.method· string · optionnel · apply | apply_with_ai | api
How the user applied. Defaults to apply.status· string · optionnel · saved | in_progress | applied | interview | offer | rejected | withdrawn | skipped
Pipeline stage when known. Use saved for heart/save, skipped for Job Cards / deck Skip. Defaults to in_progress for apply / apply_with_ai, applied for api.apply_url· string · optionnel
Optional employer apply URL.job_title· string · requiscompany_name· string · requis
Exemple d'appel{"name": "track_applied_job", "arguments": {"job_id": "texte", "job_title": "texte", "company_name": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - update_my_profile≈ 378 tokens
Jobs — Update the user's Worklittle profile, such as name, location, phone, links or the kind of job they want. Only send the fields to change.
Paramètres, retour & exemple (20)
Paramètresphone· string · optionnelx_url· string · optionnelyou_name· string · optionnelyou_work· string · optionnelgithub_url· string · optionneltiktok_url· string · optionnelyou_school· string · optionnelyoutube_url· string · optionnelfacebook_url· string · optionnellinkedin_url· string · optionnelinstagram_url· string · optionnelschool_degree· string · optionnelyou_interests· string · optionnelphone_national· string · optionneldrivers_license· string · optionnel
valid | none | empty to clearhuggingface_url· string · optionnelphone_country_iso· string · optionnelpersonal_website_url· string · optionnelprofile_clear_fields· array · optionnel
Field names to clear when emptywork_authorization_countries· array · optionnel
ISO2 country codes
Exemple d'appel{"name": "update_my_profile", "arguments": {"phone": "texte", "x_url": "texte", "you_name": "texte", "you_work": "texte", "github_url": "texte", "tiktok_url": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - upload_my_resume≈ 294 tokens
Jobs — Save the resume the user attached in the chat (PDF, Word, text or image) to their Worklittle profile so it can be used to apply. Pass the attached file as resume_file.
Paramètres, retour & exemple (4)
Paramètresmime· string · optionnel
MIME type, e.g. application/pdffilename· string · optionnel
Original file name, e.g. resume.pdf (widget upload).resume_file· object · optionnel
The resume file the user attached in the chat.content_base64· string · optionnel
Base64-encoded file bytes (data: URLs accepted; strip prefix ok).
Exemple d'appel{"name": "upload_my_resume", "arguments": {"mime": "texte", "filename": "texte", "resume_file": {}, "content_base64": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».