PapermarkDocs

Tools

The MCP tools Papermark exposes and what each one does.

The server exposes 43 tools covering the full v1 API surface: the same documents, links, datarooms, folders, visitors, and analytics you get over HTTP. Argument schemas are identical to the REST API's request shapes, so see the linked reference endpoint for full field detail.

All 43 tools are available on both transports. One tool, upload_document, differs slightly: over stdio it accepts a local file_path or a source_url; over HTTP it accepts source_url only, because a remote server can't read the client's filesystem.

Documents (6)

ToolWhat it doesRequired scope
list_documentsPaginated list of team documents. Args: limit, cursor, query?.documents.read
get_documentFetch one document by ID. Args: document_id.documents.read
search_documentsSubstring search by name. Args: query, limit.documents.read
upload_documentUpload a document. Provide exactly one upload source: file_path (local path, stdio transport only) or source_url (public HTTPS URL). Optional: name, folder_id, create_link.documents.write
update_documentRename a document or move it between folders. Args: document_id, name?, folder_id?.documents.write
delete_documentPermanently delete a document and its links and view history. Args: document_id.documents.write

Document versions (4)

ToolWhat it doesRequired scope
list_document_versionsList every version of a document. Args: document_id.documents.read
get_document_versionFetch one version by ID. Args: document_id, version_id.documents.read
add_document_versionUpload a new version from a public HTTPS URL. Args: document_id, source_url.documents.write
promote_document_versionMake a version the primary one shown to viewers. Args: document_id, version_id.documents.write

Folders (6)

Team-library folders, for organizing standalone documents outside any dataroom.

ToolWhat it doesRequired scope
list_foldersList folders, optionally under one parent. Args: parent_id?, limit, cursor.documents.read
get_folderFetch one folder by ID. Args: folder_id.documents.read
create_folderCreate a folder. Args: name, parent_id?, icon?, color?.documents.write
update_folderRename a folder or change its icon/color. Args: folder_id, name?, icon?, color?.documents.write
move_folderReparent a folder. Args: folder_id, parent_id.documents.write
delete_folderDelete a folder. Pass cascade: true to also delete everything nested inside it. Args: folder_id, cascade?.documents.write
ToolWhat it doesRequired scope
list_linksList share links, optionally filtered by document_id or dataroom_id. Args: document_id?, dataroom_id?, limit, cursor.links.read
get_linkFetch one share link by ID. Args: link_id.links.read
create_linkCreate a share link with access controls. Args: one of document_id/dataroom_id, optional name, password, expires_at, email_protected, allow_download, enable_confidential_view, enable_watermark, watermark_config.links.write (+ documents.read or datarooms.read on the target)
update_linkChange a link's name, expiry, password, access controls, or watermark. Args: link_id + any field to change. Pass watermark_config: null to clear an existing config.links.write
delete_linkRevoke a share link (soft delete; view history is kept). Args: link_id.links.write
list_link_viewsRaw view events for one link. Args: link_id, limit, cursor.analytics.read + links.read

Datarooms (8)

ToolWhat it doesRequired scope
list_dataroomsPaginated list of team datarooms. Args: limit, cursor.datarooms.read
search_dataroomsSubstring search by name. Args: query, limit.datarooms.read
get_dataroomFetch one dataroom by ID. Args: dataroom_id.datarooms.read
create_dataroomCreate an empty dataroom. Args: name, description?.datarooms.write
update_dataroomRename a dataroom or change its settings. Args: dataroom_id + any field to change.datarooms.write
delete_dataroomDelete a dataroom and its links and folders. Documents in the team library are kept. Args: dataroom_id.datarooms.write
list_dataroom_documentsDocuments attached to a dataroom. Args: dataroom_id, limit, cursor.datarooms.read
attach_dataroom_documentAttach an existing team-library document to a dataroom. Args: dataroom_id, document_id, folder_id?.datarooms.write

Dataroom folders (6)

ToolWhat it doesRequired scope
list_dataroom_foldersList folders inside a dataroom. Args: dataroom_id, parent_id?, limit, cursor.datarooms.read
get_dataroom_folderFetch one dataroom folder by ID. Args: dataroom_id, folder_id.datarooms.read
create_dataroom_folderCreate a folder inside a dataroom. Args: dataroom_id, name, parent_id?, icon?, color?.datarooms.write
update_dataroom_folderRename a dataroom folder or change its icon/color. Args: dataroom_id, folder_id + any field.datarooms.write
move_dataroom_folderReparent a folder within the dataroom. Args: dataroom_id, folder_id, parent_id.datarooms.write
delete_dataroom_folderDelete a dataroom folder. Pass cascade: true to also detach everything nested inside it. Args: dataroom_id, folder_id, cascade?.datarooms.write

Visitors (3)

ToolWhat it doesRequired scope
list_visitorsPersistent visitor entities (one per email). Args: limit, cursor.visitors.read
get_visitorFetch one visitor by ID. Args: visitor_id.visitors.read
list_visitor_viewsAll view events from one visitor. Args: visitor_id, limit, cursor.visitors.read + analytics.read

Analytics (4)

ToolWhat it doesRequired scope
get_document_analyticsAggregate stats for a document: total views, unique viewers, average read time. Args: document_id, optional since/until.analytics.read
get_link_analyticsSame shape, scoped to one share link. Args: link_id, optional since/until.analytics.read
get_dataroom_analyticsAggregate across every document in a dataroom. Args: dataroom_id, optional since/until.analytics.read
get_view_analyticsPer-view detail: page-by-page durations, location, device. Args: view_id.analytics.read

Result shapes

Tool results mirror the REST API responses field-for-field; the server invents nothing. Two conventions are worth calling out:

  • Every resource carries a read-only object field (document, link, dataroom, …) so the model can tell resource types apart.
  • delete_* tools return the API's deleted-object acknowledgment, { "id": "…", "object": "…", "deleted": true }, not a custom shape.

Writes are scope-gated

The agent can only call tools whose required scopes are on the token. A read-only token (documents.read, links.read, …) gives you a read-only agent. The write tools (create_*, update_*, delete_*, upload_document, attach_dataroom_document) return a 403 forbidden error envelope, which the MCP client surfaces back to the model so it can apologize and ask the user.

If you want a stricter sandbox, point the server at a non-production environment via PAPERMARK_API_URL (and mint a separate token there with only the scopes the agent needs).

Tool naming

Tool names use snake_case. That's the MCP convention, not a Papermark choice. They're the same in stdio and HTTP transports.

On this page