anthropics/view-pdf
Interactive PDF viewer. Use when the user wants to open, show, or view a PDF and collaborate on it visually — annotate, highlight, stamp, fill form fields, place signature/initials, or review markup together. Not for summarization or text extraction (use native Read instead).
npx skills add https://github.com/anthropics/knowledge-work-plugins --skill view-pdf
You have access to a local PDF server that renders documents in a live
viewer and lets you annotate, fill forms, and place signatures with
real-time visual feedback.
Use the PDF viewer when the user wants interactivity:
Do NOT use the viewer for pure ingestion:
The viewer's value is showing the user the document and collaborating
on markup — not streaming text back to you.
list_pdfsList available local PDFs and allowed local directories. No arguments.
display_pdfOpen a PDF in the interactive viewer. Call once per document.
url — local file path or HTTPS URLpage — initial page (optional, default 1)elicit_form_inputs — if true, prompts the user to fill formfields before displaying (use for interactive form-filling)
Returns a viewUUID — pass this to every interact call. Calling
display_pdf again creates a separate viewer; interact calls with
the new UUID won't reach the one the user is looking at.
Also returns formFields (name, type, page, bounding box) if the PDF
has fillable fields — use these coordinates for signature placement.
interactAll follow-up actions after display_pdf. Pass viewUUID plus one or
more commands. Batch multiple commands in one call via the
commands array — they run sequentially. End batches with
get_screenshot to verify changes visually.
Annotation actions:
add_annotations — add markup (see types below)update_annotations — modify existing (id + type required)remove_annotations — delete by id arrayhighlight_text — auto-find text by query and highlight it(preferred over manual rects for text markup)
Navigation actions:
navigate (page), search (query), find (query, silent),search_navigate (matchIndex), zoom (scale 0.5–3.0)
Extraction actions:
get_text — extract text from page ranges (max 20 pages). Use forreading content to decide what to annotate, NOT for summarization.
get_screenshot — capture a page as an image (verify your annotations)Form action:
fill_form — fill named fields: fields: [{name, value}, ...]All annotations need id (unique string), type, page (1-indexed).
Coordinates are PDF points (1/72 inch), origin top-left, Y increases
downward. US Letter is 612×792pt.
| Type | Key properties | Use for |
|------|----------------|---------|
| highlight | rects, color?, content? | Mark important text |
| underline | rects, color? | Emphasize terms |
| strikethrough | rects, color? | Mark deletions |
| note | x, y, content, color? | Sticky-note comments |
| freetext | x, y, content, fontSize? | Visible text on page |
| rectangle | x, y, width, height, color?, fillColor? | Box regions |
| circle | x, y, width, height, color?, fillColor? | Circle regions |
| line | x1, y1, x2, y2, color? | Draw lines/arrows |
| stamp | x, y, label, color?, rotation? | APPROVED, DRAFT, CONFIDENTIAL, etc. |
| image | imageUrl, x?, y?, width?, height? | Signatures, initials, logos |
Image annotations accept a local file path or HTTPS URL (no data:
URIs). Dimensions auto-detected if omitted. Users can also drag & drop
images directly onto the viewer.
display_pdf to open the documentinteract → get_text on relevant page range to understand contentinteract → add_annotations + get_screenshotviewer toolbar
Unlike headless form tools, this gives the user **live visual
feedback** and handles forms with cryptic/unnamed fields where the
label is printed on the page rather than in field metadata.
display_pdf — inspect returned formFields (name, type, page,bounding box)
Text1, Field_7), get_screenshotthe pages and match bounding boxes to visual labels
context
interact → fill_form, then get_screenshot to show the resultFor simple well-labeled forms, display_pdf with
elicit_form_inputs: true prompts the user upfront instead.
display_pdf, check formFields for signature-type fields or askwhich page/position
interact → add_annotations with type: "image" at the targetcoordinates
get_screenshot to confirm placementDisclaimer: This places a visual signature image. It is not a
certified or cryptographic digital signature.
/abs/ URLs auto-convert to PDF)direct PDF link, not the landing page)
Take anthropics/view-pdf from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.