-
Notifications
You must be signed in to change notification settings - Fork 18
Expand file tree
/
Copy pathmanifest.json
More file actions
294 lines (294 loc) · 16.7 KB
/
manifest.json
File metadata and controls
294 lines (294 loc) · 16.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
{
"manifest_version": "0.3",
"name": "pdf-toolkit",
"display_name": "PDF Tools - Fill, Sign, Merge, Split, Extract",
"description": "A local PDF workflow for Claude Desktop: fill forms, sign/date PDFs, fetch PDF URLs, merge/split files, extract data, and analyze documents.",
"long_description": "PDF Tools turns Claude Desktop into a complete local PDF workstation. Instead of just opening a PDF, Claude can fetch PDFs from URLs, inspect them visually, fill forms, manage pages, add signature/date zones, apply local signatures or text, extract structured data, and analyze document content without uploading files to a web app.\n\nThis package targets Claude Desktop and other local MCP hosts today. It does not yet include a remote Claude/Cowork connector.\n\n**Interactive PDF Viewer:**\n• View PDFs with page navigation, zoom, search, text selection, and fullscreen\n• See form fields in a sidebar with fill status\n• Use visual page management to reorder, rotate, and remove pages before saving\n• Switch into Sign mode to work with signature/date zones on the PDF\n\n**Sign Mode & Local Signatures:**\n• Detect signature, initials, and date zones with visible coordinates Claude can reason from\n• Draw or reuse saved local signatures\n• Place signatures, dates, or other text on detected or custom zones\n• Inspect a region, preview it, and turn it into a typed signing zone when the automatic detector is not enough\n• Keep edits local, with active-document tracking and automatic backup behavior for same-file mutations\n\n**URL-to-PDF Workflows:**\n• Fetch PDFs from HTTP(S) URLs to the user's local machine, including cases where Claude's WebFetch is blocked\n• Open downloaded PDFs immediately in the viewer for fill, sign, page management, extraction, or analysis\n• Use page-bounded reads, text search, page renders, and region renders instead of one brittle all-document operation\n\n**Forms & Reusable Profiles:**\n• Fill W-9s, 1099s, rental applications, waivers, and any fillable PDF\n• Save personal or business details as reusable profiles\n• List, load, and apply saved profiles so repeated forms take seconds instead of minutes\n• Bulk fill many PDFs from CSV data and validate required fields before submission\n\n**Page Organization Tools:**\n• Merge multiple PDFs into one document\n• Split PDFs by exact page ranges or regular intervals\n• Rotate and reorder pages, or apply a full page plan in one pass\n• Keep the original intact by saving organized output as a new file\n\n**Extraction, Rendering & Analysis:**\n• Read document text for summarization, question answering, and research workflows\n• Read specific page ranges and search PDF text with page-numbered snippets\n• Render full pages or bounded regions to PNG for visual reasoning on scanned or image-heavy documents\n• Extract structured data to CSV\n• Inspect page-level details like orientation, text presence, images, and likely blank pages\n• Review metadata such as page count, dimensions, form fields, and file size\n\n**Local-first and user-controlled:** PDFs, saved profiles, and signatures stay on the user's machine. Claude Desktop users choose which folders PDF Tools may read from or write to.\n\n**Works with many PDF types:** Forms, contracts, research papers, technical manuals, invoices, financial statements, scanned documents, municipal packets, and encrypted PDFs.\n\n**Best for:** People who need more than a viewer — operators processing forms, lawyers organizing contracts, accountants handling tax documents, researchers reviewing papers, and anyone who wants local PDF workflows without sending files to a web app.",
"version": "0.8.6",
"author": {
"name": "Open Document Alliance",
"url": "https://github.com/Open-Document-Alliance",
"email": "mat@businessvacation.com"
},
"repository": {
"type": "git",
"url": "https://github.com/Open-Document-Alliance/PDF-Tools"
},
"homepage": "https://github.com/Open-Document-Alliance/PDF-Tools",
"documentation": "https://github.com/Open-Document-Alliance/PDF-Tools/blob/master/README.md",
"support": "https://github.com/Open-Document-Alliance/PDF-Tools/issues",
"license": "MIT",
"keywords": ["pdf", "merge", "split", "rotate", "reorder", "viewer", "interactive", "search", "research", "academic", "analyze", "compare", "extract", "documentation", "contracts", "forms", "fill", "sign", "signature", "date", "url", "download", "render", "w9", "1099", "tax", "invoice"],
"icon": "icon.png",
"tools": [
{
"name": "display_pdf",
"description": "Display an interactive PDF viewer with search, navigation, zoom, and form field detection"
},
{
"name": "list_pdfs",
"description": "List all PDF files in a directory"
},
{
"name": "read_pdf_fields",
"description": "Read all form fields from a PDF file"
},
{
"name": "fill_pdf",
"description": "Fill a PDF form; may save in place with automatic backup"
},
{
"name": "bulk_fill_from_csv",
"description": "Fill multiple PDFs using data from a CSV file"
},
{
"name": "save_profile",
"description": "Save form data as a reusable profile"
},
{
"name": "load_profile",
"description": "Load a saved profile"
},
{
"name": "list_profiles",
"description": "List all saved profiles"
},
{
"name": "fill_with_profile",
"description": "Fill a PDF using a saved profile"
},
{
"name": "extract_to_csv",
"description": "Extract form data from filled PDFs to a CSV file"
},
{
"name": "validate_pdf",
"description": "Validate if all required fields in a PDF are filled"
},
{
"name": "read_pdf_content",
"description": "Read and analyze the full content of a PDF file - extract text, summarize, convert to other formats, or answer questions about the document"
},
{
"name": "read_pdf_pages",
"description": "Read a bounded page range from a PDF with page-numbered structured output"
},
{
"name": "render_pdf_page",
"description": "Render one PDF page to PNG for visual reasoning on scanned or image-heavy documents"
},
{
"name": "render_pdf_region",
"description": "Render a bounded PDF region to PNG using top-left point coordinates"
},
{
"name": "search_pdf_text",
"description": "Search extracted PDF text for a phrase and return page-numbered snippets"
},
{
"name": "get_pdf_resource_uri",
"description": "Get a resource URI for a PDF file that can be used with Claude's built-in PDF reading capabilities via the Resources API"
},
{
"name": "read_pdf_bytes",
"description": "Read PDF file bytes in chunks (for UI rendering)"
},
{
"name": "merge_pdfs",
"description": "Merge multiple PDF files into a single PDF"
},
{
"name": "split_pdf",
"description": "Split a PDF into multiple files by page ranges or intervals"
},
{
"name": "rotate_pdf_pages",
"description": "Rotate pages in a PDF by 90, 180, or 270 degrees"
},
{
"name": "reorder_pdf_pages",
"description": "Rearrange the pages of a PDF in a new order"
},
{
"name": "get_pdf_info",
"description": "Get metadata about a PDF: page count, file size, dimensions, form fields"
},
{
"name": "apply_page_plan",
"description": "Reorder, rotate, and delete PDF pages in one pass — saves as a new file"
},
{
"name": "get_page_analysis",
"description": "Analyze PDF pages for blank detection, orientation, text content, and image presence"
},
{
"name": "fetch_pdf_from_url",
"description": "Download a PDF from an HTTP(S) URL to the user's local machine — works when Claude's WebFetch is blocked"
},
{
"name": "create_signature",
"description": "Save a reusable typed-name or image signature to ~/.pdf-toolkit-files/signatures/"
},
{
"name": "list_signatures",
"description": "List all saved signatures"
},
{
"name": "load_signature",
"description": "Load one saved signature by name, including preview data for image signatures"
},
{
"name": "get_active_document",
"description": "Return the toolkit's current canonical PDF path, backup path, and last mutation metadata"
},
{
"name": "set_active_document",
"description": "Rehydrate the toolkit's active document state from the currently open viewer session"
},
{
"name": "add_signature_field",
"description": "Draw a visible 'Sign here' placeholder box on a PDF page (marks location — does NOT sign)"
},
{
"name": "apply_signature",
"description": "Stamp a saved signature at a specific location — requires explicit human intent (user_intent_statement + user_confirmed_at). Basic local stamp, not cryptographic signing."
},
{
"name": "prepare_signing_packet",
"description": "Fill form fields AND add sign-here placeholder boxes in one pass — returns a pending-signatures manifest"
},
{
"name": "detect_signature_zones",
"description": "Find every place in a PDF where a signature, initials, or date should go — typed zone list with coordinates. Use BEFORE apply_signature; never guess coordinates."
},
{
"name": "apply_text",
"description": "Stamp a plain text string at a location (for date zones or arbitrary text fills — no intent required)"
},
{
"name": "reveal_in_finder",
"description": "Open the OS file manager with the given file selected — used by the viewer to surface the active PDF or its backup"
}
],
"prompts": [
{
"name": "view_and_analyze_pdf",
"description": "Open and analyze any PDF document",
"arguments": ["focus"],
"text": "I'll open your PDF in the interactive viewer and analyze it, focusing on ${arguments.focus}. I can extract key findings, summarize sections, answer questions about specific pages, pull out structured data, and identify form fields if present."
},
{
"name": "research_paper_analysis",
"description": "Analyze & summarize research papers",
"arguments": ["focus_area"],
"text": "I'll open your research paper in the interactive viewer and analyze it, focusing on ${arguments.focus_area}. I can extract key findings and methodology, identify research gaps, create chapter-by-chapter summaries, pull out all citations, and generate a literature review outline."
},
{
"name": "contract_comparison",
"description": "Compare legal documents & contracts",
"arguments": ["comparison_focus"],
"text": "I'll compare multiple contracts or legal documents, focusing on ${arguments.comparison_focus}. I'll highlight changed clauses, modified terms, added/removed sections, pricing differences, liability changes, and create a comparison summary."
},
{
"name": "financial_report_extraction",
"description": "Extract data from financial statements",
"arguments": ["output_format"],
"text": "I'll extract and analyze data from your financial PDFs including all tables and key metrics. I'll convert the data to ${arguments.output_format} format for analysis, with specific page references for all extracted information."
},
{
"name": "document_qa_session",
"description": "Interactive Q&A about your documents",
"arguments": ["initial_question"],
"text": "Let's discuss your PDF document. Starting with: ${arguments.initial_question}. I can find specific information, explain complex sections, cross-reference different parts, extract quotes with page numbers, and answer 'what if' scenarios."
},
{
"name": "bulk_invoice_processing",
"description": "Process multiple invoices into structured data",
"arguments": ["folder_path", "output_format"],
"text": "I'll process all invoice PDFs in ${arguments.folder_path} and create a unified dataset in ${arguments.output_format} format. I'll extract vendor names, invoice numbers, dates, line items, totals, tax amounts, and payment terms."
},
{
"name": "technical_documentation_summary",
"description": "Summarize technical manuals & documentation",
"arguments": ["summary_type"],
"text": "I'll analyze your technical documentation and create ${arguments.summary_type}. I'll extract code examples, create reference guides, identify implementation steps, and summarize troubleshooting sections."
},
{
"name": "fill_w9_business",
"description": "Fill W-9 for business entity",
"text": "I'll open your W-9 in the interactive viewer so you can see it, then fill it for your business. I need: Business legal name, DBA/trade name (if different), business type (LLC/Corp/Partnership), tax classification, EIN, and business address. I'll properly check the correct tax classification boxes and ensure the form meets IRS requirements."
},
{
"name": "batch_invoices",
"description": "Process multiple invoices",
"text": "I'll help you batch process invoices. Point me to the folder containing your invoice PDFs. I can: extract all amounts and dates, create a summary spreadsheet, identify missing information, calculate totals by vendor/date/category. What specific data do you need extracted?"
},
{
"name": "rental_application",
"description": "Fill rental application",
"text": "I'll open your rental application in the viewer and help complete it. Have ready: personal info, employment history (3 years), income verification, previous addresses (3 years), references, vehicle info, and emergency contact. I'll ensure all required fields are filled and flag any that need supporting documents."
},
{
"name": "extract_1099_data",
"description": "Extract data from 1099 forms",
"text": "I'll extract all data from your 1099 forms (1099-NEC, 1099-MISC, 1099-DIV, 1099-INT, etc.) and create a tax summary. I'll organize by payer, identify the type of income, sum totals by category, and format it for easy import into tax software."
},
{
"name": "merge_documents",
"description": "Combine multiple PDFs into one document",
"text": "I'll merge your PDF files into a single document. Just tell me which files to combine and where to save the result. I'll preserve the page order and show you the merged result in the viewer so you can verify it looks right. All processing happens locally on your computer — nothing is uploaded."
},
{
"name": "split_large_document",
"description": "Split a PDF into smaller files",
"text": "I'll split your PDF into separate files. You can specify exact page ranges (e.g., pages 1-10, 11-20) or split at regular intervals (e.g., every 5 pages). I'll save each section as its own PDF file. Great for breaking up large reports, separating chapters, or extracting specific sections."
},
{
"name": "organize_scanned_pages",
"description": "Rotate and reorder scanned PDF pages",
"text": "I'll help fix up your scanned PDF. I can rotate sideways or upside-down pages (90°, 180°, or 270°), and reorder pages that were scanned out of sequence. I'll show you the result in the viewer so you can confirm everything looks right before saving."
}
],
"user_config": {
"download_directory": {
"type": "directory",
"title": "Download Directory",
"description": "Where PDFs saved via fetch_pdf_from_url land by default. You can still override per-call with the destination_dir argument, but this is the default for new downloads.",
"default": "${HOME}/Downloads",
"required": false
},
"default_pdf_directory": {
"type": "directory",
"title": "Default PDFs Folder",
"description": "Where list_pdfs looks when no directory is specified.",
"default": "${HOME}/Documents",
"required": false
},
"allowed_directories": {
"type": "directory",
"title": "Allowed PDF Directories",
"description": "Folders this extension may read from or write to. PDF tools will refuse paths outside these folders. Profiles and saved signatures remain in the extension's private local store.",
"default": [
"${HOME}/Documents",
"${HOME}/Downloads",
"${HOME}/Desktop"
],
"multiple": true,
"required": false
}
},
"server": {
"type": "node",
"entry_point": "server/index.js",
"mcp_config": {
"command": "node",
"args": ["${__dirname}/server/index.js"],
"env": {
"DEFAULT_PDF_DIR": "${user_config.default_pdf_directory}",
"DEFAULT_PROFILES_DIR": "${HOME}/.pdf-toolkit-files",
"DEFAULT_DOWNLOAD_DIR": "${user_config.download_directory}",
"ALLOWED_DIRECTORIES": "${user_config.allowed_directories}"
}
}
}
}