name: verify-document
description: Check whether a document (PDF or image) shows signs of tampering or forgery before you rely on it. Use when the user asks to verify a payslip, invoice, bank statement, ID document, contract, or any document where authenticity matters.
category: document-verification
risk: critical
source: community
source_repo: Sketchjar/stipple-agent-skills
source_type: community
date_added: "2026-08-31"
author: Sketchjar
tags: [document-verification, fact-checking, stipple, authenticity]
tools: [claude, cursor, gemini, codex]
license: "Apache-2.0"
license_source: "https://github.com/Sketchjar/stipple-agent-skills/blob/main/LICENSE"
Document Verification
Inspect a document for forensic authenticity signals — not a fraud verdict, but a risk band with the evidence behind it. Uses the Stipple API (free anonymous tier, no signup).
When to use
- Before onboarding a tenant, contractor, or employee from uploaded documents
- Before paying an invoice that arrived by email
- Before relying on a bank statement, payslip, or certificate in any workflow
- Reviewing documents in due diligence, claims processing, or loan applications
Instructions
-
Get the document. URL or local file path (PDF, PNG, JPEG, BMP, TIFF).
-
Optionally check the cache first. If the user has the file's SHA-256, check whether it's already been inspected (free):
curl "https://www.stipple.sh/v1/warrants/check?sha256=<hash>"
-
Run verification. POST the document:
curl -X POST https://www.stipple.sh/v1/warrants \
-F "file=@payslip.pdf" \
-H "Authorization: Bearer $STIPPLE_API_KEY"
Add ?fresh=true to force re-inspection of a previously cached document. Add ?deep=true for deep inspection (more thorough, more credits).
-
Interpret the response. Two independent axes — read both:
| Axis | Question it answers |
|---|
risk_band | Does anything look tampered? (low / medium / high) |
inspection_quality | Could the engine actually see enough to judge? (thorough / limited / poor) |
A clean phone photo of a real payslip is commonly low risk + limited quality — low coverage is not risk. Per-signal evidence includes: amount/words mismatch, font discontinuity in values, date anomalies, document label integrity, identifier checksums (ABN/ACN/TFN), table arithmetic.
-
Report honestly. This is a signal with evidence, not a verdict:
- "risk_band: LOW — nothing looks tampered"
- "inspection_quality: limited — couldn't inspect everything; low coverage is NOT fraud"
- Show the per-signal evidence for anything flagged
-
Pair with related checks. For identity documents, follow with a 100-point identity check (/v1/identity-check). For extraction, use extract-document-data.
Output format
risk_band: LOW — Nothing looks tampered.
inspection_quality: limited
recommended action: review_before_action
evidence (signals):
[pass] Amount words/figure mismatch: Spelled-out amounts agree with figures.
[pass] Font discontinuity in value: Numeric values share the font of surrounding text.
[skip] Identifier checksum: No checksummable identifier (ABN/ACN/TFN) present.
Limitations and Safety
- This workflow uploads documents to a hosted third party. Obtain explicit approval,
minimize personal, financial, identity, and confidential data, and confirm the
provider's current retention, residency, access, and deletion terms first.
- Forensic signals can miss sophisticated tampering or flag benign editing, scanning,
compression, and template artifacts. A low-risk result is not proof of authenticity,
and a high-risk result is not proof of fraud.
- Preserve the original bytes and use authoritative issuer verification plus a
qualified human reviewer before payment, onboarding, lending, employment,
disciplinary, compliance, or legal action.
Notes
- Document types the engine recognizes (payslips, invoices, bank statements) get type-specific checks; unrecognized types get generic checks only — say so in your report
- Identical files are cached by content hash — re-checking the same bytes returns instantly and free
- This measures forensic integrity, not authorship style — for "was this written by AI", use AI-text detection instead
- Anonymous free tier: shared weekly allowance. Free key at https://www.stipple.sh