Skip to main content
Glama
Casius999

decroche-mcp

by Casius999

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
extensions
{
  "io.modelcontextprotocol/ui": {}
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
cv_parseA

Parse a CV file (PDF/DOCX/MD/TXT) into a validated JSON Resume, detected sections, a parse-confidence score, and warnings.

cv_xyz_scaffoldA

Decompose every highlight bullet in a CV into an XYZ scaffold.

For each highlight returns: detected verb, achievement object (X), metric-present flag (Y), method clause (Z), a fill-in template, and a prompt to request a real metric when Y is absent.

NEVER fabricates metrics — only asks the candidate for real data.

cv_verify_claimsA

Flag quantified achievements, leadership claims, named project outcomes, certifications, and awards that should be backed by a verifiable artefact.

Returns only actionable claims (needs_evidence=True). Suggests the artefact type for each (dashboard link, repo URL, credential ID, reference contact, etc.). The host LLM asks the candidate to supply the actual link — never fabricated.

cv_renderA

Parse a CV file then render ATS-safe export artifacts.

Produces:

  • ats_docx: ATS-safe single-column DOCX (proven via parse_sim round-trip)

  • styled_html: Self-contained styled HTML (no external assets)

  • pdf: PDF rendered from styled HTML (best-effort; skipped if weasyprint missing)

  • json_resume: Structured JSON Resume (.json)

  • plain_text: Flat plain-text version (.txt)

Returns a Render model with:

  • files: list of RenderFile(kind, path) — all absolute paths

  • ats_safe_proof: dict of {ats_id → parsability_score} from live round-trip

  • warnings: any non-fatal issues (e.g. pdf_skipped)

The ats_safe_proof proves the exported DOCX is machine-readable. All artifacts are written to out_dir (or a system temp dir if omitted).

market_getA

Return the currently active market profile.

market_setA

Set the active market profile (e.g. 'fr', 'us') and return it.

market_availableA

List available market profile ids.

ats_parse_simA

Simulate how an ATS parses the CV file.

Analyses the raw file structure (columns, tables, header/footer contact, file size, text density) and applies the target ATS's quirks rules to compute a parsability score (0–100) and a list of breakages with fixes.

ats_redflag_scanA

Scan a parsed CV for content red flags.

Implements all red-flag checks from data/redflags.yaml: passive voice, duty bullets without metric/strong verb, employment gaps, job-hopping, banned buzzwords, year-only dates, unprofessional email, wrong photo for market, AI-generic phrasing, no quantification.

ats_screener_briefA

Build a screener simulation kit for Claude.

Produces the plain text the machine sees after ATS parsing, a fixed scoring rubric, and deterministic keyword requirements extracted from the offer. Claude then plays the AI screener on this exact text.

ats_score_reportA

Generate a before/after score report.

Combines the parsability score, optional match score, and redflag count into a ScoreReport with screener_readiness tier and optional delta.

ats_detect_adversarialA

Detect adversarial tactics embedded in a submitted CV (spec §2).

Scans the CV file for three classes of adversarial content:

  1. prompt_injection (CRITICAL): screener-directed imperatives in the text (EN + FR) designed to manipulate AI screeners.

  2. hidden_text (CRITICAL): near-invisible text via white/near-white colour or sub-4pt font size (PDF and DOCX).

  3. keyword_stuffing (HIGH): anomalous token or line repetition designed to game keyword-match scoring.

This tool ONLY detects adversarial content — it never produces it.

match_scoreB

Compute a skill-coverage match score between a CV file and a job offer.

match_dedupeA

Remove duplicate job postings from a list.

Uses SHA-256 blocking on normalised company|city|title, then within each block merges postings where token_set_ratio(title) ≥ 85 AND dates are within ±14 calendar days (or absent). Keeps the most-complete posting.

match_keyword_gapA

Return the top-N offer keywords not covered by the CV, ranked by salience.

Each gap is classified as:

  • "addable_honestly": term or synonym appears anywhere in CV text.

  • "genuinely_missing": no trace in the CV at all.

match_success_probabilityB

Estimate application success probability deterministically.

Combines fit_score with recency, competition proxy, optional network proximity, and optional applicant count into a single 0–100 score with per-factor breakdown.

Unknown signals default to neutral and are flagged in notes — never fabricated.

match_company_intelA

Derive company intelligence from job postings + produce research checklist.

Only asserts facts derivable from the provided postings (open_roles_count, locations, remote_ratio, tech_tags). Everything else (Glassdoor rating, funding, layoff signals, visa sponsorship) is placed in a research_checklist with status "to_research" — never fabricated.

source_greenhouseA

Fetch all live jobs from a Greenhouse job board (no auth required).

source_leverA

Fetch all published postings from a Lever company page (no auth required).

source_ashbyA

Fetch all listed jobs from an Ashby job board (no auth required).

source_recruiteeA

Fetch all open offers from a Recruitee company page (no auth required).

source_workableA

Fetch all published jobs from a Workable account (no auth required for public listings).

source_smartrecruitersA

Fetch all public postings from SmartRecruiters Posting API (no auth required).

source_remoteokA

Fetch all remote jobs from RemoteOK API (no auth required; attribution: remoteok.com).

Returns: SourceResult with all normalised job postings.

source_remotiveA

Fetch remote jobs from Remotive API, optionally filtered by search query.

source_arbeitnowA

Fetch all jobs from the Arbeitnow public job board (no auth required).

Returns: SourceResult with all normalised job postings.

source_france_travailB

Fetch jobs from France Travail (Pôle Emploi) API v2.

Requires env: FRANCE_TRAVAIL_ID, FRANCE_TRAVAIL_SECRET

source_adzunaB

Fetch jobs from Adzuna (19 countries).

Requires env: ADZUNA_APP_ID, ADZUNA_APP_KEY

source_jsearchB

Fetch jobs from JSearch (RapidAPI) — aggregates LinkedIn/Indeed/Glassdoor legally.

Requires env: JSEARCH_RAPIDAPI_KEY

source_usajobsA

Fetch US federal jobs from USAJobs.gov.

Requires env: USAJOBS_KEY, USAJOBS_EMAIL

source_reedB

Fetch UK jobs from Reed.co.uk.

Requires env: REED_KEY

source_themuseA

Fetch jobs from The Muse.

Optional env: THEMUSE_KEY (works without key but rate-limited).

source_joobleC

Fetch jobs from Jooble international aggregator.

Requires env: JOOBLE_KEY

source_labonneboiteA

Fetch companies likely to hire from La Bonne Boîte (hidden job market).

La Bonne Boîte surfaces companies likely to recruit in a given ROME code and commune, even when they have published no formal job offer. Each result is a JobPosting with a (marché caché) title prefix.

Requires env: FRANCE_TRAVAIL_ID, FRANCE_TRAVAIL_SECRET Scope: api_labonneboitev1 (partner must subscribe in the FT developer portal)

NOTE: scope acceptance requires partner subscription to the La Bonne Boîte product. Live verification of the endpoint and scope is needed before production use — see project report.

source_careerjetB

Fetch jobs from Careerjet public API (international job aggregator).

Optional env: CAREERJET_AFFID — affiliate ID for higher rate limits. Works without it in some locales (reduced results possible).

source_search_allA

Fetch and aggregate jobs from multiple keyless providers concurrently.

Network failures per provider are silently dropped (not raised).

Returns: Flat list of all collected JobPosting objects across all providers.

source_source_search_marketA

Search across the maximum number of job sources for maximum breadth.

Fans out across all boards in the built-in known_boards.yaml registry (greenhouse/lever/ashby/recruitee tokens) plus optionally any keyed providers whose env vars are set (france_travail/adzuna/jsearch).

Results are deduplicated, query-filtered, and sorted by date descending.

source_monitor_snapshotA

Take a snapshot of current job postings for a keyless provider.

Writes a JSON file containing the list of current source_ids to out_path. Use monitor_diff later to detect new postings.

source_monitor_diffA

Detect new job postings since a previous snapshot.

Fetches current postings for the provider+key and compares source_ids against the previously saved snapshot at prev_path.

recruiter_identifyA

Parse a user-pasted text block to identify a recruiter.

Operates ONLY on the provided text — never fetches any URL. Accepts LinkedIn profile text copy-pasted by the user, email signatures, or company "team" page text.

recruiter_qualifyB

Score a recruiter's fit against a target job/company context.

recruiter_find_contactA

Find or guess a recruiter's email.

If DROPCONTACT_KEY env var is set, calls Dropcontact API (CNIL-audited). Otherwise generates a pattern guess (status="guessed_unverified"). Status "verified" is ONLY set when Dropcontact confirms.

recruiter_draft_messageB

Draft an outreach message scaffold for a recruiter.

French drafts include a mandatory RGPD opt-out line.

recruiter_storeA

Persist a recruiter+contact record to a local JSON store.

Records are always tagged pii=true with retention_max_years=3 (CNIL).

network_find_warm_pathA

Find warm introduction paths to a target company.

Operates ONLY on the user-provided connections list. NO LinkedIn traversal, NO external lookups.

network_score_intro_valueB

Score the intro value of a NetworkPath (0–1).

network_draft_intro_requestA

Draft an introduction request scaffold.

French drafts include a mandatory opt-out line.

apply_resolve_sourceB

Resolve the best apply URL and channel for a job posting.

Implements the apply-at-source principle: candidates apply at the employer's own ATS, never via LinkedIn/Indeed/Glassdoor aggregator pages.

No network calls are made.

apply_prefillA

Build a PrefillPlan by mapping resume data to common ATS form fields.

Sensitive fields (password, card, SSN, IBAN, DOB) are NEVER in fields. They are listed in excluded_sensitive for auditability.

apply_queue_addA

Add or replace a QueueItem in the batch-apply queue.

If an item with the same job_id already exists it is replaced.

apply_queue_reviewB

Return all items in the batch-apply queue.

apply_queue_approveB

Approve a batch of queue items (prepared → approved).

apply_followupA

Draft a polite follow-up message scaffold for an application.

Sending is always human-confirmed (Phase 4b). No network calls.

apply_actA

Preview or perform ONE browser step on an employer ATS form.

SAFETY RULES enforced in code (non-negotiable):

  • classify_sensitive_field() is called BEFORE any fill().

  • is_payment_url() blocks the step if the URL is a payment page.

  • is_login_context() blocks the step if a login wall is detected.

  • confirm=False (default) returns a preview with requires_confirm=True. Only confirm=True actually performs the step.

  • NEVER auto-fills passwords, card numbers, CVC/CVV, IBAN, SSN, 2FA.

apply-at-source: use only on employer ATS pages, never on LinkedIn/Indeed.

apply_cover_letterA

Build an honest cover-letter scaffold from a CV file and a job posting.

HONESTY: why_me bullets come ONLY from the candidate's real CV. why_them is a clearly-marked [à compléter: …] placeholder — the host LLM fills it using actual company research. Nothing is invented.

No network calls. Deterministic.

apply_answer_screeningA

Answer a screening question factually from the CV, or flag needs_human.

HONESTY rules (non-negotiable):

  • Work authorization / visa / sponsorship → needs_human=True, answer=None.

  • Salary expectations → needs_human=True, answer=None.

  • Relocation / notice / availability / start date → needs_human=True.

  • "Why this company/role" → needs_human=True.

  • Unknown questions → needs_human=True. Only factual, derivable answers are returned with source="derived_from_cv".

No network calls. Deterministic.

apply_send_approvedA

Submit ATS applications for approved queue items via the user's own Chrome.

SAFETY RULES enforced in code (non-negotiable):

  • ONLY items with status=="approved" are attempted (queue_approve first).

  • is_payment_url() → item stopped, never submitted.

  • is_login_context() → item stopped as "needs_manual_login".

  • classify_sensitive_field() on any prefill field → item skipped.

  • confirm_send=False (default) → dry-run, nothing submitted. Only confirm_send=True actually submits.

analytics_trackC

Track (insert or update) an Application in the CRM.

analytics_update_stageA

Transition an Application to a new stage.

Appends a history entry with timestamp (and optional note).

analytics_list_appsB

Return all tracked Applications, optionally filtered by stage.

analytics_funnelA

Compute conversion funnel statistics over a list of Applications.

analytics_channel_roi_toolB

Compute interview and offer rates by source_channel.

analytics_story_coverage_toolB

Report which competencies have at least one story and which are gaps.

analytics_salary_delta_toolC

Compare an offer amount to benchmark P50 and P75.

interview_company_briefB

Build a structured research scaffold for interview preparation.

PURE — no network, no LLM. Returns a CompanyBrief with [TO_RESEARCH] placeholders and a research checklist to fill before the interview.

interview_story_addA

Add a STAR+E story to the local JSON story bank.

Validates STAR structure (situation, task, action, result must be non-empty). Raises ValueError if validation fails.

interview_story_suggestB

Return stories that cover a given competency (partial/case-insensitive match).

interview_question_bankA

Return interview questions for a role family and kind.

interview_mock_evaluateA

Evaluate a mock interview answer deterministically.

Checks STAR structure, quantification, I/we ratio, duration (~130 wpm), and returns a scored MockEval with feedback.

interview_thank_youB

Generate a post-interview thank-you message scaffold.

interview_debriefB

Generate a post-interview debrief Markdown template.

negotiate_benchmark_rangeA

Return a sourced salary benchmark for a role/seniority/region.

Uses the bundled salary_benchmarks.yaml dataset. Returns the closest match with approximate=True and a note if an exact match is absent.

negotiate_counter_offer_templateB

Build a counter-offer message scaffold (FR or EN register).

negotiate_total_compB

Compute annualised total compensation breakdown.

negotiate_competing_offer_scriptC

Generate a competing-offer negotiation script.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Casius999/decroche-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server