- Register Firma as a Connector - The native Mistral pattern. Register Firma’s MCP server once, then use it across conversations, agents, and Vibe. Best for most use cases.
- Function calling with the Chat Completions API - Define Firma operations as tools manually. Best when you want full control over the tool schema or aren’t using Connectors yet.
- Custom Connector (inline auth) - Pass the Firma MCP server URL and API key at conversation time without pre-registering. Useful for multi-tenant setups where each user has their own Firma key.
Prerequisites
- A Firma account with an API key
- A Mistral account with API access to Studio (
https://console.mistral.ai) - At least one Firma template with signing fields configured
- The
mistralaiPython SDK:pip install mistralai - The
requestslibrary (for Path 2):pip install requests
Firma uses the raw API key as the
Authorization header value. Do not prefix it with Bearer. This differs from many other APIs.Path 1: Register Firma as a Connector
This is the cleanest path. You register Firma’s MCP server once, and every Mistral surface - the Conversations API, the Agents API, and Vibe - can use Firma’s tools immediately.Step 1: Register the Connector
Step 2: Use the Connector in a conversation
Pass the Connector ID in thetools array and let the model decide which Firma tool to call:
signing_requests_create_and_send), constructs the arguments from the user’s message, and executes it.
Step 3: Build a persistent Firma agent
For a reusable agent that always has Firma tools available, create it once and chat with it later:Path 2: Function calling with the Chat Completions API
If you’d rather define Firma tools yourself, expose them as functions on the Chat Completions endpoint. This works on any Mistral model that supports tool calling.The
create-and-send endpoint creates the signing request and emails it to recipients in one call. Only first_name and email are required for each recipient. If you want a model-mediated review step before sending, use POST /signing-requests to create a draft, then POST /signing-requests/{id}/send separately.Path 3: Custom Connector (inline auth)
When you don’t want to pre-register a Connector (e.g., each user has their own Firma API key), pass the MCP server URL and credentials inline:Webhook integration: react when documents are signed
Firma sends webhooks for every state change in a signing request. The typical pattern with Mistral agents is to receive the webhook in your own backend, then either update your database directly or hand the event back to an agent for follow-up actions. Minimal handler in FastAPI:Vibe: end-user e-signature workflows
Once the Firma Connector is registered in your Mistral workspace, Vibe users can invoke Firma directly from chat. Typical prompts:- “Send the standard NDA to alice@example.com.”
- “What’s the status of the contract I sent to Bob yesterday?”
- “List all signing requests that are still pending.”
Embedded signing
If you want signers to complete documents inside your own product instead of opening the Firma-hosted page, read the signer ID from the create-and-send response and embed the signing UI in an iframe:Docs MCP for build-time assistance
For development inside Vibe or any MCP-aware coding tool, register Firma’s Docs MCP server athttps://docs.firma.dev/mcp as a separate Connector. The Docs MCP exposes search over Firma’s complete documentation, so the model can answer accurate API questions while you’re writing integration code. This is for the build experience and does not affect your running agents.
Next steps
- API authentication - API keys and workspace scoping
- Webhooks guide - event types, payloads, and signature verification
- Embedded signing - in-app signing experience
- Creating workspaces - multi-tenant setups for SaaS apps
- Complete setup guide - end-to-end Firma integration walkthrough
- API reference - full endpoint documentation