Passer au contenu principal
Firma vous permet d’ajouter des signatures électroniques juridiquement valables à tout ce que vous construisez avec Claude Code. Connectez les serveurs MCP de Firma et Claude Code pourra générer du code d’intégration Firma précis, gérer vos demandes de signature et opérer directement sur vos données Firma depuis le terminal ou votre IDE.

Prérequis

Firma utilise la clé API brute comme valeur de l’en-tête Authorization - ne la préfixez pas avec Bearer. Cela diffère de nombreuses autres API.

Pour commencer

Étape 1 : Ajouter les serveurs MCP de Firma

Ajoutez les deux serveurs MCP de Firma aux paramètres de votre projet. À la racine de votre projet, créez ou modifiez .claude/settings.json :
{
  "mcpServers": {
    "firma-api": {
      "type": "url",
      "url": "https://mcp.firma.dev/mcp"
    },
    "firma-docs": {
      "type": "url",
      "url": "https://docs.firma.dev/mcp"
    }
  }
}
Vous pouvez également les ajouter à vos paramètres utilisateur dans ~/.claude/settings.json pour les rendre disponibles sur tous vos projets.
  • firma-api donne à Claude Code un accès direct à l’API Firma - 84 outils couvrant les demandes de signature, les modèles, les espaces de travail et les webhooks.
  • firma-docs donne à Claude Code accès à l’ensemble de la documentation Firma afin qu’il génère du code d’intégration précis.
Redémarrez Claude Code après avoir enregistré la configuration. Lors de la première utilisation d’un outil de l’API Firma, Claude Code vous guidera pour vous connecter à votre compte Firma via OAuth.
Quand utiliser quel serveur : firma-api sert à faire des actions (envoyer des demandes de signature, gérer des modèles). firma-docs sert à construire des choses (générer du code d’intégration avec des détails d’API précis). La plupart des développeurs voudront connecter les deux.

Étape 2 : Utiliser Firma depuis Claude Code

Une fois connecté, vous pouvez demander à Claude Code de construire des intégrations Firma ou d’opérer sur vos données : Générer une intégration backend :
Using the Firma API docs, create an Express route that:
1. Accepts a name, template_id, signer email, and signer name
2. Uses the create-and-send endpoint to send a signing request
3. Returns the signing request ID and the signer's signing link
Store the API key in process.env.FIRMA_API_KEY.
Lister vos demandes de signature :
List all pending signing requests in my default workspace.
Envoyer une demande de signature :
Create a signing request from the NDA template and send it to jane@example.com
Ajouter la signature intégrée à une application React :
Using the Firma docs, add an embedded signing view to this React app.
After a signing request is created, render the signer's signing_link
in an iframe.
Configurer des webhooks :
Using the Firma docs, create a webhook handler that listens for
signing_request.completed events and updates the contract status
in our Postgres database.
Faire explicitement référence à « the Firma docs » indique à Claude Code d’interroger le serveur MCP firma-docs avant d’écrire du code. Sans cela, il peut se rabattre sur des connaissances générales et manquer des détails sur les points de terminaison ou l’authentification.

Ce que génère Claude Code

Lorsque vous demandez à Claude Code de construire une intégration Firma, le code backend généré devrait ressembler à ceci :
import express from "express";

const FIRMA_API = "https://api.firma.dev/functions/v1/signing-request-api";
const app = express();
app.use(express.json());

app.post("/api/signing-requests", async (req, res) => {
  const { name, template_id, signer_email, signer_first_name, signer_last_name } =
    req.body;

  const response = await fetch(
    `${FIRMA_API}/signing-requests/create-and-send`,
    {
      method: "POST",
      headers: {
        Authorization: process.env.FIRMA_API_KEY,
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        name,
        template_id,
        recipients: [
          {
            first_name: signer_first_name,
            last_name: signer_last_name,
            email: signer_email,
            designation: "Signer",
            order: 1,
          },
        ],
      }),
    }
  );

  const data = await response.json();

  if (!response.ok) return res.status(response.status).json({ error: data });
  res.json({
    signing_request_id: data.id,
    signing_request_user_id: data.first_signer.id,
    signing_link: data.first_signer.signing_link,
  });
});

app.listen(3000);
Le point de terminaison create-and-send crée la demande de signature et l’envoie aux destinataires de manière atomique. Si vous avez besoin de vérifier ou de modifier la demande avant l’envoi, utilisez POST /signing-requests pour créer un brouillon, puis POST /signing-requests/{id}/send séparément.
N’exposez jamais votre clé API dans du code frontend. Appelez toujours l’API Firma depuis un backend où les secrets restent protégés.

Intégration des webhooks

Pour suivre les événements de signature en temps réel, demandez à Claude Code d’ajouter un gestionnaire de webhook :
Using the Firma docs, create a webhook handler that receives Firma events.
When signing_request.completed fires, update the contract record in the database.
L’agent générera quelque chose comme ceci :
app.post("/api/firma-webhook", async (req, res) => {
  const { type, data } = req.body;

  if (type === "signing_request.completed") {
    const signingRequestId = data.signing_request.id;
    // Update your database or trigger the next workflow step.
  }

  res.json({ received: true });
});
Dans le tableau de bord Firma, sous Paramètres > Webhooks, enregistrez l’URL de votre point de terminaison. Firma envoie des événements pour tous les changements d’état majeurs. Consultez le guide des webhooks pour la liste complète des événements et la vérification de signature.
Vérifiez toujours la signature du webhook à l’aide de votre secret de signature webhook Firma en production. Consultez le guide des webhooks pour les détails d’implémentation.

Signature intégrée

Pour les applications où les signataires complètent des documents directement dans votre interface plutôt que d’ouvrir une page hébergée par Firma, la réponse de create-and-send inclut first_signer.id (le signing_request_user_id) et un first_signer.signing_link prêt à l’emploi. Chargez l’URL du signataire dans une iframe :
<iframe
  src="https://app.firma.dev/signing/{signing_request_user_id}"
  style="width:100%;height:900px;border:0;"
  allow="camera;microphone;clipboard-write"
  title="Document Signing"
></iframe>
Consultez le guide de la signature intégrée pour la configuration complète, y compris les bonnes pratiques de sécurité.

Conseils

  • Utilisez firma-docs pour construire, firma-api pour opérer. Le serveur de documentation aide Claude Code à écrire du code d’intégration correct. Le serveur API lui permet de gérer directement les demandes de signature, les modèles et les espaces de travail.
  • Passez template_id explicitement. Les modèles sont le moyen le plus sûr de limiter ce que l’agent peut envoyer.
  • Validez avant l’envoi. Pour les documents à enjeux plus élevés, demandez à Claude Code de créer un brouillon avec POST /signing-requests, puis de confirmer avant d’appeler POST /signing-requests/{id}/send.
  • Espaces de travail pour les applications multi-tenant. Si vous construisez un produit SaaS, attribuez à chaque client final son propre espace de travail Firma afin que les modèles et l’utilisation restent isolés.

Prochaines étapes