Documentation Index Fetch the complete documentation index at: https://docs.firma.dev/llms.txt
Use this file to discover all available pages before exploring further.
Firma provides an MCP server that lets AI assistants interact with the Firma API directly. You can manage templates, create signing requests, configure workspaces, and more through natural language conversations.
What is MCP?
The Model Context Protocol (MCP) is an open standard that connects AI assistants to external tools and data sources. Instead of writing API calls manually, you describe what you need in plain language, and the AI assistant uses the Firma MCP server to execute the right API calls on your behalf.
Supported clients
The Firma MCP server works with any client that supports the MCP Streamable HTTP transport:
Claude — Claude Code, Claude Desktop, Claude.ai
ChatGPT — Via Developer Mode connectors
Cursor — Native MCP support
GitHub Copilot — VS Code 1.101+
OpenAI Codex — Via CLI or config
Other MCP clients — Any client implementing the Streamable HTTP transport
Authentication
The MCP server authenticates via OAuth 2.1 with PKCE using your Firma account credentials. When you connect through any supported client, the OAuth flow is handled automatically — you’ll be redirected to sign in with your Firma account and authorize access.
Setup
Claude Code
Claude Desktop
Claude.ai
ChatGPT
Cursor
GitHub Copilot
OpenAI Codex
Add the Firma MCP server via the CLI: claude mcp add firma-api --type url --url https://mcp.firma.dev/mcp
Or add it to your Claude Code configuration (.claude/settings.json): {
"mcpServers" : {
"firma-api" : {
"type" : "url" ,
"url" : "https://mcp.firma.dev/mcp"
}
}
}
You’ll be prompted to sign in with your Firma account on first use. Add the server to your Claude Desktop configuration file (claude_desktop_config.json): {
"mcpServers" : {
"firma-api" : {
"type" : "url" ,
"url" : "https://mcp.firma.dev/mcp"
}
}
}
Restart Claude Desktop after saving. You’ll be prompted to sign in with your Firma account on first use.
Add Firma to Claude.ai Open Claude.ai Connector Settings
Click Add Connector
Enter the server URL: https://mcp.firma.dev/mcp
Complete the OAuth sign-in flow when prompted
The connector will appear in your conversation toolbar
Requires a ChatGPT Pro, Team, Enterprise, or Edu plan with Developer Mode enabled.
Add Firma to ChatGPT Open ChatGPT Connector Settings
Click Create to add a new connector
Enter the server URL: https://mcp.firma.dev/mcp
Complete the OAuth sign-in flow when prompted
The Firma tools will appear in your conversations
Install in Cursor One-click install for Cursor IDE
Or add manually to your project-level config (.cursor/mcp.json) or global Cursor settings: {
"mcpServers" : {
"firma-api" : {
"url" : "https://mcp.firma.dev/mcp"
}
}
}
You’ll be prompted to sign in with your Firma account on first use. Requires VS Code 1.101+ with GitHub Copilot enabled.
Install in VS Code One-click install for VS Code with GitHub Copilot
Or add manually to your workspace config (.vscode/mcp.json): {
"servers" : {
"firma-api" : {
"url" : "https://mcp.firma.dev/mcp"
}
}
}
You’ll be prompted to sign in with your Firma account on first use. Add the server via the Codex CLI: codex mcp add firma-api --type url --url https://mcp.firma.dev/mcp
Or add it to your config.toml: [ mcp . firma-api ]
type = "url"
url = "https://mcp.firma.dev/mcp"
You’ll be prompted to sign in with your Firma account on first use.
Once connected, the AI assistant can use the following tools. There are 84 tools organized across 10 categories.
Signing Requests
Templates
Workspaces
Webhooks
Company
Email Domains
Email Templates
Custom Fields
JWT & Settings
The core workflow tools for creating and managing signing requests. Tool Description signing_requests_listList signing requests with filtering and pagination signing_requests_createCreate a new signing request from a document or template signing_requests_create_and_sendCreate and send a signing request in one step signing_requests_getGet details of a specific signing request signing_requests_partial_updateUpdate specific fields on a signing request signing_requests_updateFull update of a signing request signing_requests_sendSend a draft signing request to recipients signing_requests_cancelCancel an active signing request signing_requests_resendResend to specific recipients signing_requests_users_listList recipients on a signing request signing_requests_fields_listList fields on a signing request signing_requests_reminders_listList reminders for a signing request signing_requests_audit_listGet the audit trail for a signing request
Create and manage reusable document templates. Tool Description templates_listList templates with filtering and pagination templates_createCreate a new template from a base64-encoded document templates_getGet details of a specific template templates_partial_updateUpdate specific fields on a template templates_updateFull update of a template templates_deleteDelete a template templates_duplicateDuplicate a template into a new signing request templates_replace_documentReplace the document on an existing template templates_users_listList recipients on a template templates_fields_listList fields on a template templates_reminders_listList reminders on a template
Manage workspaces for multi-tenant isolation. Tool Description workspaces_listList all workspaces workspaces_createCreate a new workspace workspaces_getGet details of a specific workspace workspaces_updateFull update of a workspace workspaces_partial_updateUpdate specific fields on a workspace workspaces_api_key_regenerateRegenerate a workspace’s API key workspaces_api_key_expireExpire pending API keys select_workspaceSwitch the active workspace for the session
Configure webhook endpoints for real-time event notifications. Tool Description webhooks_listList all webhooks webhooks_createCreate a new webhook webhooks_getGet details of a specific webhook webhooks_updateUpdate a webhook webhooks_deleteDelete a webhook webhooks_testSend a test event to a webhook webhooks_rotate_secretRotate the webhook signing secret webhooks_secret_statusCheck webhook secret rotation status
View and update company-level information. Tool Description company_listGet company information company_updateFull update of company details company_partial_updateUpdate specific company fields
Configure custom email domains for sending notifications. Tool Description company_domains_listList company-level domains company_domains_createAdd a company domain company_domains_getGet domain details company_domains_deleteRemove a domain company_domains_verify_ownershipVerify domain ownership company_domains_finalizeFinalize domain setup company_domains_verify_dnsVerify DNS records company_domains_set_primarySet as primary sending domain workspace_domains_listList workspace-level domains workspace_domains_createAdd a workspace domain workspace_domains_getGet workspace domain details workspace_domains_deleteRemove a workspace domain workspace_domains_verify_ownershipVerify workspace domain ownership workspace_domains_finalizeFinalize workspace domain setup workspace_domains_verify_dnsVerify workspace domain DNS records workspace_domains_set_primarySet as primary workspace sending domain
Customize the email notifications sent to signers. Tool Description workspace_email_templates_listList workspace email templates workspace_email_templates_getGet a workspace email template workspace_email_templates_updateUpdate a workspace email template workspace_email_templates_deleteReset a workspace email template to default company_email_templates_listList company email templates company_email_templates_updateUpdate a company email template company_email_templates_deleteReset a company email template to default email_templates_defaults_getGet default email templates for a language email_templates_placeholdersList available email template placeholders
Manage custom metadata fields on workspaces, templates, and signing requests. Tool Description workspace_custom_fields_listList workspace custom fields workspace_custom_fields_createCreate a workspace custom field workspace_custom_fields_updateUpdate a workspace custom field workspace_custom_fields_deleteDelete a workspace custom field templates_custom_fields_listList template custom fields templates_custom_fields_createCreate a template custom field templates_custom_fields_deleteDelete a template custom field signing_requests_custom_fields_listList signing request custom fields signing_requests_custom_fields_createCreate a signing request custom field signing_requests_custom_fields_deleteDelete a signing request custom field
Generate JWT tokens for embedded editors and manage workspace settings. Tool Description generate_template_token_createGenerate a JWT for the embedded template editor revoke_template_token_createRevoke a template JWT jwt_generate_signing_request_createGenerate a JWT for the embedded signing request editor jwt_revoke_signing_request_createRevoke a signing request JWT workspace_settings_listGet workspace settings workspace_settings_updateUpdate workspace settings
Workspace selection
After signing in, you start without a workspace selected. You can either:
Ask the assistant to select a workspace — e.g., “Switch to the Marketing workspace”
Let the assistant pass a workspace ID per request — the assistant can include a workspace_id parameter on individual tool calls
The assistant will typically list your workspaces first and ask which one to use.
Example conversations
List all signing requests
“Show me all pending signing requests in my Marketing workspace”
The assistant will select the workspace, call the signing requests list endpoint, and present the results.
Create and send a signing request
“Create a signing request from the NDA template and send it to jane@example.com ”
The assistant will find the template, duplicate it into a signing request, set the recipient, and send it.
Check signing status
“What’s the status of the signing request I sent to John last week?”
The assistant will search recent signing requests and return the current status, including which recipients have signed.
Rate limits
MCP requests are subject to the same rate limits as direct API calls. Each tool call maps to one API request.
Troubleshooting
If your client shows the server as connected but no tools appear:
Claude.ai / ChatGPT : Try disconnecting and reconnecting the connector from Settings
Cursor / VS Code : Restart the application after adding the configuration
Claude Desktop : Restart the app — changes to claude_desktop_config.json require a restart
Workspace not found
Make sure you’ve selected a workspace after connecting. Use “List my workspaces” to see available options.
Authentication errors
Try signing out and back in to refresh your session. If the issue persists, disconnect and reconnect the server in your client’s settings.