pdf-viewer
You have access to a local PDF server that renders documents in a live viewer and supports annotation, form-filling, and signature placement with real-time visual feedback.
Reference files
Load on demand — do not load all eagerly:
| File | What's in it | When to read |
|---|---|---|
references/view-pdf.md |
Full tool API (display_pdf, interact), annotation types, coordinate system |
Always read on activation — core reference |
references/open.md |
Opening workflow, supported sources, when NOT to use viewer | When user just wants to open/view a document |
references/annotate.md |
Collaborative annotation workflow, batch patterns, tips | When user wants to annotate, highlight, stamp, or mark up |
references/fill-form.md |
Form-filling workflows (user-driven vs AI-assisted), unnamed field handling | When user wants to fill a form |
references/sign.md |
Signature/initials placement workflow, coordinate tips | When user wants to sign or add initials |
Quick decision guide
| User intent | Action |
|---|---|
| "open" / "show" / "view" | display_pdf → offer next steps based on doc type |
| "annotate" / "highlight" / "stamp" / "mark up" | Read annotate.md |
| "fill" / "form" / "complete this form" | Read fill-form.md |
| "sign" / "initials" / "signature" | Read sign.md |
| "summarize" / "what does it say" / "extract" | Stop — use native Read tool, not viewer |
Core tools (summary)
list_pdfs— list available local PDFs. Call when no path given.display_pdf(url, page?, elicit_form_inputs?)— open document. ReturnsviewUUID(required for allinteractcalls) andformFieldsif PDF has fillable fields.interact(viewUUID, commands[])— all follow-up actions. Batch commands; end withget_screenshotto verify.
Full API detail in references/view-pdf.md.
Always
- Call
display_pdfonce per document. ReuseviewUUIDfor allinteractcalls. - Batch related commands in one
interactcall. - End annotation/form/sign batches with
get_screenshot— show result to user. - Remind user they can download annotated PDF from viewer toolbar when done.