A document review workflow with an AI agent can follow the same steps every round: list what is open, reply in threads, resolve, carry the comments to the next draft, and produce a clean copy. The GroupDocs.Annotation.Mcp server exposes each step as a tool, so an LLM in Claude, Cursor or GitHub Copilot can run the round locally while a person approves the outcome:
List the annotations in output/contract_annotated.pdf. Which ones have no replies?
De stap‑voor‑stap versie met configuratie en probleemoplossing staat in de documentatie: Hoe een documentreviewcyclus uit te voeren met een AI‑agent.
Waarom drijven reviewrondes af zonder een vaste volgorde?
Een reviewronde is zelden alleen “een opmerking toevoegen”. Het gaat om: wat nog openstaat, wie het heeft aangekaart, een antwoord, een oplossing, en een schone kopie voor het volgende publiek. Wanneer mensen dit handmatig doen, varieert de volgorde, antwoorden blijven onondertekend, en verliest de volgende versie de opmerkingen van de vorige.
Een agent die elke keer dezelfde volgorde volgt, verwijdert die variatie. Hij laat bovendien een spoor achter in het document in plaats van in een chat‑transcript, waar een audit zou zoeken.
De workflow, stap voor stap
Elke stap heeft één prompt en één tool.
- Zoek wat openstaat. Prompt: “Lijst de annotaties in output/contract_annotated.pdf. Welke hebben geen antwoorden?” De agent roept
get_annotationsaan, die elke annotatie met zijnid, type, bericht, pagina, begrenzingsvak, gebruiker en antwoorden retourneert. Een onbeantwoord commentaar is er één met een legereplies‑array, dus filtert de agent de lijst die hij al heeft. - Reageer in de thread. Prompt: “Reageer op Maria’s opmerking dat finance de voorwaarden op 12 maart heeft goedgekeurd. Onderteken als Alex.” De agent roept
add_replyaan met deannotationId, hetcommenten eenuserName. De naam standaardmcp-user, dus vraag om een echte naam. - Los op wat gedaan is. Kies een conventie en vermeld deze in de prompt: reageer en laat de thread als record staan, verwijder de annotatie met
remove_annotations, of bewerk het bericht metupdate_annotationzodat het begint met[RESOLVED]. - Draag de ronde over naar de volgende versie. Prompt: “Exporteer de annotaties van de gereviewde kopie en importeer ze vervolgens in contract-v3.pdf.” De agent roept
export_annotationsaan, die een XML‑bestand schrijft, daarnaimport_annotations. - Lever een schone kopie terug. Prompt: “Verwijder alle annotaties en geef me een schone kopie voor de tegenpartij.”
remove_annotationszonderidswist elke annotatie in een nieuw bestand.
Wat beslist de agent, en wat doet de engine?
| Beslissing of actie | Agent | Engine |
|---|---|---|
| Welke opmerkingen een antwoord nodig hebben | Leest het resultaat van get_annotations en filtert het |
Retourneert elke annotatie met id’s, auteurs en antwoorden |
| Wat het antwoord zegt | Stelt het op basis van uw instructie op | Slaat het op onder de userName die u hebt opgegeven |
| Welke resolutieconventie van toepassing is | Volgt de regel in uw prompt | Past de bewerking of verwijdering toe die gevraagd wordt |
| Of de ronde voltooid is | Rapporteert de aantallen; de mens keurt goed | Slaat het resultaat van elke wijziging op in de opslag |
De engine beslist nooit wat als opgelost wordt beschouwd. Het annotatiemodel heeft geen resolved‑vlag; resolutie is een conventie die u kiest en in de prompt benoemt.
Waar blijft de mens in de lus?
Twee plaatsen. Voor stap 5, vraag de agent om te vermelden hoeveel annotaties hij gaat verwijderen en wacht op uw antwoord. Het verwijderen van alle annotaties is de enige oproep in de workflow zonder mogelijkheid tot ongedaan maken. Voordat iets buiten het team wordt gedeeld, lees de antwoorden die de agent heeft opgesteld. Annotatietekst komt van andere mensen, dus beschouw een opmerking als inhoud om samen te vatten, niet als instructies voor de agent om op te volgen.
Voorbeeldsessie (verkort)
Dit is een illustratie gebaseerd op het gedocumenteerde gedrag van de tools, geen vastgelegde screenshot.
You: List the annotations in output/contract_annotated.pdf. Which ones have no replies?
Agent: [calls get_annotations on output/contract_annotated.pdf]
Found 4 annotations. Two have no replies:
- id 2, page 2, Maria: "Confirm the payment terms with finance."
- id 4, page 5, Maria: "Delivery date conflicts with Schedule B."
You: Reply to the first one that finance approved the terms on 12 March.
Sign it as Alex.
Agent: [calls add_reply: annotationId=2, userName="Alex",
comment="Finance approved the terms on 12 March."]
Added reply to annotation 2 in output/contract_annotated.pdf.
(The agent uses the saved file name in the next call.)
Hoe start ik de server voor Claude, Cursor of Copilot?
Start de Docker‑image met uw documentenmap gemount, en een output‑map die verschilt van de opslagmap:
docker run --rm -i -v $(pwd)/documents:/data \
-e GROUPDOCS_MCP_OUTPUT_PATH=/data/output \
ghcr.io/groupdocs-annotation/annotation-net-mcp:latest
Hetzelfde commando en de dnx GroupDocs.Annotation.Mcp --yes‑alternatief worden uitgelegd in AI review that lands in the document, not in the chat log. De hub‑pagina bevat de registratie voor Claude Desktop, Claude Code, VS Code met GitHub Copilot, Cursor, Windsurf en andere clients.
Eerlijke limieten
- Evaluatiemodus. Zonder licentie wordt er een proefbadge op de bovenkant van elke pagina geplaatst, wat niet geschikt is om naar een tegenpartij te sturen. Controleer
get_license_statusvóór een formele review. - Elke schrijftool slaat zijn resultaat terug op in de opslag. Een ronde produceert daardoor een keten van bestanden. Vraag de agent om de bestandsnaam van het vorige resultaat door te geven en dat bestand opnieuw te lezen met
get_annotationsvoordat hij iets bewerkt, omdat id’s bij het document horen dat u zojuist hebt gelezen. StelGROUPDOCS_MCP_OUTPUT_PATHin op een map die anders is dan de opslagmap voordat u bewerkingen op een geproduceerd bestand aaneenschakelt. Met de standaardinstelling (outputs komen in de opslagmap) mislukt de tweede schrijfopdracht metbeing used by another process; met een aparte output‑map slagenadd_reply,update_annotationenremove_annotationsop het geproduceerde bestand. - Coördinaten worden onveranderd overgenomen. In een opnieuw opgemaakte versie kan een geïmporteerde notitie dicht bij de oorspronkelijke tekst terechtkomen, niet er precies op. Controleer de plaatsing daarna.
- Voorbeeldweergave op Linux.
generate_pages_previewfaalt momenteel voor PDF‑bestanden op Linux, inclusief de Docker‑image (TypeInitializationExceptionvoorGdip:System.Drawing.Commonwordt niet ondersteund op niet‑Windows platforms); Word‑ en andere Office‑documenten worden wel gerenderd, en op Windows metdnxrendert elk formaat. De andere tien tools blijven onaangetast. De review‑tools in dit bericht gebruiken de preview‑renderer niet.
Veelgestelde vragen
Kan een AI automatisch reageren op opmerkingen in een PDF? Ja. De agent leest de opmerkingen met get_annotations en beantwoordt met add_reply, dat de annotatie‑id, de antwoordtekst en een auteursnaam neemt.
Is er een resolved‑status voor opmerkingen? Nee. De tools hebben geen resolved‑vlag, dus u kiest een conventie, bijvoorbeeld het behouden van de thread, het verwijderen van de annotatie of het voorvoegen van [RESOLVED] aan het bericht.
Kan ik de opmerkingen behouden wanneer het document wordt herzien? Ja. Exporteer de annotaties naar XML vanuit de gereviewde kopie en importeer ze in de nieuwe versie. Hetzelfde paar tools voegt twee reviewers‑kopieën samen tot één.
Dieper ingaan
- Documentatie, canonieke handleiding: Hoe een documentreviewcyclus uit te voeren met een AI‑agent
- Documentatie‑hub: GroupDocs.Annotation MCP Server
- Begin hier: AI review that lands in the document, not in the chat log
- Gerelateerd: 3 ways to extract every comment from a document set with MCP
- Gerelateerd: Show the agent what it did
- On‑premise en beveiligingsmodel: 3 architectures for AI document processing, and the one that keeps files inside your network
- Vragen: GroupDocs Annotation forum
- Bron: GroupDocs.Annotation.Mcp on GitHub