@pdfgate/mcp-server 1.0.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.
Files changed (87) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +84 -0
  3. package/dist/client.d.ts +5 -0
  4. package/dist/client.d.ts.map +1 -0
  5. package/dist/client.js +25 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/http.d.ts +3 -0
  8. package/dist/http.d.ts.map +1 -0
  9. package/dist/http.js +45 -0
  10. package/dist/http.js.map +1 -0
  11. package/dist/index.d.ts +3 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +24 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/tools/compress-pdf.d.ts +3 -0
  16. package/dist/tools/compress-pdf.d.ts.map +1 -0
  17. package/dist/tools/compress-pdf.js +29 -0
  18. package/dist/tools/compress-pdf.js.map +1 -0
  19. package/dist/tools/create-envelope.d.ts +3 -0
  20. package/dist/tools/create-envelope.d.ts.map +1 -0
  21. package/dist/tools/create-envelope.js +33 -0
  22. package/dist/tools/create-envelope.js.map +1 -0
  23. package/dist/tools/create-webhook.d.ts +3 -0
  24. package/dist/tools/create-webhook.d.ts.map +1 -0
  25. package/dist/tools/create-webhook.js +29 -0
  26. package/dist/tools/create-webhook.js.map +1 -0
  27. package/dist/tools/delete-document.d.ts +3 -0
  28. package/dist/tools/delete-document.d.ts.map +1 -0
  29. package/dist/tools/delete-document.js +17 -0
  30. package/dist/tools/delete-document.js.map +1 -0
  31. package/dist/tools/delete-webhook.d.ts +3 -0
  32. package/dist/tools/delete-webhook.d.ts.map +1 -0
  33. package/dist/tools/delete-webhook.js +17 -0
  34. package/dist/tools/delete-webhook.js.map +1 -0
  35. package/dist/tools/extract-pdf-data.d.ts +3 -0
  36. package/dist/tools/extract-pdf-data.d.ts.map +1 -0
  37. package/dist/tools/extract-pdf-data.js +17 -0
  38. package/dist/tools/extract-pdf-data.js.map +1 -0
  39. package/dist/tools/flatten-pdf.d.ts +3 -0
  40. package/dist/tools/flatten-pdf.d.ts.map +1 -0
  41. package/dist/tools/flatten-pdf.js +25 -0
  42. package/dist/tools/flatten-pdf.js.map +1 -0
  43. package/dist/tools/generate-pdf.d.ts +3 -0
  44. package/dist/tools/generate-pdf.d.ts.map +1 -0
  45. package/dist/tools/generate-pdf.js +68 -0
  46. package/dist/tools/generate-pdf.js.map +1 -0
  47. package/dist/tools/get-document.d.ts +3 -0
  48. package/dist/tools/get-document.d.ts.map +1 -0
  49. package/dist/tools/get-document.js +24 -0
  50. package/dist/tools/get-document.js.map +1 -0
  51. package/dist/tools/get-envelope.d.ts +3 -0
  52. package/dist/tools/get-envelope.d.ts.map +1 -0
  53. package/dist/tools/get-envelope.js +17 -0
  54. package/dist/tools/get-envelope.js.map +1 -0
  55. package/dist/tools/index.d.ts +3 -0
  56. package/dist/tools/index.d.ts.map +1 -0
  57. package/dist/tools/index.js +31 -0
  58. package/dist/tools/index.js.map +1 -0
  59. package/dist/tools/protect-pdf.d.ts +3 -0
  60. package/dist/tools/protect-pdf.d.ts.map +1 -0
  61. package/dist/tools/protect-pdf.js +52 -0
  62. package/dist/tools/protect-pdf.js.map +1 -0
  63. package/dist/tools/send-envelope.d.ts +3 -0
  64. package/dist/tools/send-envelope.d.ts.map +1 -0
  65. package/dist/tools/send-envelope.js +17 -0
  66. package/dist/tools/send-envelope.js.map +1 -0
  67. package/dist/tools/upload-pdf.d.ts +3 -0
  68. package/dist/tools/upload-pdf.d.ts.map +1 -0
  69. package/dist/tools/upload-pdf.js +33 -0
  70. package/dist/tools/upload-pdf.js.map +1 -0
  71. package/dist/tools/watermark-pdf.d.ts +3 -0
  72. package/dist/tools/watermark-pdf.d.ts.map +1 -0
  73. package/dist/tools/watermark-pdf.js +81 -0
  74. package/dist/tools/watermark-pdf.js.map +1 -0
  75. package/dist/webhooks/secrets.d.ts +4 -0
  76. package/dist/webhooks/secrets.d.ts.map +1 -0
  77. package/dist/webhooks/secrets.js +19 -0
  78. package/dist/webhooks/secrets.js.map +1 -0
  79. package/dist/webhooks/server.d.ts +3 -0
  80. package/dist/webhooks/server.d.ts.map +1 -0
  81. package/dist/webhooks/server.js +42 -0
  82. package/dist/webhooks/server.js.map +1 -0
  83. package/dist/webhooks/store.d.ts +13 -0
  84. package/dist/webhooks/store.d.ts.map +1 -0
  85. package/dist/webhooks/store.js +11 -0
  86. package/dist/webhooks/store.js.map +1 -0
  87. package/package.json +45 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 PDFGate
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,84 @@
1
+ # PDFGate MCP Server
2
+
3
+ Model Context Protocol (MCP) server for the [PDFGate](https://pdfgate.com) API. Enables AI assistants to generate PDFs, manage documents and handle e-signatures.
4
+
5
+ ## Installation
6
+
7
+ Add the following to your MCP client configuration:
8
+
9
+ ```json
10
+ {
11
+ "mcpServers": {
12
+ "pdfgate": {
13
+ "command": "npx",
14
+ "args": ["-y", "@pdfgate/mcp-server"],
15
+ "env": {
16
+ "PDFGATE_API_KEY": "your_api_key_here"
17
+ }
18
+ }
19
+ }
20
+ }
21
+ ```
22
+
23
+ ## Getting an API key
24
+
25
+ Sign up at [pdfgate.com](https://pdfgate.com) to get your API key.
26
+
27
+ - Keys starting with `live_` connect to the production environment
28
+ - Keys starting with `test_` connect to the sandbox environment
29
+
30
+ ## Tools
31
+
32
+ ### PDF Operations
33
+
34
+ | Tool | Description |
35
+ |---|---|
36
+ | `generate_pdf` | Generate a PDF from a URL or raw HTML |
37
+ | `upload_pdf` | Upload a local PDF file or from a URL |
38
+ | `get_document` | Retrieve document metadata and a fresh download URL |
39
+ | `delete_document` | Delete a document |
40
+ | `flatten_pdf` | Flatten an interactive PDF into a static, non-editable file |
41
+ | `extract_pdf_form_data` | Extract form field values from a fillable PDF |
42
+ | `compress_pdf` | Compress a PDF to reduce file size |
43
+ | `protect_pdf` | Encrypt a PDF with a password and permission restrictions |
44
+ | `watermark_pdf` | Apply a text or image watermark to a PDF |
45
+
46
+ ### E-Signatures
47
+
48
+ | Tool | Description |
49
+ |---|---|
50
+ | `create_envelope` | Create a signing envelope from one or more documents |
51
+ | `send_envelope` | Send a created envelope to recipients |
52
+ | `get_envelope` | Get the current status of an envelope |
53
+
54
+ ### Webhook Management
55
+
56
+ | Tool | Description |
57
+ |---|---|
58
+ | `create_webhook` | Subscribe to PDFGate events |
59
+ | `delete_webhook` | Remove a webhook subscription |
60
+
61
+ ## Webhook Triggers
62
+
63
+ The server listens for incoming PDFGate events on port `3599` by default. To receive events:
64
+
65
+ 1. Expose port `3599` to the internet (e.g. via [ngrok](https://ngrok.com))
66
+ 2. Use the `create_webhook` tool to register your public URL
67
+
68
+ Supported events:
69
+
70
+ | Event | Description |
71
+ |---|---|
72
+ | `envelope.sent` | Signing request emails have been dispatched to recipients |
73
+ | `envelope.completed` | All documents in the envelope have been signed |
74
+ | `envelope.expired` | The envelope expired before all documents were signed |
75
+ | `envelope.document.completed` | A single document inside the envelope has been fully signed |
76
+
77
+ Received events are available via the `pdfgate://events` MCP resource and pushed to the client in real time.
78
+
79
+ ## Environment variables
80
+
81
+ | Variable | Required | Default | Description |
82
+ |---|---|---|---|
83
+ | `PDFGATE_API_KEY` | Yes | — | Your PDFGate API key |
84
+ | `PDFGATE_WEBHOOK_PORT` | No | `3599` | Port for the webhook listener |
@@ -0,0 +1,5 @@
1
+ import PdfGate from "pdfgate";
2
+ export declare function getClient(): PdfGate;
3
+ export declare function getApiKey(): string;
4
+ export declare function getBaseUrl(apiKey: string): string;
5
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAI9B,wBAAgB,SAAS,IAAI,OAAO,CAOnC;AAED,wBAAgB,SAAS,IAAI,MAAM,CAIlC;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAIjD"}
package/dist/client.js ADDED
@@ -0,0 +1,25 @@
1
+ import PdfGate from "pdfgate";
2
+ let _client = null;
3
+ export function getClient() {
4
+ if (!_client) {
5
+ const apiKey = process.env.PDFGATE_API_KEY;
6
+ if (!apiKey)
7
+ throw new Error("PDFGATE_API_KEY environment variable is required");
8
+ _client = new PdfGate(apiKey);
9
+ }
10
+ return _client;
11
+ }
12
+ export function getApiKey() {
13
+ const apiKey = process.env.PDFGATE_API_KEY;
14
+ if (!apiKey)
15
+ throw new Error("PDFGATE_API_KEY environment variable is required");
16
+ return apiKey;
17
+ }
18
+ export function getBaseUrl(apiKey) {
19
+ if (apiKey.startsWith("test_"))
20
+ return "https://api-sandbox.pdfgate.com";
21
+ if (apiKey.startsWith("live_"))
22
+ return "https://api.pdfgate.com";
23
+ throw new Error("Invalid API key format: must start with 'test_' or 'live_'");
24
+ }
25
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,IAAI,OAAO,GAAmB,IAAI,CAAC;AAEnC,MAAM,UAAU,SAAS;IACvB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;QAC3C,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACjF,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAC3C,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACjF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,iCAAiC,CAAC;IACzE,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,yBAAyB,CAAC;IACjE,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;AAChF,CAAC"}
package/dist/http.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ export declare function httpDelete(path: string): Promise<void>;
2
+ export declare function httpPost<T>(path: string, body: unknown): Promise<T>;
3
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAEA,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB5D;AAED,wBAAsB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAqBzE"}
package/dist/http.js ADDED
@@ -0,0 +1,45 @@
1
+ import { getApiKey, getBaseUrl } from "./client.js";
2
+ export async function httpDelete(path) {
3
+ const apiKey = getApiKey();
4
+ const baseUrl = getBaseUrl(apiKey);
5
+ const res = await fetch(`${baseUrl}${path}`, {
6
+ method: "DELETE",
7
+ headers: { Authorization: `Bearer ${apiKey}` },
8
+ });
9
+ if (!res.ok) {
10
+ const body = await res.text().catch(() => "");
11
+ let message = res.statusText;
12
+ try {
13
+ const parsed = JSON.parse(body);
14
+ if (parsed?.message)
15
+ message = parsed.message;
16
+ }
17
+ catch { }
18
+ throw new Error(`HTTP ${res.status}: ${message}`);
19
+ }
20
+ }
21
+ export async function httpPost(path, body) {
22
+ const apiKey = getApiKey();
23
+ const baseUrl = getBaseUrl(apiKey);
24
+ const res = await fetch(`${baseUrl}${path}`, {
25
+ method: "POST",
26
+ headers: {
27
+ Authorization: `Bearer ${apiKey}`,
28
+ "Content-Type": "application/json",
29
+ },
30
+ body: JSON.stringify(body),
31
+ });
32
+ if (!res.ok) {
33
+ const text = await res.text().catch(() => "");
34
+ let message = res.statusText;
35
+ try {
36
+ const parsed = JSON.parse(text);
37
+ if (parsed?.message)
38
+ message = parsed.message;
39
+ }
40
+ catch { }
41
+ throw new Error(`HTTP ${res.status}: ${message}`);
42
+ }
43
+ return res.json();
44
+ }
45
+ //# sourceMappingURL=http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY;IAC3C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,GAAG,IAAI,EAAE,EAAE;QAC3C,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,MAAM,EAAE,EAAE;KAC/C,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9C,IAAI,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,MAAM,EAAE,OAAO;gBAAE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC,CAAC;IACpD,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAI,IAAY,EAAE,IAAa;IAC3D,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,GAAG,IAAI,EAAE,EAAE;QAC3C,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,MAAM,EAAE;YACjC,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9C,IAAI,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,MAAM,EAAE,OAAO;gBAAE,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,EAAgB,CAAC;AAClC,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env node
2
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
+ import { registerTools } from "./tools/index.js";
5
+ import { startWebhookServer } from "./webhooks/server.js";
6
+ import { getEvents } from "./webhooks/store.js";
7
+ const server = new McpServer({
8
+ name: "pdfgate",
9
+ version: "0.1.0",
10
+ });
11
+ registerTools(server);
12
+ server.resource("pdfgate-events", "pdfgate://events", { description: "Recent PDFGate webhook events (newest first, up to 100). Subscribe to this resource to receive push notifications when new events arrive." }, async () => ({
13
+ contents: [
14
+ {
15
+ uri: "pdfgate://events",
16
+ mimeType: "application/json",
17
+ text: JSON.stringify(getEvents(), null, 2),
18
+ },
19
+ ],
20
+ }));
21
+ startWebhookServer(server);
22
+ const transport = new StdioServerTransport();
23
+ await server.connect(transport);
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,OAAO;CACjB,CAAC,CAAC;AAEH,aAAa,CAAC,MAAM,CAAC,CAAC;AAEtB,MAAM,CAAC,QAAQ,CACb,gBAAgB,EAChB,kBAAkB,EAClB,EAAE,WAAW,EAAE,2IAA2I,EAAE,EAC5J,KAAK,IAAI,EAAE,CAAC,CAAC;IACX,QAAQ,EAAE;QACR;YACE,GAAG,EAAE,kBAAkB;YACvB,QAAQ,EAAE,kBAAkB;YAC5B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;SAC3C;KACF;CACF,CAAC,CACH,CAAC;AAEF,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAE3B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function register(server: McpServer): void;
3
+ //# sourceMappingURL=compress-pdf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compress-pdf.d.ts","sourceRoot":"","sources":["../../src/tools/compress-pdf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA6BhD"}
@@ -0,0 +1,29 @@
1
+ import { z } from "zod";
2
+ import { getClient } from "../client.js";
3
+ export function register(server) {
4
+ server.tool("compress_pdf", "Compress/optimise a PDF to reduce file size without changing visual content.", {
5
+ documentId: z.string().describe("The source document ID to compress"),
6
+ linearize: z
7
+ .boolean()
8
+ .optional()
9
+ .describe("Linearise the PDF to enable fast web view (first page renders sooner)"),
10
+ preSignedUrlExpiresIn: z
11
+ .number()
12
+ .int()
13
+ .min(60)
14
+ .max(86400)
15
+ .optional()
16
+ .describe("Pre-signed download URL expiry in seconds (60–86400)"),
17
+ metadata: z.record(z.unknown()).optional().describe("Custom metadata to attach"),
18
+ }, async ({ documentId, linearize, preSignedUrlExpiresIn, metadata }) => {
19
+ try {
20
+ const result = await getClient().compressPdf({ documentId, linearize, preSignedUrlExpiresIn, metadata });
21
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
22
+ }
23
+ catch (err) {
24
+ const msg = err instanceof Error ? err.message : String(err);
25
+ return { content: [{ type: "text", text: `Error: ${msg}` }], isError: true };
26
+ }
27
+ });
28
+ }
29
+ //# sourceMappingURL=compress-pdf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compress-pdf.js","sourceRoot":"","sources":["../../src/tools/compress-pdf.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,cAAc,EACd,8EAA8E,EAC9E;QACE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QACrE,SAAS,EAAE,CAAC;aACT,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,QAAQ,CAAC,uEAAuE,CAAC;QACpF,qBAAqB,EAAE,CAAC;aACrB,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,EAAE,CAAC;aACP,GAAG,CAAC,KAAK,CAAC;aACV,QAAQ,EAAE;aACV,QAAQ,CAAC,sDAAsD,CAAC;QACnE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;KACjF,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,qBAAqB,EAAE,QAAQ,EAAE,EAAE,EAAE;QACnE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,qBAAqB,EAAE,QAAQ,EAAE,CAAC,CAAC;YACzG,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAChF,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC/E,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function register(server: McpServer): void;
3
+ //# sourceMappingURL=create-envelope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-envelope.d.ts","sourceRoot":"","sources":["../../src/tools/create-envelope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAoBpE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmBhD"}
@@ -0,0 +1,33 @@
1
+ import { z } from "zod";
2
+ import { getClient } from "../client.js";
3
+ const recipientSchema = z.object({
4
+ email: z.string().email().describe("Recipient email address"),
5
+ name: z.string().describe("Recipient display name"),
6
+ role: z.string().optional().describe("Recipient role label"),
7
+ reminderIntervalDays: z.number().int().optional().describe("Days between reminder emails"),
8
+ reminderAttempts: z.number().int().optional().describe("Maximum number of reminder emails"),
9
+ });
10
+ const documentSchema = z.object({
11
+ sourceDocumentId: z
12
+ .string()
13
+ .describe("ID of the document previously generated or uploaded to PDFGate"),
14
+ name: z.string().describe("Display name for this document in the envelope"),
15
+ recipients: z.array(recipientSchema).min(1).describe("Recipients for this document"),
16
+ });
17
+ export function register(server) {
18
+ server.tool("create_envelope", "Create a signing envelope from one or more existing PDFGate documents. Returns an envelope in 'created' status; call send_envelope to dispatch signing emails.", {
19
+ documents: z.array(documentSchema).min(1).describe("Documents to include in the envelope"),
20
+ requesterName: z.string().describe("Name of the user or system creating the envelope"),
21
+ metadata: z.record(z.unknown()).optional().describe("Custom metadata to attach"),
22
+ }, async ({ documents, requesterName, metadata }) => {
23
+ try {
24
+ const result = await getClient().createEnvelope({ documents, requesterName, metadata });
25
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
26
+ }
27
+ catch (err) {
28
+ const msg = err instanceof Error ? err.message : String(err);
29
+ return { content: [{ type: "text", text: `Error: ${msg}` }], isError: true };
30
+ }
31
+ });
32
+ }
33
+ //# sourceMappingURL=create-envelope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-envelope.js","sourceRoot":"","sources":["../../src/tools/create-envelope.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAC7D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IACnD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAC5D,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IAC1F,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;CAC5F,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,gBAAgB,EAAE,CAAC;SAChB,MAAM,EAAE;SACR,QAAQ,CAAC,gEAAgE,CAAC;IAC7E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;IAC3E,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,8BAA8B,CAAC;CACrF,CAAC,CAAC;AAEH,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,gKAAgK,EAChK;QACE,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,sCAAsC,CAAC;QAC1F,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;QACtF,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;KACjF,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC/C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC,cAAc,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC;YACxF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAChF,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC/E,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function register(server: McpServer): void;
3
+ //# sourceMappingURL=create-webhook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-webhook.d.ts","sourceRoot":"","sources":["../../src/tools/create-webhook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAapE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA8BhD"}
@@ -0,0 +1,29 @@
1
+ import { z } from "zod";
2
+ import { httpPost } from "../http.js";
3
+ import { addSecret } from "../webhooks/secrets.js";
4
+ export function register(server) {
5
+ server.tool("create_webhook", "Create a PDFGate webhook subscription. The response includes a signing secret — store it securely to verify incoming event signatures.", {
6
+ url: z.string().url().describe("The HTTPS endpoint that will receive webhook events"),
7
+ eventTypes: z
8
+ .array(z.enum([
9
+ "envelope.sent",
10
+ "envelope.completed",
11
+ "envelope.expired",
12
+ "envelope.document.completed",
13
+ ]))
14
+ .min(1)
15
+ .describe("Event types to subscribe to"),
16
+ description: z.string().optional().describe("Optional label to identify this webhook"),
17
+ }, async ({ url, eventTypes, description }) => {
18
+ try {
19
+ const result = await httpPost("/webhook", { url, eventTypes, description });
20
+ addSecret(result.secret);
21
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
22
+ }
23
+ catch (err) {
24
+ const msg = err instanceof Error ? err.message : String(err);
25
+ return { content: [{ type: "text", text: `Error: ${msg}` }], isError: true };
26
+ }
27
+ });
28
+ }
29
+ //# sourceMappingURL=create-webhook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-webhook.js","sourceRoot":"","sources":["../../src/tools/create-webhook.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAUnD,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,wIAAwI,EACxI;QACE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;QACrF,UAAU,EAAE,CAAC;aACV,KAAK,CACJ,CAAC,CAAC,IAAI,CAAC;YACL,eAAe;YACf,oBAAoB;YACpB,kBAAkB;YAClB,6BAA6B;SAC9B,CAAC,CACH;aACA,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CAAC,6BAA6B,CAAC;QAC1C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;KACvF,EACD,KAAK,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE,EAAE;QACzC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAkB,UAAU,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;YAC7F,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACzB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAChF,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC/E,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function register(server: McpServer): void;
3
+ //# sourceMappingURL=delete-document.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-document.d.ts","sourceRoot":"","sources":["../../src/tools/delete-document.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAiBhD"}
@@ -0,0 +1,17 @@
1
+ import { z } from "zod";
2
+ import { httpDelete } from "../http.js";
3
+ export function register(server) {
4
+ server.tool("delete_document", "Delete a PDFGate document.", {
5
+ documentId: z.string().describe("The document ID to delete"),
6
+ }, async ({ documentId }) => {
7
+ try {
8
+ await httpDelete(`/document/${documentId}`);
9
+ return { content: [{ type: "text", text: `Document ${documentId} deleted successfully.` }] };
10
+ }
11
+ catch (err) {
12
+ const msg = err instanceof Error ? err.message : String(err);
13
+ return { content: [{ type: "text", text: `Error: ${msg}` }], isError: true };
14
+ }
15
+ });
16
+ }
17
+ //# sourceMappingURL=delete-document.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-document.js","sourceRoot":"","sources":["../../src/tools/delete-document.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,4BAA4B,EAC5B;QACE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;KAC7D,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;QACvB,IAAI,CAAC;YACH,MAAM,UAAU,CAAC,aAAa,UAAU,EAAE,CAAC,CAAC;YAC5C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,UAAU,wBAAwB,EAAE,CAAC,EAAE,CAAC;QAC/F,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC/E,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function register(server: McpServer): void;
3
+ //# sourceMappingURL=delete-webhook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-webhook.d.ts","sourceRoot":"","sources":["../../src/tools/delete-webhook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAiBhD"}
@@ -0,0 +1,17 @@
1
+ import { z } from "zod";
2
+ import { httpDelete } from "../http.js";
3
+ export function register(server) {
4
+ server.tool("delete_webhook", "Delete a PDFGate webhook subscription. Future events will no longer be delivered to the associated endpoint.", {
5
+ webhookId: z.string().describe("The webhook ID to delete"),
6
+ }, async ({ webhookId }) => {
7
+ try {
8
+ await httpDelete(`/webhook/${webhookId}`);
9
+ return { content: [{ type: "text", text: `Webhook ${webhookId} deleted successfully.` }] };
10
+ }
11
+ catch (err) {
12
+ const msg = err instanceof Error ? err.message : String(err);
13
+ return { content: [{ type: "text", text: `Error: ${msg}` }], isError: true };
14
+ }
15
+ });
16
+ }
17
+ //# sourceMappingURL=delete-webhook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-webhook.js","sourceRoot":"","sources":["../../src/tools/delete-webhook.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,8GAA8G,EAC9G;QACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;KAC3D,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QACtB,IAAI,CAAC;YACH,MAAM,UAAU,CAAC,YAAY,SAAS,EAAE,CAAC,CAAC;YAC1C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,SAAS,wBAAwB,EAAE,CAAC,EAAE,CAAC;QAC7F,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC/E,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function register(server: McpServer): void;
3
+ //# sourceMappingURL=extract-pdf-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract-pdf-data.d.ts","sourceRoot":"","sources":["../../src/tools/extract-pdf-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAiBhD"}
@@ -0,0 +1,17 @@
1
+ import { z } from "zod";
2
+ import { getClient } from "../client.js";
3
+ export function register(server) {
4
+ server.tool("extract_pdf_form_data", "Extract form field values from a fillable PDF. Returns a JSON object mapping field names to their values.", {
5
+ documentId: z.string().describe("The document ID of the fillable PDF"),
6
+ }, async ({ documentId }) => {
7
+ try {
8
+ const result = await getClient().extractPdfFormData({ documentId });
9
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
10
+ }
11
+ catch (err) {
12
+ const msg = err instanceof Error ? err.message : String(err);
13
+ return { content: [{ type: "text", text: `Error: ${msg}` }], isError: true };
14
+ }
15
+ });
16
+ }
17
+ //# sourceMappingURL=extract-pdf-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract-pdf-data.js","sourceRoot":"","sources":["../../src/tools/extract-pdf-data.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,2GAA2G,EAC3G;QACE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;KACvE,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;QACvB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;YACpE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAChF,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC/E,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function register(server: McpServer): void;
3
+ //# sourceMappingURL=flatten-pdf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flatten-pdf.d.ts","sourceRoot":"","sources":["../../src/tools/flatten-pdf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyBhD"}
@@ -0,0 +1,25 @@
1
+ import { z } from "zod";
2
+ import { getClient } from "../client.js";
3
+ export function register(server) {
4
+ server.tool("flatten_pdf", "Flatten an interactive PDF into a static, non-editable PDF. Creates a new document; does not overwrite the original.", {
5
+ documentId: z.string().describe("The source document ID to flatten"),
6
+ preSignedUrlExpiresIn: z
7
+ .number()
8
+ .int()
9
+ .min(60)
10
+ .max(86400)
11
+ .optional()
12
+ .describe("Pre-signed download URL expiry in seconds (60–86400)"),
13
+ metadata: z.record(z.unknown()).optional().describe("Custom metadata to attach"),
14
+ }, async ({ documentId, preSignedUrlExpiresIn, metadata }) => {
15
+ try {
16
+ const result = await getClient().flattenPdf({ documentId, preSignedUrlExpiresIn, metadata });
17
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
18
+ }
19
+ catch (err) {
20
+ const msg = err instanceof Error ? err.message : String(err);
21
+ return { content: [{ type: "text", text: `Error: ${msg}` }], isError: true };
22
+ }
23
+ });
24
+ }
25
+ //# sourceMappingURL=flatten-pdf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flatten-pdf.js","sourceRoot":"","sources":["../../src/tools/flatten-pdf.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,aAAa,EACb,sHAAsH,EACtH;QACE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QACpE,qBAAqB,EAAE,CAAC;aACrB,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,EAAE,CAAC;aACP,GAAG,CAAC,KAAK,CAAC;aACV,QAAQ,EAAE;aACV,QAAQ,CAAC,sDAAsD,CAAC;QACnE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;KACjF,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,qBAAqB,EAAE,QAAQ,EAAE,EAAE,EAAE;QACxD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,qBAAqB,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7F,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAChF,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC/E,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function register(server: McpServer): void;
3
+ //# sourceMappingURL=generate-pdf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-pdf.d.ts","sourceRoot":"","sources":["../../src/tools/generate-pdf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyFhD"}
@@ -0,0 +1,68 @@
1
+ import { z } from "zod";
2
+ import { getClient } from "../client.js";
3
+ export function register(server) {
4
+ server.tool("generate_pdf", "Generate a PDF from a URL or raw HTML. Provide either 'url' or 'html', not both.", {
5
+ url: z.string().url().optional().describe("Public URL to render as PDF"),
6
+ html: z.string().optional().describe("Raw HTML string to render as PDF"),
7
+ pageSizeType: z
8
+ .enum(["a0", "a1", "a2", "a3", "a4", "a5", "a6", "ledger", "tabloid", "legal", "letter"])
9
+ .optional()
10
+ .describe("Page size (default: a4)"),
11
+ orientation: z
12
+ .enum(["portrait", "landscape"])
13
+ .optional()
14
+ .describe("Page orientation (default: portrait)"),
15
+ marginTop: z.string().optional().describe("Top margin e.g. '10mm'"),
16
+ marginBottom: z.string().optional().describe("Bottom margin"),
17
+ marginLeft: z.string().optional().describe("Left margin"),
18
+ marginRight: z.string().optional().describe("Right margin"),
19
+ header: z.string().optional().describe("HTML string for the page header"),
20
+ footer: z.string().optional().describe("HTML string for the page footer"),
21
+ printBackground: z.boolean().optional().describe("Print background graphics (default: true)"),
22
+ waitForNetworkIdle: z.boolean().optional().describe("Wait for network idle before rendering"),
23
+ javascript: z.string().optional().describe("JavaScript to inject before rendering"),
24
+ css: z.string().optional().describe("CSS to inject before rendering"),
25
+ emulateMediaType: z.enum(["screen", "print"]).optional(),
26
+ enableFormFields: z
27
+ .boolean()
28
+ .optional()
29
+ .describe("Enable interactive PDF form fields from HTML"),
30
+ preSignedUrlExpiresIn: z
31
+ .number()
32
+ .int()
33
+ .min(60)
34
+ .max(86400)
35
+ .optional()
36
+ .describe("Pre-signed download URL expiry in seconds (60–86400)"),
37
+ metadata: z.record(z.unknown()).optional().describe("Custom metadata to attach"),
38
+ }, async ({ url, html, pageSizeType, orientation, marginTop, marginBottom, marginLeft, marginRight, header, footer, printBackground, waitForNetworkIdle, javascript, css, emulateMediaType, enableFormFields, preSignedUrlExpiresIn, metadata, }) => {
39
+ try {
40
+ const margin = marginTop || marginBottom || marginLeft || marginRight
41
+ ? { top: marginTop, bottom: marginBottom, left: marginLeft, right: marginRight }
42
+ : undefined;
43
+ const result = await getClient().generatePdf({
44
+ url,
45
+ html,
46
+ pageSizeType: pageSizeType,
47
+ orientation: orientation,
48
+ margin,
49
+ header,
50
+ footer,
51
+ printBackground,
52
+ waitForNetworkIdle,
53
+ javascript,
54
+ css,
55
+ emulateMediaType: emulateMediaType,
56
+ enableFormFields,
57
+ preSignedUrlExpiresIn,
58
+ metadata,
59
+ });
60
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
61
+ }
62
+ catch (err) {
63
+ const msg = err instanceof Error ? err.message : String(err);
64
+ return { content: [{ type: "text", text: `Error: ${msg}` }], isError: true };
65
+ }
66
+ });
67
+ }
68
+ //# sourceMappingURL=generate-pdf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-pdf.js","sourceRoot":"","sources":["../../src/tools/generate-pdf.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,UAAU,QAAQ,CAAC,MAAiB;IACxC,MAAM,CAAC,IAAI,CACT,cAAc,EACd,kFAAkF,EAClF;QACE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;QACxE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QACxE,YAAY,EAAE,CAAC;aACZ,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;aACxF,QAAQ,EAAE;aACV,QAAQ,CAAC,yBAAyB,CAAC;QACtC,WAAW,EAAE,CAAC;aACX,IAAI,CAAC,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;aAC/B,QAAQ,EAAE;aACV,QAAQ,CAAC,sCAAsC,CAAC;QACnD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;QACnE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC7D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QACzD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC3D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;QACzE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;QACzE,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;QAC7F,kBAAkB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;QAC7F,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;QACnF,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QACrE,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE;QACxD,gBAAgB,EAAE,CAAC;aAChB,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,QAAQ,CAAC,8CAA8C,CAAC;QAC3D,qBAAqB,EAAE,CAAC;aACrB,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,EAAE,CAAC;aACP,GAAG,CAAC,KAAK,CAAC;aACV,QAAQ,EAAE;aACV,QAAQ,CAAC,sDAAsD,CAAC;QACnE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;KACjF,EACD,KAAK,EAAE,EACL,GAAG,EACH,IAAI,EACJ,YAAY,EACZ,WAAW,EACX,SAAS,EACT,YAAY,EACZ,UAAU,EACV,WAAW,EACX,MAAM,EACN,MAAM,EACN,eAAe,EACf,kBAAkB,EAClB,UAAU,EACV,GAAG,EACH,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,QAAQ,GACT,EAAE,EAAE;QACH,IAAI,CAAC;YACH,MAAM,MAAM,GACV,SAAS,IAAI,YAAY,IAAI,UAAU,IAAI,WAAW;gBACpD,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE;gBAChF,CAAC,CAAC,SAAS,CAAC;YAEhB,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC,WAAW,CAAC;gBAC3C,GAAG;gBACH,IAAI;gBACJ,YAAY,EAAE,YAAmB;gBACjC,WAAW,EAAE,WAAkB;gBAC/B,MAAM;gBACN,MAAM;gBACN,MAAM;gBACN,eAAe;gBACf,kBAAkB;gBAClB,UAAU;gBACV,GAAG;gBACH,gBAAgB,EAAE,gBAAuB;gBACzC,gBAAgB;gBAChB,qBAAqB;gBACrB,QAAQ;aACT,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAChF,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC/E,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function register(server: McpServer): void;
3
+ //# sourceMappingURL=get-document.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-document.d.ts","sourceRoot":"","sources":["../../src/tools/get-document.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwBhD"}