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).
- License 许可
- Apache-2.0
- 最近更新
- 2026-11-13
- Stars
- ★ 3.6w
- Forks
- 3.9k
01 前言 Front Matter
- name
- view-pdf
- description
- 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).
03 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 URLpage— initial page (optional, default 1)elicit_form_inputs— iftrue, 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 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 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.
| 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.
Interactive Workflows
Collaborative annotation (AI-driven)
display_pdfto open the documentinteract→get_texton 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 returnedformFields(name, type, page, bounding box)- If field names are cryptic (
Text1,Field_7),get_screenshotthe pages and match bounding boxes to visual labels - Ask the user for values using the visual labels, or infer from context
interact→fill_form, thenget_screenshotto 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, checkformFieldsfor signature-type fields or ask which page/positioninteract→add_annotationswithtype: "image"at the target coordinatesget_screenshotto 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
04 同仓库更多 Skills
ticket-deflector
Reads a forwarded customer email or ticket, pulls order and refund status from a payments connector (PayPal, Square, or Stripe) or Shopify, account history from the CRM, and open tickets from a support desk (Zoho Desk), drafts a tone-matched reply in the owner's writing voice, and can issue a refund through the payments connector with explicit owner approval. With Shopify connected it also runs a proactive order-triage mode that surfaces orders needing attention — unfulfilled past the promised window, payment problems, pending refunds, stuck shipments — and drafts the next action for each before the customer has to ask. Use when the user says "draft a response," "answer this customer," "where's my order," "I want a refund," "check my orders," or "anything about to blow up."
tax-season-organizer
Prepares tax-season materials for the owner's accountant, not tax advice. US federal tax; a non-US business gets its closed-books packet instead. Two modes: (1) quarterly estimated tax from YTD net income in the ledger (MYOB, NetSuite, QuickBooks, Xero, or Zoho Books); (2) year-end 1099 prep, scanning the ledger, PayPal, and Stripe for contractors paid over USD 600 into a 1099-NEC list with missing W-9 flags. Any tax request routes first to /tax-prep, which confirms the books are closed and reconciled before running this skill. Use this skill directly only when the owner says the period's books are already closed: "books are closed, now do the 1099s," "run the quarterly estimate off the closed numbers," or "just the contractor W-9 list."
tax-prep
Prepares tax materials as a two-link chain — month-end-prep confirms the books are closed and reconciled first, then tax-season-organizer calculates the quarterly estimated payment or builds the year-end 1099-NEC list and accountant packet from those closed numbers. Requires a ledger (MYOB, NetSuite, QuickBooks, Xero, or Zoho Books); uses Gusto, PayPal, and Stripe when connected, else CSV upload. US federal tax math; a non-US business gets the closed-books packet. Prep material for a CPA, never tax advice, nothing filed. Trigger on "quarterly taxes," "estimated tax payment," "how much should I set aside," "1099s," "1099-NEC," "W-9s," "year-end tax prep," "get my books ready for my accountant," any phrasing that suggests a tax deadline is coming, or a question about net profit or YTD income that sounds like worry about a tax bill. An owner who says the period's books are already closed routes to tax-season-organizer directly.
speed-to-lead
Makes sure no inbound lead goes unanswered. Watches web forms, the shared inbox, and the CRM for new inquiries, qualifies each one against the owner's criteria, drafts a reply in the owner's voice with real meeting times for the owner to approve and send, routes anything hot to a human right away, and logs the whole thing to the CRM. Never sends on its own. Built to run on a schedule so overnight inquiries are drafted and sorted by morning, and works from forwarded or pasted inquiries when no connector is available. Use this whenever the owner is worried about inbound leads or response time — including phrasings like "leads are going cold," "did anyone answer that inquiry," "I keep missing form submissions," "nothing falls through the cracks," "handle my inbound," "respond to this lead," or "we lose people because nobody gets back fast enough." Reach for it for a single unanswered inquiry as readily as for a standing setup.
social-content-engine
Runs the owner's content operation as a standing thing rather than a one-off: keeps a rolling posting calendar, learns the owner's voice, generates on-brand Canva graphics, writes captions that sound like them, repurposes one asset into every channel format, and stages posts for approval instead of publishing on its own. Pulls product photos and prices from Shopify when connected; with no connectors, drafts the calendar and asset briefs for manual posting. Use this whenever the owner talks about posting, content, or social — including "I need to post more," "we've gone quiet on Instagram," "what should we post this month," "make the content," "give me a month of posts," "write this in my voice," "repurpose this," or "set up our content calendar." Reach for it for a single post as readily as for a full quarter. One handoff: a finished, approved campaign brief goes to canva-creator; this skill owns the standing operation.
smb-router
The front door to the Small Business plugin. Listens to what the owner needs right now — vague or specific — and routes them to the best skill or slash command for the moment. Also serves as a guide: explains what's available, suggests what to try next, and adapts recommendations based on stored business context. Trigger whenever the owner asks "what can you do," "help me with my business," "what should I focus on," "I don't know where to start," or any open-ended business request that doesn't clearly match a single skill.