- Reliability 10/20
- server.json declares version 2.0.0 while both packages pin pypi identifier zerotoken at 0.2.0 with no integrity/hash fields — a verifiable, self-contradictory manifest that caps trust in the declared artifact. The README describes a coherent happy path: dual stdio + Streamable HTTP transports, a five-layer architecture, 26 browser_* tools, a Script Engine with flow control, and pause/resolution Step-as-Unit handling with structured code/retryable errors. However, the supplied material contains no CI workflow files and no test sources — only a CI badge and a tests/ directory claim — so there is no verifiable execution evidence. Per the static calibration rule, reliability is capped at 12 without real CI plus committed tests covering key paths; the manifest/version contradiction and the documented Browser-state-loss failure mode (process per call under stdio) push it down to 10.
- Security and permissions 8/20
- No red line is triggered: no malware, no credential theft, no covert exfiltration, no unconfirmed destructive defaults, and no real tokens in examples (the username/password are placeholders). Deductions come from incomplete security disclosure: browser_init(stealth=true) explicitly provides fingerprint spoofing and anti-bot evasion with no stated usage boundary or authorization caveat; browser_evaluate permits arbitrary in-page JS and click/input/upload/download carry real side effects with no confirmation model described; the HTTP mode defaults to binding 0.0.0.0:8000/mcp and the sample client config uses a bare URL with no auth or token. There is also no disclosure of least privilege, what data is persisted (base64 screenshots, page state, SQLite zerotoken.db) or retention. Main risks are visible but scoping, confirmation and data-flow disclosure are all incomplete.
- Maintenance 12/20
- Positive signals: MIT license, semantic versioning, a CONTRIBUTING.md reference, a CI badge, PyPI and download badges, and a community channel (QQ group) — indicating a real release path with clear repository ownership. Deductions: the static material contains no commit history, release cadence, issue-response record, dependency-update automation, or security-response policy; the 454 stars / 0 open issues are discovery signals only and add nothing per the evidence rules. The manifest-vs-PyPI version mismatch is itself a versioning governance gap. Assessed as active but with governance and version-consistency gaps.
- Documentation 13/20
- Documentation is layered and substantial: install (pip/uv plus playwright install chromium), both transports, a five-step OpenClaw onboarding flow, a Cursor config example, tool-call walkthroughs for browser_*/trajectory_*/script_*, the OperationRecord and fuzzy_point JSON structure, a five-layer architecture diagram with Mermaid, a project tree, a Python API snippet, and a troubleshooting FAQ (browser state loss, connection failure). Gaps: no full parameter schema, defaults, timeouts or response-field reference for the 26+ tools; token cost and session-data retention — the project's core selling point — are never quantified; stealth and browser_evaluate capability limits and compliance risk are unaddressed; implicit assumptions such as iframe/tab nesting depth limits and SQLite concurrency are undisclosed; and the docs contradict themselves on version. Usable but with hidden assumptions and troubleshooting gaps.
- Setup experience 11/20
- The install path is reasonably clear: pip install zerotoken or uv sync, followed by a mandatory playwright install chromium, with two entry points — zerotoken-mcp (stdio) and zerotoken-mcp-http (HTTP, default 0.0.0.0:8000/mcp, configurable via --port or ZEROTOKEN_HTTP_PORT) — plus concrete openclaw.json and Cursor client configuration examples. It is nonetheless manual and fragile: HTTP mode requires the user to keep a foreground process permanently running with no systemd, container or daemon option; the OpenClaw path adds an npm mcporter install, a separate Skill install, and a client-side enablement step; Playwright browser download is an extra platform-dependent dependency; and there is no per-OS (macOS/Linux/Windows) guidance, no stated Python version requirement, and no minimal connectivity self-check. Capped at 15 by the static calibration; scored 11 given this fragility.