{"protocolVersion":"2024-11-05","serverInfo":{"name":"helpmefindthejob","version":"0.1.0"},"tools":[{"name":"suggest_relevant_companies","description":"Suggest curated healthcare-management companies and fallback categories from role, industry, and location preferences.","inputSchema":{"type":"object","properties":{"targetRoles":{"type":"array","items":{"type":"string"}},"industry":{"type":"string"},"location":{"type":"string"}},"required":["targetRoles","industry"]}},{"name":"add_company_to_watchlist","description":"Create a company watchlist entry without scanning external pages.","inputSchema":{"type":"object","properties":{"userId":{"type":"string"},"name":{"type":"string"},"websiteUrl":{"type":"string"},"careerPageUrl":{"type":"string"},"sector":{"type":"string"},"notes":{"type":"string"},"watchEnabled":{"type":"boolean"}},"required":["userId","name","websiteUrl"]}},{"name":"find_company_career_page","description":"Find an obvious public career page from a company homepage, respecting robots.txt.","inputSchema":{"type":"object","properties":{"userId":{"type":"string"},"companyId":{"type":"string"}},"required":["userId","companyId"]}},{"name":"scan_company_career_page","description":"Scan one known public career page with robots.txt and max-page guards.","inputSchema":{"type":"object","properties":{"userId":{"type":"string"},"companyId":{"type":"string"},"careerPageUrl":{"type":"string"}},"required":["userId","companyId"]}},{"name":"extract_direct_jobs_from_company_site","description":"Extract jobs from supplied HTML without fetching: tries known ATS adapters first (Greenhouse / Lever / Personio), falls back to JobPosting JSON-LD parsing and visible job-link anchor extraction.","inputSchema":{"type":"object","properties":{"userId":{"type":"string"},"companyId":{"type":"string"},"pageUrl":{"type":"string"},"html":{"type":"string"}},"required":["userId","companyId","pageUrl","html"]}},{"name":"import_discovered_job","description":"Import a reviewed discovered job into the normal job pipeline.","inputSchema":{"type":"object","properties":{"userId":{"type":"string"},"discoveredJobId":{"type":"string"}},"required":["userId","discoveredJobId"]}},{"name":"deduplicate_discovered_jobs","description":"Report likely duplicates among discovered direct-company jobs.","inputSchema":{"type":"object","properties":{"userId":{"type":"string"}},"required":["userId"]}},{"name":"get_company_watchlist_summary","description":"Return dashboard metrics for company watchlist and direct-company discoveries.","inputSchema":{"type":"object","properties":{"userId":{"type":"string"}},"required":["userId"]}},{"name":"get_user_profile_for_consent","description":"Return the user's portable civic profile (subset they have consented to share). Other open civic agents read this with explicit user consent to compose their own recommendations with the user's employment + residence + outcomes context.","inputSchema":{"type":"object","properties":{"userId":{"type":"string"},"scopes":{"type":"array","minItems":1,"items":{"type":"string","enum":["identity","residence","employment","cv","outcomes","preferences"]}}},"required":["userId","scopes"]}},{"name":"propose_referral","description":"Emit a structured referral to another open civic agent. The calling agent constructs a referral the user can act on; the user retains the choice to follow up or decline. Composition pattern 1 (sequential handoff) per 09-mcp-composition.md.","inputSchema":{"type":"object","properties":{"userId":{"type":"string"},"targetAgent":{"type":"string"},"reason":{"type":"string"},"context":{"type":"object"}},"required":["userId","targetAgent","reason"]}},{"name":"query_esco_skill","description":"Look up ESCO skill or occupation codes by free-text query. Cross-agent shared taxonomy. Backed by the v1-curated 2026-05-18 reference dataset (~80 entries spanning ISCO-08 occupations + ESCO skills, aligned to the seven-persona panel and Bundesagentur-f\u00fcr-Arbeit 2025 shortage codes). Matches against EN + DE labels and altLabels arrays, so colloquial synonyms (e.g. 'Krankenschwester') resolve to canonical entries.","inputSchema":{"type":"object","properties":{"query":{"type":"string","minLength":1},"type":{"type":"string","enum":["occupation","skill","any"]},"limit":{"type":"integer","minimum":1,"maximum":50}},"required":["query"]}},{"name":"export_eures_compatible","description":"Export a stored discovered job in EURES-compatible schema fields. Enables cross-deployment interoperability with the European Employment Services portal and any agent that reads EURES-shaped postings.","inputSchema":{"type":"object","properties":{"userId":{"type":"string"},"discoveredJobId":{"type":"string"}},"required":["userId","discoveredJobId"]}},{"name":"record_user_outcome","description":"Persist an outcome event for a job (applied / replied / interviewing / offer / rejected / withdrawn). Append-only JSON Lines to data/user_outcomes.jsonl. The cost-saving doctrine uses these events as the primary measurement substrate for partner-pilot evidence (08-cost-saving-doctrine.md \u00a71, \u00a72, \u00a78).","inputSchema":{"type":"object","properties":{"userId":{"type":"string"},"jobId":{"type":"string"},"outcomeType":{"type":"string","enum":["applied","replied","interviewing","offer","rejected","withdrawn"]},"occurredAt":{"type":"string","description":"ISO-8601 timestamp. Omit to use server-side now()."},"note":{"type":"string"}},"required":["userId","jobId","outcomeType"]}},{"name":"list_referrals","description":"List referrals issued for a user. Optional status filter (proposed / accepted / declined / followed_up / expired) for the loosen-affordance flow + cost-saving doctrine outcome aggregation. Returns most-recent first.","inputSchema":{"type":"object","properties":{"userId":{"type":"string"},"status":{"type":"string","enum":["proposed","accepted","declined","followed_up","expired"]},"limit":{"type":"integer","minimum":1,"maximum":200}},"required":["userId"]}},{"name":"update_referral_status","description":"Update an existing referral's lifecycle status. Allowed transitions: proposed\u2192accepted, proposed\u2192declined, accepted\u2192followed_up, *\u2192expired. Optional outcome_note free-text the user supplies. Returns the updated referral.","inputSchema":{"type":"object","properties":{"userId":{"type":"string"},"referralId":{"type":"string"},"status":{"type":"string","enum":["accepted","declined","followed_up","expired"]},"outcomeNote":{"type":"string"}},"required":["userId","referralId","status"]}}]}