@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/CHANGELOG.md +15 -0
- package/LICENSE +21 -0
- package/README.md +154 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1360 -0
- package/manifest.json +214 -0
- package/package.json +73 -0
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
|
+
}
|