Skip to content

Search is only available in production builds. Try building and previewing the site to test it out locally.

Tools reference

Pylote expose 15 tools via MCP, tous proxyés vers l’API REST.


Get your complete Pylote profile: name, skills, daily rate (TJM), availability, location, remote preferences, work experience, education.

Endpoint: GET /v1/me

Parameters

No parameters.

Example prompt

“Montre-moi mon profil Pylote”


Get your visibility stats: profile views (week/month/total), search impressions, click-through rate, and the companies/recruiters who looked at you with their contact info.

Endpoint: GET /v1/me/visibility

Parameters

No parameters.

Example prompt

“Combien de recruteurs ont vu mon profil cette semaine ?”


Get recruiter leads: companies that viewed your profile, with recruiter name, email, and date. Use this to prepare outreach messages.

Endpoint: GET /v1/me/visibility/leads

Parameters

No parameters.

Example prompt

“Prepare-moi 3 messages LinkedIn pour les recruteurs qui m’ont vu cette semaine”


DEFAULT tool for ANY request about missions — “find”, “match my profile”, “suggest missions”, “missions for me”, AND even “the latest / recent missions”. The jobboard has ~15000 missions, so NEVER pull them all. query is OPTIONAL: leave it EMPTY to get the freshest missions (like a feed), or put ONLY skills/keywords in it (e.g. “React Node”) to rank by relevance. Put hard constraints in their own params — tjmMin (min daily rate as a number), tjmKnownOnly, remote (true for remote/télétravail only), city. Do NOT stuff “remote” or a rate into query (they are filters, not keywords). Returns a bounded compact list (id, title, TJM, city, remote, URL, relevanceScore; no description). relevanceScore (0..1 = fraction of the query skills matched, null when query is empty) lets you keep only strong matches (e.g. drop < 0.5) instead of guessing. Prefer THIS over get_jobs even for “recent missions”. Then fetch(id) for the full description of the good ones.

Endpoint: GET /v1/me/jobs/search

Parameters

ParamTypeRequiredDescription
querystringSkills / keywords only (e.g. “React Node”). Empty = most recent (after filters).
tjmMinnumberMinimum daily rate in EUR (e.g. 600). Keeps missions whose TJM is >= this; missions with no TJM shown are kept (TJM is often not filled).
tjmKnownOnlybooleantrue = exclude missions that have no parseable daily rate at all. Use for a strict budget sort, knowing it drops missions where the rate is simply not published.
remotebooleantrue = only remote / télétravail missions.
citystringFilter by city (e.g. “Paris”).
limitnumberMax results (default 200, cap 500).

Example prompt

“Trouve les missions React en remote a plus de 600 par jour a Paris”


Get the full detail of a single mission (including its complete description) by the id returned by search or get_jobs.

Endpoint: GET /v1/me/jobs/detail

Parameters

ParamTypeRequiredDescription
idstringMission id from search / get_jobs results.

Example prompt

“Montre-moi le detail complet de cette mission”


Return the most RECENTLY POSTED missions in reverse-chronological order, as one bounded compact page (id, title, TJM, city, remote, URL — no description). Response: { total, results, hasMore, nextCursor }. Use this ONLY for a pure “show me the very latest missions” with ZERO criteria. The MOMENT the user mentions ANY skill, technology, daily rate, location, remote, role or seniority — or says “for me / matching my profile / that fit me / suggest” — use search instead (search with an empty query already returns the latest, and with a query it ranks by relevance). It does NOT return all missions at once; to get more, paginate with cursor = the returned nextCursor until hasMore is false, never a huge limit. To read one mission in full, use fetch.

Endpoint: GET /v1/me/jobs/browse

Parameters

ParamTypeRequiredDescription
limitnumberPage size (default 200, cap 500). Do not raise it to dump everything — paginate with cursor instead.
cursorstringPass the nextCursor from the previous page to get the next page. Omit for the first page.

Example prompt

“Liste les 20 dernieres missions publiees”


Get freelance platforms on Pylote (Malt, Comet, WTTJ, etc.) with type, logo, and connection status.

Endpoint: GET /v1/me/platforms

Parameters

No parameters.

Example prompt

“Liste les plateformes Pylote”


Update your availability. Set available=true when looking for missions. Platform sync happens next time you open the extension.

Endpoint: PUT /v1/me/availability

Parameters

ParamTypeRequiredDescription
availablebooleantrue = available, false = not
datestringYYYY-MM-DD

Example prompt

“Rends-moi dispo a partir du 5 mai”


Update your profile: daily rate (rate in EUR), skills (array), remote preference (“full”/“partial”/“none”), location, mission duration, days per week.

Endpoint: PATCH /v1/me/profile

Parameters

ParamTypeRequiredDescription
ratenumberDaily rate EUR
skillsstring[]Skill names
remoteWorkstring“full”, “partial”, “none”
locationstringCity
missionDurationstring
daysPerWeekstring

Example prompt

“Passe mon TJM a 650 et ajoute Kubernetes a mes skills”


Set your professions (1 to 3) and/or your seniority — values MUST belong to the Pylote referential (canonical name or slug, as returned by get_profile). Free text is rejected with a 400 listing the accepted values. This is the main thing recruiters search on. Leaves your name, daily rate and legal status untouched.

Endpoint: PATCH /v1/me/professions-seniority

Parameters

ParamTypeRequiredDescription
professionsstring[]1 to 3 professions, exact values from the referential (as returned by get_profile)
senioritystringOne seniority level from the referential, as returned by get_profile

Example prompt

“Mets mon metier sur Developpeur Back-End et ma seniorite sur Senior”


Replaces ALL your work experiences with the list you send. Each item: { name (company), position, startDate, endDate, summary }. Read get_profile first, edit the list, then send it complete — a partial list erases the rest.

Endpoint: PUT /v1/me/experiences

Parameters

ParamTypeRequiredDescription
experiencesobject[]Complete list of { name, position, startDate, endDate, summary }

Example prompt

“Ajoute mon experience chez Doctolib comme Lead Dev en 2024”


Replaces ALL your education entries with the list you send. Each item: { institution, area, studyType, startDate, endDate }. Send the complete list.

Endpoint: PUT /v1/me/educations

Parameters

ParamTypeRequiredDescription
educationsobject[]Complete list of { institution, area, studyType, startDate, endDate }

Example prompt

“Ajoute mon master a Epitech (2018-2023)“


Replaces ALL your languages with the list you send. Each item: { language, fluency }. Send the complete list.

Endpoint: PUT /v1/me/languages

Parameters

ParamTypeRequiredDescription
languagesobject[]Complete list of { language, fluency }

Example prompt

“Ajoute Espagnol niveau competence professionnelle”


Replaces ALL your social links with the list you send. Each item: { network, url } (LinkedIn, GitHub, etc.). Send the complete list.

Endpoint: PUT /v1/me/socials

Parameters

ParamTypeRequiredDescription
socialsobject[]Complete list of { network, url }

Example prompt

“Mets a jour mon LinkedIn”


Set your profile summary (15 to 2600 characters).

Endpoint: PATCH /v1/me/description

Parameters

ParamTypeRequiredDescription
contentstringProfile summary, 15-2600 chars

Example prompt

“Reecris mon resume pour mettre en avant React et le freelancing”