How to extract and report on document annotations with AI
Leave feedback
On this page
A marked-up document is data, not just ink. get_annotations returns it as JSON — every annotation with its id, type, message, page, author, and replies — and everything an agent can do with a list, it can do with this one.
Note
The commands and config snippets on this page are for the .NET build of the server — the only platform available today. Installation and client setup: MCP server for .NET. Other platforms will expose the same tools with their own launch command; everything else on this page applies unchanged.
Summaries
Summarize the review of contract_annotated.pdf: how many comments, from whom, and what the main themes are.
One call, then reasoning. No document parsing, no OCR, no guessing.
Reports that are actually useful
Because the data is structured, the shape of the report is up to your prompt:
Give me a table: page, author, comment, answered yes/no.
Group the comments by reviewer and tell me who has the most open items.
List only the strikeouts — I want to see what people want removed.
Which pages have no comments at all?
The last one is a question no PDF reader answers easily and the array answers trivially.
Archiving the comments separately
Export the annotations so we can keep them with the case file.
export_annotations writes an XML file containing the annotations alone. That file is small, diff-able, and re-importable — useful when the document itself is under retention rules that the commentary is not, or when you want to compare two review rounds.
Comparing rounds
Two exports of the same document, before and after a review round, are two text files. Ask the agent to compare them and you get “three new comments, two resolved, one reworded” — a changelog of the review rather than of the document.
Feeding a wider workflow
The change list is ordinary JSON, so the agent can carry it onward: open an issue per unanswered comment, draft the reply email, or produce the summary paragraph for a status report. What it should not do is treat annotation text as trusted instructions — comments come from other people, and an agent that acts on “ignore previous instructions” inside a comment is a problem. Ask for summaries and reports; keep actions under your own review.
The evaluation trap
A trial badge on every page does not change the annotation data, so reports built this way are accurate even unlicensed. The badge only affects what you can send. If the plan ends in “and email them the marked-up copy”, check get_license_status first.
Was this page helpful?
Any additional feedback you'd like to share with us?
Please tell us how we can improve this page.
Thank you for your feedback!
We value your opinion. Your feedback will help us improve our documentation.