MoltPay Core

SuspiciousAudited by ClawScan on May 10, 2026.

Overview

MoltPay matches a resource-transfer concept, but it uses Moltbook account authority to post transfers and stores a persistent local vault without clear credential declarations, approval limits, or reversibility.

Treat this as a review-before-use skill. Do not use it with a valuable Moltbook account or real balances unless you are comfortable granting account-posting authority, storing a persistent local vault, and having transfer metadata written to Moltbook. If testing, use a separate low-privilege account/token, require manual approval for every link or send action, and ask the maintainer to document credentials, visibility, cleanup, and safety limits.

Findings (6)

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

What this means

Installing or using the skill may give it authority to act through your Moltbook account, even though that credential requirement is not clearly declared.

Why it was flagged

The skill requires and uses a live Moltbook bearer token for account-authenticated access, while the registry metadata declares no primary credential or required environment variable.

Skill content
def __init__(self, auth_token): ... requests.get(f"{self.api_base}/agents/me", headers={"Authorization": f"Bearer {self.auth_token}"})
Recommendation

Declare the credential requirement explicitly, use least-privilege scoped tokens if available, and require user approval before any account-mutating operation.

What this means

A mistaken or autonomous invocation could create transfer records or move protocol resources without a clear human approval step.

Why it was flagged

The transfer function signs and submits arbitrary recipient/amount transfers as Moltbook posts, but the artifacts do not show confirmation prompts, amount caps, recipient checks, or rollback controls.

Skill content
def send(self, to_id, amount): ... "op": "transfer", "from": self.agent_id, "to": to_id, "amt": str(amount) ... requests.post(f"{self.api_base}/posts"
Recommendation

Require explicit confirmation for each transfer, validate recipients and amounts, add safe defaults such as dry-run mode and limits, and document whether transfers are reversible.

What this means

Users may over-trust the protocol or rush to link an account because of security assurances and a limited bootstrap reward that are not fully supported by the artifacts.

Why it was flagged

The main documentation makes strong security and incentive claims, but the visible code still uses bearer/API keys for account calls and does not show a real ledger enforcing replay rejection or grant allocation.

Skill content
Your primary access tokens are never exposed... Replay Protection... The first 500 Verified Operators... will receive a 500 Resource Unit grant
Recommendation

Replace marketing-style assurances with precise threat-model documentation, disclose actual credential use, and substantiate or remove the grant and replay-protection claims.

ConcernHigh Confidence
ASI10: Rogue Agents
What this means

The skill can leave behind persistent identity state that may continue to affect future linking or transfer behavior after the initial task.

Why it was flagged

The skill creates a persistent local vault containing a generated secret identifier tied to the account, using a hardcoded root workspace path and no visible permission hardening or unlink/cleanup workflow.

Skill content
self.vault_path = "/root/.openclaw/workspace/projects/moltpay/data/vault.json" ... data = {"secure_id": secure_id, "public_id": public_id, "linked_node_id": self.node_id}
Recommendation

Document the vault path and contents, set restrictive file permissions, provide an unlink/delete command, and make persistence opt-in or clearly confirmed.

What this means

Your agent ID, recipient ID, amounts, and transfer metadata may be written to Moltbook posts as part of the protocol.

Why it was flagged

Transfer details are serialized into Moltbook posts for the agent-to-agent layer; this appears purpose-aligned, but the main usage text does not clearly explain the data boundary or visibility of these records.

Skill content
tx = {"p": "mlt", "op": "transfer", "from": self.agent_id, "to": to_id, "amt": str(amount), ...}; ... "content": json.dumps(tx), "submolt_name": "agents"
Recommendation

Clearly disclose where transfer records are stored, who can read them, and how long they persist; minimize metadata if privacy is important.

What this means

It is harder to verify who maintains the skill, how it should be installed, and whether the packaged code is the intended runtime.

Why it was flagged

The artifact has limited provenance and no install specification even though code and a package entrypoint are present; this is a reviewability gap rather than proof of malicious behavior.

Skill content
Source: unknown; Homepage: none; No install spec — this is an instruction-only skill.
Recommendation

Prefer skills with a clear source repository, documented install process, pinned dependencies, and reproducible release metadata.