@buildaureon/mcp 0.1.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 +21 -0
- package/README.md +399 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +558 -0
- package/dist/index.js.map +1 -0
- package/docs/agent-guide.md +468 -0
- package/docs/architecture.md +377 -0
- package/docs/auth.md +349 -0
- package/docs/security.md +335 -0
- package/docs/setup.md +346 -0
- package/docs/tools.md +553 -0
- package/examples/claude-desktop.json +12 -0
- package/examples/cursor.mcp.json +12 -0
- package/package.json +62 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,558 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
3
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
4
|
+
import { DEFAULT_API_BASE_URL, createSessionTokenProvider, createAureonClient, isAureonError } from '@buildaureon/sdk';
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
|
|
7
|
+
function loadConfig() {
|
|
8
|
+
const apiUrl = process.env.AUREON_API_URL || DEFAULT_API_BASE_URL;
|
|
9
|
+
const apiKey = process.env.AUREON_API_KEY || void 0;
|
|
10
|
+
const authToken = process.env.AUREON_AUTH_TOKEN || void 0;
|
|
11
|
+
if (!apiKey && !authToken) {
|
|
12
|
+
throw new Error(
|
|
13
|
+
"Set AUREON_API_KEY (issued developer key from app.aureonlabs.network Developers) or AUREON_AUTH_TOKEN (wallet Bearer). See https://github.com/buildaureon/aureon-mcp#authentication"
|
|
14
|
+
);
|
|
15
|
+
}
|
|
16
|
+
return { apiUrl, apiKey, authToken };
|
|
17
|
+
}
|
|
18
|
+
function createClient(config) {
|
|
19
|
+
const session = createSessionTokenProvider(config.authToken ?? null);
|
|
20
|
+
const client = createAureonClient({
|
|
21
|
+
baseUrl: config.apiUrl,
|
|
22
|
+
apiKey: config.apiKey ?? null,
|
|
23
|
+
getAccessToken: session.getAccessToken
|
|
24
|
+
});
|
|
25
|
+
return { client, session };
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// src/format.ts
|
|
29
|
+
function formatJson(data) {
|
|
30
|
+
return JSON.stringify(data, null, 2);
|
|
31
|
+
}
|
|
32
|
+
function errorText(err) {
|
|
33
|
+
if (isAureonError(err)) {
|
|
34
|
+
return `[${err.code}] ${err.message}`;
|
|
35
|
+
}
|
|
36
|
+
if (err instanceof Error) {
|
|
37
|
+
return err.message;
|
|
38
|
+
}
|
|
39
|
+
return String(err);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// src/tools/handler.ts
|
|
43
|
+
function ok(data) {
|
|
44
|
+
return { content: [{ type: "text", text: formatJson(data) }] };
|
|
45
|
+
}
|
|
46
|
+
function fail(err) {
|
|
47
|
+
return { content: [{ type: "text", text: errorText(err) }], isError: true };
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// src/tools/read.ts
|
|
51
|
+
function registerReadTools(server, client) {
|
|
52
|
+
server.tool("aureon_ping", "Health probe \u2014 confirms API connectivity", {}, async () => {
|
|
53
|
+
try {
|
|
54
|
+
return ok(await client.ping());
|
|
55
|
+
} catch (err) {
|
|
56
|
+
return fail(err);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
server.tool(
|
|
60
|
+
"aureon_get_overview",
|
|
61
|
+
"Dashboard overview \u2014 total AUM, objective count, aggregate health",
|
|
62
|
+
{},
|
|
63
|
+
async () => {
|
|
64
|
+
try {
|
|
65
|
+
return ok(await client.getOverview());
|
|
66
|
+
} catch (err) {
|
|
67
|
+
return fail(err);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
);
|
|
71
|
+
server.tool(
|
|
72
|
+
"aureon_get_portfolio",
|
|
73
|
+
"Current capital book snapshot \u2014 positions, marks, weights",
|
|
74
|
+
{},
|
|
75
|
+
async () => {
|
|
76
|
+
try {
|
|
77
|
+
return ok(await client.getPortfolio());
|
|
78
|
+
} catch (err) {
|
|
79
|
+
return fail(err);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
);
|
|
83
|
+
server.tool("aureon_list_objectives", "List all Financial Compass Objectives", {}, async () => {
|
|
84
|
+
try {
|
|
85
|
+
return ok(await client.listObjectives());
|
|
86
|
+
} catch (err) {
|
|
87
|
+
return fail(err);
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
server.tool(
|
|
91
|
+
"aureon_get_objective",
|
|
92
|
+
"Get a single objective by ID",
|
|
93
|
+
{ objectiveId: z.string().describe("The objective ID") },
|
|
94
|
+
async ({ objectiveId }) => {
|
|
95
|
+
try {
|
|
96
|
+
return ok(await client.getObjective(objectiveId));
|
|
97
|
+
} catch (err) {
|
|
98
|
+
return fail(err);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
);
|
|
102
|
+
server.tool(
|
|
103
|
+
"aureon_get_health",
|
|
104
|
+
"Health state for objectives \u2014 drift, breach status, policy compliance",
|
|
105
|
+
{ objectiveId: z.string().optional().describe("Filter by objective ID (omit for all)") },
|
|
106
|
+
async ({ objectiveId }) => {
|
|
107
|
+
try {
|
|
108
|
+
return ok(await client.getHealth(objectiveId));
|
|
109
|
+
} catch (err) {
|
|
110
|
+
return fail(err);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
);
|
|
114
|
+
server.tool(
|
|
115
|
+
"aureon_list_timeline",
|
|
116
|
+
"Timeline of events \u2014 objective changes, executions, health transitions",
|
|
117
|
+
{ objectiveId: z.string().optional().describe("Filter by objective ID (omit for all)") },
|
|
118
|
+
async ({ objectiveId }) => {
|
|
119
|
+
try {
|
|
120
|
+
return ok(await client.getTimeline(objectiveId));
|
|
121
|
+
} catch (err) {
|
|
122
|
+
return fail(err);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
);
|
|
126
|
+
server.tool(
|
|
127
|
+
"aureon_list_market_presets",
|
|
128
|
+
"Available market event simulation presets",
|
|
129
|
+
{},
|
|
130
|
+
async () => {
|
|
131
|
+
try {
|
|
132
|
+
return ok(await client.listMarketPresets());
|
|
133
|
+
} catch (err) {
|
|
134
|
+
return fail(err);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
);
|
|
138
|
+
}
|
|
139
|
+
function registerCompassTools(server, client) {
|
|
140
|
+
server.tool(
|
|
141
|
+
"aureon_get_restore_plan",
|
|
142
|
+
"Restore plan for an objective \u2014 proposed rebalance steps to return to policy",
|
|
143
|
+
{ objectiveId: z.string().describe("The objective ID") },
|
|
144
|
+
async ({ objectiveId }) => {
|
|
145
|
+
try {
|
|
146
|
+
return ok(await client.getRestorePlan(objectiveId));
|
|
147
|
+
} catch (err) {
|
|
148
|
+
return fail(err);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
);
|
|
152
|
+
server.tool(
|
|
153
|
+
"aureon_run_execution",
|
|
154
|
+
"Run restorative execution for an objective currently outside policy",
|
|
155
|
+
{ objectiveId: z.string().describe("The objective ID") },
|
|
156
|
+
async ({ objectiveId }) => {
|
|
157
|
+
try {
|
|
158
|
+
return ok(await client.runExecution(objectiveId));
|
|
159
|
+
} catch (err) {
|
|
160
|
+
return fail(err);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
);
|
|
164
|
+
server.tool(
|
|
165
|
+
"aureon_restore_objective",
|
|
166
|
+
"Run vault-backed restorative execution for an objective outside policy",
|
|
167
|
+
{ objectiveId: z.string().describe("The objective ID") },
|
|
168
|
+
async ({ objectiveId }) => {
|
|
169
|
+
try {
|
|
170
|
+
return ok(await client.restoreObjective(objectiveId));
|
|
171
|
+
} catch (err) {
|
|
172
|
+
return fail(err);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
);
|
|
176
|
+
server.tool(
|
|
177
|
+
"aureon_list_executions",
|
|
178
|
+
"Recent execution receipts \u2014 past restorative actions taken",
|
|
179
|
+
{ objectiveId: z.string().optional().describe("Filter by objective ID (omit for all)") },
|
|
180
|
+
async ({ objectiveId }) => {
|
|
181
|
+
try {
|
|
182
|
+
return ok(await client.listExecutions(objectiveId));
|
|
183
|
+
} catch (err) {
|
|
184
|
+
return fail(err);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
);
|
|
188
|
+
}
|
|
189
|
+
function registerVaultTools(server, client) {
|
|
190
|
+
server.tool(
|
|
191
|
+
"aureon_get_vault",
|
|
192
|
+
"Vault overview \u2014 balances, tokens, deposit history",
|
|
193
|
+
{},
|
|
194
|
+
async () => {
|
|
195
|
+
try {
|
|
196
|
+
return ok(await client.getVault());
|
|
197
|
+
} catch (err) {
|
|
198
|
+
return fail(err);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
);
|
|
202
|
+
server.tool(
|
|
203
|
+
"aureon_get_vault_status",
|
|
204
|
+
"Compact vault funding status \u2014 ready state before restore",
|
|
205
|
+
{},
|
|
206
|
+
async () => {
|
|
207
|
+
try {
|
|
208
|
+
return ok(await client.getVaultStatus());
|
|
209
|
+
} catch (err) {
|
|
210
|
+
return fail(err);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
);
|
|
214
|
+
server.tool(
|
|
215
|
+
"aureon_prepare_vault_deposit",
|
|
216
|
+
"Prepare unsigned vault deposit steps. Returns calldata only \u2014 the host must sign/broadcast with a wallet private key. API key alone cannot move funds.",
|
|
217
|
+
{
|
|
218
|
+
symbol: z.string().describe("Deposit symbol (ETH or allowlisted ERC-20)"),
|
|
219
|
+
amount: z.string().describe("Human-readable amount")
|
|
220
|
+
},
|
|
221
|
+
async ({ symbol, amount }) => {
|
|
222
|
+
try {
|
|
223
|
+
return ok(await client.prepareVaultDeposit({ symbol, amount }));
|
|
224
|
+
} catch (err) {
|
|
225
|
+
return fail(err);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
);
|
|
229
|
+
server.tool(
|
|
230
|
+
"aureon_prepare_vault_withdraw",
|
|
231
|
+
"Prepare unsigned vault withdraw steps. Returns calldata only \u2014 host must sign/broadcast. API key alone cannot move funds.",
|
|
232
|
+
{
|
|
233
|
+
symbol: z.string().optional().describe("Withdraw symbol (default WETH; not ETH)"),
|
|
234
|
+
amount: z.string().describe("Human-readable amount")
|
|
235
|
+
},
|
|
236
|
+
async ({ symbol, amount }) => {
|
|
237
|
+
try {
|
|
238
|
+
return ok(await client.prepareVaultWithdraw({ symbol, amount }));
|
|
239
|
+
} catch (err) {
|
|
240
|
+
return fail(err);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
);
|
|
244
|
+
}
|
|
245
|
+
function registerAuthTools(server, client, session) {
|
|
246
|
+
server.tool(
|
|
247
|
+
"aureon_get_auth_nonce",
|
|
248
|
+
"Request a wallet auth nonce/message for EIP-191 signing (optional \u2014 issued API keys usually skip this)",
|
|
249
|
+
{ address: z.string().describe("Wallet address (0x\u2026)") },
|
|
250
|
+
async ({ address }) => {
|
|
251
|
+
try {
|
|
252
|
+
return ok(await client.getAuthNonce(address));
|
|
253
|
+
} catch (err) {
|
|
254
|
+
return fail(err);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
);
|
|
258
|
+
server.tool(
|
|
259
|
+
"aureon_verify_wallet",
|
|
260
|
+
"Verify a wallet signature and store the Bearer session for later tools in this MCP process",
|
|
261
|
+
{
|
|
262
|
+
address: z.string().describe("Wallet address"),
|
|
263
|
+
message: z.string().describe("Signed message from get_auth_nonce"),
|
|
264
|
+
signature: z.string().describe("Wallet signature hex"),
|
|
265
|
+
inviteCode: z.string().optional().describe("Invite code if required on first login")
|
|
266
|
+
},
|
|
267
|
+
async ({ address, message, signature, inviteCode }) => {
|
|
268
|
+
try {
|
|
269
|
+
const login = await client.verifyWallet({
|
|
270
|
+
address,
|
|
271
|
+
message,
|
|
272
|
+
signature,
|
|
273
|
+
inviteCode
|
|
274
|
+
});
|
|
275
|
+
session.setToken(login.token);
|
|
276
|
+
return ok(login);
|
|
277
|
+
} catch (err) {
|
|
278
|
+
return fail(err);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
);
|
|
282
|
+
server.tool(
|
|
283
|
+
"aureon_dev_login",
|
|
284
|
+
"Local preview login without wallet signature (requires AUREON_ALLOW_DEV_LOGIN=1 on API \u2014 not production)",
|
|
285
|
+
{},
|
|
286
|
+
async () => {
|
|
287
|
+
try {
|
|
288
|
+
const login = await client.devLogin();
|
|
289
|
+
session.setToken(login.token);
|
|
290
|
+
return ok(login);
|
|
291
|
+
} catch (err) {
|
|
292
|
+
return fail(err);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
);
|
|
296
|
+
server.tool(
|
|
297
|
+
"aureon_logout",
|
|
298
|
+
"Revoke the current Bearer session and clear the in-process token",
|
|
299
|
+
{},
|
|
300
|
+
async () => {
|
|
301
|
+
try {
|
|
302
|
+
const result = await client.logout();
|
|
303
|
+
session.clear();
|
|
304
|
+
return ok(result);
|
|
305
|
+
} catch (err) {
|
|
306
|
+
return fail(err);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
);
|
|
310
|
+
server.tool(
|
|
311
|
+
"aureon_me",
|
|
312
|
+
"Return the wallet bound to the issued API key or current Bearer session",
|
|
313
|
+
{},
|
|
314
|
+
async () => {
|
|
315
|
+
try {
|
|
316
|
+
return ok(await client.me());
|
|
317
|
+
} catch (err) {
|
|
318
|
+
return fail(err);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
);
|
|
322
|
+
}
|
|
323
|
+
var objectiveKind = z.enum([
|
|
324
|
+
"stable_allocation",
|
|
325
|
+
"balanced_portfolio",
|
|
326
|
+
"risk_ceiling",
|
|
327
|
+
"reward_reinvestment"
|
|
328
|
+
]);
|
|
329
|
+
var objectivePriority = z.enum(["low", "medium", "high", "critical"]);
|
|
330
|
+
var automationMode = z.enum(["auto", "manual"]);
|
|
331
|
+
function registerObjectiveTools(server, client) {
|
|
332
|
+
server.tool(
|
|
333
|
+
"aureon_create_objective",
|
|
334
|
+
"Create a Financial Compass Objective. targetSymbol and automationMode are locked after create \u2014 recreate to change them. Defaults to automationMode auto.",
|
|
335
|
+
{
|
|
336
|
+
name: z.string().describe("Objective display name"),
|
|
337
|
+
kind: objectiveKind.describe("Objective kind"),
|
|
338
|
+
targetWeight: z.number().describe("Target portfolio weight (0\u20131)"),
|
|
339
|
+
tolerance: z.number().describe("Allowed drift band (0\u20131)"),
|
|
340
|
+
priority: objectivePriority.optional().describe("Evaluation priority"),
|
|
341
|
+
maxRiskScore: z.number().optional().describe("Max risk score ceiling"),
|
|
342
|
+
reinvestRatio: z.number().optional().describe("Reinvest ratio for reward objectives"),
|
|
343
|
+
targetSymbol: z.string().nullable().optional().describe("Asset symbol to track (locked after create)"),
|
|
344
|
+
automationMode: automationMode.optional().describe("auto = keeper vault restore; manual = operator Approve (locked after create)")
|
|
345
|
+
},
|
|
346
|
+
async (input) => {
|
|
347
|
+
try {
|
|
348
|
+
return ok(await client.createObjective(input));
|
|
349
|
+
} catch (err) {
|
|
350
|
+
return fail(err);
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
);
|
|
354
|
+
server.tool(
|
|
355
|
+
"aureon_update_objective",
|
|
356
|
+
"Partial update (name, weight, tolerance, priority). Cannot change targetSymbol or automationMode \u2014 recreate instead.",
|
|
357
|
+
{
|
|
358
|
+
objectiveId: z.string().describe("Objective ID"),
|
|
359
|
+
name: z.string().optional(),
|
|
360
|
+
priority: objectivePriority.optional(),
|
|
361
|
+
targetWeight: z.number().optional(),
|
|
362
|
+
tolerance: z.number().optional(),
|
|
363
|
+
maxRiskScore: z.number().optional(),
|
|
364
|
+
reinvestRatio: z.number().optional()
|
|
365
|
+
},
|
|
366
|
+
async ({ objectiveId, ...input }) => {
|
|
367
|
+
try {
|
|
368
|
+
return ok(await client.updateObjective(objectiveId, input));
|
|
369
|
+
} catch (err) {
|
|
370
|
+
return fail(err);
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
);
|
|
374
|
+
server.tool(
|
|
375
|
+
"aureon_pause_objective",
|
|
376
|
+
"Pause continuous evaluation for an objective",
|
|
377
|
+
{ objectiveId: z.string().describe("Objective ID") },
|
|
378
|
+
async ({ objectiveId }) => {
|
|
379
|
+
try {
|
|
380
|
+
return ok(await client.pauseObjective(objectiveId));
|
|
381
|
+
} catch (err) {
|
|
382
|
+
return fail(err);
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
);
|
|
386
|
+
server.tool(
|
|
387
|
+
"aureon_resume_objective",
|
|
388
|
+
"Resume evaluation for a paused objective",
|
|
389
|
+
{ objectiveId: z.string().describe("Objective ID") },
|
|
390
|
+
async ({ objectiveId }) => {
|
|
391
|
+
try {
|
|
392
|
+
return ok(await client.resumeObjective(objectiveId));
|
|
393
|
+
} catch (err) {
|
|
394
|
+
return fail(err);
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
);
|
|
398
|
+
}
|
|
399
|
+
var positionInput = z.object({
|
|
400
|
+
symbol: z.string(),
|
|
401
|
+
name: z.string(),
|
|
402
|
+
category: z.enum(["stable", "stock_token", "gas", "other"]),
|
|
403
|
+
quantity: z.number(),
|
|
404
|
+
markPriceUsd: z.number()
|
|
405
|
+
});
|
|
406
|
+
function registerPortfolioTools(server, client) {
|
|
407
|
+
server.tool(
|
|
408
|
+
"aureon_set_portfolio",
|
|
409
|
+
"Replace the wallet capital book with provided positions",
|
|
410
|
+
{
|
|
411
|
+
positions: z.array(positionInput).min(1).describe("Portfolio position rows")
|
|
412
|
+
},
|
|
413
|
+
async ({ positions }) => {
|
|
414
|
+
try {
|
|
415
|
+
return ok(await client.setPortfolio(positions));
|
|
416
|
+
} catch (err) {
|
|
417
|
+
return fail(err);
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
);
|
|
421
|
+
server.tool(
|
|
422
|
+
"aureon_clear_portfolio",
|
|
423
|
+
"Clear all capital-book positions for the authenticated wallet",
|
|
424
|
+
{},
|
|
425
|
+
async () => {
|
|
426
|
+
try {
|
|
427
|
+
return ok(await client.clearPortfolio());
|
|
428
|
+
} catch (err) {
|
|
429
|
+
return fail(err);
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
);
|
|
433
|
+
server.tool(
|
|
434
|
+
"aureon_sync_portfolio",
|
|
435
|
+
"Replace the capital book with on-chain balances for the session wallet",
|
|
436
|
+
{},
|
|
437
|
+
async () => {
|
|
438
|
+
try {
|
|
439
|
+
return ok(await client.syncPortfolio());
|
|
440
|
+
} catch (err) {
|
|
441
|
+
return fail(err);
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
);
|
|
445
|
+
}
|
|
446
|
+
function registerMarketTools(server, client) {
|
|
447
|
+
server.tool(
|
|
448
|
+
"aureon_apply_market_event",
|
|
449
|
+
"Apply a controlled market event to portfolio marks; optionally auto-restore",
|
|
450
|
+
{
|
|
451
|
+
symbol: z.string().describe("Asset symbol to shock"),
|
|
452
|
+
priceChangeRatio: z.number().describe("Fractional price change (e.g. -0.15 = -15%)"),
|
|
453
|
+
name: z.string().optional().describe("Event label"),
|
|
454
|
+
description: z.string().optional().describe("Event description"),
|
|
455
|
+
autoRestore: z.boolean().optional().describe("Run restorative execution if objectives breach")
|
|
456
|
+
},
|
|
457
|
+
async (input) => {
|
|
458
|
+
try {
|
|
459
|
+
return ok(await client.applyMarketEvent(input));
|
|
460
|
+
} catch (err) {
|
|
461
|
+
return fail(err);
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
);
|
|
465
|
+
server.tool(
|
|
466
|
+
"aureon_refresh_watchdog",
|
|
467
|
+
"Refresh portfolio marks from live data and re-evaluate objectives",
|
|
468
|
+
{},
|
|
469
|
+
async () => {
|
|
470
|
+
try {
|
|
471
|
+
return ok(await client.refreshWatchdog());
|
|
472
|
+
} catch (err) {
|
|
473
|
+
return fail(err);
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
);
|
|
477
|
+
}
|
|
478
|
+
function registerDeveloperTools(server, client) {
|
|
479
|
+
server.tool("aureon_list_api_keys", "List SDK API keys for the authenticated wallet", {}, async () => {
|
|
480
|
+
try {
|
|
481
|
+
return ok(await client.listApiKeys());
|
|
482
|
+
} catch (err) {
|
|
483
|
+
return fail(err);
|
|
484
|
+
}
|
|
485
|
+
});
|
|
486
|
+
server.tool(
|
|
487
|
+
"aureon_create_api_key",
|
|
488
|
+
"Create an SDK API key (secret returned once \u2014 store immediately)",
|
|
489
|
+
{ name: z.string().min(2).describe("Key display name") },
|
|
490
|
+
async ({ name }) => {
|
|
491
|
+
try {
|
|
492
|
+
return ok(await client.createApiKey(name));
|
|
493
|
+
} catch (err) {
|
|
494
|
+
return fail(err);
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
);
|
|
498
|
+
server.tool(
|
|
499
|
+
"aureon_revoke_api_key",
|
|
500
|
+
"Revoke (delete) an SDK API key",
|
|
501
|
+
{ keyId: z.string().describe("API key ID") },
|
|
502
|
+
async ({ keyId }) => {
|
|
503
|
+
try {
|
|
504
|
+
return ok(await client.revokeApiKey(keyId));
|
|
505
|
+
} catch (err) {
|
|
506
|
+
return fail(err);
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
);
|
|
510
|
+
server.tool(
|
|
511
|
+
"aureon_toggle_api_key",
|
|
512
|
+
"Toggle active/paused status of an SDK API key",
|
|
513
|
+
{ keyId: z.string().describe("API key ID") },
|
|
514
|
+
async ({ keyId }) => {
|
|
515
|
+
try {
|
|
516
|
+
return ok(await client.toggleApiKey(keyId));
|
|
517
|
+
} catch (err) {
|
|
518
|
+
return fail(err);
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
);
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
// src/tools/index.ts
|
|
525
|
+
function registerTools(server, client, session) {
|
|
526
|
+
registerReadTools(server, client);
|
|
527
|
+
registerCompassTools(server, client);
|
|
528
|
+
registerVaultTools(server, client);
|
|
529
|
+
registerAuthTools(server, client, session);
|
|
530
|
+
registerObjectiveTools(server, client);
|
|
531
|
+
registerPortfolioTools(server, client);
|
|
532
|
+
registerMarketTools(server, client);
|
|
533
|
+
registerDeveloperTools(server, client);
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
// src/server.ts
|
|
537
|
+
async function startServer() {
|
|
538
|
+
const config = loadConfig();
|
|
539
|
+
const { client, session } = createClient(config);
|
|
540
|
+
const server = new McpServer({
|
|
541
|
+
name: "aureon",
|
|
542
|
+
version: "0.1.1"
|
|
543
|
+
});
|
|
544
|
+
registerTools(server, client, session);
|
|
545
|
+
const transport = new StdioServerTransport();
|
|
546
|
+
await server.connect(transport);
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
// src/index.ts
|
|
550
|
+
startServer().catch((err) => {
|
|
551
|
+
process.stderr.write(`aureon-mcp fatal: ${err}
|
|
552
|
+
`);
|
|
553
|
+
process.exit(1);
|
|
554
|
+
});
|
|
555
|
+
|
|
556
|
+
export { startServer };
|
|
557
|
+
//# sourceMappingURL=index.js.map
|
|
558
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/config.ts","../src/client.ts","../src/format.ts","../src/errors.ts","../src/tools/handler.ts","../src/tools/read.ts","../src/tools/compass.ts","../src/tools/vault.ts","../src/tools/auth.ts","../src/tools/objectives.ts","../src/tools/portfolio.ts","../src/tools/market.ts","../src/tools/developer.ts","../src/tools/index.ts","../src/server.ts","../src/index.ts"],"names":["z"],"mappings":"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","file":"index.js","sourcesContent":["/**\r\n * @fileoverview MCP process configuration from environment.\r\n *\r\n * Prefer an **issued** developer API key from the Operator Console (Developers page).\r\n * That key identifies the bound wallet for control-plane tools — no Bearer required.\r\n * `AUREON_AUTH_TOKEN` is optional (utility-style session, or when using env bootstrap keys).\r\n */\r\n\r\nimport { DEFAULT_API_BASE_URL } from \"@buildaureon/sdk\";\r\n\r\nexport interface McpConfig {\r\n apiUrl: string;\r\n apiKey: string | undefined;\r\n authToken: string | undefined;\r\n}\r\n\r\nexport function loadConfig(): McpConfig {\r\n const apiUrl = process.env.AUREON_API_URL || DEFAULT_API_BASE_URL;\r\n const apiKey = process.env.AUREON_API_KEY || undefined;\r\n const authToken = process.env.AUREON_AUTH_TOKEN || undefined;\r\n\r\n if (!apiKey && !authToken) {\r\n throw new Error(\r\n \"Set AUREON_API_KEY (issued developer key from app.aureonlabs.network Developers) \" +\r\n \"or AUREON_AUTH_TOKEN (wallet Bearer). \" +\r\n \"See https://github.com/buildaureon/aureon-mcp#authentication\"\r\n );\r\n }\r\n\r\n return { apiUrl, apiKey, authToken };\r\n}\r\n","/**\r\n * @fileoverview Builds the shared AureonClient for MCP tool handlers.\r\n */\r\n\r\nimport {\r\n createAureonClient,\r\n createSessionTokenProvider,\r\n type AureonClient,\r\n type SessionTokenProvider,\r\n} from \"@buildaureon/sdk\";\r\nimport type { McpConfig } from \"./config.js\";\r\n\r\nexport type McpClientBundle = {\r\n client: AureonClient;\r\n session: SessionTokenProvider;\r\n};\r\n\r\nexport function createClient(config: McpConfig): McpClientBundle {\r\n const session = createSessionTokenProvider(config.authToken ?? null);\r\n const client = createAureonClient({\r\n baseUrl: config.apiUrl,\r\n apiKey: config.apiKey ?? null,\r\n getAccessToken: session.getAccessToken,\r\n });\r\n return { client, session };\r\n}\r\n","export function formatJson(data: unknown): string {\r\n return JSON.stringify(data, null, 2);\r\n}\r\n","import { isAureonError } from \"@buildaureon/sdk\";\r\n\r\nexport function errorText(err: unknown): string {\r\n if (isAureonError(err)) {\r\n return `[${err.code}] ${err.message}`;\r\n }\r\n if (err instanceof Error) {\r\n return err.message;\r\n }\r\n return String(err);\r\n}\r\n","import { formatJson } from \"../format.js\";\r\nimport { errorText } from \"../errors.js\";\r\n\r\nexport function ok(data: unknown) {\r\n return { content: [{ type: \"text\" as const, text: formatJson(data) }] };\r\n}\r\n\r\nexport function fail(err: unknown) {\r\n return { content: [{ type: \"text\" as const, text: errorText(err) }], isError: true };\r\n}\r\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\r\nimport type { AureonClient } from \"@buildaureon/sdk\";\r\nimport { z } from \"zod\";\r\nimport { fail, ok } from \"./handler.js\";\r\n\r\nexport function registerReadTools(server: McpServer, client: AureonClient) {\r\n server.tool(\"aureon_ping\", \"Health probe — confirms API connectivity\", {}, async () => {\r\n try {\r\n return ok(await client.ping());\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n });\r\n\r\n server.tool(\r\n \"aureon_get_overview\",\r\n \"Dashboard overview — total AUM, objective count, aggregate health\",\r\n {},\r\n async () => {\r\n try {\r\n return ok(await client.getOverview());\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_get_portfolio\",\r\n \"Current capital book snapshot — positions, marks, weights\",\r\n {},\r\n async () => {\r\n try {\r\n return ok(await client.getPortfolio());\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\"aureon_list_objectives\", \"List all Financial Compass Objectives\", {}, async () => {\r\n try {\r\n return ok(await client.listObjectives());\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n });\r\n\r\n server.tool(\r\n \"aureon_get_objective\",\r\n \"Get a single objective by ID\",\r\n { objectiveId: z.string().describe(\"The objective ID\") },\r\n async ({ objectiveId }) => {\r\n try {\r\n return ok(await client.getObjective(objectiveId));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_get_health\",\r\n \"Health state for objectives — drift, breach status, policy compliance\",\r\n { objectiveId: z.string().optional().describe(\"Filter by objective ID (omit for all)\") },\r\n async ({ objectiveId }) => {\r\n try {\r\n return ok(await client.getHealth(objectiveId));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_list_timeline\",\r\n \"Timeline of events — objective changes, executions, health transitions\",\r\n { objectiveId: z.string().optional().describe(\"Filter by objective ID (omit for all)\") },\r\n async ({ objectiveId }) => {\r\n try {\r\n return ok(await client.getTimeline(objectiveId));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_list_market_presets\",\r\n \"Available market event simulation presets\",\r\n {},\r\n async () => {\r\n try {\r\n return ok(await client.listMarketPresets());\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n}\r\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\r\nimport type { AureonClient } from \"@buildaureon/sdk\";\r\nimport { z } from \"zod\";\r\nimport { fail, ok } from \"./handler.js\";\r\n\r\nexport function registerCompassTools(server: McpServer, client: AureonClient) {\r\n server.tool(\r\n \"aureon_get_restore_plan\",\r\n \"Restore plan for an objective — proposed rebalance steps to return to policy\",\r\n { objectiveId: z.string().describe(\"The objective ID\") },\r\n async ({ objectiveId }) => {\r\n try {\r\n return ok(await client.getRestorePlan(objectiveId));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_run_execution\",\r\n \"Run restorative execution for an objective currently outside policy\",\r\n { objectiveId: z.string().describe(\"The objective ID\") },\r\n async ({ objectiveId }) => {\r\n try {\r\n return ok(await client.runExecution(objectiveId));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_restore_objective\",\r\n \"Run vault-backed restorative execution for an objective outside policy\",\r\n { objectiveId: z.string().describe(\"The objective ID\") },\r\n async ({ objectiveId }) => {\r\n try {\r\n return ok(await client.restoreObjective(objectiveId));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_list_executions\",\r\n \"Recent execution receipts — past restorative actions taken\",\r\n { objectiveId: z.string().optional().describe(\"Filter by objective ID (omit for all)\") },\r\n async ({ objectiveId }) => {\r\n try {\r\n return ok(await client.listExecutions(objectiveId));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n}\r\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\r\nimport type { AureonClient } from \"@buildaureon/sdk\";\r\nimport { z } from \"zod\";\r\nimport { fail, ok } from \"./handler.js\";\r\n\r\nexport function registerVaultTools(server: McpServer, client: AureonClient) {\r\n server.tool(\r\n \"aureon_get_vault\",\r\n \"Vault overview — balances, tokens, deposit history\",\r\n {},\r\n async () => {\r\n try {\r\n return ok(await client.getVault());\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_get_vault_status\",\r\n \"Compact vault funding status — ready state before restore\",\r\n {},\r\n async () => {\r\n try {\r\n return ok(await client.getVaultStatus());\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_prepare_vault_deposit\",\r\n \"Prepare unsigned vault deposit steps. Returns calldata only — the host must sign/broadcast with a wallet private key. API key alone cannot move funds.\",\r\n {\r\n symbol: z.string().describe(\"Deposit symbol (ETH or allowlisted ERC-20)\"),\r\n amount: z.string().describe(\"Human-readable amount\"),\r\n },\r\n async ({ symbol, amount }) => {\r\n try {\r\n return ok(await client.prepareVaultDeposit({ symbol, amount }));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_prepare_vault_withdraw\",\r\n \"Prepare unsigned vault withdraw steps. Returns calldata only — host must sign/broadcast. API key alone cannot move funds.\",\r\n {\r\n symbol: z.string().optional().describe(\"Withdraw symbol (default WETH; not ETH)\"),\r\n amount: z.string().describe(\"Human-readable amount\"),\r\n },\r\n async ({ symbol, amount }) => {\r\n try {\r\n return ok(await client.prepareVaultWithdraw({ symbol, amount }));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n}\r\n","/**\r\n * @fileoverview Auth tools — wallet handshake is optional for MCP.\r\n *\r\n * Recommended path: issued AUREON_API_KEY identifies the wallet.\r\n * verify_wallet / dev_login update the in-process session provider when used.\r\n */\r\n\r\nimport type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\r\nimport type { AureonClient, SessionTokenProvider } from \"@buildaureon/sdk\";\r\nimport { z } from \"zod\";\r\nimport { fail, ok } from \"./handler.js\";\r\n\r\nexport function registerAuthTools(\r\n server: McpServer,\r\n client: AureonClient,\r\n session: SessionTokenProvider\r\n) {\r\n server.tool(\r\n \"aureon_get_auth_nonce\",\r\n \"Request a wallet auth nonce/message for EIP-191 signing (optional — issued API keys usually skip this)\",\r\n { address: z.string().describe(\"Wallet address (0x…)\") },\r\n async ({ address }) => {\r\n try {\r\n return ok(await client.getAuthNonce(address));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_verify_wallet\",\r\n \"Verify a wallet signature and store the Bearer session for later tools in this MCP process\",\r\n {\r\n address: z.string().describe(\"Wallet address\"),\r\n message: z.string().describe(\"Signed message from get_auth_nonce\"),\r\n signature: z.string().describe(\"Wallet signature hex\"),\r\n inviteCode: z.string().optional().describe(\"Invite code if required on first login\"),\r\n },\r\n async ({ address, message, signature, inviteCode }) => {\r\n try {\r\n const login = await client.verifyWallet({\r\n address,\r\n message,\r\n signature,\r\n inviteCode,\r\n });\r\n session.setToken(login.token);\r\n return ok(login);\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_dev_login\",\r\n \"Local preview login without wallet signature (requires AUREON_ALLOW_DEV_LOGIN=1 on API — not production)\",\r\n {},\r\n async () => {\r\n try {\r\n const login = await client.devLogin();\r\n session.setToken(login.token);\r\n return ok(login);\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_logout\",\r\n \"Revoke the current Bearer session and clear the in-process token\",\r\n {},\r\n async () => {\r\n try {\r\n const result = await client.logout();\r\n session.clear();\r\n return ok(result);\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_me\",\r\n \"Return the wallet bound to the issued API key or current Bearer session\",\r\n {},\r\n async () => {\r\n try {\r\n return ok(await client.me());\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n}\r\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\r\nimport type { AureonClient } from \"@buildaureon/sdk\";\r\nimport { z } from \"zod\";\r\nimport { fail, ok } from \"./handler.js\";\r\n\r\nconst objectiveKind = z.enum([\r\n \"stable_allocation\",\r\n \"balanced_portfolio\",\r\n \"risk_ceiling\",\r\n \"reward_reinvestment\",\r\n]);\r\n\r\nconst objectivePriority = z.enum([\"low\", \"medium\", \"high\", \"critical\"]);\r\n\r\nconst automationMode = z.enum([\"auto\", \"manual\"]);\r\n\r\nexport function registerObjectiveTools(server: McpServer, client: AureonClient) {\r\n server.tool(\r\n \"aureon_create_objective\",\r\n \"Create a Financial Compass Objective. targetSymbol and automationMode are locked after create — recreate to change them. Defaults to automationMode auto.\",\r\n {\r\n name: z.string().describe(\"Objective display name\"),\r\n kind: objectiveKind.describe(\"Objective kind\"),\r\n targetWeight: z.number().describe(\"Target portfolio weight (0–1)\"),\r\n tolerance: z.number().describe(\"Allowed drift band (0–1)\"),\r\n priority: objectivePriority.optional().describe(\"Evaluation priority\"),\r\n maxRiskScore: z.number().optional().describe(\"Max risk score ceiling\"),\r\n reinvestRatio: z\r\n .number()\r\n .optional()\r\n .describe(\"Reinvest ratio for reward objectives\"),\r\n targetSymbol: z\r\n .string()\r\n .nullable()\r\n .optional()\r\n .describe(\"Asset symbol to track (locked after create)\"),\r\n automationMode: automationMode\r\n .optional()\r\n .describe(\"auto = keeper vault restore; manual = operator Approve (locked after create)\"),\r\n },\r\n async (input) => {\r\n try {\r\n return ok(await client.createObjective(input));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_update_objective\",\r\n \"Partial update (name, weight, tolerance, priority). Cannot change targetSymbol or automationMode — recreate instead.\",\r\n {\r\n objectiveId: z.string().describe(\"Objective ID\"),\r\n name: z.string().optional(),\r\n priority: objectivePriority.optional(),\r\n targetWeight: z.number().optional(),\r\n tolerance: z.number().optional(),\r\n maxRiskScore: z.number().optional(),\r\n reinvestRatio: z.number().optional(),\r\n },\r\n async ({ objectiveId, ...input }) => {\r\n try {\r\n return ok(await client.updateObjective(objectiveId, input));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_pause_objective\",\r\n \"Pause continuous evaluation for an objective\",\r\n { objectiveId: z.string().describe(\"Objective ID\") },\r\n async ({ objectiveId }) => {\r\n try {\r\n return ok(await client.pauseObjective(objectiveId));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_resume_objective\",\r\n \"Resume evaluation for a paused objective\",\r\n { objectiveId: z.string().describe(\"Objective ID\") },\r\n async ({ objectiveId }) => {\r\n try {\r\n return ok(await client.resumeObjective(objectiveId));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n}\r\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\r\nimport type { AureonClient } from \"@buildaureon/sdk\";\r\nimport { z } from \"zod\";\r\nimport { fail, ok } from \"./handler.js\";\r\n\r\nconst positionInput = z.object({\r\n symbol: z.string(),\r\n name: z.string(),\r\n category: z.enum([\"stable\", \"stock_token\", \"gas\", \"other\"]),\r\n quantity: z.number(),\r\n markPriceUsd: z.number(),\r\n});\r\n\r\nexport function registerPortfolioTools(server: McpServer, client: AureonClient) {\r\n server.tool(\r\n \"aureon_set_portfolio\",\r\n \"Replace the wallet capital book with provided positions\",\r\n {\r\n positions: z.array(positionInput).min(1).describe(\"Portfolio position rows\"),\r\n },\r\n async ({ positions }) => {\r\n try {\r\n return ok(await client.setPortfolio(positions));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_clear_portfolio\",\r\n \"Clear all capital-book positions for the authenticated wallet\",\r\n {},\r\n async () => {\r\n try {\r\n return ok(await client.clearPortfolio());\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_sync_portfolio\",\r\n \"Replace the capital book with on-chain balances for the session wallet\",\r\n {},\r\n async () => {\r\n try {\r\n return ok(await client.syncPortfolio());\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n}\r\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\r\nimport type { AureonClient } from \"@buildaureon/sdk\";\r\nimport { z } from \"zod\";\r\nimport { fail, ok } from \"./handler.js\";\r\n\r\nexport function registerMarketTools(server: McpServer, client: AureonClient) {\r\n server.tool(\r\n \"aureon_apply_market_event\",\r\n \"Apply a controlled market event to portfolio marks; optionally auto-restore\",\r\n {\r\n symbol: z.string().describe(\"Asset symbol to shock\"),\r\n priceChangeRatio: z.number().describe(\"Fractional price change (e.g. -0.15 = -15%)\"),\r\n name: z.string().optional().describe(\"Event label\"),\r\n description: z.string().optional().describe(\"Event description\"),\r\n autoRestore: z.boolean().optional().describe(\"Run restorative execution if objectives breach\"),\r\n },\r\n async (input) => {\r\n try {\r\n return ok(await client.applyMarketEvent(input));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_refresh_watchdog\",\r\n \"Refresh portfolio marks from live data and re-evaluate objectives\",\r\n {},\r\n async () => {\r\n try {\r\n return ok(await client.refreshWatchdog());\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n}\r\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\r\nimport type { AureonClient } from \"@buildaureon/sdk\";\r\nimport { z } from \"zod\";\r\nimport { fail, ok } from \"./handler.js\";\r\n\r\nexport function registerDeveloperTools(server: McpServer, client: AureonClient) {\r\n server.tool(\"aureon_list_api_keys\", \"List SDK API keys for the authenticated wallet\", {}, async () => {\r\n try {\r\n return ok(await client.listApiKeys());\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n });\r\n\r\n server.tool(\r\n \"aureon_create_api_key\",\r\n \"Create an SDK API key (secret returned once — store immediately)\",\r\n { name: z.string().min(2).describe(\"Key display name\") },\r\n async ({ name }) => {\r\n try {\r\n return ok(await client.createApiKey(name));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_revoke_api_key\",\r\n \"Revoke (delete) an SDK API key\",\r\n { keyId: z.string().describe(\"API key ID\") },\r\n async ({ keyId }) => {\r\n try {\r\n return ok(await client.revokeApiKey(keyId));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_toggle_api_key\",\r\n \"Toggle active/paused status of an SDK API key\",\r\n { keyId: z.string().describe(\"API key ID\") },\r\n async ({ keyId }) => {\r\n try {\r\n return ok(await client.toggleApiKey(keyId));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n}\r\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\r\nimport type { AureonClient, SessionTokenProvider } from \"@buildaureon/sdk\";\r\nimport { registerReadTools } from \"./read.js\";\r\nimport { registerCompassTools } from \"./compass.js\";\r\nimport { registerVaultTools } from \"./vault.js\";\r\nimport { registerAuthTools } from \"./auth.js\";\r\nimport { registerObjectiveTools } from \"./objectives.js\";\r\nimport { registerPortfolioTools } from \"./portfolio.js\";\r\nimport { registerMarketTools } from \"./market.js\";\r\nimport { registerDeveloperTools } from \"./developer.js\";\r\nimport { SDK_TOOL_NAMES, TOOL_COUNT } from \"./catalog.js\";\r\n\r\nexport { SDK_TOOL_NAMES, TOOL_COUNT };\r\n\r\n/** All AureonClient SDK methods exposed as MCP tools. */\r\nexport function registerTools(\r\n server: McpServer,\r\n client: AureonClient,\r\n session: SessionTokenProvider\r\n) {\r\n registerReadTools(server, client);\r\n registerCompassTools(server, client);\r\n registerVaultTools(server, client);\r\n registerAuthTools(server, client, session);\r\n registerObjectiveTools(server, client);\r\n registerPortfolioTools(server, client);\r\n registerMarketTools(server, client);\r\n registerDeveloperTools(server, client);\r\n}\r\n","import { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\r\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\r\nimport { loadConfig } from \"./config.js\";\r\nimport { createClient } from \"./client.js\";\r\nimport { registerTools } from \"./tools/index.js\";\r\n\r\nexport async function startServer() {\r\n const config = loadConfig();\r\n const { client, session } = createClient(config);\r\n\r\n const server = new McpServer({\r\n name: \"aureon\",\r\n version: \"0.1.1\",\r\n });\r\n\r\n registerTools(server, client, session);\r\n\r\n const transport = new StdioServerTransport();\r\n await server.connect(transport);\r\n}\r\n","import { startServer } from \"./server.js\";\r\n\r\nexport { startServer } from \"./server.js\";\r\n\r\nstartServer().catch((err: unknown) => {\r\n process.stderr.write(`aureon-mcp fatal: ${err}\\n`);\r\n process.exit(1);\r\n});\r\n"]}
|