MCP for AI assistants

Connect AI assistants to PDF Loft by web address, with the tools, scopes and limits.

What it is

PDF Loft runs an MCP server, so an AI assistant can run PDF tools, follow the run and save the result for you. It is reachable by web address and speaks streamable HTTP. There is nothing to install and no package to run.

Server address
https://api.pdfloft.com/mcp

MCP for AI assistants is included in the Pro plan and above. A tool run through MCP uses the same task pool as the web app, so there is no separate allowance. Listing tools, documents and runs costs nothing; starting a run counts one task per output file, and a run that fails is not counted.

Connect Claude

  1. Open Claude and go to Settings, then Connectors.
  2. Choose to add a custom connector and paste the server address above.
  3. Claude opens a PDF Loft page that asks you to sign in and approve. Check the application name and the access listed, then choose Allow.
  4. Ask Claude to work on a PDF, for example: "Compress the PDF at this address and save the result to my library."

The menu names can differ between versions of the app. The server address is the only value you enter.

Connect ChatGPT

  1. Open ChatGPT settings and find Connectors (some plans call this Apps, and custom connectors may need developer mode to be switched on).
  2. Create a connector, name it PDF Loft, and paste the server address above. Choose OAuth when asked how to authenticate.
  3. Sign in to PDF Loft in the page that opens and choose Allow.

Connect other clients

Any client that supports remote MCP servers over HTTP with OAuth can connect from the address alone: it finds the sign-in server, registers itself and asks you to approve. For a client configured with a file, the entry is usually this:

JSON
{
  "mcpServers": {
    "pdfloft": { "url": "https://api.pdfloft.com/mcp" }
  }
}

For a script or a client that cannot open a browser, send an API key instead (Team plan and above). The key needs the scopes of the tools you call.

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

How sign-in works

The server follows OAuth 2.1 with PKCE. A client finds the sign-in server from /.well-known/oauth-protected-resource, registers itself at /oauth/register (RFC 7591), sends you to the approval page, and exchanges the code at /oauth/token. The state parameter is required, redirect addresses must match the registered address exactly (an application on your own computer may use any port on a loopback address), and refresh tokens are used once: using one twice ends the connection.

You can end a connection at any time in Settings, then Connections, under Connected apps. The next call from that assistant fails. A connection also ends when you leave the account or the account falls below the Pro plan.

Scopes

The access an assistant is given is the same set of scopes an API key can hold. The approval page lists them before you allow anything. A tool that needs a scope the connection lacks answers with insufficient_scope and is not listed.

Scopes an MCP connection can hold
ScopeAllows
tools:runUpload files, run PDF tools and cancel runs.
jobs:readRead runs and download their results.
documents:readList documents and download them.
documents:writeSave documents to the library and delete them.
webhooks:manageCreate, list and delete webhook endpoints.
signatures:sendCreate, send, remind and void signature requests, and send from a template in bulk.
signatures:readRead templates and signature requests, and download signed documents and certificates.

Tools

Every tool is named pdfloft_<area>_<resource>_<verb>. The input of each tool is described by a JSON Schema in tools/list, built from the same validators as the REST API, and the options of a PDF tool are returned by pdfloft_tools_tool_get. The signature tools make, send, remind, void and download signature requests under the same plan allowance, visibility rules and webhook events as the signature API. Signers still sign on the secure page their email links to; no tool signs for a person.

MCP tools
ToolScopeChanges dataWhat it does
pdfloft_tools_tool_listtools:runNoList every PDF tool PDF Loft can run, with the file types it reads and how many files one run takes.
pdfloft_tools_tool_gettools:runNoGet one tool by its id, including the options it takes as a JSON Schema.
pdfloft_tools_run_createtools:runYesStart a tool on uploaded files.
pdfloft_files_file_uploadtools:runYesUpload one file given as base64, up to 700 KB.
pdfloft_files_url_importtools:runYesFetch a file from a public https address and keep it for a run.
pdfloft_files_document_importdocuments:readYesCopy a document from the library so a tool can run on it.
pdfloft_jobs_job_getjobs:readNoGet the status, progress and result count of a run.
pdfloft_jobs_job_listjobs:readNoList your recent runs, newest first.
pdfloft_jobs_job_canceltools:runYesCancel a run that has not finished.
pdfloft_jobs_result_linkjobs:readNoGet a signed link to download one result file of a finished run.
pdfloft_documents_document_listdocuments:readNoList the documents in the library that you can see, newest first.
pdfloft_documents_document_getdocuments:readNoGet one document from the library.
pdfloft_documents_document_createdocuments:writeYesSave an uploaded PDF or one result file of a run to the library.
pdfloft_documents_document_downloaddocuments:readNoGet a signed link to download a document version.
pdfloft_documents_document_deletedocuments:writeYesDelete a document and all its versions from the library.
pdfloft_cloud_connection_listtools:runNoList the cloud storage services you connected in PDF Loft settings (Google Drive, Dropbox, OneDrive, Box).
pdfloft_cloud_file_listtools:runNoList the files and folders in a Dropbox, OneDrive or Box folder.
pdfloft_cloud_file_importtools:runYesCopy a file from a connected cloud storage service so a tool can run on it.
pdfloft_cloud_file_exportdocuments:readYesSave a library document, or one result file of a finished run, to a connected cloud storage service.
pdfloft_signatures_template_listsignatures:readNoList the reusable signature templates of the account, with their signer roles and fields.
pdfloft_signatures_request_createsignatures:sendYesMake a signature request from an uploaded PDF, a library document or a template, with its signers and fields, and send it at once when asked.
pdfloft_signatures_request_listsignatures:readNoList the signature requests you can see, newest first, optionally by status.
pdfloft_signatures_request_getsignatures:readNoGet one signature request with the status of each signer.
pdfloft_signatures_request_sendsignatures:sendYesSend a draft signature request to its signers.
pdfloft_signatures_request_remindsignatures:sendYesRemind the signers whose turn it is to sign.
pdfloft_signatures_request_voidsignatures:sendYesCancel a signature request that is not complete.
pdfloft_signatures_request_downloadsignatures:readNoGet a signed link to the signed PDF or the completion certificate of a completed request.

Limits and errors

  • An OAuth connection may make 120 calls a minute. An API key uses its own limit. A refused call answers 429 with Retry-After.
  • A tool that fails returns a result with isError set and the same stable error code the REST API uses, such as tasks.exhausted, so the assistant can explain what happened.
  • A missing or expired credential answers 401 with a WWW-Authenticate header that names the sign-in server. A plan below Pro answers 402.
  • The server keeps no session and sends no server-initiated messages, so GET and DELETE on the address answer 405.