# three.ws Copy Trading (npm · @three-ws/copy-mcp)

Manage copy-trade follows — follow leaders, tune sizing and guard rules, and track fees owed.

- Trust score: 65/100 (medium)
- Change this week: +23
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `@three-ws/copy-mcp`: 65/100 (this document), [markdown](https://verifymcp.io/servers/nirholas-copy-mcp/three-ws-copy-mcp.md), [page](https://verifymcp.io/servers/nirholas-copy-mcp/three-ws-copy-mcp)

## Channel facts

- Registry: `npm`
- Package: `@three-ws/copy-mcp`
- Version: `0.1.1`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 87/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (95 of 99), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (95 of 99), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (Apache-2.0).
  - Actively maintained (last published 29 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 59/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2230 tokens (~318/item across 7 items; 7 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 23/100
  - Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add nirholas-copy-mcp -- npx -y @three-ws/copy-mcp
```

### Codex

```bash
codex mcp add nirholas-copy-mcp -- npx -y @three-ws/copy-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "nirholas-copy-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@three-ws/copy-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add nirholas-copy-mcp --command npx --arg -y --arg @three-ws/copy-mcp
```

### Hermes

```yaml
mcp_servers:
  nirholas-copy-mcp:
    command: "npx"
    args: ["-y", "@three-ws/copy-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "nirholas-copy-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@three-ws/copy-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 65, +3)

- [functional improvement] Stability: unverified → 0.23

### 2026-08-02 (score 62, +45)

- [security regression] Provenance: unverified → fail
- [security improvement] Install scripts: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Malware scan: unverified → pass
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional improvement] Schema quality: unverified → excellent
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] License: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional] Licence: Apache-2.0

### 2026-07-31 (score 17, −25)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-27 (score 42)

First indexed and scored.

## MCP tools (7)

### `list_subscriptions` (~109 tokens)

List my copy-trade subscriptions

List the copy-trade subscriptions belonging to the authenticated account — every leader (a trader with a track record) you follow, with their identity, the subscription status (active / paused / stopped), the sizing rule and full guard-rule set, the performance fee, the high-water mark, and live pending/acted copy-intent counts. Use this to audit who you copy and how aggressively before tuning a follow with update_subscription. Returns the subscriptions newest-first. Read-only; requires THREE_WS_API_KEY.

### `create_subscription` (~662 tokens)

Follow a leader (create / update subscription)

Follow a copy-trade leader from the authenticated account, defining how their trades are mirrored into your own wallet. MONEY-ADJACENT: this sets how much of YOUR SOL each copy may spend. Non-custodial — three.ws never signs or holds funds; it emits sized, guard-checked copy INTENTS you act on. Idempotent: re-calling with the same leader_agent_id + network updates that subscription (and re-activates it) rather than creating a duplicate. Sizing rule: "fixed" spends fixed_sol per copy; "multiplier" spends multiplier × the leader's entry; "pct_balance" spends pct_balance % of your spendable SOL. Every order is clamped to per_trade_cap_sol and the remaining daily_budget_sol. Returns the created/updated subscription. Requires THREE_WS_API_KEY.

Input parameters:

- `copier_wallet` (string, required): Your own Solana wallet address that will execute the mirrored trades. Never a private key — non-custodial.
- `copy_sells` (boolean): Mirror the leader's exits, not just entries (default true).
- `daily_budget_sol` (number): Max SOL fanned out across copies per UTC day (default 1). Must be > 0.
- `fixed_sol` (number): SOL spent per copy when sizing_rule="fixed". Required for fixed sizing.
- `leader_agent_id` (string, required): UUID of the public leader (agent with a sniper track record) to follow.
- `max_open_copies` (integer): Cap on concurrent pending copy intents (1–100, default 5).
- `mcap_ceiling_usd`: Skip coins above this market cap (USD). Omit/null to ignore.
- `mcap_floor_usd`: Skip coins below this market cap (USD). Omit/null to ignore.
- `min_oracle_score`: Skip coins whose Oracle conviction score is below this (0–100). Omit/null to ignore.
- `min_order_sol` (number): Skip dust copies sized below this, in SOL (default 0.02). Cannot exceed per_trade_cap_sol.
- `multiplier` (number): Fraction of the leader's entry size to copy when sizing_rule="multiplier" (default 0.1).
- `network` (string): Solana network (default mainnet).
- `pct_balance` (number): Percent of your spendable SOL per copy when sizing_rule="pct_balance" (0–100).
- `per_trade_cap_sol` (number): Hard ceiling on any single copy, in SOL (default 0.5). Must be > 0.
- `perf_fee_bps` (integer): Leader's performance fee on your realized copy profit, in basis points (0–3000, default 1000 = 10%). Charged above a high-water mark, settled in $THREE.
- `require_safety_pass` (boolean): Skip a copy when the coin's safety context cannot be confirmed (default false).
- `sizing_rule` (string): How each copy is sized: fixed | multiplier (× leader entry) | pct_balance (% of your SOL). Default fixed.
- `telegram_chat_id`: Optional Telegram chat ID to receive copy-intent alerts for this subscription.

### `update_subscription` (~529 tokens)

Update a copy-trade subscription

Re-tune an existing copy-trade subscription by id. Pause it (stop new copies, keep the follow), resume it, stop it, and/or change its sizing rule and guard rules (caps, daily budget, market-cap band, oracle/safety gates, performance fee). MONEY-ADJACENT: guard changes alter how much of your SOL future copies may spend — non-custodial, intents only. Only the fields you pass change; the rest are preserved. Editing guards on a paused subscription keeps it paused unless you also set status:"active". Idempotent. Returns the updated subscription. Requires THREE_WS_API_KEY.

Input parameters:

- `copier_wallet` (string): Change the Solana wallet that executes mirrored trades.
- `copy_sells` (boolean): Whether to mirror the leader's exits as well as entries.
- `daily_budget_sol` (number): Max SOL fanned out per UTC day (> 0).
- `fixed_sol` (number): SOL per copy when sizing_rule="fixed".
- `id` (string, required): UUID of the subscription to update (from list_subscriptions).
- `max_open_copies` (integer): Cap on concurrent pending copy intents (1–100).
- `mcap_ceiling_usd`: Skip coins above this market cap (USD). Pass null to clear the ceiling.
- `mcap_floor_usd`: Skip coins below this market cap (USD). Pass null to clear the floor.
- `min_oracle_score`: Skip coins below this Oracle conviction score (0–100). Pass null to clear the gate.
- `min_order_sol` (number): Skip dust copies below this, in SOL. Cannot exceed per_trade_cap_sol.
- `multiplier` (number): Multiple of the leader's entry when sizing_rule="multiplier".
- `pct_balance` (number): Percent of your SOL per copy when sizing_rule="pct_balance" (0–100).
- `per_trade_cap_sol` (number): Hard ceiling on any single copy, in SOL (> 0).
- `perf_fee_bps` (integer): Leader's performance fee in basis points (0–3000).
- `require_safety_pass` (boolean): Skip a copy when the coin's safety cannot be confirmed.
- `sizing_rule` (string): Change the sizing rule: fixed | multiplier | pct_balance.
- `status` (string): Set the lifecycle status: active (resume), paused (halt new copies, keep the follow), or stopped (end it, keeps history).
- `telegram_chat_id`: Telegram chat ID for copy-intent alerts. Pass null to clear.

### `cancel_subscription` (~121 tokens)

Stop a copy-trade subscription

Stop following a leader: transitions the subscription to "stopped" so no new copy intents are generated. DESTRUCTIVE in that it ends an active money-adjacent follow — but it is a SOFT stop: execution history and earnings are preserved, and you can re-follow the same leader later with create_subscription. To merely halt copies temporarily without ending the follow, use update_subscription with status:"paused" instead. Returns the cancellation result. Requires THREE_WS_API_KEY.

Input parameters:

- `id` (string, required): UUID of the subscription to stop (from list_subscriptions).

### `get_executions` (~199 tokens)

List copy executions (intent inbox)

List the authenticated account's copy executions — the sized, guard-checked copy INTENTS generated when a followed leader trades. Each row carries the coin (mint/symbol/name), the mirrored direction (buy/sell), the planned SOL size, the leader, the safety/quote snapshot used for the decision, the lifecycle status, and any fill signature you recorded. Filter by status: "pending" (actionable now — default), "acted", "dismissed", "skipped" (guard blocked it, with skip_reason), "expired", or "all". Reading refreshes the inbox: stale pending intents are expired automatically. Use record_execution to mark a pending intent acted/dismissed. Read-only; requires THREE_WS_API_KEY.

Input parameters:

- `limit` (integer): Max rows to return, newest first (1–100, default 50).
- `status` (string): Lifecycle filter (default "pending" — only intents still actionable).

### `record_execution` (~207 tokens)

Record acting on a copy intent

Resolve a PENDING copy intent (from get_executions) by recording how you handled it. action:"acted" records that you executed the mirrored trade from your own wallet — optionally with the on-chain tx_signature for your records; action:"dismissed" discards the intent without trading. NON-CUSTODIAL: this never signs, sends, or broadcasts a transaction — it only updates the intent's status after YOU traded. Not idempotent: it transitions pending → acted/dismissed once; an intent that already expired or was actioned returns "not_actionable". Returns the updated execution. Requires THREE_WS_API_KEY.

Input parameters:

- `action` (string, required): "acted" = you executed the trade yourself; "dismissed" = you skipped it.
- `id` (string, required): UUID of the pending copy intent (from get_executions with status:"pending").
- `tx_signature` (string): Optional Solana transaction signature of your fill, recorded only when action="acted".

### `get_earnings` (~204 tokens)

Copy-trade earnings & fees owed

Read copy-trade performance-fee accounting. Without agent_id: the authenticated account's own fees OWED across every leader they copy — a total plus a per-subscription breakdown (cumulative realized copy profit, closed copies, billable profit above the high-water mark, and the fee). With agent_id: a leader's PUBLIC aggregate earnings (active copiers, accrued fee, total copier profit) — the social-proof figure, no per-copier identity exposed and no API key required. All figures are real: realized copy profit above each subscription's high-water mark at the leader's fee, settled in $THREE. Read-only.

Input parameters:

- `agent_id` (string): Optional leader agent UUID. Provide it for that leader's public aggregate earnings; omit it for your own fees-owed rollup (requires THREE_WS_API_KEY).
- `network` (string): Solana network for the leader aggregate (default mainnet). Ignored for your own rollup.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/nirholas-copy-mcp/three-ws-copy-mcp#diagnostics

## Score history

- 2026-08-03: 65
- 2026-08-02: 62
- 2026-08-01: 17
- 2026-07-31: 17
- 2026-07-30: 42
- 2026-07-28: 42
- 2026-07-27: 42

## Links

- npm package: https://www.npmjs.com/package/@three-ws/copy-mcp
- Socket report: https://socket.dev/npm/package/@three-ws/copy-mcp
- Repository: https://github.com/nirholas/three.ws
- Website: https://three.ws/
- Changelog RSS feed: https://verifymcp.io/servers/nirholas-copy-mcp/three-ws-copy-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/nirholas-copy-mcp/three-ws-copy-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/nirholas-copy-mcp/three-ws-copy-mcp
