v1.0.0
API Headlinker
20 outils pour piloter ta plateforme de recrutement depuis Claude Desktop, Cursor ou tout client compatible MCP.
Quickstart
Connecte ton client MCP en 30 secondes — auth OAuth automatique.
Claude.ai (Web, Desktop, mobile)
- Ouvre Settings → Connectors → Add custom connector
- Colle l'URL :
https://headlinker.com/api/mcp - Suis le flow OAuth (login Headlinker + autorisation)
Claude Code
Terminal
claude mcp add headlinker --transport http https://headlinker.com/api/mcpLe navigateur s'ouvre automatiquement pour te faire signer la connexion.
Cursor / autres clients MCP
mcp.json
{
"mcpServers": {
"headlinker": {
"url": "https://headlinker.com/api/mcp"
}
}
}Le client lance le flow OAuth la première fois — pas de clé à coller.
Utilisation
Demande simplement à ton assistant : « Montre-moi mes missions actives » ou « Crée une mission de Développeur React ».
Authentification
OAuth 2.1 + Dynamic Client Registration — conforme MCP Authorization spec 2025-06-18.
Headlinker implémente le flow OAuth complet : ton client (Claude.ai, Claude Code, Cursor…) s'enregistre automatiquement via RFC 7591 Dynamic Client Registration, puis utilise PKCE S256 pour échanger un code contre un token JWT.
Endpoint MCP :
https://headlinker.com/api/mcpMéthode :
POST (transport Streamable HTTP).Permission requise :
mcp sur ton compte Headlinker. Si tu ne la vois pas, contacte le support.Discovery endpoints (RFC 9728 / RFC 8414) :
- /.well-known/oauth-protected-resource
- /.well-known/oauth-authorization-server
Token TTL : access 1h (auto-refresh par le client), refresh 30 jours (rotation à chaque usage).
Pagination
Tous les endpoints de liste supportent la pagination.
Les paramètres
page (défaut : 1) et limit (défaut : 20, max : 100) sont disponibles sur tous les outils de recherche/liste.La réponse inclut un objet
pageInfo :Format de réponse paginée
{
"items": [...],
"pageInfo": {
"page": 1,
"limit": 20,
"count": 142,
"totalPages": 8
}
}Référence des outils
20 outils répartis en 9 catégories.
Profil
Gestion de ton profil recruteur.
get_my_profile
Récupère ton profil recruteur complet (infos, secteurs, métiers, préférences).
Aucun paramètreupdate_profile
Met à jour ton profil recruteur.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
firstName | string | non | Prénom |
lastName | string | non | Nom |
phone | string | non | Téléphone |
title | string | non | Titre professionnel |
bio | string | non | Biographie |
url | string | non | URL LinkedIn |
city | string | non | Ville |
businessName | string | non | Nom de l'entreprise |
openToSource | boolean | non | Ouvert au sourcing |
Missions
Recherche et gestion des missions partagées (SearchedProfiles).
search_missions
Recherche des missions partagées (SearchedProfiles) publiées et actives.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
q | string | non | Recherche textuelle (nom, description) |
sectorIds | string[] | non | Filtrer par IDs de secteurs |
occupationId | string | non | Filtrer par ID de métier |
experience | enum | non | Niveau d'expérience : '<2', '2/4', '3/5', '5/8', '8/10', '>10' |
mine | boolean | non | Uniquement mes missions |
page | number | non | Numéro de page(défaut : 1) |
limit | number | non | Résultats par page (max 100)(défaut : 20) |
get_mission
Récupère les détails d'une mission par son ID.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
id | string | oui | ID de la mission |
create_mission
Crée une nouvelle mission (SearchedProfile).
| Paramètre | Type | Requis | Description |
|---|---|---|---|
name | string | oui | Titre du poste |
description | string | non | Description du poste |
context | string | non | Contexte de la mission |
noGo | string | non | Critères rédhibitoires (NO GO) — compétences/expériences obligatoires sans lesquelles le candidat sera refusé |
sectorIds | string[] | non | IDs des secteurs |
occupationId | string | non | ID du métier |
experience | enum | non | Niveau d'expérience : '<2', '2/4', '3/5', '5/8', '8/10', '>10' |
baseSalaryMin | number | non | Salaire minimum |
baseSalaryMax | number | non | Salaire maximum |
bountyStart | number | non | Prime au démarrage |
bountyConfirm | number | non | Prime à la confirmation |
client | string | non | Nom du client |
urgent | boolean | non | Mission urgente |
update_mission
Met à jour une de tes missions.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
id | string | oui | ID de la mission |
name | string | non | Titre du poste |
description | string | non | Description |
context | string | non | Contexte |
noGo | string | non | Critères rédhibitoires (NO GO) |
sectorIds | string[] | non | IDs des secteurs |
occupationId | string | non | ID du métier |
experience | enum | non | Niveau d'expérience : '<2', '2/4', '3/5', '5/8', '8/10', '>10' |
bountyStart | number | non | Prime au démarrage |
bountyConfirm | number | non | Prime à la confirmation |
urgent | boolean | non | Mission urgente |
Candidats partagés
Recherche et gestion des candidats partagés (AvailableProfiles).
search_candidates
Recherche des candidats partagés (AvailableProfiles) publiés et actifs.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
q | string | non | Recherche textuelle |
sectorIds | string[] | non | Filtrer par IDs de secteurs |
occupationIds | string[] | non | Filtrer par IDs de métiers |
experience | enum | non | Niveau d'expérience : '<2', '2/4', '3/5', '5/8', '8/10', '>10' |
mine | boolean | non | Uniquement mes candidats |
page | number | non | Numéro de page(défaut : 1) |
limit | number | non | Résultats par page (max 100)(défaut : 20) |
get_candidate_profile
Récupère les détails d'un candidat partagé par son ID.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
id | string | oui | ID de l'AvailableProfile |
create_candidate_profile
Crée un nouveau candidat partagé (AvailableProfile).
| Paramètre | Type | Requis | Description |
|---|---|---|---|
name | string | oui | Titre du profil candidat |
candidateId | string | oui | ID du candidat |
description | string | non | Description du candidat |
context | string | non | Contexte |
sectorIds | string[] | non | IDs des secteurs |
occupationIds | string[] | non | IDs des métiers |
experience | enum | non | Niveau d'expérience : '<2', '2/4', '3/5', '5/8', '8/10', '>10' |
baseSalaryMin | number | non | Salaire minimum souhaité |
baseSalaryMax | number | non | Salaire maximum souhaité |
bounty | number | non | Montant de la prime |
update_candidate_profile
Met à jour un de tes candidats partagés.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
id | string | oui | ID de l'AvailableProfile |
name | string | non | Titre du profil |
description | string | non | Description |
context | string | non | Contexte |
sectorIds | string[] | non | IDs des secteurs |
occupationIds | string[] | non | IDs des métiers |
experience | enum | non | Niveau d'expérience : '<2', '2/4', '3/5', '5/8', '8/10', '>10' |
bounty | number | non | Montant de la prime |
Gestion candidats
Gestion de ta base de candidats interne.
create_candidate
Crée un nouveau candidat dans ta base.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
firstName | string | oui | Prénom |
lastName | string | oui | Nom |
email | string | oui | |
phone | string | non | Téléphone |
url | string | non | URL LinkedIn |
resumeUrl | string | non | URL du CV |
search_my_candidates
Recherche dans tes candidats.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
q | string | non | Recherche par nom ou email |
page | number | non | Numéro de page(défaut : 1) |
limit | number | non | Résultats par page (max 100)(défaut : 20) |
Contacts
Suivi des processus de recrutement en cours.
list_contacts
Liste tes contacts/deals en cours (processus de recrutement).
| Paramètre | Type | Requis | Description |
|---|---|---|---|
status | string | non | Filtrer par statut (proposed, accepted, inProcess, underOffer, trainingStarted, processSucceeded...) |
q | string | non | Recherche textuelle |
page | number | non | Numéro de page(défaut : 1) |
limit | number | non | Résultats par page (max 100)(défaut : 20) |
sort | string | non | Champ de tri(défaut : '-updatedAt') |
get_contact
Récupère les détails d'un contact par son ID.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
id | string | oui | ID du contact |
Bons plans
Bons plans partagés entre membres.
list_deals
Liste les bons plans partagés par les membres.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
search | string | non | Recherche textuelle |
myDeals | boolean | non | Uniquement mes bons plans |
isActive | boolean | non | Filtrer par actif/inactif |
page | number | non | Numéro de page(défaut : 1) |
limit | number | non | Résultats par page (max 100)(défaut : 20) |
create_deal
Crée un nouveau bon plan.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
title | string | oui | Titre du bon plan |
description | string | oui | Description |
url | string | non | URL du bon plan |
couponCode | string | non | Code promo |
Réductions partenaires
Réductions négociées avec des partenaires pour les membres Headlinker.
list_partner_discounts
Liste les réductions partenaires négociées pour les membres Headlinker.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
category | string | non | Filtrer par catégorie (sourcing, ats, training, automation, personality, jobBoards) |
Matchings
Matchings IA entre missions et candidats.
list_my_matchings
Liste tes matchings IA entre missions et candidats.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
type | enum | non | Type de matching : 'all', 'mission' (tu as la mission), 'candidate' (tu as le candidat)(défaut : 'all') |
minScore | number | non | Score minimum |
showViewed | boolean | non | Inclure les matchings déjà vus(défaut : true) |
page | number | non | Numéro de page(défaut : 1) |
limit | number | non | Résultats par page (max 100)(défaut : 20) |
matching_feedback
Donne un feedback (positif/négatif) sur un matching.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
id | string | oui | ID du matching |
feedback | enum | oui | 'positive' ou 'negative' |
reason | string | non | Raison du feedback |
Membres
Recherche de membres recruteurs sur la plateforme.
search_members
Recherche des membres recruteurs sur la plateforme.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
q | string | non | Recherche par nom, entreprise |
sectorIds | string[] | non | Filtrer par secteurs |
occupationIds | string[] | non | Filtrer par métiers |
openToSource | boolean | non | Filtrer les sourceurs disponibles |
page | number | non | Numéro de page(défaut : 1) |
limit | number | non | Résultats par page (max 100)(défaut : 20) |