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,…

INSTALLATION
npx skills add https://github.com/anthropics/knowledge-work-plugins --skill view-pdf
Run in your project or agent environment. Adjust flags if your CLI version differs.

SKILL.md

PDF Viewer — Interactive Document Workflows

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.

When to use this skill

Use the PDF viewer when the user wants interactivity:

  • "Show me this contract" / "Open this paper"
  • "Highlight the key terms and let me review"
  • "Help me fill out this form"
  • "Sign this on page 3" / "Add my initials to each page"
  • "Stamp this CONFIDENTIAL" / "Mark this as approved"
  • "Walk me through this document and annotate the important parts"

Do NOT use the viewer for pure ingestion:

  • "Summarize this PDF" → use the native Read tool directly
  • "What does page 5 say?" → use Read
  • "Extract the table from section 3" → use Read

The viewer's value is showing the user the document and collaborating

on markup — not streaming text back to you.

Tools

list_pdfs

List available local PDFs and allowed local directories. No arguments.

display_pdf

Open a PDF in the interactive viewer. Call once per document.

  • url — local file path or HTTPS URL
  • page — initial page (optional, default 1)
  • elicit_form_inputs — if true, prompts the user to fill form

fields 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.

interact

All 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 array
  • highlight_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 for

reading 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}, ...]

Annotation Types

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.

TypeKey propertiesUse for
highlightrects, color?, content?Mark important text
underlinerects, color?Emphasize terms
strikethroughrects, color?Mark deletions
notex, y, content, color?Sticky-note comments
freetextx, y, content, fontSize?Visible text on page
rectanglex, y, width, height, color?, fillColor?Box regions
circlex, y, width, height, color?, fillColor?Circle regions
linex1, y1, x2, y2, color?Draw lines/arrows
stampx, y, label, color?, rotation?APPROVED, DRAFT, CONFIDENTIAL, etc.
imageimageUrl, 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.

Interactive Workflows

Collaborative annotation (AI-driven)

  • display_pdf to open the document
  • interact → get_text on relevant page range to understand content
  • Propose a batch of annotations to the user (describe what you'll mark)
  • On approval, interact → add_annotations + get_screenshot
  • Show the user, ask for edits, iterate
  • When done, remind them they can download the annotated PDF from the

viewer toolbar

Form filling (visual, not programmatic)

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)

  • If field names are cryptic (Text1, Field_7), get_screenshot

the pages and match bounding boxes to visual labels

  • Ask the user for values using the visual labels, or infer from

context

  • interact → fill_form, then get_screenshot to show the result
  • User confirms or edits directly in the viewer

For simple well-labeled forms, display_pdf with

elicit_form_inputs: true prompts the user upfront instead.

Signing (visual, not certified)

  • Ask for the signature/initials image path
  • display_pdf, check formFields for signature-type fields or ask

which page/position

  • interact → add_annotations with type: "image" at the target

coordinates

  • get_screenshot to confirm placement

Disclaimer: This places a visual signature image. It is not a

certified or cryptographic digital signature.

Supported Sources

  • Local files (paths under client MCP roots)
  • arXiv (/abs/ URLs auto-convert to PDF)
  • Any direct HTTPS PDF URL (bioRxiv, Zenodo, OSF, etc. — use the

direct PDF link, not the landing page)

Out of Scope

  • Summarization / text extraction — use native Read instead
  • Certified digital signatures — image stamping only
  • PDF creation — this works on existing PDFs only
BrowserAct

Let your agent run on any real-world website

Bypass CAPTCHA & anti-bot for free. Start local, scale to cloud.

Explore BrowserAct Skills →

Stop writing automation&scrapers

Install the CLI. Run your first Skill in 30 seconds. Scale when you're ready.

Start free
free · no credit card