> ## Documentation Index
> Fetch the complete documentation index at: https://mcp.klark.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Authentification

> Comment fonctionne la securite OAuth 2.0 de Klark MCP

## Vue d'ensemble

Klark MCP utilise **OAuth 2.0 avec PKCE** (Proof Key for Code Exchange) pour authentifier les utilisateurs. Ce standard garantit que vos identifiants ne sont jamais partages avec le client IA.

## Flow d'authentification

<Steps>
  <Step title="Discovery">
    Le client MCP decouvre les endpoints OAuth via les metadonnees standard :

    ```
    GET /.well-known/oauth-authorization-server
    ```
  </Step>

  <Step title="Enregistrement dynamique">
    Le client s'enregistre automatiquement aupres de l'API :

    ```
    POST /v1/oauth/register
    ```

    Il recoit un `client_id` et `client_secret`.
  </Step>

  <Step title="Consentement">
    Votre navigateur s'ouvre sur la page de consentement Klark. Vous entrez vos identifiants et autorisez l'acces.
  </Step>

  <Step title="Echange de tokens">
    Le client echange le code d'autorisation contre un access token (JWT, 60 min) et un refresh token (30 jours).
  </Step>

  <Step title="Connexion MCP">
    Le client utilise l'access token pour se connecter au serveur MCP et appeler les outils.
  </Step>
</Steps>

## Scopes disponibles

Les scopes controlent ce que le client IA peut faire avec votre compte :

| Scope              | Description                                     |
| ------------------ | ----------------------------------------------- |
| `fakture:read`     | Lire les factures et devis                      |
| `fakture:write`    | Creer, modifier, supprimer des factures         |
| `clients:read`     | Lire les fiches clients                         |
| `clients:write`    | Creer et modifier des clients                   |
| `products:read`    | Lire le catalogue produits                      |
| `products:write`   | Creer et modifier des produits                  |
| `company:read`     | Lire les infos entreprise                       |
| `company:write`    | Modifier les infos entreprise                   |
| `bridge:read`      | Consulter les comptes et transactions bancaires |
| `user:read`        | Lire le profil utilisateur                      |
| `user:write`       | Modifier le profil utilisateur                  |
| `prospektor:read`  | Lire les prospects et stats                     |
| `prospektor:write` | Creer et modifier des prospects                 |
| `dokument:read`    | Lire les templates et documents                 |
| `dokument:write`   | Generer des documents                           |

## Securite

<AccordionGroup>
  <Accordion title="PKCE (S256)">
    Chaque autorisation utilise un `code_challenge` SHA-256. Meme si le code d'autorisation est intercepte, il ne peut pas etre utilise sans le `code_verifier` original.
  </Accordion>

  <Accordion title="Tokens hashes">
    Les refresh tokens et codes d'autorisation sont stockes en hash SHA-256 dans la base de donnees, jamais en clair.
  </Accordion>

  <Accordion title="Expiration automatique">
    * Access token : 60 minutes
    * Refresh token : 30 jours
    * Code d'autorisation : 10 minutes
  </Accordion>

  <Accordion title="Rate limiting">
    Les endpoints OAuth sont proteges par rate limiting pour prevenir les abus.
  </Accordion>
</AccordionGroup>

## Revoquer l'acces

Pour revoquer l'acces d'un client MCP, vous pouvez appeler :

```bash theme={null}
curl -X POST https://api.klark.app/v1/oauth/revoke \
  -H "Content-Type: application/json" \
  -d '{"token": "votre_refresh_token"}'
```
