omitly-mcp 0.1.5 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -9,13 +9,15 @@ anywhere**. Redaction runs on-device through the Omitly engine and returns a
9
9
  signed audit log proving the data was removed — the opposite of pasting a
10
10
  confidential file into a chat model.
11
11
 
12
- **Four of the seven tools (`find_sensitive_regions`, `locate_text`,
12
+ **Four of the eight tools (`find_sensitive_regions`, `locate_text`,
13
13
  `check_redaction`, `verify_redaction`) work out of the box — `npm install`,
14
14
  no Rust toolchain, no native binary, no desktop app.** They run on a
15
15
  wasm-bindgen build of the same detector that powers the web leak-checker at
16
- omitly.app, bundled directly in this package. `create_pdf` and the two
17
- write tools (`redact_pdf`, `redact_by_entity`) still need a configured
18
- native engine — see "Build & run" below.
16
+ omitly.app, bundled directly in this package. `create_pdf`, the two
17
+ write tools (`redact_pdf`, `redact_by_entity`), and `verify_seal` still need
18
+ a configured native engine — see "Build & run" below. `verify_seal` has no
19
+ wasm fallback at all: there is no wasm seal-verification path, so it always
20
+ requires the native engine.
19
21
 
20
22
  ## Tools
21
23
 
@@ -25,7 +27,8 @@ native engine — see "Build & run" below.
25
27
  | `locate_text` | Resolves literal strings the model supplies (names, addresses — anything regex can't catch) to their page + coordinates. The model does the recognition; the engine does the geometry. |
26
28
  | `redact_by_entity` | One-shot: find + filter by kind (`email`/`ssn`/`phone`/`card`/`tfn`/`abn`/`acn`/`medicare`/`crn`/`ihi`/`bsb`) and/or `regions` + redact + verify. The "just scrub the obvious PII" shortcut. |
27
29
  | `redact_pdf` | Removes the underlying data from given regions of a PDF, verifies nothing survives, writes the redacted file, and returns the audit log. |
28
- | `verify_redaction` | Re-scans an already-redacted PDF and returns the verification verdict. |
30
+ | `verify_redaction` | Re-scans an already-redacted PDF and returns the verification verdict — the redaction-completeness check. |
31
+ | `verify_seal` | Cryptographically checks a PDF's embedded Omitly audit report and trailing Ed25519 tamper-evidence seal — the tamper-evidence check, distinct from `verify_redaction`. **Integrity, not identity:** the signing key is per-install and rides inside the file, so a valid seal means "unchanged since sealed by the holder of this key", never "produced by Omitly" — compare `sealFingerprint` out-of-band for origin. Requires a native engine; no wasm fallback exists. |
29
32
  | `create_pdf` | Generates a clean PDF from Markdown/HTML on-device, rendered through a real browser engine so it looks printed — instead of writing a throwaway reportlab/LaTeX script. |
30
33
 
31
34
  ## PDF generation (`create_pdf`)
@@ -59,7 +62,7 @@ See [DEMO.md](./DEMO.md) for a full Claude Code walkthrough.
59
62
 
60
63
  ## Status
61
64
 
62
- The MCP surface (seven tools, schemas, transport), the native engine binary
65
+ The MCP surface (eight tools, schemas, transport), the native engine binary
63
66
  (`crates/omitly-cli`, built as `omitly-redact`), and the bundled wasm engine
64
67
  (`crates/leakcheck-wasm`, covering the four free tools without a native
65
68
  binary) are all implemented and pass end-to-end tests. `find_sensitive_regions`
@@ -104,6 +107,22 @@ a JSON response from stdout. Any failure returns `{ "ok": false, "error": "..."
104
107
  "hiddenContent": [ { "class": "thumbnails", "verification": { "result": "pass" } }, ... ] }
105
108
  ```
106
109
 
110
+ ```jsonc
111
+ // stdin — checks the embedded audit report + trailing Ed25519 seal, not
112
+ // redaction completeness (that's "verify" above)
113
+ { "command": "verify_seal", "pdfPath": "..." }
114
+ // stdout — verdict is one of: no_report | seal_invalid |
115
+ // seal_unsupported_version | incomplete | verified. seal_unsupported_version
116
+ // means this verifier is too old to check the seal at all — sealValid is
117
+ // `null` (checked nothing), never true or false; carriesAuditReport flags
118
+ // whether the file also carries an Omitly audit report (escalation signal).
119
+ { "ok": true, "verdict": "verified", "sealValid": true, "sealFingerprint": "...",
120
+ "allPassed": true, "metadataScrubbed": true, "regionCount": 2, "pageCount": 4,
121
+ "warnings": [], "licenseProvenance": null,
122
+ "inputSha256": "...", "outputSha256": "...",
123
+ "sourceFilename": "...", "outputFilename": "..." }
124
+ ```
125
+
107
126
  ## Build & run
108
127
 
109
128
  **Free tools only (find_sensitive_regions, locate_text, check_redaction,
@@ -122,8 +141,11 @@ source** (this repo) does need `wasm-pack` (`cargo install wasm-pack`) and
122
141
  the `wasm32-unknown-unknown` target, since `npm run build` regenerates the
123
142
  wasm bundle from `../crates/leakcheck-wasm` via `npm run build:wasm`.
124
143
 
125
- **Everything, including `create_pdf` and the two write tools
126
- (`redact_pdf`, `redact_by_entity`):**
144
+ **Everything, including `create_pdf`, `verify_seal`, and the two write tools
145
+ (`redact_pdf`, `redact_by_entity`):** `verify_seal` has no wasm fallback —
146
+ unlike the four free tools above, it always needs the native engine
147
+ configured, even though it carries no licence requirement (see "Licensing"
148
+ below).
127
149
 
128
150
  ```bash
129
151
  # 1. Build the local engine binaries (from the repo root)
@@ -176,9 +198,11 @@ fallback — wasm never touches these two tools): a Pro or Personal licence
176
198
  same machine) runs unmarked; otherwise the shared 14-day trial applies and
177
199
  the audit output is permanently marked as evaluation output. The redaction
178
200
  itself is never degraded, and licence checks never touch the network.
179
- `find_sensitive_regions`, `locate_text`, `check_redaction`, and
180
- `verify_redaction` are free forever — the wasm build backing them has no
181
- licence logic at all, because there's nothing to gate.
201
+ `find_sensitive_regions`, `locate_text`, `check_redaction`, `verify_redaction`,
202
+ and `verify_seal` are free forever — the four wasm-backed tools have no
203
+ licence logic at all because there's nothing to gate, and `verify_seal`
204
+ (native-only) is free by the same design in `crates/omitly-cli` (no Pro/
205
+ Personal licence check on that command path either).
182
206
 
183
207
  ## Register with Claude Code
184
208