MCP Server

Connect Claude, Cursor, Codex, VS Code, or any MCP-compatible AI tool to BoltPDF. Manage templates, fill forms, and generate PDFs from your AI chat — no copy-paste, no context-switching.

Calling BoltPDF from your own code instead? The same keys work with the REST API.

What you can do

  • List, search, and inspect your PDF templates and their fields; rename or delete templates; tweak field labels, types, and formats
  • Map fields to standard fields (taxpayer name, SSN, address, and so on) so one saved value fills the same item on every form
  • Upload a new PDF (from a URL or inline) and run AI field detection — or re-run it on a single page
  • Create, update, and delete prefill records and record groups, save field values into them, and see which forms each record can fill
  • Generate a filled PDF from ad-hoc values or a saved record, with optional page or Bates numbers, a DRAFT watermark or a password — the PDF comes back as an attachment
  • Put forms, and letters such as an engagement letter, into packets and generate a client's whole packet as one PDF, with page numbers that run across every page
  • List your documents (letters such as an engagement letter, written in BoltPDF) and fill one from a record into a PDF, with the merge fields the record has no value for listed
  • List your questionnaires (intakes that ask everything a packet's forms need, once), read a record's answers, and save new ones, which fill every form asking for them
  • List your automations and run one on a record (fill a form, packet or letter, email the client or your team, send the client a request, move the record to a group), then check what each step did
  • Run bulk PDF generation jobs from a form, a packet or a letter (these give you download URLs and file names, with the same page numbers, watermark and password options) and CSV imports, and check on their progress
  • Create and revoke shareable form links that anyone can fill in, optionally with an e-signature
  • List, add and delete webhooks that send events to a URL when a form is submitted or a job finishes
  • Check which account your key or connected app acts as, your subscription, and AI page allowance

All 51 tools enforce the same access controls and subscription rules as the web app. Your AI tool only sees data your account can access, and an expired subscription blocks everything except get_account_info, which tells you why, and listing or deleting webhooks.

Step 1 — Sign in, or create an API key

Claude, ChatGPT and Claude Code can connect by signing in to BoltPDF: add the server URL, sign in when they ask, pick the workspace and click Allow. There's nothing to copy, and you can disconnect an app at any time under Connected Apps at app.boltpdf.com/settings/api-keys. Skip to Step 2 for those.

For other tools, and for scripts, create an API key:

  1. Sign in at app.boltpdf.com/settings/api-keys.
  2. Click Create Key, give it a name (e.g. "Claude Desktop"), and copy the bpk_... token shown.
  3. Important: the key is shown only once. Copy it immediately and store it somewhere safe — you can't retrieve it later. If you lose it, revoke it and create a new one.

Create one key per tool so you can revoke them independently. With a key, every tool below needs the same two things: the server URL https://app.boltpdf.com/api/mcp and the header Authorization: Bearer bpk_….

Step 2 — Connect your AI tool

Jump to your tool:

Claude (web, desktop & mobile) Add a connector and sign in
  1. On claude.ai or in Claude Desktop, open Settings → Connectors and choose Add custom connector.
  2. Name it BoltPDF, paste the URL https://app.boltpdf.com/api/mcp and click Add. Leave the OAuth fields under Advanced settings empty.
  3. Click Connect, sign in to BoltPDF, pick the workspace Claude should use and click Allow.
  4. The BoltPDF tools appear in the + menu under Connectors, on the web, in the desktop app and on your phone.

On a Team or Enterprise plan, an owner adds the connector in the organization's settings first; then each person clicks Connect and signs in.

To use an API key in Claude Desktop instead, edit ~/Library/Application Support/Claude/claude_desktop_config.json on macOS or %APPDATA%\Claude\claude_desktop_config.json on Windows:

claude_desktop_config.json
{
  "mcpServers": {
    "boltpdf": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote@latest",
        "https://app.boltpdf.com/api/mcp",
        "--header",
        "Authorization:${AUTH_HEADER}"
      ],
      "env": {
        "AUTH_HEADER": "Bearer bpk_..."
      }
    }
  }
}

The ${AUTH_HEADER} indirection dodges an npx bug that splits arguments on spaces — don't inline the header value. Requires Node.js on your machine.

Claude Code One command, or a shareable .mcp.json

Add the server for your user with one command:

Terminal
claude mcp add --transport http boltpdf https://app.boltpdf.com/api/mcp

Then run /mcp inside Claude Code, choose boltpdf and Authenticate: your browser opens BoltPDF to sign in. To use an API key instead, add it as a header:

Terminal
claude mcp add --transport http boltpdf https://app.boltpdf.com/api/mcp \
  --header "Authorization: Bearer bpk_..."

Or commit a project-level .mcp.json that reads the key from an environment variable, so every teammate brings their own key:

.mcp.json
{
  "mcpServers": {
    "boltpdf": {
      "type": "http",
      "url": "https://app.boltpdf.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ${BOLTPDF_API_KEY}"
      }
    }
  }
}

Run /mcp inside Claude Code to confirm the server shows as connected.

Cursor Project or global mcp.json
  1. Open Cursor Settings → MCP and choose Add new global MCP server, or create .cursor/mcp.json in your project (~/.cursor/mcp.json applies to every project).
  2. Paste the config below. ${env:BOLTPDF_API_KEY} reads the key from your environment; you can also paste the key directly.
  3. Toggle the server on in the MCP list. The tools are available in Agent mode.
.cursor/mcp.json
{
  "mcpServers": {
    "boltpdf": {
      "url": "https://app.boltpdf.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ${env:BOLTPDF_API_KEY}"
      }
    }
  }
}
VS Code (GitHub Copilot) Agent mode with a prompted secret

Create .vscode/mcp.json in your workspace. The inputs entry makes VS Code prompt for the key and store it securely, so it never lands in the repo:

.vscode/mcp.json
{
  "inputs": [
    {
      "id": "boltpdf-key",
      "type": "promptString",
      "description": "BoltPDF API key",
      "password": true
    }
  ],
  "servers": {
    "boltpdf": {
      "type": "http",
      "url": "https://app.boltpdf.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ${input:boltpdf-key}"
      }
    }
  }
}

Click Start above the server entry (or run MCP: List Servers from the command palette), then open Copilot Chat in Agent mode.

Windsurf mcp_config.json

Open Windsurf Settings → MCP and choose View raw config, or edit ~/.codeium/windsurf/mcp_config.json directly:

mcp_config.json
{
  "mcpServers": {
    "boltpdf": {
      "serverUrl": "https://app.boltpdf.com/api/mcp",
      "headers": {
        "Authorization": "Bearer bpk_..."
      }
    }
  }
}

Press Refresh in the MCP panel after saving; the tools appear in Cascade.

OpenAI Codex CLI config.toml with the key in an env var

Add the server to ~/.codex/config.toml and export BOLTPDF_API_KEY in the shell you start codex from:

~/.codex/config.toml
[mcp_servers.boltpdf]
url = "https://app.boltpdf.com/api/mcp"
bearer_token_env_var = "BOLTPDF_API_KEY"

The CLI can write the same entry for you:

Terminal
export BOLTPDF_API_KEY=bpk_...
codex mcp add boltpdf --url https://app.boltpdf.com/api/mcp \
  --bearer-token-env-var BOLTPDF_API_KEY
Gemini CLI settings.json

Add the server to ~/.gemini/settings.json (or .gemini/settings.json in a project):

settings.json
{
  "mcpServers": {
    "boltpdf": {
      "httpUrl": "https://app.boltpdf.com/api/mcp",
      "headers": {
        "Authorization": "Bearer bpk_..."
      }
    }
  }
}

Run /mcp inside Gemini CLI to list the connected servers and their tools.

OpenAI Responses API For agents you build yourself

Building your own agent on OpenAI? Pass BoltPDF as a hosted mcp tool and the model calls it directly:

tools[] entry
{
  "type": "mcp",
  "server_label": "boltpdf",
  "server_url": "https://app.boltpdf.com/api/mcp",
  "headers": {
    "Authorization": "Bearer bpk_..."
  },
  "require_approval": "never"
}

Keep the key server-side — never ship it in a browser or mobile app.

ChatGPT Developer mode, then sign in
  1. In ChatGPT's settings, open Apps (called Connectors on some plans), then Advanced settings, and turn on Developer mode.
  2. Choose Create, name it BoltPDF, paste the URL https://app.boltpdf.com/api/mcp and pick OAuth for authentication.
  3. Sign in to BoltPDF when asked, pick the workspace and click Allow.

ChatGPT renames these menus now and then; if yours differ, look for adding a custom MCP server or app.

Other clients & testing Continue, Zed, MCP Inspector, curl

Any client that speaks Streamable HTTP works. Clients that support MCP's sign-in (OAuth) need only the URL https://app.boltpdf.com/api/mcp and open BoltPDF for you to sign in; for the rest, add the header Authorization: Bearer bpk_.... The menu path differs per client, but that's all you need.

To poke at the server directly, use MCP Inspector:

Terminal
npx @modelcontextprotocol/inspector

Pick transport Streamable HTTP, enter the URL, add the Authorization header, and connect — List Tools should show 51 tools. Or send a raw request with curl:

Terminal
curl -s https://app.boltpdf.com/api/mcp \
  -H "Authorization: Bearer bpk_..." \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Uploading PDFs through the MCP server

The upload_pdf tool accepts either an inline base64-encoded body (pdfBase64) or a public HTTPS URL to a PDF (pdfUrl). Most AI tools struggle to emit more than a few thousand characters reliably in a single tool call, so for anything beyond ~50 KB use pdfUrl instead — point it at a Drive share link, an S3 object URL, or any direct PDF link.

Limits: 50 MB max, 30 second fetch timeout, https:// only.

Getting generated PDFs out

generate_pdf, generate_pdf_from_prefill_record, generate_packet and generate_document return the filled PDF as an embedded application/pdf resource, which clients such as Claude Desktop surface as an attachment you can save. If you need a plain download URL — for example to paste into an email — use start_bulk_generation with one or more saved records instead: each finished item carries an outputUrl.

Security

  • Keys are scoped to the user (and organization, if any) that created them. Tools enforce the same ownership rules as the web app.
  • We store only a SHA-256 hash of the key — we never see it again after creation. If you lose it, revoke and recreate.
  • Revoking a key from Settings → API Keys takes effect on the next request. Revocation works even if your subscription has lapsed.
  • Each user can hold up to 20 active keys. Create one per tool so you can revoke them independently.
  • Treat keys like passwords. Prefer the environment-variable variants above over pasting a key into a config file, and never commit one to version control or share it in screenshots.

Troubleshooting

401 Unauthorized
Key is wrong, revoked, or the Authorization header isn't reaching the server. Verify the value starts with Bearer (a space after Bearer) and that your client's "enable header" toggle is on if it has one.
Tools don't appear
Restart the client after changing its config. Claude Desktop needs a full quit (⌘Q) — closing the window isn't enough. In Cursor and Windsurf, check the server toggle is on and hit refresh; in VS Code, start the server from the mcp.json editor action.
"Upload failed" or truncated PDF
Use pdfUrl instead of pdfBase64 for files over ~50 KB. AI tools can't reliably emit large base64 strings.
"No BoltPDF subscription" / "subscription has expired"
The MCP server follows the same billing rules as the app. Run get_account_info to see the account and subscription the key resolves to, then renew or start a plan at app.boltpdf.com/billing.
Need help?
Email princh@boltpdf.com.