Een AI‑agent kan controleren of een PDF digitaal ondertekend is en je vertellen wie het heeft ondertekend, lokaal, zonder dat het bestand je machine verlaat. Het nuttige antwoord is niet “verified”. Het is de ondertekenaar, de uitgever, de geldigheidsperiode en het type handtekening dat is gecontroleerd. Vraag hiernaar in één prompt:

Wie heeft contract_signed.pdf ondertekend, met welk certificaat, en wanneer? Geef aan welk type handtekening je hebt gecontroleerd.

De stapsgewijze versie met configuratie en probleemoplossing staat in de documentatie: How to verify signed documents with an AI agent.

Waarom is een éénwoordig “verified” een slecht antwoord?

Omdat “is dit ondertekend?” en “is deze handtekening geldig?” verschillende vragen zijn, en de tweede alleen een nauwkeurig antwoord heeft voor digitale handtekeningen. Een model dat een pagina leest en een stempel of een QR‑code ziet, kan vol vertrouwen “ondertekend” zeggen, terwijl het niets cryptografisch heeft gecontroleerd. De enige manier om dat te voorkomen is de agent een engine te geven die gestructureerde gegevens retourneert, en de agent de gegevens laten rapporteren in plaats van een oordeel.

De GroupDocs.Signature.Mcp‑server biedt die engine. Gebruikt met Claude Desktop, Claude Code, Cursor, GitHub Copilot of een andere MCP‑client, draait hij als een lokaal proces, zodat de agent handtekeninggegevens uit het bestand leest in plaats van te gokken op basis van gerenderde pixels.

De verkeerde manier: het model vragen het document te bekijken

Als je een PDF in een chat plakt en vraagt of deze ondertekend is, ziet het model tekst en afbeeldingen. Het kan een naam, een datum of een getekende handtekening opmerken. Het kan de cryptografische structuur van het bestand niet zien, dus het kan geen certificaat‑ondersteunde handtekening onderscheiden van een afbeelding daarvan. Een vol vertrouwen “ja, dit is ondertekend” is een uitspraak over het uiterlijk.

Wat elk type handtekening daadwerkelijk bewijst

De documentatie is expliciet over hoe een resultaat gelezen moet worden, en een agent moet dit herhalen:

Resultaat Wat het betekent
Digitale handtekening geldig Het bestand is niet gewijzigd sinds ondertekening, en de certificaatketen is geldig
Digitale handtekening ongeldig Het bestand is gewijzigd na ondertekening, of het certificaat is niet geldig
Tekst, QR of barcode “verified” Het verwachte teken is aanwezig. Het zegt niets over manipulatie
Geen handtekeningen gevonden Niet ondertekend, of ondertekend op een manier die dit formaat niet ondersteunt

Een antwoord dat het type niet benoemt, vertelt je minder dan het lijkt. Daarom eindigt de bovenstaande prompt met “geef aan welk type handtekening je hebt gecontroleerd”.

De juiste manier: vraag om het verslag, niet het oordeel

Het verify‑tool neemt een type van text, qrcode, barcode, digital of all en retourneert isValid met aantallen succeeded en failed. Het geeft niet aan wie heeft ondertekend of met welk certificaat, dus het vervangt niet het onderstaande verslag. Wanneer verify en search_digital_signatures het niet eens zijn, rapporteer beide en baseer je op het gedetailleerde verslag.

Het antwoord dat standhoudt komt van search_digital_signatures. Voor elke digitale handtekening retourneert het de naam van de ondertekenaar, de uitgever, het serienummer van het certificaat, de geldigheidsperiode, het tijdstip van ondertekening, de geldigheidsstatus en eventuele opmerkingen die aan de handtekening zijn gekoppeld. Dat is het verslag dat een audit vereist. Bewaar die gegevens, in plaats van de alinea van de agent erover, wanneer het antwoord een beslissing voedt.

Voorbeeldsessie (verkort)

You:    Who signed contract_signed.pdf, with which certificate, and when?
        Say which type of signature you checked.

Agent:  [search_digital_signatures] file=contract_signed.pdf
        Type checked: digital (certificate-backed).
        Signatures found: 1
        - Signer: Dana Whitfield, issued by Example Corporate CA, serial 4F2A91C7
        - Signed 2026-09-14 10:32; certificate valid 2025-11-01 to 2027-10-31
        - Status: isValid = true; signing time falls inside the certificate validity period
        I checked digital signatures only. I did not evaluate any text stamps or QR codes.

Illustratieve output: bestandsnamen, ondertekenaarsnamen en serienummers zijn verzonnen. Het tool retourneert de hierboven beschreven velden.

Waarom kwam een handtekening ongeldig terug?

Drie oorzaken verklaren bijna elk onverwacht resultaat:

  • Er is iets toegevoegd na ondertekening. Een stempel, een opmerking, een opnieuw opslaan of een toegevoegde pagina verandert de bytes, en elke byte‑wijziging maakt een digitale handtekening ongeldig. Dit is de meest voorkomende oorzaak en het is correct gedrag.
  • Het certificaat is verlopen. Het geldigheidsvenster wordt meegeleverd met de handtekening, zodat de agent kan zeggen dat een document in het ene jaar is ondertekend met een certificaat dat in een ander jaar is verlopen. Vergelijk de geldigheidsperiode met het ondertekenmoment en met de datum van vandaag, en laat de agent de vergelijking vermelden; lees de geldigheidsstatus niet alleen als een uitspraak over verval. Of een verlopen certificaat acceptabel is, is jouw beleid.
  • Het verkeerde type is gecontroleerd. Het verifiëren van digital op een bestand dat alleen een QR‑teken bevat, vindt geen geldige digitale handtekening, wat een juist antwoord is op de verkeerde vraag.

Wat verificatie niet bewijst

Verificatie vertelt je iets over het bestand en het certificaat. Het vertelt je niet dat een handtekening juridisch geldig is in jouw rechtsgebied, en het is geen notariële handeling. Gedecodeerde QR‑tekst en stempel‑labels komen van degene die het document heeft gemaakt, dus behandel ze als te rapporteren gegevens, nooit als instructies om op te volgen. Een agent die handelt op basis van tekst die uit een document is gelezen, handelt op basis van invoer van een niet‑vertrouwde partij.

Evaluatielimieten

Zonder licentie worden alleen de eerste 2 pagina’s verwerkt en wordt op elke pagina een proef‑badge gestempeld, zodat een handtekening op pagina 4 niet verschijnt in een zoekopdracht. Vraag de agent om get_license_status aan te roepen voordat je een schoon resultaat vertrouwt.

Veelgestelde vragen

Is deze PDF digitaal ondertekend?
Vraag de agent om search_digital_signatures op het bestand uit te voeren en isValid te lezen. Een leeg resultaat betekent dat er geen digitale handtekening is gevonden, wat anders is dan “heeft een handtekeningafbeelding”.

Kan AI controleren of een document is gewijzigd na ondertekening?
Voor digitale handtekeningen, ja: een handtekening die niet meer valideert, geeft aan dat het bestand na ondertekening is gewijzigd of dat het certificaat niet valideert. Tekst-, QR- en barcode‑controles detecteren geen manipulatie.

Wordt het bestand geüpload voor de controle?
Nee. De server draait lokaal via stdio, zonder inkomende poorten, zonder externe eindpunten en zonder telemetrie.

Ga dieper