Model Context Protocol (MCP) Server
Connect AI assistants (Claude, Cursor, Antigravity, Windsurf) directly to ComposeIt for autonomous template creation, editing, document compilation, and asset management.
The ComposeIt MCP Server implements the open Model Context Protocol (MCP) specification, allowing modern AI developer tools and assistants to interact directly with your ComposeIt workspace.
ComposeIt hosts the MCP server at https://mcp.composeit.app. You do not need to install or run code locally; you only need to provide your ComposeIt API key when configuring your client.
Using natural language, your AI assistant can:
- Design & build templates: Generate complete visual templates from scratch using structured Abstract Syntax Trees (AST) or clone pre-configured blueprints.
- Edit & refine templates: Update layouts, fonts, margins, CSS styles, formulas, and collection loops.
- Configure E-Signatures: Place visual DocuSeal signer fields and configure multi-party signing order, expiration, and collection mapping.
- Compile & render documents: Pass dynamic JSON data to generate production PDFs, HTML documents, or images.
- Manage digital assets: Upload logos, banners, signatures, and media files directly into your organization library.
Quick Setup (Hosted MCP)
Connecting your AI client to ComposeIt takes less than a minute. You only need your ComposeIt API Key (obtainable from ComposeIt Dashboard → API Keys).
1. Claude Desktop
Edit your claude_desktop_config.json:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"composeit": {
"url": "https://mcp.composeit.app/sse",
"headers": {
"x-api-key": "YOUR_COMPOSEIT_API_KEY"
}
}
}
}2. Cursor / Antigravity IDE
In your project root or user settings, add to .cursor/mcp.json or Antigravity configuration:
{
"mcpServers": {
"composeit": {
"url": "https://mcp.composeit.app/sse",
"headers": {
"x-api-key": "YOUR_COMPOSEIT_API_KEY"
}
}
}
}Alternatively, you can also use the Authorization header with a Bearer token:
{
"mcpServers": {
"composeit": {
"url": "https://mcp.composeit.app/mcp",
"headers": {
"Authorization": "Bearer YOUR_COMPOSEIT_API_KEY"
}
}
}
}Alternatively, if your client does not support custom headers, you can pass the API key via query parameter:
{
"mcpServers": {
"composeit": {
"url": "https://mcp.composeit.app/sse?apiKey=YOUR_COMPOSEIT_API_KEY"
}
}
}Available MCP Tools
1. Template Management
get_template_ast_guide
Retrieves the comprehensive AST specification, component hierarchy, ProseMirror schema, dynamic variables, formulas, loops, tables, charts, and DocuSeal e-sign visual signer mapping guide.
- Arguments: None.
create_template
Creates a new template with a valid AST definition, clones from a pre-configured blueprint, or clones from an existing template.
- Arguments:
name(string, required): Display title for the template.description(string, optional): Short description.templateType("document"|"email", optional): Default"document".definition(object, optional): Valid AST (ProjectData) definition object.blueprint(string, optional): Name of a blueprint configured in server environment (e.g."invoice","contract").cloneTemplateId(string, optional): Existing template UUID to clone definition from.format(enum, optional):"A4","Letter","Legal","A3","A5","Tabloid","Custom".isLandscape(boolean, optional): Whether document pages are landscape.
edit_template
Modifies an existing template's metadata, page configuration, or complete AST definition.
- Arguments:
templateId(string, required): UUID of the template.name(string, optional): Updated name.description(string, optional): Updated description.definition(object, optional): Updated AST (ProjectData) definition object.format(enum, optional): Update page format.isLandscape(boolean, optional): Update page orientation.isActive(boolean, optional): Active publish status.createVersion(boolean, optional): Snapshot a new version in history.versionNote(string, optional): Changelog note for the version.
list_templates
Lists templates with search query, pagination, and sorting.
- Arguments:
page(number, optional): 1-based page number.pageSize(number, optional): Records per page (1 to 100).q(string, optional): Search keyword.recentlyUpdated(boolean, optional): Sort by update date descending.
get_template
Retrieves full details and layout definition for a specific template.
- Arguments:
templateId(string, required): UUID of the template.typeOnly(boolean, optional): If true, returns only id and templateType.
duplicate_template
Duplicates an existing template and its layout definition.
- Arguments:
templateId(string, required): ID of the template to duplicate.
delete_template
Moves a template to the trash bin.
- Arguments:
templateId(string, required): Template UUID.
2. Version Control
list_template_versions
Retrieves version history for a template.
- Arguments:
templateId(string, required): Template UUID.
get_template_version
Inspects an exact historical version snapshot.
- Arguments:
templateId(string, required): Template UUID.versionId(string, required): Version snapshot identifier.
3. Document Compilation & Rendering
render_document
Merges dynamic JSON data into an active template to compile PDF, HTML, image, or MJML files.
- Arguments:
templateId(string, required): Template to render.formats(array, required): Output formats:["pdf"],["html"],["image"],["mjml"].data(object, optional): JSON key-value data to inject into template placeholders.imageType("png"|"jpg", optional): Format if rendering images.isTest(boolean, optional): Test watermark preview without consuming merge credits.sendForSignature(boolean, optional): Trigger DocuSeal e-signature workflow.docusealConnection(string, optional): Connected DocuSeal integration ID.
list_documents
Lists compiled documents and download links.
- Arguments:
limit(number, optional): Max records to retrieve.offset(number, optional): Pagination offset.
get_document
Retrieves outputs, metadata, and CDN download URLs for a compiled document.
- Arguments:
documentId(string, required): Unique document ID.
4. Asset Management
upload_asset
Uploads an image, video, logo, or font to your organization media library.
- Arguments:
filePath(string, optional): Local filesystem path to file.fileUrl(string, optional): Remote URL to download and ingest.base64Data(string, optional): Base64 encoded file content.name(string, required): Display filename.assetType("image"|"video", optional): Default"image".
list_assets
Lists organization media assets with optional filtering.
- Arguments:
assetType("image"|"video", optional): Filter by type.folderId(string, optional): Filter by folder.includeTrashed(boolean, optional): Include trashed assets.
get_asset
Retrieves CDN URLs and metadata for a specific media asset.
- Arguments:
assetId(string, required): Unique asset identifier.
delete_asset
Moves an asset to the trash.
- Arguments:
assetId(string, required): Asset identifier.
Example Interaction
You can ask your AI assistant naturally:
"Create a NDA agreement template with two signers ('First Party' and 'Second Party') using DocuSeal, sequential signing order, and signature blocks on the last page."
The assistant calls
get_template_ast_guideto inspect component rules, builds a validProjectDataAST withds-signatureandds-dateelements mapped toFirst PartyandSecond Party, configures the root datasourceconnection.submitters, callscreate_template, and returns the created template.