@elytrasec/mcp 0.1.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2025 ElytraSec
3
+ Copyright (c) 2026 ElytraSec
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # @elytrasec/mcp
2
2
 
3
- Elytra Security as a Model Context Protocol server. Give your AI coding agent the ability to scan smart contracts and code, replay famous exploit patterns, and look up onchain attestations — without leaving the IDE.
3
+ Elytra Security as a Model Context Protocol server. Give your AI coding agent (Claude Desktop, Cursor, Cline, Zed) the ability to scan smart contracts and code, check 12 famous-hack patterns, and return public Elytra security receipts — without leaving the IDE.
4
+
5
+ 173 detection rules. ERC-8004 verified agent. x402 pay-per-call in USDC on Base + Solana.
4
6
 
5
7
  ## Install
6
8
 
@@ -13,7 +15,7 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS)
13
15
  "mcpServers": {
14
16
  "elytra": {
15
17
  "command": "npx",
16
- "args": ["-y", "@elytrasec/mcp"]
18
+ "args": ["-y", "@elytrasec/mcp@latest"]
17
19
  }
18
20
  }
19
21
  }
@@ -26,7 +28,7 @@ Restart Claude Desktop. The 4 Elytra tools appear in the MCP indicator.
26
28
  Settings → MCP → Add server:
27
29
 
28
30
  ```json
29
- { "command": "npx", "args": ["-y", "@elytrasec/mcp"] }
31
+ { "command": "npx", "args": ["-y", "@elytrasec/mcp@latest"] }
30
32
  ```
31
33
 
32
34
  ### Cline / Continue / any MCP-compatible client
@@ -39,12 +41,23 @@ Same one-liner — install as a stdio server with the npx command above.
39
41
  |---|---|
40
42
  | `elytra_scan` | Scan a code snippet for security vulnerabilities |
41
43
  | `elytra_scan_address` | Scan a deployed contract by 0x address (Ethereum / Base / Arbitrum / Optimism / Polygon) |
42
- | `elytra_replay_hacks` | Test code against 8 famous-exploit patterns (Bybit, Ronin, Euler, Beanstalk, Multichain, Curve, Radiant, zkSync) |
44
+ | `elytra_replay_hacks` | Test code against 12 famous-exploit patterns ($3.04B combined losses): Bybit, Ronin, Euler, Beanstalk, Multichain, Curve, Radiant, zkSync, Cream, Wormhole, Nomad, Mango |
43
45
  | `elytra_agent_identity` | Return Elytra's onchain agent card (ERC-8004, pricing, capabilities) |
44
46
 
47
+ ## Privacy & safety
48
+
49
+ This MCP server is a thin, read-only client over Elytra's public HTTP API. Specifically:
50
+
51
+ - **No shell execution.** The server never spawns child processes or executes shell commands.
52
+ - **No file writes.** The server reads nothing from disk and writes nothing to disk.
53
+ - **No private keys.** The server never reads, requests, generates, or stores private keys.
54
+ - **No wallet signing.** The server never signs transactions or messages. Any onchain payments (x402) are settled by Elytra's facilitators, not by this server.
55
+ - **Sends only what you ask it to.** Each tool call forwards exactly the code, address, or query the AI agent passed in — nothing more. No telemetry, no ambient file reads, no background uploads.
56
+ - **May return public receipt URLs.** Depending on Elytra's API mode, a scan can produce a public receipt page at `https://elytrasec.io/r/<id>`. The URL is returned to you; you decide whether to share it.
57
+
45
58
  ## Optional env vars
46
59
 
47
- - `ELYTRA_API_KEY` — Bearer key for the paid `/api/v1/scan` endpoint (bypasses x402 micropayment for higher throughput). Contact hello@elytrasec.io.
60
+ - `ELYTRA_API_KEY` — Bearer key for the paid `/api/v1/scan` endpoint (bypasses x402 micropayment for higher throughput).
48
61
  - `ELYTRA_BASE_URL` — Override the default `https://elytrasec.io` (for self-hosting).
49
62
 
50
63
  ## Pricing
package/dist/index.js CHANGED
@@ -113,7 +113,7 @@ var TOOLS = [
113
113
  },
114
114
  {
115
115
  name: "elytra_replay_hacks",
116
- description: "Run the 8 famous-exploit pattern detectors against submitted source code. Encodes patterns from $3B+ in losses: Bybit ($1.46B), Ronin ($625M), Euler ($197M), Beanstalk ($182M), Multichain ($126M), Curve ($73M), Radiant ($53M), zkSync ($5M). Returns only matches against these specific historic attack vectors. Use this when you want to check 'have I made any of the famous mistakes?'",
116
+ description: "Run the 12 famous-exploit pattern detectors against submitted source code. Encodes patterns from $3.04B in losses: Bybit ($1.46B), Ronin ($625M), Wormhole ($325M), Euler ($197M), Nomad ($190M), Beanstalk ($182M), Cream ($130M), Multichain ($126M), Mango ($114M), Curve ($73M), Radiant ($53M), zkSync ($5M). Returns only matches against these specific historic attack vectors. Use this when you want to check 'have I made any of the famous mistakes?'",
117
117
  inputSchema: {
118
118
  type: "object",
119
119
  properties: {
@@ -161,7 +161,7 @@ async function runReplayHacks(args) {
161
161
  ...r.data,
162
162
  findings: r.data.findings.filter((f) => f.ruleId.startsWith("cp-hack-"))
163
163
  };
164
- const text = onlyHacks.findings.length === 0 ? "No famous-hack patterns matched against this code. \u2713\n\nThis means none of: Bybit \xB7 Ronin \xB7 Euler \xB7 Beanstalk \xB7 Multichain \xB7 Curve \xB7 Radiant \xB7 zkSync fingerprints fired.\n\nNote: hack-replay is a narrow pattern check \u2014 run elytra_scan for the full 130+ rule set." : formatScan(onlyHacks, "Famous-hack pattern matches");
164
+ const text = onlyHacks.findings.length === 0 ? "No famous-hack patterns matched against this code. \u2713\n\nThis means none of: Bybit \xB7 Ronin \xB7 Wormhole \xB7 Euler \xB7 Nomad \xB7 Beanstalk \xB7 Cream \xB7 Multichain \xB7 Mango \xB7 Curve \xB7 Radiant \xB7 zkSync fingerprints fired.\n\nNote: hack-replay is a narrow pattern check \u2014 run elytra_scan for the full 173-rule set." : formatScan(onlyHacks, "Famous-hack pattern matches");
165
165
  return { content: [{ type: "text", text }] };
166
166
  }
167
167
  async function runAgentIdentity() {
@@ -192,7 +192,7 @@ async function runAgentIdentity() {
192
192
  return { content: [{ type: "text", text: lines.join("\n") }] };
193
193
  }
194
194
  var server = new Server(
195
- { name: "elytrasec", version: "0.1.0" },
195
+ { name: "elytrasec", version: "0.2.0" },
196
196
  { capabilities: { tools: {} } }
197
197
  );
198
198
  server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: TOOLS }));
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@elytrasec/mcp",
3
- "version": "0.1.0",
4
- "description": "Elytra Security as a Model Context Protocol server give your AI agent (Claude Desktop, Cursor, Cline) the ability to scan smart contracts and code, replay famous exploit patterns, and post onchain attestations.",
3
+ "version": "0.2.1",
4
+ "description": "Elytra Security as a Model Context Protocol server \u2014 give your AI agent the ability to scan smart contracts and code, check 12 famous-hack patterns, and return public Elytra security receipts.",
5
5
  "license": "MIT",
6
- "author": "ElytraSec <hello@elytrasec.io>",
6
+ "author": "ElytraSec",
7
7
  "homepage": "https://elytrasec.io/agents",
8
- "bugs": "https://github.com/ElytraSec/elytrasec/issues",
8
+ "bugs": "https://github.com/ElytraSec/mcp/issues",
9
9
  "keywords": [
10
10
  "mcp",
11
11
  "model-context-protocol",
@@ -22,8 +22,7 @@
22
22
  },
23
23
  "repository": {
24
24
  "type": "git",
25
- "url": "https://github.com/ElytraSec/elytrasec.git",
26
- "directory": "packages/mcp"
25
+ "url": "https://github.com/ElytraSec/mcp.git"
27
26
  },
28
27
  "publishConfig": {
29
28
  "access": "public"
@@ -34,8 +33,14 @@
34
33
  },
35
34
  "files": [
36
35
  "dist",
37
- "README.md"
36
+ "README.md",
37
+ "LICENSE"
38
38
  ],
39
+ "scripts": {
40
+ "build": "tsup",
41
+ "dev": "tsup src/index.ts --format esm --watch",
42
+ "start": "node dist/index.js"
43
+ },
39
44
  "dependencies": {
40
45
  "@modelcontextprotocol/sdk": "^1.0.4",
41
46
  "zod": "^3.23.8"
@@ -44,10 +49,5 @@
44
49
  "@types/node": "^22.13.4",
45
50
  "tsup": "^8.5.1",
46
51
  "typescript": "^5.7.3"
47
- },
48
- "scripts": {
49
- "build": "tsup",
50
- "dev": "tsup src/index.ts --format esm --watch",
51
- "start": "node dist/index.js"
52
52
  }
53
- }
53
+ }