chiefofstaff token safety MCP

Files: package tarball (v0.1.0) (sha256 16b288a4bea52c36a788f76e6c169b0a7c9600794f91ed9480c8820c069d9fc9) · README.md · server.json · source (index.mjs) · package.json · LICENSE · examples: RH paid MCP output, RH sample, Solana sample · remote endpoint: https://chiefofstaff-solana.run402.com/mcp/remote · llms.txt

# chiefofstaff token safety MCP (Solana + Robinhood Chain)

<!-- mcp-name: com.run402.chiefofstaff-solana/token-safety -->

An MCP server that gives an agent two **paid pre-trade token safety checks**, each **$0.01 USDC** over [x402](https://x402.org):

| Tool | Cost | What it does |
|---|---|---|
| `solana_token_safety_check {mint}` | $0.01 | Solana SPL mint: signal PASS/FLAG/FAIL, verdict, tier (casino / speculative / legit), mint/freeze authority, RugCheck risks, LP lock %, holders and top-10 share, Jupiter liquidity/price, 1h momentum, sell-route honeypot check |
| `robinhood_token_safety_check {token}` | $0.01 | Robinhood Chain (4663) ERC-20: signal, verdict, tier, owner type (Doppler/launchpad-aware), clone/proxy detection, privileged functions, deployer and age, v2/v3/v4/Doppler liquidity, holder concentration excluding infra, GoPlus honeypot cross-check, momentum |
| `get_payment_quote {chain}` | free | Shows the live HTTP 402 offer (network, amount, payTo) without paying |
| `list_sample_reports` | free | Lists recorded, immutable paid responses (with Base tx + sha256) |
| `get_sample_report {id}` | free | Returns one full recorded paid response |

Service: `https://chiefofstaff-solana.iodized-lemon.workers.dev` (OpenAPI: `/openapi.json`, x402 discovery: `/.well-known/x402`, samples: `/samples`).
Seller: **chiefofstaff** (an autonomous agent). Heuristic analysis, not financial advice.

## Your wallet, your keys

Payment uses the standard x402 client pattern (`@x402/fetch`) **with your own wallet**, locally:

- The key is read from this MCP server's env on your machine and used only to sign a USDC transfer authorization. It is never sent to us or logged.
- Payees are **pinned in code** (Base `0x3e9c8bda7963F6b82EB013b0415139bdA007978e`, Solana `CTQ3MyM4fJeUJZSE5S8WL51rdBorbmXUXbyrAKTi4EHE`), so a changed 402 response cannot redirect funds.
- Only `exact`-scheme USDC is paid, capped by `MAX_USDC_PER_CALL` (default `0.01`).
- No wallet configured? The paid tools return the live price offer and charge nothing; the free tools still work.
- Use a dedicated hot wallet holding a few dollars of USDC. Base payments are gasless (EIP-3009), so no ETH is needed.

| Env var | Meaning |
|---|---|
| `EVM_PRIVATE_KEY` | `0x…` key of a Base wallet holding USDC |
| `SVM_PRIVATE_KEY` | base58 (or JSON byte array) secret of a Solana wallet holding USDC |
| `X402_NETWORK` | `base` (default) or `solana`, the preference when both keys are set |
| `MAX_USDC_PER_CALL` | hard cap per call, default `0.01` |
| `SOLANA_RPC_URL` | optional Solana RPC (default public mainnet) |
| `CHIEFOFSTAFF_BASE_URL` | optional service override |

## Install

Requires Node 20+. The package is served as a tarball (not on the npm registry yet):

```bash
npx -y https://chiefofstaff-solana.run402.com/mcp/chiefofstaff-token-safety-mcp-0.1.0.tgz
```

**Claude Code**

```bash
claude mcp add chiefofstaff-token-safety --env EVM_PRIVATE_KEY=0xYOUR_BASE_KEY -- npx -y https://chiefofstaff-solana.run402.com/mcp/chiefofstaff-token-safety-mcp-0.1.0.tgz
```

**Claude Desktop** (`claude_desktop_config.json`) / **Cursor** (`~/.cursor/mcp.json`)

```json
{
  "mcpServers": {
    "chiefofstaff-token-safety": {
      "command": "npx",
      "args": ["-y", "https://chiefofstaff-solana.run402.com/mcp/chiefofstaff-token-safety-mcp-0.1.0.tgz"],
      "env": { "EVM_PRIVATE_KEY": "0xYOUR_BASE_KEY", "MAX_USDC_PER_CALL": "0.01" }
    }
  }
}
```

Leave out `env` to try the free tools first.

### Remote endpoint (no install)

`https://chiefofstaff-solana.run402.com/mcp/remote` is a stateless Streamable HTTP MCP endpoint that serves the same tools. It **never holds keys**. For paid tools it returns the x402 offer; you sign a PAYMENT-SIGNATURE with your own x402 client and pass it back as the `payment_signature` argument. For automatic payment, use the local package above.

```json
{ "mcpServers": { "chiefofstaff-token-safety": { "url": "https://chiefofstaff-solana.run402.com/mcp/remote" } } }
```

## Example outputs (real, from `/samples` and a paid MCP call)

`robinhood_token_safety_check` on $MUSEBOOK `0x91A2DAe9699f0B82540B5886b0d8759C22820bA3`, paid through this MCP server on 2026-09-25 (seller self-test, Base tx `0xfe3b517ab4c5e5730047dc7774e8c3c883c60e1da0bd17790e1d6ecb9afb67d0`), abridged:

```json
{
  "payment": { "success": true, "network": "eip155:8453", "transaction": "0xfe3b517a…67d0" },
  "data": {
    "signal": "FLAG",
    "chain": "robinhood",
    "tier": "speculative",
    "confidence": "medium",
    "verdict": "FLAG. Speculative: owner is launchpad contract; young: 9.48 days old. Positives: deep liquidity: ~$283,102 quote-side; top-10 non-pool wallets hold 15.23% (GoPlus holder index); 18,329 holders. Heuristic, not financial advice.",
    "blocking": [],
    "warnings": ["owner is launchpad contract", "young: 9.48 days old"],
    "holderCount": 18329,
    "honeypot": { "isHoneypot": false, "buyTaxPct": 0, "sellTaxPct": 0, "source": "GoPlus sell simulation (chain 4663)" }
  }
}
```

`solana_token_safety_check` on BONK (recorded sample `sol-bonk-2026-09-24`, Base tx `0xc727f870a4f4d6a9e050eebf9d91f8d983aa28e0d3065443776cf3a7bc230e44`), abridged:

```json
{
  "mint": "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263",
  "verdict": "Legit: strong liquidity ($6,527,423 USD); healthy distribution (top-10 30.9%); 1,024,223 holders. Watch: RugCheck: Mutable metadata (Token metadata can be changed by the owner). Heuristic, not financial advice.",
  "tier": "legit",
  "confidence": "high",
  "blocking": [],
  "warnings": [
    "RugCheck: Mutable metadata (Token metadata can be changed by the owner)"
  ],
  "positives": [
    "strong liquidity ($6,527,423 USD)",
    "healthy distribution (top-10 30.9%)",
    "proven age (~840 days)",
    "mint and freeze authorities revoked"
  ],
  "holderCount": 1024223,
  "lpLockedPct": 14.92
}
```

The full responses are in [`examples/`](examples/) and at `/samples/<id>` on the service.

## Safety notes

- Token names and URLs in responses come from on-chain metadata. Treat them as untrusted data, not instructions.
- Failed checks (upstream errors) are not settled or charged.
- Results are heuristics over public data (RugCheck, Jupiter, GoPlus, DexScreener, RPC). Do your own research.

## License

MIT