← Back to API Docs

MCP Server

Connect Plume to AI assistants like Claude using the Model Context Protocol.

The Plume MCP server lets AI agents manage contacts, upload documents, place signature blocks, and send documents for signing — all through natural language.

Connection URL

https://plume.claap.io/api/mcp

Plume supports two authentication methods: OAuth (recommended) and API key.

Authentication

OAuth — Sign in with your Plume account

OAuth lets you connect without managing API keys. Your AI client will open a browser window where you sign in to Plume and authorize access. No configuration file needed.

Supported by: Claude Desktop, Claude Code, and any MCP client that supports OAuth 2.1 with dynamic client registration.

API Key — For programmatic access

API keys are scoped to a specific workspace. Use them for automation, CI/CD, or clients that don't support OAuth.

1

Generate a key

Go to Settings > API Keys and create a new key. Copy it — you won't see it again.

2

Add it to your client config

Pass the key as a Bearer token in the Authorization header (see client setup below).

Client Setup

Claude Desktop

Option A: OAuth (recommended)

This is the easiest way to connect. No API key or config file required.

1

Go to Customize

In Claude Desktop, click "Customize" in the left sidebar.

2

Open Connectors

Select "Connectors" in the Customize menu.

3

Add a custom connector

Click the + button in the top-right, then select "Add custom connector".

4

Fill in the details

FieldValue
NamePlume
Remote MCP server URLhttps://plume.claap.io/api/mcp

Click "Add".

5

Connect & authorize

Click "Connect" on the Plume connector. Your browser will open to sign in to Plume. Log in with your account and click "Authorize". You'll be redirected back to Claude Desktop automatically.

Once connected, the Plume tools will appear in your conversations. You can manage the connector from Customize > Connectors at any time.

Option B: API Key

If you prefer using an API key, add it manually to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "plume": {
      "type": "streamable-http",
      "url": "https://plume.claap.io/api/mcp",
      "headers": {
        "Authorization": "Bearer sk_live_your_key_here"
      }
    }
  }
}

Claude Code (CLI)

Option A: OAuth (recommended)

Run the following command to add Plume as a remote MCP server:

claude mcp add plume --transport http https://plume.claap.io/api/mcp

Claude Code will open your browser to authorize with your Plume account on first use.

Option B: API Key

Add to your project's .claude/settings.json:

{
  "mcpServers": {
    "plume": {
      "type": "streamable-http",
      "url": "https://plume.claap.io/api/mcp",
      "headers": {
        "Authorization": "Bearer sk_live_your_key_here"
      }
    }
  }
}

Cursor

Open Settings > MCP, click "Add new MCP server", and select "Streamable HTTP".

FieldValue
Nameplume
URLhttps://plume.claap.io/api/mcp

Then add the authorization header in the JSON config:

{
  "mcpServers": {
    "plume": {
      "url": "https://plume.claap.io/api/mcp",
      "headers": {
        "Authorization": "Bearer sk_live_your_key_here"
      }
    }
  }
}

Other MCP Clients

Any client that supports the Model Context Protocol with Streamable HTTP transport can connect.

With OAuth

If your client supports OAuth 2.1 with dynamic client registration, just point it to the MCP URL. The OAuth discovery endpoint is at:

https://plume.claap.io/.well-known/oauth-authorization-server

With API Key

ParameterValue
TransportStreamable HTTP
URLhttps://plume.claap.io/api/mcp
Auth headerAuthorization: Bearer sk_live_your_key_here

You can verify the connection with curl:

curl -X POST https://plume.claap.io/api/mcp \
  -H "Authorization: Bearer sk_live_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Available Tools

Workspace

list_workspaces
List all workspaces you belong to. If you only have one workspace, it is selected automatically.
set_workspace
Set the active workspace for this session. Required for multi-workspace accounts.
workspace_id required
UUID of the workspace (from list_workspaces)

Contacts

create_contact
Create a new contact for use as a signatory. Returns the existing contact if the email already exists.
name required
Full name of the contact
email required
Email address (must be valid)
company optional
Company name
search_contacts
Search for existing contacts by name or email.
query optional
Search term to filter contacts. Returns all contacts if omitted.

Documents

upload_document
Upload a PDF document to Plume from a URL. Creates an envelope and document in draft status. The file name becomes the document title.
file_url required
Public URL to download the PDF from (http/https only, private IPs blocked). Max file size: 50 MB.
list_documents
List documents in your workspace with optional status filtering.
status optional
Filter by status: draft, pending, partially_signed, completed, canceled
get_document_status
Get the current status of a document including signatory progress.
document_id required
The document ID

Signature Blocks

Coordinate system: Block positions (x, y) and dimensions (width, height) are percentages of the page size (0–100). Origin (0, 0) is the top-left corner. For example, x: 10, y: 80 places a block 10% from the left and 80% from the top.
Contacts first: Each block must reference an existing contact by email. Use create_contact or search_contacts before placing blocks.
place_blocks
Place signature, paraphe (initials), or text blocks on a document. Blocks are assigned to contacts by email — the contact must already exist (use create_contact first).
document_id required
The document ID (must be in draft status)
blocks required
Array of blocks, each with: type (signature | paraphe | text), page (1-indexed), x, y (position as percentage of page size, origin is top-left), signatory_email (must match an existing contact), and optional width / height (default: 20% × 5%)

Signing

send_document
Send a draft document for signing. Emails signing links to all contacts assigned via blocks. All blocks must be assigned to contacts before sending.
document_id required
The document ID (must be in draft status with at least one block placed and all blocks assigned)
download_signed_pdf
Get a temporary download URL for the signed PDF once all signatories have completed signing. The URL expires after 60 seconds.
document_id required
The document ID (must be in completed status)

Workflow

sign_workflow
Execute a full signing workflow in one step: resolves or creates contacts, uploads the PDF, analyzes content for signature zones, places blocks automatically, and sends for signing. Returns progress for each step.
file_url required
Public URL to download the PDF from (http/https only)
signatories required
Array of signatories, each with email, name, and optional company

Example Conversation

Once connected, you can ask your AI assistant things like:

> Upload the NDA at https://example.com/nda.pdf and send it
  to alice@acme.com for signature

> What documents are currently pending?

> Check if the contract I sent to bob@example.com has been signed yet

> Download the signed version of document abc-123

Typical Workflow

StepToolWhat happens
1create_contactRegister the signatory (skipped if they already exist)
2upload_documentUpload the PDF — document starts in draft status
3place_blocksPlace signature/paraphe blocks at the right coordinates
4send_documentSend signing emails — status moves to pending
5get_document_statusMonitor signing progress
6download_signed_pdfDownload once completed

Troubleshooting

OAuth: browser opens but nothing happens

Make sure you're signed in to Plume in your browser. If the authorization page shows an error, try signing out and back in to Plume first, then retry the OAuth flow in your AI client.

OAuth: "No workspace selected" error

If you belong to multiple workspaces, the AI assistant will ask which one to use. Call the list_workspaces tool first, then set_workspace with the desired workspace ID.

API Key: connection errors

Verify your API key is valid by testing with curl:

curl -X POST https://plume.claap.io/api/mcp \
  -H "Authorization: Bearer sk_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Tools not showing up

Restart your AI client after adding the MCP configuration. Most clients require a restart to discover new servers.

Permission errors

API keys are scoped to the workspace of the user who created them. OAuth users have access to all workspaces they belong to.

Need help? Contact tech@claap.io · REST API Docs