@papermark/mcp-server 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,617 @@
1
+ import { z } from 'zod';
2
+
3
+ /**
4
+ * Single source of truth for the LLM-facing contract of each Papermark MCP
5
+ * tool — name, title, description, and zod input schema. Both the stdio
6
+ * transport (this repo) and the remote HTTP adapter (in the papermark app)
7
+ * import from here so descriptions and schemas can't drift.
8
+ *
9
+ * Tool *bodies* (how each transport actually fulfills the request) stay in
10
+ * the transport, because the environments differ — stdio can read local
11
+ * files and hit the public v1 API over fetch; the in-app HTTP adapter
12
+ * reaches the v1 routes via loopback with the caller's bearer token.
13
+ *
14
+ * `upload_document` is intentionally omitted: the stdio variant accepts a
15
+ * local `file_path`, which the HTTP variant can't honor. Each side defines
16
+ * its own upload_document contract.
17
+ */
18
+ interface ToolContract<TShape extends z.ZodRawShape> {
19
+ name: string;
20
+ title: string;
21
+ description: string;
22
+ inputSchema: TShape;
23
+ }
24
+ declare const listDocumentsContract: {
25
+ readonly name: "list_documents";
26
+ readonly title: "List documents";
27
+ readonly description: "List documents in the authenticated Papermark team. Returns up to `limit` results (default 25, max 100) and a `next_cursor` for pagination. Use this before any tool that takes a `document_id` — never fabricate ids. Requires scope `documents.read`.";
28
+ readonly inputSchema: {
29
+ readonly limit: z.ZodOptional<z.ZodNumber>;
30
+ readonly cursor: z.ZodOptional<z.ZodString>;
31
+ readonly query: z.ZodOptional<z.ZodString>;
32
+ };
33
+ };
34
+ declare const getDocumentContract: {
35
+ readonly name: "get_document";
36
+ readonly title: "Get document";
37
+ readonly description: "Fetch a single document by id. `document_id` must come from `list_documents` or `search_documents` — never invent one. If the user referred to a document by name, call `search_documents` first. Requires scope `documents.read`.";
38
+ readonly inputSchema: {
39
+ readonly document_id: z.ZodString;
40
+ };
41
+ };
42
+ declare const searchDocumentsContract: {
43
+ readonly name: "search_documents";
44
+ readonly title: "Search documents";
45
+ readonly description: "Substring-search document names in the authenticated team. Use this when the user refers to a document by name or topic rather than id. Requires scope `documents.read`.";
46
+ readonly inputSchema: {
47
+ readonly query: z.ZodString;
48
+ readonly limit: z.ZodOptional<z.ZodNumber>;
49
+ };
50
+ };
51
+ declare const createLinkContract: {
52
+ readonly name: "create_link";
53
+ readonly title: "Create share link";
54
+ readonly description: "Create a share link for a document (or dataroom). The returned `url` is what users share.\n\nWORKFLOW:\n(1) Resolve the target: the user may say \"the Q3 deck\" or \"the Acme dataroom\" — call `search_documents` (for a document) or `search_datarooms` (for a dataroom) first to get a real id. Set exactly one of `document_id` or `dataroom_id` on the created link.\n(2) Clarify ANY of these that the user didn't state explicitly — do NOT invent values:\n • expiry (`expires_at`, ISO 8601) — confirm with the user, default is no expiry\n • password — if the user wants password protection, either ASK them for a password OR generate a random one AND tell the user the exact value you set\n • email gating (`email_protected`) — ask if unclear\n • downloads (`allow_download`) — default off for external sharing\n(3) Create the link, then surface both the URL and the security settings so the user can verify.\n\nNever share a link to a document the user didn't explicitly name. Requires scope `links.write`.";
55
+ readonly inputSchema: {
56
+ readonly document_id: z.ZodOptional<z.ZodString>;
57
+ readonly dataroom_id: z.ZodOptional<z.ZodString>;
58
+ readonly name: z.ZodOptional<z.ZodString>;
59
+ readonly expires_at: z.ZodOptional<z.ZodString>;
60
+ readonly password: z.ZodOptional<z.ZodString>;
61
+ readonly email_protected: z.ZodOptional<z.ZodBoolean>;
62
+ readonly allow_download: z.ZodOptional<z.ZodBoolean>;
63
+ };
64
+ };
65
+ declare const listLinksContract: {
66
+ readonly name: "list_links";
67
+ readonly title: "List share links";
68
+ readonly description: "List share links in the authenticated team. Optionally filter by `document_id` or `dataroom_id`. Requires scope `links.read`.";
69
+ readonly inputSchema: {
70
+ readonly document_id: z.ZodOptional<z.ZodString>;
71
+ readonly dataroom_id: z.ZodOptional<z.ZodString>;
72
+ readonly limit: z.ZodOptional<z.ZodNumber>;
73
+ readonly cursor: z.ZodOptional<z.ZodString>;
74
+ };
75
+ };
76
+ declare const listLinkViewsContract: {
77
+ readonly name: "list_link_views";
78
+ readonly title: "List a link's view events";
79
+ readonly description: "Return the raw view events for a share link, newest first. Each view includes viewer email (if captured), view timestamp, and download status. For aggregate metrics (total views, total read time), use `get_link_analytics` instead. Requires scope `analytics.read`.";
80
+ readonly inputSchema: {
81
+ readonly link_id: z.ZodString;
82
+ readonly limit: z.ZodOptional<z.ZodNumber>;
83
+ readonly cursor: z.ZodOptional<z.ZodString>;
84
+ };
85
+ };
86
+ declare const listDataroomsContract: {
87
+ readonly name: "list_datarooms";
88
+ readonly title: "List datarooms";
89
+ readonly description: "List datarooms in the authenticated team. Returns up to `limit` results with a cursor. Requires scope `datarooms.read`.";
90
+ readonly inputSchema: {
91
+ readonly limit: z.ZodOptional<z.ZodNumber>;
92
+ readonly cursor: z.ZodOptional<z.ZodString>;
93
+ readonly query: z.ZodOptional<z.ZodString>;
94
+ };
95
+ };
96
+ declare const searchDataroomsContract: {
97
+ readonly name: "search_datarooms";
98
+ readonly title: "Search datarooms";
99
+ readonly description: "Substring-search dataroom names in the authenticated team. Use when the user refers to a dataroom by name (e.g. 'the Acme room') rather than id — before calling `create_link`, `get_dataroom_analytics`, or any other tool that takes a `dataroom_id`. Requires scope `datarooms.read`.";
100
+ readonly inputSchema: {
101
+ readonly query: z.ZodString;
102
+ readonly limit: z.ZodOptional<z.ZodNumber>;
103
+ };
104
+ };
105
+ declare const getDataroomContract: {
106
+ readonly name: "get_dataroom";
107
+ readonly title: "Get a dataroom";
108
+ readonly description: "Fetch a single dataroom by its id (accepts either the internal cuid or the `dr_...` public id). Requires scope `datarooms.read`.";
109
+ readonly inputSchema: {
110
+ readonly dataroom_id: z.ZodString;
111
+ };
112
+ };
113
+ declare const createDataroomContract: {
114
+ readonly name: "create_dataroom";
115
+ readonly title: "Create a dataroom";
116
+ readonly description: "Create a new (empty) dataroom. Documents can be added using the `attach_dataroom_document` tool after creating the dataroom.\n\nWORKFLOW:\n(1) Confirm with the user: exact dataroom name, optional internal_name, optional description. Do NOT invent these.\n(2) Check `list_datarooms` first if the user said \"my Acme room\" — they may already have one and not want a duplicate.\n(3) Create the dataroom; return the new dataroom id so the caller can add documents with `attach_dataroom_document`.\n\nRequires scope `datarooms.write`.";
117
+ readonly inputSchema: {
118
+ readonly name: z.ZodString;
119
+ readonly internal_name: z.ZodOptional<z.ZodString>;
120
+ readonly description: z.ZodOptional<z.ZodString>;
121
+ };
122
+ };
123
+ declare const listDataroomDocumentsContract: {
124
+ readonly name: "list_dataroom_documents";
125
+ readonly title: "List documents in a dataroom";
126
+ readonly description: "Return the documents contained in a dataroom, ordered by folder and custom order. Requires scope `datarooms.read`.";
127
+ readonly inputSchema: {
128
+ readonly dataroom_id: z.ZodString;
129
+ readonly folder_id: z.ZodOptional<z.ZodString>;
130
+ readonly limit: z.ZodOptional<z.ZodNumber>;
131
+ readonly cursor: z.ZodOptional<z.ZodString>;
132
+ };
133
+ };
134
+ declare const listVisitorsContract: {
135
+ readonly name: "list_visitors";
136
+ readonly title: "List visitors";
137
+ readonly description: "Persistent visitors (Viewer rows) for the team. Use `email` to find a specific person; use `dataroom_id` to scope to visitors of a particular dataroom. For anonymous views that never tied to a Viewer row, use `list_link_views` against the relevant link. Requires scope `visitors.read`.";
138
+ readonly inputSchema: {
139
+ readonly email: z.ZodOptional<z.ZodString>;
140
+ readonly dataroom_id: z.ZodOptional<z.ZodString>;
141
+ readonly limit: z.ZodOptional<z.ZodNumber>;
142
+ readonly cursor: z.ZodOptional<z.ZodString>;
143
+ };
144
+ };
145
+ declare const listVisitorViewsContract: {
146
+ readonly name: "list_visitor_views";
147
+ readonly title: "List a visitor's views";
148
+ readonly description: "All view events tied to a single visitor, newest first. Useful for answering questions like 'what has jane@acme.com looked at?'. Use `list_visitors` with an email filter to find the visitor id. Requires scope `visitors.read`.";
149
+ readonly inputSchema: {
150
+ readonly visitor_id: z.ZodString;
151
+ readonly limit: z.ZodOptional<z.ZodNumber>;
152
+ readonly cursor: z.ZodOptional<z.ZodString>;
153
+ };
154
+ };
155
+ declare const getDocumentAnalyticsContract: {
156
+ readonly name: "get_document_analytics";
157
+ readonly title: "Get document analytics";
158
+ readonly description: "Aggregate analytics for a document over a time window: total views, unique viewers, total read time (seconds), and per-page average duration. Defaults to the last 30 days. Requires scope `analytics.read`. NOTE: Subject to a tighter rate limit — cache results when possible.";
159
+ readonly inputSchema: {
160
+ readonly document_id: z.ZodString;
161
+ readonly since: z.ZodOptional<z.ZodNumber>;
162
+ readonly until: z.ZodOptional<z.ZodNumber>;
163
+ };
164
+ };
165
+ declare const getLinkAnalyticsContract: {
166
+ readonly name: "get_link_analytics";
167
+ readonly title: "Get link analytics";
168
+ readonly description: "Aggregate analytics for a single share link: total views, unique viewers, total read time over the selected window. For the raw event list (one row per view), use `list_link_views`. Requires scope `analytics.read`.";
169
+ readonly inputSchema: {
170
+ readonly link_id: z.ZodString;
171
+ readonly since: z.ZodOptional<z.ZodNumber>;
172
+ readonly until: z.ZodOptional<z.ZodNumber>;
173
+ };
174
+ };
175
+ declare const getDataroomAnalyticsContract: {
176
+ readonly name: "get_dataroom_analytics";
177
+ readonly title: "Get dataroom analytics";
178
+ readonly description: "Aggregate analytics across all documents in a dataroom: total views, unique viewers, total read time. Defaults to the last 30 days. Requires scope `analytics.read`.";
179
+ readonly inputSchema: {
180
+ readonly dataroom_id: z.ZodString;
181
+ readonly since: z.ZodOptional<z.ZodNumber>;
182
+ readonly until: z.ZodOptional<z.ZodNumber>;
183
+ };
184
+ };
185
+ declare const getViewAnalyticsContract: {
186
+ readonly name: "get_view_analytics";
187
+ readonly title: "Get per-view breakdown";
188
+ readonly description: "For a single view event: page-by-page time spent, total duration, and the viewer's country/city/browser/os/device. Use `list_link_views` or `list_visitor_views` to discover view ids. Requires scope `analytics.read`.";
189
+ readonly inputSchema: {
190
+ readonly view_id: z.ZodString;
191
+ };
192
+ };
193
+ declare const updateDocumentContract: {
194
+ readonly name: "update_document";
195
+ readonly title: "Update a document";
196
+ readonly description: "Rename a document or move it to a different team-library folder. Replacing the file content is a separate operation — use `add_document_version`.\n\nWORKFLOW:\n(1) Resolve the document via `search_documents` or `list_documents` — never invent ids.\n(2) Confirm with the user what they want to change. Pass `folder_id: null` to move the document back to the library root. Pass a real folder id (resolved via `list_folders`) to relocate it.\n\nRequires scope `documents.write`.";
197
+ readonly inputSchema: {
198
+ readonly document_id: z.ZodString;
199
+ readonly name: z.ZodOptional<z.ZodString>;
200
+ readonly folder_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
201
+ };
202
+ };
203
+ declare const deleteDocumentContract: {
204
+ readonly name: "delete_document";
205
+ readonly title: "Delete a document";
206
+ readonly description: "Permanently delete a document. This is irreversible: every share link, version, and view history attached to the document goes with it.\n\nWORKFLOW:\n(1) Resolve the document via `search_documents` — never delete based on a guessed id.\n(2) Confirm with the user (echo the document name) before calling. Treat this like `rm -rf`: don't infer intent from passing references.\n\nRequires scope `documents.write`.";
207
+ readonly inputSchema: {
208
+ readonly document_id: z.ZodString;
209
+ };
210
+ };
211
+ declare const listDocumentVersionsContract: {
212
+ readonly name: "list_document_versions";
213
+ readonly title: "List document versions";
214
+ readonly description: "List every version of a document, primary first. Use this to find a version id before promoting an older one with `promote_document_version`. Requires scope `documents.read`.";
215
+ readonly inputSchema: {
216
+ readonly document_id: z.ZodString;
217
+ };
218
+ };
219
+ declare const getDocumentVersionContract: {
220
+ readonly name: "get_document_version";
221
+ readonly title: "Get a document version";
222
+ readonly description: "Fetch a single version of a document by its id. Requires scope `documents.read`.";
223
+ readonly inputSchema: {
224
+ readonly document_id: z.ZodString;
225
+ readonly version_id: z.ZodString;
226
+ };
227
+ };
228
+ declare const addDocumentVersionContract: {
229
+ readonly name: "add_document_version";
230
+ readonly title: "Add a new document version";
231
+ readonly description: "Upload a new version of an existing document, fetched from a public HTTPS URL. The new version becomes primary by default; live links automatically serve the new file.\n\nWORKFLOW:\n(1) Resolve the target document via `search_documents` or `list_documents`.\n(2) The user must give you a public HTTPS URL the API can fetch. Don't fabricate URLs.\n(3) After creation, mention the version_number so the user can promote/rollback later.\n\nNOTE: Adding a version from a local file path is not supported by this MCP tool — for that, use the `upload_document` tool to create a new document, or have the user upload via the Papermark UI.\n\nRequires scope `documents.write`.";
232
+ readonly inputSchema: {
233
+ readonly document_id: z.ZodString;
234
+ readonly source_url: z.ZodString;
235
+ };
236
+ };
237
+ declare const promoteDocumentVersionContract: {
238
+ readonly name: "promote_document_version";
239
+ readonly title: "Promote a version to primary";
240
+ readonly description: "Roll back (or roll forward) by making a non-primary version the active one. The previous primary is demoted in the same transaction; share links immediately serve the new primary.\n\nWORKFLOW:\n(1) Call `list_document_versions` to find the right version id.\n(2) Confirm with the user before promoting — this changes what every existing link serves.\n\nRequires scope `documents.write`.";
241
+ readonly inputSchema: {
242
+ readonly document_id: z.ZodString;
243
+ readonly version_id: z.ZodString;
244
+ };
245
+ };
246
+ declare const listFoldersContract: {
247
+ readonly name: "list_folders";
248
+ readonly title: "List folders";
249
+ readonly description: "List folders in the team library. Pass `parent_id: \"root\"` to list top-level folders, a folder id to list direct children, or omit `parent_id` to list every folder.\n\nUSE THIS when the user wants to know which folders exist, or you need a `folder_id` to pass to `update_document` / `upload_document` / `create_folder`. Requires scope `documents.read`.";
250
+ readonly inputSchema: {
251
+ readonly parent_id: z.ZodOptional<z.ZodString>;
252
+ readonly limit: z.ZodOptional<z.ZodNumber>;
253
+ readonly cursor: z.ZodOptional<z.ZodString>;
254
+ };
255
+ };
256
+ declare const getFolderContract: {
257
+ readonly name: "get_folder";
258
+ readonly title: "Get a folder";
259
+ readonly description: "Fetch a single team-library folder by id. Requires scope `documents.read`.";
260
+ readonly inputSchema: {
261
+ readonly folder_id: z.ZodString;
262
+ };
263
+ };
264
+ declare const createFolderContract: {
265
+ readonly name: "create_folder";
266
+ readonly title: "Create a folder";
267
+ readonly description: "Create a folder in the team library. Pass an existing folder id as `parent_id` to nest, or omit it for the root.\n\nWORKFLOW:\n(1) Confirm name and parent with the user. Don't invent folder names.\n(2) If they referred to \"the Pitches folder\" but didn't give an id, call `list_folders` first.\n\nRequires scope `documents.write`.";
268
+ readonly inputSchema: {
269
+ readonly name: z.ZodString;
270
+ readonly parent_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
271
+ readonly icon: z.ZodOptional<z.ZodEnum<{
272
+ file: "file";
273
+ folder: "folder";
274
+ "folder-open": "folder-open";
275
+ briefcase: "briefcase";
276
+ archive: "archive";
277
+ box: "box";
278
+ book: "book";
279
+ bookmark: "bookmark";
280
+ star: "star";
281
+ heart: "heart";
282
+ lock: "lock";
283
+ shield: "shield";
284
+ users: "users";
285
+ settings: "settings";
286
+ tag: "tag";
287
+ layers: "layers";
288
+ globe: "globe";
289
+ home: "home";
290
+ mail: "mail";
291
+ image: "image";
292
+ video: "video";
293
+ music: "music";
294
+ palette: "palette";
295
+ "pen-tool": "pen-tool";
296
+ lightbulb: "lightbulb";
297
+ zap: "zap";
298
+ wrench: "wrench";
299
+ sparkles: "sparkles";
300
+ cloud: "cloud";
301
+ flag: "flag";
302
+ award: "award";
303
+ flame: "flame";
304
+ bell: "bell";
305
+ sun: "sun";
306
+ hash: "hash";
307
+ }>>;
308
+ readonly color: z.ZodOptional<z.ZodEnum<{
309
+ gray: "gray";
310
+ red: "red";
311
+ orange: "orange";
312
+ yellow: "yellow";
313
+ green: "green";
314
+ blue: "blue";
315
+ black: "black";
316
+ }>>;
317
+ };
318
+ };
319
+ declare const updateFolderContract: {
320
+ readonly name: "update_folder";
321
+ readonly title: "Update a folder";
322
+ readonly description: "Rename a folder, change its icon or color. Pass null to clear icon/color. Use `move_folder` to change its parent. Requires scope `documents.write`.";
323
+ readonly inputSchema: {
324
+ readonly folder_id: z.ZodString;
325
+ readonly name: z.ZodOptional<z.ZodString>;
326
+ readonly icon: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
327
+ file: "file";
328
+ folder: "folder";
329
+ "folder-open": "folder-open";
330
+ briefcase: "briefcase";
331
+ archive: "archive";
332
+ box: "box";
333
+ book: "book";
334
+ bookmark: "bookmark";
335
+ star: "star";
336
+ heart: "heart";
337
+ lock: "lock";
338
+ shield: "shield";
339
+ users: "users";
340
+ settings: "settings";
341
+ tag: "tag";
342
+ layers: "layers";
343
+ globe: "globe";
344
+ home: "home";
345
+ mail: "mail";
346
+ image: "image";
347
+ video: "video";
348
+ music: "music";
349
+ palette: "palette";
350
+ "pen-tool": "pen-tool";
351
+ lightbulb: "lightbulb";
352
+ zap: "zap";
353
+ wrench: "wrench";
354
+ sparkles: "sparkles";
355
+ cloud: "cloud";
356
+ flag: "flag";
357
+ award: "award";
358
+ flame: "flame";
359
+ bell: "bell";
360
+ sun: "sun";
361
+ hash: "hash";
362
+ }>>>;
363
+ readonly color: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
364
+ gray: "gray";
365
+ red: "red";
366
+ orange: "orange";
367
+ yellow: "yellow";
368
+ green: "green";
369
+ blue: "blue";
370
+ black: "black";
371
+ }>>>;
372
+ };
373
+ };
374
+ declare const deleteFolderContract: {
375
+ readonly name: "delete_folder";
376
+ readonly title: "Delete a folder";
377
+ readonly description: "Delete a folder. By default this only succeeds if the folder is empty. Pass `cascade: true` to also delete every nested folder and document — this is destructive and irreversible.\n\nAlways confirm with the user before passing cascade. Requires scope `documents.write`.";
378
+ readonly inputSchema: {
379
+ readonly folder_id: z.ZodString;
380
+ readonly cascade: z.ZodOptional<z.ZodBoolean>;
381
+ };
382
+ };
383
+ declare const moveFolderContract: {
384
+ readonly name: "move_folder";
385
+ readonly title: "Move a folder";
386
+ readonly description: "Move a folder under a different parent. Pass `parent_id: null` to move it to the library root. Requires scope `documents.write`.";
387
+ readonly inputSchema: {
388
+ readonly folder_id: z.ZodString;
389
+ readonly parent_id: z.ZodNullable<z.ZodString>;
390
+ };
391
+ };
392
+ declare const getLinkContract: {
393
+ readonly name: "get_link";
394
+ readonly title: "Get a share link";
395
+ readonly description: "Fetch a single share link by id. Use this to confirm current settings before calling `update_link` so you don't accidentally clobber other fields. Requires scope `links.read`.";
396
+ readonly inputSchema: {
397
+ readonly link_id: z.ZodString;
398
+ };
399
+ };
400
+ declare const updateLinkContract: {
401
+ readonly name: "update_link";
402
+ readonly title: "Update a share link";
403
+ readonly description: "Change the security settings of an existing share link. The URL stays the same — viewers don't need to be re-notified.\n\nWORKFLOW:\n(1) Get the current settings via `get_link` first if you're not certain. PATCH semantics: omitted fields are unchanged, but a passed value REPLACES the current one.\n(2) Pass `expires_at: null` or `password: null` to clear those fields. `allow_list: []` empties the list.\n(3) Confirm any change to password / expiry / email gating with the user.\n\nRequires scope `links.write`.";
404
+ readonly inputSchema: {
405
+ readonly link_id: z.ZodString;
406
+ readonly name: z.ZodOptional<z.ZodString>;
407
+ readonly expires_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
408
+ readonly password: z.ZodOptional<z.ZodNullable<z.ZodString>>;
409
+ readonly email_protected: z.ZodOptional<z.ZodBoolean>;
410
+ readonly email_authenticated: z.ZodOptional<z.ZodBoolean>;
411
+ readonly allow_download: z.ZodOptional<z.ZodBoolean>;
412
+ readonly allow_list: z.ZodOptional<z.ZodArray<z.ZodString>>;
413
+ readonly deny_list: z.ZodOptional<z.ZodArray<z.ZodString>>;
414
+ readonly enable_watermark: z.ZodOptional<z.ZodBoolean>;
415
+ readonly enable_screenshot_protection: z.ZodOptional<z.ZodBoolean>;
416
+ };
417
+ };
418
+ declare const deleteLinkContract: {
419
+ readonly name: "delete_link";
420
+ readonly title: "Revoke a share link";
421
+ readonly description: "Revoke a share link (soft delete). Anyone who tries to open the URL will see a \"link unavailable\" page. The view history is preserved for analytics.\n\nConfirm with the user before revoking — they may have already shared the URL. Requires scope `links.write`.";
422
+ readonly inputSchema: {
423
+ readonly link_id: z.ZodString;
424
+ };
425
+ };
426
+ declare const updateDataroomContract: {
427
+ readonly name: "update_dataroom";
428
+ readonly title: "Update a dataroom";
429
+ readonly description: "Change a dataroom's name, internal alias, description, or whether viewers can bulk-download. PATCH semantics — omitted fields stay as they are.\n\nWORKFLOW:\n(1) Resolve the dataroom via `search_datarooms` or `list_datarooms`.\n(2) Confirm any toggle of `allow_bulk_download` with the user — it affects every link tied to this dataroom.\n\nRequires scope `datarooms.write`.";
430
+ readonly inputSchema: {
431
+ readonly dataroom_id: z.ZodString;
432
+ readonly name: z.ZodOptional<z.ZodString>;
433
+ readonly internal_name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
434
+ readonly description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
435
+ readonly allow_bulk_download: z.ZodOptional<z.ZodBoolean>;
436
+ };
437
+ };
438
+ declare const deleteDataroomContract: {
439
+ readonly name: "delete_dataroom";
440
+ readonly title: "Delete a dataroom";
441
+ readonly description: "Permanently delete a dataroom. Every link and folder attached to it goes with it. Documents themselves stay in the team library — only their attachments to this dataroom are removed.\n\nALWAYS confirm with the user (echo the dataroom name and how many documents it contains, via `get_dataroom`) before calling. This is irreversible. Requires scope `datarooms.write`.";
442
+ readonly inputSchema: {
443
+ readonly dataroom_id: z.ZodString;
444
+ };
445
+ };
446
+ declare const attachDataroomDocumentContract: {
447
+ readonly name: "attach_dataroom_document";
448
+ readonly title: "Attach a document to a dataroom";
449
+ readonly description: "Add an existing team-library document to a dataroom. The document stays in the library; this only creates the attachment.\n\nWORKFLOW:\n(1) Resolve both ids — the dataroom via `search_datarooms`, the document via `search_documents`.\n(2) Optionally pass a dataroom `folder_id` (created via `create_dataroom_folder`) to nest the attachment under a folder.\n\nRequires scope `datarooms.write`.";
450
+ readonly inputSchema: {
451
+ readonly dataroom_id: z.ZodString;
452
+ readonly document_id: z.ZodString;
453
+ readonly folder_id: z.ZodOptional<z.ZodString>;
454
+ };
455
+ };
456
+ declare const listDataroomFoldersContract: {
457
+ readonly name: "list_dataroom_folders";
458
+ readonly title: "List folders in a dataroom";
459
+ readonly description: "List folders inside a dataroom. Pass `parent_id: \"root\"` for top-level, a folder id for direct children, or omit for every folder in the dataroom.\n\nUSE THIS when you need a dataroom `folder_id` for `attach_dataroom_document` or `create_dataroom_folder`. Requires scope `datarooms.read`.";
460
+ readonly inputSchema: {
461
+ readonly dataroom_id: z.ZodString;
462
+ readonly parent_id: z.ZodOptional<z.ZodString>;
463
+ readonly limit: z.ZodOptional<z.ZodNumber>;
464
+ readonly cursor: z.ZodOptional<z.ZodString>;
465
+ };
466
+ };
467
+ declare const getDataroomFolderContract: {
468
+ readonly name: "get_dataroom_folder";
469
+ readonly title: "Get a dataroom folder";
470
+ readonly description: "Fetch a single dataroom folder. Requires scope `datarooms.read`.";
471
+ readonly inputSchema: {
472
+ readonly dataroom_id: z.ZodString;
473
+ readonly folder_id: z.ZodString;
474
+ };
475
+ };
476
+ declare const createDataroomFolderContract: {
477
+ readonly name: "create_dataroom_folder";
478
+ readonly title: "Create a folder in a dataroom";
479
+ readonly description: "Create a folder inside a dataroom. Pass an existing dataroom-folder id as `parent_id` to nest, omit for the dataroom root. Folders here are scoped to a single dataroom and are separate from team-library folders. Requires scope `datarooms.write`.";
480
+ readonly inputSchema: {
481
+ readonly dataroom_id: z.ZodString;
482
+ readonly name: z.ZodString;
483
+ readonly parent_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
484
+ readonly icon: z.ZodOptional<z.ZodEnum<{
485
+ file: "file";
486
+ folder: "folder";
487
+ "folder-open": "folder-open";
488
+ briefcase: "briefcase";
489
+ archive: "archive";
490
+ box: "box";
491
+ book: "book";
492
+ bookmark: "bookmark";
493
+ star: "star";
494
+ heart: "heart";
495
+ lock: "lock";
496
+ shield: "shield";
497
+ users: "users";
498
+ settings: "settings";
499
+ tag: "tag";
500
+ layers: "layers";
501
+ globe: "globe";
502
+ home: "home";
503
+ mail: "mail";
504
+ image: "image";
505
+ video: "video";
506
+ music: "music";
507
+ palette: "palette";
508
+ "pen-tool": "pen-tool";
509
+ lightbulb: "lightbulb";
510
+ zap: "zap";
511
+ wrench: "wrench";
512
+ sparkles: "sparkles";
513
+ cloud: "cloud";
514
+ flag: "flag";
515
+ award: "award";
516
+ flame: "flame";
517
+ bell: "bell";
518
+ sun: "sun";
519
+ hash: "hash";
520
+ }>>;
521
+ readonly color: z.ZodOptional<z.ZodEnum<{
522
+ gray: "gray";
523
+ red: "red";
524
+ orange: "orange";
525
+ yellow: "yellow";
526
+ green: "green";
527
+ blue: "blue";
528
+ black: "black";
529
+ }>>;
530
+ };
531
+ };
532
+ declare const updateDataroomFolderContract: {
533
+ readonly name: "update_dataroom_folder";
534
+ readonly title: "Update a dataroom folder";
535
+ readonly description: "Rename a dataroom folder, change its icon/color. Pass null to clear icon/color. Use `move_dataroom_folder` to change its parent. Requires scope `datarooms.write`.";
536
+ readonly inputSchema: {
537
+ readonly dataroom_id: z.ZodString;
538
+ readonly folder_id: z.ZodString;
539
+ readonly name: z.ZodOptional<z.ZodString>;
540
+ readonly icon: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
541
+ file: "file";
542
+ folder: "folder";
543
+ "folder-open": "folder-open";
544
+ briefcase: "briefcase";
545
+ archive: "archive";
546
+ box: "box";
547
+ book: "book";
548
+ bookmark: "bookmark";
549
+ star: "star";
550
+ heart: "heart";
551
+ lock: "lock";
552
+ shield: "shield";
553
+ users: "users";
554
+ settings: "settings";
555
+ tag: "tag";
556
+ layers: "layers";
557
+ globe: "globe";
558
+ home: "home";
559
+ mail: "mail";
560
+ image: "image";
561
+ video: "video";
562
+ music: "music";
563
+ palette: "palette";
564
+ "pen-tool": "pen-tool";
565
+ lightbulb: "lightbulb";
566
+ zap: "zap";
567
+ wrench: "wrench";
568
+ sparkles: "sparkles";
569
+ cloud: "cloud";
570
+ flag: "flag";
571
+ award: "award";
572
+ flame: "flame";
573
+ bell: "bell";
574
+ sun: "sun";
575
+ hash: "hash";
576
+ }>>>;
577
+ readonly color: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
578
+ gray: "gray";
579
+ red: "red";
580
+ orange: "orange";
581
+ yellow: "yellow";
582
+ green: "green";
583
+ blue: "blue";
584
+ black: "black";
585
+ }>>>;
586
+ };
587
+ };
588
+ declare const deleteDataroomFolderContract: {
589
+ readonly name: "delete_dataroom_folder";
590
+ readonly title: "Delete a dataroom folder";
591
+ readonly description: "Delete a dataroom folder. By default this only succeeds if the folder is empty. Pass `cascade: true` to also delete every nested folder + dataroom-document attachment beneath it. The underlying documents in the team library are NOT deleted — only their attachments to this dataroom.\n\nConfirm with the user before passing cascade. Requires scope `datarooms.write`.";
592
+ readonly inputSchema: {
593
+ readonly dataroom_id: z.ZodString;
594
+ readonly folder_id: z.ZodString;
595
+ readonly cascade: z.ZodOptional<z.ZodBoolean>;
596
+ };
597
+ };
598
+ declare const moveDataroomFolderContract: {
599
+ readonly name: "move_dataroom_folder";
600
+ readonly title: "Move a dataroom folder";
601
+ readonly description: "Move a folder under a different parent within the same dataroom. Pass `parent_id: null` to move to the dataroom root. Requires scope `datarooms.write`.";
602
+ readonly inputSchema: {
603
+ readonly dataroom_id: z.ZodString;
604
+ readonly folder_id: z.ZodString;
605
+ readonly parent_id: z.ZodNullable<z.ZodString>;
606
+ };
607
+ };
608
+ declare const getVisitorContract: {
609
+ readonly name: "get_visitor";
610
+ readonly title: "Get a visitor";
611
+ readonly description: "Fetch a single visitor (Viewer row) by id, including total view count and last-seen timestamp. Use `list_visitors` with an email filter to find the id. Requires scope `visitors.read`.";
612
+ readonly inputSchema: {
613
+ readonly visitor_id: z.ZodString;
614
+ };
615
+ };
616
+
617
+ export { type ToolContract, addDocumentVersionContract, attachDataroomDocumentContract, createDataroomContract, createDataroomFolderContract, createFolderContract, createLinkContract, deleteDataroomContract, deleteDataroomFolderContract, deleteDocumentContract, deleteFolderContract, deleteLinkContract, getDataroomAnalyticsContract, getDataroomContract, getDataroomFolderContract, getDocumentAnalyticsContract, getDocumentContract, getDocumentVersionContract, getFolderContract, getLinkAnalyticsContract, getLinkContract, getViewAnalyticsContract, getVisitorContract, listDataroomDocumentsContract, listDataroomFoldersContract, listDataroomsContract, listDocumentVersionsContract, listDocumentsContract, listFoldersContract, listLinkViewsContract, listLinksContract, listVisitorViewsContract, listVisitorsContract, moveDataroomFolderContract, moveFolderContract, promoteDocumentVersionContract, searchDataroomsContract, searchDocumentsContract, updateDataroomContract, updateDataroomFolderContract, updateDocumentContract, updateFolderContract, updateLinkContract };