
Tamperlens
com.tamperlens由 tamperlens.com 发布v1.43.0更新于 Oct 25, 2026
Was this document edited, did its redactions hold, is it safe for a model to read — Tamperlens API.
概览
本地 MCP 服务器,将文档发送至 Tamperlens API,检查是否被编辑、脱敏是否失效、是否含隐藏或面向模型的文本,以及同一案件文档间的矛盾
- 可以做什么
- 检查文档在保存后是否被追加修改、元数据是否自相矛盾、编辑器指纹、签名覆盖与完整性、隐藏文本、宏以及图像中的 AI 生成痕迹,并识别写给语言模型而非读者的文本(载荷会被隐去)。执行低成本预检分诊,返回风险等级、实测读取与解压开销,以及未检查的内容类别。检查脱敏是否真正删除了内容,而不只是遮盖。将候选文件与原始文件比对,判断是否未改动。对 2 至 10 份文档组成的案件检查共享痕迹与相互矛盾之处。支持 PDF、Office 格式和常见图片,可通过本地路径或 http/https 网址提供。
- 适用场景
- 在智能体读取不可信文档之前使用,用于判断文件是否被编辑、脱敏是否有效,或是否夹带针对模型的指令。也适合将文件与已持有的原件比对,或交叉核对本应相互独立的文档。
- 运行要求
- 通过 stdio 在本地运行,通常用 npx 启动 tamperlens-mcp 包,因此需要 Node.js。需要能访问 Tamperlens 部署(默认 TAMPERLENS_BASE_URL 覆盖)。TAMPERLENS_API_KEY 可选:不设置时适用每小时 10 份文档的匿名额度,而 compare_documents 和 inspect_case 必须提供密钥。仅限桌面端。
安装
在 SourceWeft 中
- 打开 控制台中的 Tamperlens,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
tamperlens-mcp
MCP server for Tamperlens — ask whether a document was edited, whether its redactions held, and whether it is safe for a model to read, before it reaches your agent's context.
No key is required to try it — without one you get the anonymous allowance of 10 documents an hour. A free key at tamperlens.com/account raises that to 50 a month with no card.
Tools
Accepts PDF; Word, Excel and PowerPoint (.docx, .xlsx, .pptx and the
macro-enabled twins); and JPEG, PNG, WebP, HEIC/HEIF and AVIF.
A local path or a URL
inspect_document, check_redaction and compare_documents (as
originalUrl/candidateUrl) take either a local path or an http/https
url — not both. inspect_case takes lists of both (paths, urls). A url is fetched by this server, on your own machine, over
your own network, and only the bytes are sent on to Tamperlens. That is why the
option lives here and not on the REST API: a server-side fetch of a
caller-supplied URL is an SSRF risk on the API host, whereas fetching from your
machine reaches only what you can already reach. It is still guarded: http/https
only (re-checked at every redirect), a redirect cap, a 30s timeout
(TAMPERLENS_FETCH_TIMEOUT_MS to tune), and the same 10 MB cap, enforced on the
bytes received rather than a Content-Length that can lie.
It also checks the destination IP, not just the scheme: a url that points
at — or redirects to, or resolves by DNS to — a loopback, link-local/metadata
(169.254.169.254), private or otherwise non-routable address is refused, and
the address it connects to is pinned to the one it validated, so DNS rebinding
cannot slip an internal address past the check. The check re-runs at every
redirect hop. If you genuinely need to fetch from an internal host, allow-list
specific addresses with TAMPERLENS_FETCH_ALLOW_IPS (comma-separated; empty by
default, and the default reaches nothing internal).
The
pathargument reads any local file and sends its bytes to the API.inspect_document,triage_document,check_redaction,compare_documentsandinspect_caseread whatever local path they are given — there is no directory sandbox by default and no extension filter, because reading a document off disk is the whole job and an intake path is not knowable in advance. SetTAMPERLENS_ALLOWED_DIRS(env table below) to confine reads to an intake directory; a symlink pointing out of a root is resolved and refused. The bytes of that file are then transmitted to the configured Tamperlens deployment. A model an attacker is steering could therefore name a private file (~/.ssh/id_rsa,~/.aws/credentials) and cause its bytes to leave the machine. Run this server only with agents and inputs you trust, the same rule you would apply to any tool that can read the local filesystem. For a hard boundary, front the intake with a directory you control and pass only paths inside it.
Why you would put this in front of an agent
A document is read by two audiences and only one of them sees the page. An extraction pipeline reads the title, the keywords, the XMP packet, the comments, the names of attachments — fields that exist to be read by software. Text placed there can be written to be obeyed rather than read.
inspect_document reports that before your agent ingests the file, and the
recovered payload is elided unconditionally in this server. That is not a
convenience: the most likely next reader of a Tamperlens report is the same
model that was about to read the document, so an MCP server that echoed the
attacker's sentence back into the context would be completing the attack it
just detected. You get the field, the location and the cue categories. You do
not get the sentence.
What it does not do
- No local analysis. Every tool is a thin wrapper over the Tamperlens REST API on a running deployment. There is no second engine here to drift from the first.
- No verdicts. Tamperlens reports risk signals with the evidence behind them, never "this document is fraudulent". Combine them with your own decision logic.
- The document never enters the model's context. Tools take a path on the caller's filesystem (or a URL fetched here) and read the bytes on this side. Base64 in a tool call would put megabytes of document into the context window to reach a service that needs the bytes, not the model.
- Retention follows the account behind the key. Files are parsed in memory
by the API. Without
TAMPERLENS_API_KEY(the anonymous allowance) nothing is kept. With a key that belongs to an account whose history is on (the default for accounts created since retention launched), the API keeps a short derived record of each call (hashes, signal ids and the score; never the file, its name or its text), and keeps the file itself only if the account opted in. The tool result then carries the API'sretentionandtenantMatchesblocks. To keep nothing, set that key toretention: nonewithPATCH /api/v1/retentionfrom a signed-in dashboard session (the dashboard has no per-key switch); this server does not send the per-callX-Tamperlens-Retentionheader. Every field is listed at tamperlens.com/privacy#retention.
Configuration
Links
Field guide to every signal · Is this file safe for your model to read? · API reference · Security and privacy posture
MIT licensed. Issues and source: github.com/haruodev/tamperlens-mcp.
来源:README.md,提交 7a5dac1
工具
0版本历史
3- v1.43.0最新Oct 13, 2026
- v1.42.0Oct 13, 2026
- v1.36.0Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分