Tools reference
Pylote expose 15 tools via MCP, tous proxyés vers l’API REST.
Table of contents
Section titled “Table of contents”get_profileget_visibilityget_leadssearchfetchget_jobsget_platformsupdate_availabilityupdate_profileupdate_professions_and_seniorityupdate_experiencesupdate_educationsupdate_languagesupdate_socialsupdate_description
get_profile
Section titled “get_profile”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_visibility
Section titled “get_visibility”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_leads
Section titled “get_leads”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”
search
Section titled “search”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
| Param | Type | Required | Description |
|---|---|---|---|
query | string | — | Skills / keywords only (e.g. “React Node”). Empty = most recent (after filters). |
tjmMin | number | — | Minimum 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). |
tjmKnownOnly | boolean | — | true = 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. |
remote | boolean | — | true = only remote / télétravail missions. |
city | string | — | Filter by city (e.g. “Paris”). |
limit | number | — | Max 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
| Param | Type | Required | Description |
|---|---|---|---|
id | string | ✓ | Mission id from search / get_jobs results. |
Example prompt
“Montre-moi le detail complet de cette mission”
get_jobs
Section titled “get_jobs”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
| Param | Type | Required | Description |
|---|---|---|---|
limit | number | — | Page size (default 200, cap 500). Do not raise it to dump everything — paginate with cursor instead. |
cursor | string | — | Pass 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_platforms
Section titled “get_platforms”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_availability
Section titled “update_availability”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
| Param | Type | Required | Description |
|---|---|---|---|
available | boolean | ✓ | true = available, false = not |
date | string | — | YYYY-MM-DD |
Example prompt
“Rends-moi dispo a partir du 5 mai”
update_profile
Section titled “update_profile”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
| Param | Type | Required | Description |
|---|---|---|---|
rate | number | — | Daily rate EUR |
skills | string[] | — | Skill names |
remoteWork | string | — | “full”, “partial”, “none” |
location | string | — | City |
missionDuration | string | — | — |
daysPerWeek | string | — | — |
Example prompt
“Passe mon TJM a 650 et ajoute Kubernetes a mes skills”
update_professions_and_seniority
Section titled “update_professions_and_seniority”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
| Param | Type | Required | Description |
|---|---|---|---|
professions | string[] | — | 1 to 3 professions, exact values from the referential (as returned by get_profile) |
seniority | string | — | One seniority level from the referential, as returned by get_profile |
Example prompt
“Mets mon metier sur Developpeur Back-End et ma seniorite sur Senior”
update_experiences
Section titled “update_experiences”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
| Param | Type | Required | Description |
|---|---|---|---|
experiences | object[] | ✓ | Complete list of { name, position, startDate, endDate, summary } |
Example prompt
“Ajoute mon experience chez Doctolib comme Lead Dev en 2024”
update_educations
Section titled “update_educations”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
| Param | Type | Required | Description |
|---|---|---|---|
educations | object[] | ✓ | Complete list of { institution, area, studyType, startDate, endDate } |
Example prompt
“Ajoute mon master a Epitech (2018-2023)“
update_languages
Section titled “update_languages”Replaces ALL your languages with the list you send. Each item: { language, fluency }. Send the complete list.
Endpoint: PUT /v1/me/languages
Parameters
| Param | Type | Required | Description |
|---|---|---|---|
languages | object[] | ✓ | Complete list of { language, fluency } |
Example prompt
“Ajoute Espagnol niveau competence professionnelle”
update_socials
Section titled “update_socials”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
| Param | Type | Required | Description |
|---|---|---|---|
socials | object[] | ✓ | Complete list of { network, url } |
Example prompt
“Mets a jour mon LinkedIn”
update_description
Section titled “update_description”Set your profile summary (15 to 2600 characters).
Endpoint: PATCH /v1/me/description
Parameters
| Param | Type | Required | Description |
|---|---|---|---|
content | string | ✓ | Profile summary, 15-2600 chars |
Example prompt
“Reecris mon resume pour mettre en avant React et le freelancing”