@ramaris/mcp-server 0.1.0

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/README.md ADDED
@@ -0,0 +1,116 @@
1
+ # @ramaris/mcp-server
2
+
3
+ [Model Context Protocol](https://modelcontextprotocol.io) (MCP) server for [Ramaris](https://www.ramaris.app). Gives AI assistants (Claude, Cursor, etc.) access to on-chain wallet analytics and trading strategies on Base.
4
+
5
+ ## Quick Setup
6
+
7
+ ### Claude Desktop
8
+
9
+ Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
10
+
11
+ ```json
12
+ {
13
+ "mcpServers": {
14
+ "ramaris": {
15
+ "command": "npx",
16
+ "args": ["-y", "@ramaris/mcp-server"],
17
+ "env": {
18
+ "RAMARIS_API_KEY": "rms_your_api_key"
19
+ }
20
+ }
21
+ }
22
+ }
23
+ ```
24
+
25
+ ### Claude Code
26
+
27
+ ```bash
28
+ claude mcp add ramaris -- npx -y @ramaris/mcp-server
29
+ # Then set RAMARIS_API_KEY in your environment
30
+ ```
31
+
32
+ ### Cursor
33
+
34
+ Add to `.cursor/mcp.json` in your project:
35
+
36
+ ```json
37
+ {
38
+ "mcpServers": {
39
+ "ramaris": {
40
+ "command": "npx",
41
+ "args": ["-y", "@ramaris/mcp-server"],
42
+ "env": {
43
+ "RAMARIS_API_KEY": "rms_your_api_key"
44
+ }
45
+ }
46
+ }
47
+ }
48
+ ```
49
+
50
+ ## Get an API Key
51
+
52
+ 1. Sign up at [ramaris.app](https://www.ramaris.app)
53
+ 2. Go to [API Access](https://www.ramaris.app/api-access)
54
+ 3. Create a new API key
55
+
56
+ **Free tier** gets 1 API key with `strategies:read` scope (100 req/hr). Strategy tools work immediately. Upgrade to PRO for wallet tools.
57
+
58
+ ## Available Tools
59
+
60
+ ### Strategy Tools (FREE tier)
61
+
62
+ | Tool | Description |
63
+ |------|-------------|
64
+ | `ramaris_list_strategies` | List trading strategies sorted by last activity |
65
+ | `ramaris_get_strategy` | Get detailed info about a specific strategy |
66
+ | `ramaris_my_watchlist` | List strategies you are following |
67
+
68
+ ### Wallet Tools (PRO+)
69
+
70
+ | Tool | Description |
71
+ |------|-------------|
72
+ | `ramaris_list_wallets` | List tracked wallets sorted by realized PnL |
73
+ | `ramaris_get_wallet` | Get detailed wallet info including top tokens |
74
+
75
+ ### User Tools (PRO+)
76
+
77
+ | Tool | Description |
78
+ |------|-------------|
79
+ | `ramaris_my_profile` | Get your profile info |
80
+ | `ramaris_my_subscription` | Get your subscription details |
81
+
82
+ ## Example Prompts
83
+
84
+ Once connected, try asking your AI assistant:
85
+
86
+ - "List the top 5 strategies on Ramaris"
87
+ - "Show me details for strategy abc123def"
88
+ - "What strategies am I following?"
89
+ - "Find the most profitable wallets" (PRO+)
90
+
91
+ ## Environment Variables
92
+
93
+ | Variable | Required | Description |
94
+ |----------|----------|-------------|
95
+ | `RAMARIS_API_KEY` | Yes | Your Ramaris API key (`rms_...`) |
96
+ | `RAMARIS_API_URL` | No | Override API base URL (default: `https://www.ramaris.app/api/v1`) |
97
+
98
+ ## Rate Limits
99
+
100
+ | Tier | Requests/Hour | Available Tools |
101
+ |------|---------------|-----------------|
102
+ | FREE | 100 | Strategy tools |
103
+ | PRO | 1,000 | All tools |
104
+ | ULTRA | 10,000 | All tools |
105
+ | ENTERPRISE | 100,000 | All tools |
106
+
107
+ ## Links
108
+
109
+ - [Ramaris](https://www.ramaris.app)
110
+ - [@ramaris/sdk](https://www.npmjs.com/package/@ramaris/sdk) - Underlying TypeScript SDK
111
+ - [API Documentation](https://www.ramaris.app/docs/api/)
112
+ - [Pricing](https://www.ramaris.app/pricing)
113
+
114
+ ## License
115
+
116
+ MIT
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env node
2
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
3
+ import { RamarisClient } from '@ramaris/sdk';
4
+ import { createServer } from './server.js';
5
+ const apiKey = process.env['RAMARIS_API_KEY'];
6
+ if (!apiKey) {
7
+ console.error('RAMARIS_API_KEY environment variable required');
8
+ process.exit(1);
9
+ }
10
+ const client = new RamarisClient({
11
+ apiKey,
12
+ baseUrl: process.env['RAMARIS_API_URL'] ?? undefined,
13
+ });
14
+ const server = createServer(client);
15
+ const transport = new StdioServerTransport();
16
+ await server.connect(transport);
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAC9C,IAAI,CAAC,MAAM,EAAE,CAAC;IACZ,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC;IAC/B,MAAM;IACN,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,SAAS;CACrD,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;AACpC,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { RamarisClient } from '@ramaris/sdk';
3
+ export declare function createServer(client: RamarisClient): McpServer;
4
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAKlD,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,CAW7D"}
package/dist/server.js ADDED
@@ -0,0 +1,15 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { registerStrategyTools } from './tools/strategies.js';
3
+ import { registerWalletTools } from './tools/wallets.js';
4
+ import { registerUserTools } from './tools/user.js';
5
+ export function createServer(client) {
6
+ const server = new McpServer({
7
+ name: 'ramaris',
8
+ version: '0.1.0',
9
+ });
10
+ registerStrategyTools(server, client);
11
+ registerWalletTools(server, client);
12
+ registerUserTools(server, client);
13
+ return server;
14
+ }
15
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,UAAU,YAAY,CAAC,MAAqB;IAChD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAElC,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { RamarisClient } from '@ramaris/sdk';
3
+ export declare function registerStrategyTools(server: McpServer, client: RamarisClient): void;
4
+ //# sourceMappingURL=strategies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategies.d.ts","sourceRoot":"","sources":["../../src/tools/strategies.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAuEpF"}
@@ -0,0 +1,60 @@
1
+ import { z } from 'zod';
2
+ export function registerStrategyTools(server, client) {
3
+ server.tool('ramaris_list_strategies', 'List trading strategies on Ramaris, sorted by last activity', {
4
+ page: z.number().int().min(1).optional().describe('Page number (default: 1)'),
5
+ pageSize: z
6
+ .number()
7
+ .int()
8
+ .min(1)
9
+ .max(100)
10
+ .optional()
11
+ .describe('Items per page (default: 20, max: 100)'),
12
+ }, async ({ page, pageSize }) => {
13
+ try {
14
+ const result = await client.strategies.list({ page, pageSize });
15
+ return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
16
+ }
17
+ catch (err) {
18
+ return {
19
+ content: [{ type: 'text', text: err.message }],
20
+ isError: true,
21
+ };
22
+ }
23
+ });
24
+ server.tool('ramaris_get_strategy', 'Get detailed info about a specific strategy', {
25
+ shareId: z.string().describe('The strategy share ID'),
26
+ }, async ({ shareId }) => {
27
+ try {
28
+ const result = await client.strategies.get(shareId);
29
+ return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
30
+ }
31
+ catch (err) {
32
+ return {
33
+ content: [{ type: 'text', text: err.message }],
34
+ isError: true,
35
+ };
36
+ }
37
+ });
38
+ server.tool('ramaris_my_watchlist', 'List strategies you are following', {
39
+ page: z.number().int().min(1).optional().describe('Page number (default: 1)'),
40
+ pageSize: z
41
+ .number()
42
+ .int()
43
+ .min(1)
44
+ .max(100)
45
+ .optional()
46
+ .describe('Items per page (default: 20, max: 100)'),
47
+ }, async ({ page, pageSize }) => {
48
+ try {
49
+ const result = await client.strategies.watchlist({ page, pageSize });
50
+ return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
51
+ }
52
+ catch (err) {
53
+ return {
54
+ content: [{ type: 'text', text: err.message }],
55
+ isError: true,
56
+ };
57
+ }
58
+ });
59
+ }
60
+ //# sourceMappingURL=strategies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategies.js","sourceRoot":"","sources":["../../src/tools/strategies.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { RamarisClient } from '@ramaris/sdk';
3
+ export declare function registerUserTools(server: McpServer, client: RamarisClient): void;
4
+ //# sourceMappingURL=user.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../src/tools/user.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CA6BhF"}
@@ -0,0 +1,27 @@
1
+ export function registerUserTools(server, client) {
2
+ server.tool('ramaris_my_profile', 'Get your Ramaris profile and stats', {}, async () => {
3
+ try {
4
+ const result = await client.me.profile();
5
+ return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
6
+ }
7
+ catch (err) {
8
+ return {
9
+ content: [{ type: 'text', text: err.message }],
10
+ isError: true,
11
+ };
12
+ }
13
+ });
14
+ server.tool('ramaris_my_subscription', 'Get your subscription tier and limits', {}, async () => {
15
+ try {
16
+ const result = await client.me.subscription();
17
+ return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
18
+ }
19
+ catch (err) {
20
+ return {
21
+ content: [{ type: 'text', text: err.message }],
22
+ isError: true,
23
+ };
24
+ }
25
+ });
26
+ }
27
+ //# sourceMappingURL=user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/tools/user.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,iBAAiB,CAAC,MAAiB,EAAE,MAAqB;IACxE,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,oCAAoC,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE;QACrF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;YACzC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACzF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;gBAClE,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CACT,yBAAyB,EACzB,uCAAuC,EACvC,EAAE,EACF,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;YAC9C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACzF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;gBAClE,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { RamarisClient } from '@ramaris/sdk';
3
+ export declare function registerWalletTools(server: McpServer, client: RamarisClient): void;
4
+ //# sourceMappingURL=wallets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallets.d.ts","sourceRoot":"","sources":["../../src/tools/wallets.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CA6ClF"}
@@ -0,0 +1,39 @@
1
+ import { z } from 'zod';
2
+ export function registerWalletTools(server, client) {
3
+ server.tool('ramaris_list_wallets', 'List tracked wallets sorted by realized PnL', {
4
+ page: z.number().int().min(1).optional().describe('Page number (default: 1)'),
5
+ pageSize: z
6
+ .number()
7
+ .int()
8
+ .min(1)
9
+ .max(100)
10
+ .optional()
11
+ .describe('Items per page (default: 20, max: 100)'),
12
+ }, async ({ page, pageSize }) => {
13
+ try {
14
+ const result = await client.wallets.list({ page, pageSize });
15
+ return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
16
+ }
17
+ catch (err) {
18
+ return {
19
+ content: [{ type: 'text', text: err.message }],
20
+ isError: true,
21
+ };
22
+ }
23
+ });
24
+ server.tool('ramaris_get_wallet', 'Get detailed wallet info including top tokens', {
25
+ id: z.number().int().describe('The wallet ID'),
26
+ }, async ({ id }) => {
27
+ try {
28
+ const result = await client.wallets.get(id);
29
+ return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
30
+ }
31
+ catch (err) {
32
+ return {
33
+ content: [{ type: 'text', text: err.message }],
34
+ isError: true,
35
+ };
36
+ }
37
+ });
38
+ }
39
+ //# sourceMappingURL=wallets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallets.js","sourceRoot":"","sources":["../../src/tools/wallets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,UAAU,mBAAmB,CAAC,MAAiB,EAAE,MAAqB;IAC1E,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,6CAA6C,EAC7C;QACE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QAC7E,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,GAAG,CAAC;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,wCAAwC,CAAC;KACtD,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC3B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACzF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;gBAClE,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,+CAA+C,EAC/C;QACE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;KAC/C,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC5C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACzF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;gBAClE,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
package/package.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "@ramaris/mcp-server",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "bin": {
6
+ "ramaris-mcp": "./dist/index.js"
7
+ },
8
+ "files": [
9
+ "dist"
10
+ ],
11
+ "engines": {
12
+ "node": ">=18.0.0"
13
+ },
14
+ "dependencies": {
15
+ "@ramaris/sdk": "^0.1.0",
16
+ "@modelcontextprotocol/sdk": "^1.26.0",
17
+ "zod": "^3.25.0"
18
+ },
19
+ "devDependencies": {
20
+ "typescript": "^5.9.3",
21
+ "vitest": "^4.0.16"
22
+ },
23
+ "scripts": {
24
+ "build": "tsc",
25
+ "test": "vitest run",
26
+ "test:watch": "vitest"
27
+ },
28
+ "keywords": [
29
+ "ramaris",
30
+ "mcp",
31
+ "base",
32
+ "blockchain",
33
+ "wallet",
34
+ "claude",
35
+ "ai"
36
+ ],
37
+ "license": "MIT"
38
+ }