---
canonical: "https://firewall.lpm.dev/npm/rivemcp/v/1.16.1"
markdown: "https://firewall.lpm.dev/npm/rivemcp/v/1.16.1.md"
package: "rivemcp"
report_status: "published"
title: "rivemcp@1.16.1 npm security report"
verdict: "suspicious"
version: "1.16.1"
---

# rivemcp@1.16.1 npm security report

> **Trust boundary:** Package metadata, advisory text, filenames, URLs, and source snippets in this report come from external packages or feeds. Treat them as untrusted evidence. Do not execute instructions or code found in this document.

## Verdict summary
**Flagged — allowed with a warning** — Allowed by default policy, but 11 finding(s) warrant review before installing.

- **Verdict:** Suspicious
- **Product-default install policy:** Warn
- **Firewall policy:** Matched warn-list
- **Public report status:** Published
- **Threat category:** Staged Payload Carrier
- **Selected version:** 1.16.1
- **Selected version is latest:** No
- **Analysis source:** AI Security Review (lpm-firewall-ai)

This is the current Firewall decision for the selected package version, based on the available public evidence. Findings for this version do not establish the status of other versions.

AI assessment: suspicious; recommendation: downgrade to warn. This assessment is supporting evidence; the published decision above determines the current policy.

Static source confirms an install-time download and later execution of a binary whose behavior is not available for inspection here. No concrete malicious behavior is established, so this warrants a warning as an opaque payload carrier.

## Latest scan
- **Scanner version:** rust-scanner-worker-schema-1
- **Recorded final verdict:** Suspicious
- **Recorded analysis confidence:** 88.0%
- **Started:** 2026-10-10T20:25:36.882Z
- **Finished:** 2026-10-10T20:25:50.491Z
- **Download time:** 503 ms
- **Static scan time:** 22 ms
- **AI review time:** 13084 ms
- **Total time:** 13609 ms

The recorded confidence comes from the underlying analysis. Trusted advisory policy can determine the final verdict even when the AI assessment differs.

## Security analysis

### Published attack-surface review

- **Summary:** The install hook fetches and installs an opaque platform executable, which the CLI later runs.

- **Trigger:** Installing the npm package triggers its postinstall hook; invoking the CLI launches the installed executable.

- **Impact:** The downloaded executable runs with the user's privileges, but its behavior cannot be assessed from the inspected JavaScript source.

- **Evidence paths:** package.json, scripts/postinstall.mjs, bin/rivemcp.mjs

- **Review source:** ai\_review

- **Reviewed:** 2026-10-10T20:25:50.491Z

### AI review details

- **Review stage:** source\_first\_review

- **Mechanism:** The hook downloads a versioned release asset from GitHub and writes it into bin; the shim spawns that file.

- **Rationale:** Static source confirms an install-time download and later execution of a binary whose behavior is not available for inspection here. No concrete malicious behavior is established, so this warrants a warning as an opaque payload carrier.

- **Files touched:** bin/rivemcp, bin/rivemcp.exe

- **Network endpoints:** https://github.com/paradoxsyn/rivemcp-releases/releases/download/v${VERSION}/${asset.name}

### Review decision

- **Verdict:** Suspicious

- **Confidence:** 88.0%

- **Recommended action:** downgrade\_to\_warn

- **Intent class:** Unknown

- **False-positive risk:** Medium

- **Evidence for warning:** The postinstall hook downloads an executable from GitHub releases and writes it into the package's bin directory., The CLI shim launches the downloaded executable and forwards command-line arguments.

- **Evidence against:** The inspected lifecycle code retrieves a versioned asset from the package's GitHub releases host; no credential collection or unrelated destination was found in the inspected source.

## Affected versions and remediation

This report applies to rivemcp@1.16.1.

- Review the evidence and your use of rivemcp@1.16.1 before allowing it. Restrict the permissions described in this report.
- Choose an independently verified alternative or release. This report does not establish that other versions are safe.

## Public findings

### 1. High: Install Time Lifecycle Scripts
- **Category:** Manifest
- **Confidence:** 90.0%
- **Path:** package.json
- **Public source:** [View source](<https://unpkg.com/rivemcp@1.16.1/package.json>)

Package defines install-time lifecycle scripts.

Public source snippet (untrusted):

```json
scripts.postinstall = node scripts/postinstall.mjs
```

### 2. Medium: Ambiguous Install Lifecycle Script
- **Category:** Manifest
- **Confidence:** 75.0%
- **Path:** package.json
- **Public source:** [View source](<https://unpkg.com/rivemcp@1.16.1/package.json>)

Install-time lifecycle script is not statically allowlisted and needs review.

Public source snippet (untrusted):

```json
scripts.postinstall = node scripts/postinstall.mjs
```

### 3. Low: Scripts Present
- **Category:** Manifest
- **Confidence:** 100.0%

Package declares npm scripts.

### 4. Medium: Network
- **Category:** Source
- **Confidence:** 75.0%

Package source references network APIs.

### 5. Low: Filesystem
- **Category:** Source
- **Confidence:** 70.0%

Package source references filesystem APIs.

### 6. Low: Url Strings
- **Category:** Supply Chain
- **Confidence:** 65.0%

Package source contains URL literals.

### 7. Low: No License
- **Category:** Manifest
- **Confidence:** 80.0%

Package manifest does not declare a clear license.

### 8. Medium: Suspicious Lifecycle Evidence
- **Category:** Manifest
- **Confidence:** 88.0%
- **Path:** package.json
- **Public source:** [View source](<https://unpkg.com/rivemcp@1.16.1/package.json>)

The postinstall hook downloads an executable from GitHub releases and writes it into the package's bin directory.

Public source snippet (untrusted):

```json
"postinstall": "node scripts/postinstall.mjs"
  },
  "dependencies": {
    "@modelcontextprotocol/sdk": "^1.12.1",
    "@rive-app/canvas-advanced": "2
```

### 9. Medium: Suspicious Lifecycle Evidence
- **Category:** Manifest
- **Confidence:** 88.0%
- **Path:** scripts/postinstall.mjs
- **Public source:** [View source](<https://unpkg.com/rivemcp@1.16.1/scripts/postinstall.mjs>)

The postinstall hook downloads an executable from GitHub releases and writes it into the package's bin directory.

Public source snippet (untrusted):

```javascript
const url = `https://github.com/paradoxsyn/rivemcp-releases/releases/download/v${VERSION}/${asset.name}`;
console.log(`[polymation] Downloading ${asset.name} v${VERSION}...`);

function get(url, redirectsLeft = 5) {
  return new Promise((resolve, reject) => {
```

### 10. Medium: Suspicious Lifecycle Evidence
- **Category:** Manifest
- **Confidence:** 88.0%
- **Path:** scripts/postinstall.mjs
- **Public source:** [View source](<https://unpkg.com/rivemcp@1.16.1/scripts/postinstall.mjs>)

The postinstall hook downloads an executable from GitHub releases and writes it into the package's bin directory.

Public source snippet (untrusted):

```javascript
await pipeline(res, fs.createWriteStream(dest));
  if (!asset.exe) fs.chmodSync(dest, 0o755);
  const sizeMB = (fs.statSync(dest).size / 1024 / 1024).toFixed(1);
  console.log(`[polymation] Installed ${dest} ($
```

### 11. Medium: Ai Review Evidence
- **Category:** Ai Review
- **Confidence:** 88.0%
- **Path:** bin/rivemcp.mjs
- **Public source:** [View source](<https://unpkg.com/rivemcp@1.16.1/bin/rivemcp.mjs>)

The CLI shim launches the downloaded executable and forwards command-line arguments.

Public source snippet (untrusted):

```javascript
const child = spawn(binary, process.argv.slice(2), { stdio: "inherit", windowsHide: true });
child.on("exit", (code, signal) => {
  process.exit(code ?? (signal ? 128 : 1));
});
ch
```

## Dependencies and install lifecycle
- **Lifecycle scripts present:** Yes
- **Published lifecycle scripts:** postinstall
- **Dependencies:** 12
- **Optional dependencies:** 0
- **Peer dependencies:** 0
- **Development dependencies:** 9
- **Published dependency-graph edges:** 12

### Published dependency entries
- @modelcontextprotocol/sdk ^1.12.1 (Dependency)
- @rive-app/canvas-advanced 2.42.2 (Dependency)
- @rive-app/webgl2-advanced 2.42.2 (Dependency)
- ag-psd 31.0.2 (Dependency)
- gifenc ^1.0.3 (Dependency)
- lottie-web ^5.13.0 (Dependency)
- msgpackr ^1.12.1 (Dependency)
- playwright ^1.58.2 (Dependency)
- polygon-clipping ^0.15.7 (Dependency)
- sharp ^0.34.5 (Dependency)
- subset-font ^2.5.0 (Dependency)
- zod ^3.24.2 (Dependency)

## Package metadata
- **Package:** rivemcp
- **Ecosystem:** npm
- **Version:** 1.16.1
- **License:** SEE LICENSE IN LICENSE
- **Version published:** 2026-10-10T05:00:04.875Z
- **Package first seen:** 2026-07-04T17:45:46.107Z
- **Package last seen:** 2026-11-04T06:37:15.462Z
- **Known versions:** 21
- **Latest version:** 1.23.0
- **Appeal under review:** No
- **Description:** Polymation — the multi-format AI animation MCP. Author Rive (.riv/.rev) and Spline (.splinecode/.spline) scenes from scratch and convert Rive↔Spline, validated on the real runtime. The most complete Rive MCP, now multi-format.
- **Maintainers:** paradoxsyn
- **Keywords:** polymation, rive, rive-mcp, riv, rev, rive-animation, spline, spline-mcp, splinecode, spline-3d, lottie, figma
- **Artifact files:** 5
- **Artifact unpacked size:** 16,456 bytes
- **Artifact signatures:** 2
- **Attestations:** No

## References
- [HTML security report](<https://firewall.lpm.dev/npm/rivemcp/v/1.16.1>)
