@elfa-ai/mcp 1.0.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/manifest.json ADDED
@@ -0,0 +1,214 @@
1
+ {
2
+ "server": {
3
+ "name": "elfa",
4
+ "version": "1.0.0",
5
+ "docs": "https://docs.elfa.ai",
6
+ "spec": "https://docs.elfa.ai/swagger/swagger.json",
7
+ "specScope": "/v2"
8
+ },
9
+ "tools": [
10
+ {
11
+ "name": "elfa_status",
12
+ "title": "API key status",
13
+ "summary": "Check API key tier, credit usage and remaining requests. Also confirms the API is reachable.",
14
+ "credits": "Free",
15
+ "annotations": {
16
+ "readOnlyHint": true,
17
+ "destructiveHint": false,
18
+ "idempotentHint": true,
19
+ "openWorldHint": false
20
+ },
21
+ "operations": ["ping-v2", "getApiKeyStatus-v2"]
22
+ },
23
+ {
24
+ "name": "elfa_mentions",
25
+ "title": "Mentions",
26
+ "summary": "Social mentions from X and Telegram. mode=top ranks a ticker's mentions by engagement, mode=search filters by keyword or account, mode=news returns the token news feed.",
27
+ "credits": "1 per call",
28
+ "annotations": {
29
+ "readOnlyHint": true,
30
+ "destructiveHint": false,
31
+ "idempotentHint": true,
32
+ "openWorldHint": false
33
+ },
34
+ "operations": [
35
+ "getTopMentions-v2",
36
+ "getKeywordMentions-v2",
37
+ "getTokenNews-v2"
38
+ ]
39
+ },
40
+ {
41
+ "name": "elfa_trending",
42
+ "title": "Trending",
43
+ "summary": "What is gaining social attention. scope=tokens for tickers, scope=contracts_twitter or scope=contracts_telegram for contract addresses.",
44
+ "credits": "1 per call",
45
+ "annotations": {
46
+ "readOnlyHint": true,
47
+ "destructiveHint": false,
48
+ "idempotentHint": true,
49
+ "openWorldHint": false
50
+ },
51
+ "operations": [
52
+ "getTrendingTokens-v2",
53
+ "getTrendingCAsTwitter-v2",
54
+ "getTrendingCAsTelegram-v2"
55
+ ]
56
+ },
57
+ {
58
+ "name": "elfa_narratives",
59
+ "title": "Narratives",
60
+ "summary": "Written narrative analysis with source links. scope=market extracts market-wide narratives, scope=keywords summarises events for specific keywords.",
61
+ "credits": "5 per call",
62
+ "annotations": {
63
+ "readOnlyHint": true,
64
+ "destructiveHint": false,
65
+ "idempotentHint": true,
66
+ "openWorldHint": false
67
+ },
68
+ "operations": ["getTrendingNarratives-v2", "getEventSummary-v2"]
69
+ },
70
+ {
71
+ "name": "elfa_account_stats",
72
+ "title": "Account stats",
73
+ "summary": "Smart follower and engagement stats for an X account.",
74
+ "credits": "1 per call",
75
+ "annotations": {
76
+ "readOnlyHint": true,
77
+ "destructiveHint": false,
78
+ "idempotentHint": true,
79
+ "openWorldHint": false
80
+ },
81
+ "operations": ["getAccountSmartStats-v2"]
82
+ },
83
+ {
84
+ "name": "elfa_chat",
85
+ "title": "Market chat",
86
+ "summary": "Ask for written market analysis. Supports conversational chat, macro overview, quick summary, token intro, token analysis and account analysis.",
87
+ "credits": "Varies by speed",
88
+ "annotations": {
89
+ "readOnlyHint": true,
90
+ "destructiveHint": false,
91
+ "idempotentHint": false,
92
+ "openWorldHint": false
93
+ },
94
+ "operations": ["chat-v2"]
95
+ },
96
+ {
97
+ "name": "elfa_auto_build",
98
+ "title": "Auto query builder",
99
+ "summary": "Turn a plain-language monitoring request into an EQL query. Returns a draft to validate and activate, it does not activate anything itself.",
100
+ "credits": "1 plus LLM usage",
101
+ "annotations": {
102
+ "readOnlyHint": true,
103
+ "destructiveHint": false,
104
+ "idempotentHint": false,
105
+ "openWorldHint": false
106
+ },
107
+ "operations": ["auto-chat-v2"]
108
+ },
109
+ {
110
+ "name": "elfa_auto_validate",
111
+ "title": "Validate Auto query",
112
+ "summary": "Check EQL syntax and get a cost estimate before activating. Accepts an inline query or a draft id.",
113
+ "credits": "Free",
114
+ "annotations": {
115
+ "readOnlyHint": true,
116
+ "destructiveHint": false,
117
+ "idempotentHint": true,
118
+ "openWorldHint": false
119
+ },
120
+ "operations": ["auto-validate-query-v2", "auto-validate-query-draft-v2"]
121
+ },
122
+ {
123
+ "name": "elfa_auto_query",
124
+ "title": "Read Auto queries",
125
+ "summary": "Read side of Auto: list queries, poll one query, and read its executions and LLM sessions.",
126
+ "credits": "Free",
127
+ "annotations": {
128
+ "readOnlyHint": true,
129
+ "destructiveHint": false,
130
+ "idempotentHint": true,
131
+ "openWorldHint": false
132
+ },
133
+ "operations": [
134
+ "auto-list-queries-v2",
135
+ "auto-poll-query-v2",
136
+ "auto-list-executions-v2",
137
+ "auto-get-execution-v2",
138
+ "auto-list-sessions-v2",
139
+ "auto-get-session-v2"
140
+ ]
141
+ },
142
+ {
143
+ "name": "elfa_auto_query_write",
144
+ "title": "Write Auto queries",
145
+ "summary": "Activate, cancel or delete an Auto query. Activated queries run unattended and fire their action when conditions are met.",
146
+ "credits": "5 plus LLM usage to create, free to cancel or delete",
147
+ "annotations": {
148
+ "readOnlyHint": false,
149
+ "destructiveHint": true,
150
+ "idempotentHint": false,
151
+ "openWorldHint": false
152
+ },
153
+ "operations": [
154
+ "auto-create-query-v2",
155
+ "auto-cancel-query-v2",
156
+ "auto-delete-query-v2"
157
+ ]
158
+ },
159
+ {
160
+ "name": "elfa_auto_draft",
161
+ "title": "Auto drafts",
162
+ "summary": "Manage inactive Auto drafts. Drafts do not evaluate until converted into an active query.",
163
+ "credits": "Free, except convert which costs the same as creating a query",
164
+ "annotations": {
165
+ "readOnlyHint": false,
166
+ "destructiveHint": true,
167
+ "idempotentHint": false,
168
+ "openWorldHint": false
169
+ },
170
+ "operations": [
171
+ "auto-list-query-drafts-v2",
172
+ "auto-get-query-draft-v2",
173
+ "auto-upsert-query-draft-v2",
174
+ "auto-delete-query-draft-v2",
175
+ "auto-convert-query-draft-v2"
176
+ ]
177
+ },
178
+ {
179
+ "name": "elfa_auto_exchanges",
180
+ "title": "Auto exchange connections",
181
+ "summary": "List, connect and disconnect the exchange accounts Auto uses for order actions, and check whether a symbol is tradeable.",
182
+ "credits": "Free",
183
+ "annotations": {
184
+ "readOnlyHint": false,
185
+ "destructiveHint": true,
186
+ "idempotentHint": false,
187
+ "openWorldHint": false
188
+ },
189
+ "operations": [
190
+ "auto-list-exchanges-v2",
191
+ "auto-connect-exchange-v2",
192
+ "auto-disconnect-exchange-v2",
193
+ "auto-validate-symbol-v2"
194
+ ]
195
+ }
196
+ ],
197
+ "unexposed": [
198
+ {
199
+ "operationId": "chat-stream-v2",
200
+ "reason": "sse",
201
+ "note": "A tool call returns one result, so streaming adds nothing. elfa_chat covers the same analysis."
202
+ },
203
+ {
204
+ "operationId": "auto-stream-queries-v2",
205
+ "reason": "sse",
206
+ "note": "Long lived streams have no tool equivalent. Poll with elfa_auto_query."
207
+ },
208
+ {
209
+ "operationId": "auto-stream-query-v2",
210
+ "reason": "sse",
211
+ "note": "Long lived streams have no tool equivalent. Poll with elfa_auto_query."
212
+ }
213
+ ]
214
+ }
package/package.json ADDED
@@ -0,0 +1,73 @@
1
+ {
2
+ "name": "@elfa-ai/mcp",
3
+ "version": "1.0.0",
4
+ "description": "Model Context Protocol server for the Elfa API - crypto social intelligence and the Auto condition engine",
5
+ "license": "MIT",
6
+ "author": "Elfa Team",
7
+ "type": "module",
8
+ "mcpName": "ai.elfa/mcp",
9
+ "main": "dist/index.js",
10
+ "types": "dist/index.d.ts",
11
+ "bin": {
12
+ "elfa-mcp": "dist/index.js"
13
+ },
14
+ "files": [
15
+ "dist/**/*",
16
+ "manifest.json",
17
+ "README.md",
18
+ "CHANGELOG.md",
19
+ "LICENSE"
20
+ ],
21
+ "engines": {
22
+ "node": ">=20.0.0"
23
+ },
24
+ "publishConfig": {
25
+ "access": "public",
26
+ "registry": "https://registry.npmjs.org"
27
+ },
28
+ "scripts": {
29
+ "build": "tsup",
30
+ "dev": "tsx watch src/index.ts",
31
+ "start": "node dist/index.js",
32
+ "typecheck": "tsc --noEmit",
33
+ "test": "vitest run",
34
+ "test:watch": "vitest",
35
+ "check:drift": "tsx scripts/check-drift.ts",
36
+ "update:schema": "curl -fsSL -o swagger.json https://docs.elfa.ai/swagger/swagger.json",
37
+ "docs:tools": "tsx scripts/gen-tool-table.ts",
38
+ "docs:check": "tsx scripts/gen-tool-table.ts --check",
39
+ "verify": "npm run typecheck && npm run test && npm run check:drift && npm run docs:check",
40
+ "prepublishOnly": "npm run build"
41
+ },
42
+ "keywords": [
43
+ "elfa",
44
+ "mcp",
45
+ "model-context-protocol",
46
+ "crypto",
47
+ "social-intelligence",
48
+ "trading",
49
+ "agent"
50
+ ],
51
+ "repository": {
52
+ "type": "git",
53
+ "url": "git+https://github.com/elfa-ai/mcp.git"
54
+ },
55
+ "bugs": {
56
+ "url": "https://github.com/elfa-ai/mcp/issues"
57
+ },
58
+ "homepage": "https://docs.elfa.ai",
59
+ "dependencies": {
60
+ "@elfa-ai/sdk": "^3.0.1",
61
+ "@modelcontextprotocol/sdk": "^1.20.0",
62
+ "express": "^5.1.0",
63
+ "zod": "^3.25.0"
64
+ },
65
+ "devDependencies": {
66
+ "@types/express": "^5.0.0",
67
+ "@types/node": "^22.10.0",
68
+ "tsup": "^8.5.1",
69
+ "tsx": "^4.19.0",
70
+ "typescript": "^5.9.0",
71
+ "vitest": "^3.0.0"
72
+ }
73
+ }