> ## Documentation Index
> Fetch the complete documentation index at: https://api-docs.jarvi.tech/llms.txt
> Use this file to discover all available pages before exploring further.

# MCP (Assistants IA)

> Connectez des assistants IA comme Claude Desktop ou Cursor à vos données Jarvi

## Qu'est-ce que le MCP ?

Le [Model Context Protocol (MCP)](https://modelcontextprotocol.io) est un standard ouvert qui permet aux assistants IA de se connecter à des outils et sources de données externes. Jarvi expose un serveur MCP pour que vous puissiez utiliser des assistants IA pour rechercher, lire et mettre à jour vos données Jarvi directement.

## Clients compatibles

Tout client compatible MCP peut se connecter à Jarvi, notamment :

* [Claude Desktop](https://claude.ai/download)
* [Cursor](https://cursor.com)
* [Windsurf](https://codeium.com/windsurf)
* Tout client supportant le transport **Streamable HTTP**

## Configuration

### Claude Desktop

Allez dans **Paramètres > Connecteurs > Ajouter un connecteur personnalisé**, entrez un nom (ex : "Jarvi") et l'URL :

```
https://mcp.jarvi.tech
```

Claude Desktop gère l'authentification automatiquement via OAuth2 — vous serez redirigé pour vous connecter avec votre compte Jarvi.

### Autres clients

Pour les clients qui ne supportent pas OAuth2, utilisez une clé privée d'API :

* **Transport** : Streamable HTTP
* **URL** : `https://mcp.jarvi.tech`
* **Authentification** : header `x-api-key` avec votre [clé privée d'API](./api-keys)

<Warning>
  Votre clé privée donne un accès complet à vos données Jarvi. Ne la partagez jamais publiquement.
</Warning>

## Outils disponibles

Une fois connecté, les outils suivants sont disponibles pour votre assistant IA :

| Outil                     | Description                                                                                       |
| ------------------------- | ------------------------------------------------------------------------------------------------- |
| `whoAmI`                  | Retourne l'identité de l'utilisateur connecté (nom, email, workspace)                             |
| `getStatuses`             | Lister les statuts disponibles pour les profils, entreprises ou projets                           |
| `getCustomFields`         | Lister les champs personnalisés définis pour un type d'entité                                     |
| `getHistorySubtypes`      | Lister les sous-types personnalisés d'interactions (ex : catégories d'appels)                     |
| `advancedSearch`          | Rechercher des profils, entreprises ou projets en langage naturel                                 |
| `getEntityData`           | Récupérer les données détaillées de profils, entreprises ou projets par IDs                       |
| `getAgenda`               | Récupérer les événements à venir des agendas connectés                                            |
| `getNotifications`        | Récupérer les notifications récentes de l'utilisateur                                             |
| `createProfile`           | Créer un nouveau profil (talent et/ou contact)                                                    |
| `createCompany`           | Créer une nouvelle entreprise                                                                     |
| `createProject`           | Créer un nouveau projet / mission de recrutement                                                  |
| `associateProfiles`       | Lier un profil à un projet (talent ou contact) ou à une entreprise                                |
| `createHistoryEntry`      | Ajouter une note ou un log d'appel à l'historique d'un profil                                     |
| `createTodo`              | Créer un rappel/todo lié à un profil, entreprise ou projet                                        |
| `sendMessage`             | Envoyer des messages à un ou plusieurs profils (email, LinkedIn, WhatsApp, Telegram, SMS)         |
| `getMessageTemplates`     | Lister les templates de messages disponibles (personnels et partagés par les collègues)           |
| `uploadFile`              | Uploader un fichier et le rattacher à une entité (profil, entreprise ou projet)                   |
| `cancelScheduledMessages` | Annuler un ou plusieurs messages programmés                                                       |
| `updateProfile`           | Mettre à jour un profil, ajouter des emails ou numéros de téléphone                               |
| `updateCompany`           | Mettre à jour une entreprise, changer le statut par nom, ajouter des emails                       |
| `updateProject`           | Mettre à jour un projet, changer le statut par nom, lier une entreprise                           |
| `fillJobOffer`            | Générer ou affiner une offre d'emploi à partir des données du projet                              |
| `getOutboxDiagnostic`     | Diagnostiquer la boîte d'envoi : lister les messages programmés en attente avec statut et erreurs |
| `retryOutboxTasks`        | Relancer les tâches en erreur en réinitialisant leur statut                                       |
| `queryGraphQL`            | Exécuter des requêtes/mutations GraphQL sur les tables autorisées (vos permissions s'appliquent)  |

<Info>
  Toutes les opérations s'exécutent avec **vos permissions**. La sécurité au niveau des lignes s'applique — vous ne pouvez accéder qu'aux données auxquelles votre compte a accès.
</Info>

## Exemples de prompts

Une fois connecté, essayez de demander à votre assistant IA :

* *"Qui suis-je ?"*
* *"Recherche des développeurs React à Paris"*
* *"Montre-moi les détails du projet X"*
* *"Crée un profil pour Jean Dupont, développeur"*
* *"Positionne ce candidat sur le projet X"*
* *"Mets le statut de l'entreprise Acme sur Qualifié"*
* *"Quels champs personnalisés existent sur les profils ?"*
* *"Note un appel avec Jean Dupont : a discuté de sa disponibilité"*
* *"Rappelle-moi de relancer Acme lundi prochain"*
* *"Mets à jour le titre de Jean Dupont en Développeur Senior"*

## Limites

* Les mêmes [limites d'utilisation](./introduction#conditions-dutilisation) s'appliquent : 5 minutes de temps cumulé par heure et 30 minutes par 12 heures. Si vous avez besoin de plus, contactez notre support.
* Les opérations de suppression sont bloquées — utilisez la suppression douce (mise à jour de `deletedAt`) à la place.
* Les réponses trop volumineuses sont automatiquement tronquées. Utilisez des arguments `limit` dans vos requêtes.
* Les outils destructifs (mutations, lancement de campagne, relance de messages) nécessitent une confirmation de l'assistant IA avant exécution.
