@buildaureon/mcp 0.1.7 → 0.1.8
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 +17 -15
- package/dist/index.js +11 -4
- package/dist/index.js.map +1 -1
- package/docs/agent-guide.md +6 -6
- package/docs/architecture.md +7 -7
- package/docs/auth.md +13 -11
- package/docs/security.md +5 -5
- package/docs/setup.md +15 -14
- package/docs/tools.md +4 -4
- package/examples/claude-desktop.json +0 -1
- package/examples/cursor.mcp.json +0 -1
- package/package.json +66 -63
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@ Exposes the full `@buildaureon/sdk` surface as tools for Cursor, Claude Desktop,
|
|
|
11
11
|
|
|
12
12
|
[](https://www.typescriptlang.org/)
|
|
13
13
|
[](https://modelcontextprotocol.io)
|
|
14
|
-
[](https://github.com/buildaureon)
|
|
15
15
|
[](LICENSE)
|
|
16
16
|
[](#requirements--installation)
|
|
17
17
|
|
|
@@ -86,8 +86,8 @@ Traditional AI trading scripts execute isolated market orders without context, f
|
|
|
86
86
|
### Requirements
|
|
87
87
|
|
|
88
88
|
- **Node.js**: 20 or higher (ESM compatible)
|
|
89
|
-
- **Developer API Key**:
|
|
90
|
-
- **Network Access**:
|
|
89
|
+
- **Developer API Key**: Issued on the **same** API you will call (local 5174 Developers for 8788 / 4663, or [app.aureonlabs.network](https://app.aureonlabs.network) for the public host — still 46630)
|
|
90
|
+
- **Network Access**: Default local mainnet `http://127.0.0.1:8788`. Optional `AUREON_NETWORK=testnet` for `https://api.aureonlabs.network` (still 46630)
|
|
91
91
|
|
|
92
92
|
### Installation
|
|
93
93
|
|
|
@@ -102,7 +102,7 @@ npm install @buildaureon/mcp
|
|
|
102
102
|
npx -y @buildaureon/mcp
|
|
103
103
|
```
|
|
104
104
|
|
|
105
|
-
You do not need to clone the AUREON monorepo: only the package
|
|
105
|
+
You do not need to clone the AUREON monorepo: only the package and an issued key for the network you will call.
|
|
106
106
|
|
|
107
107
|
---
|
|
108
108
|
|
|
@@ -112,9 +112,10 @@ You do not need to clone the AUREON monorepo: only the package, the live API URL
|
|
|
112
112
|
flowchart LR
|
|
113
113
|
Agent[Cursor / Claude] -->|stdio MCP| MCP["@buildaureon/mcp"]
|
|
114
114
|
MCP --> SDK["@buildaureon/sdk"]
|
|
115
|
-
SDK -->|
|
|
116
|
-
|
|
117
|
-
|
|
115
|
+
SDK -->|default| Main[127.0.0.1:8788 / 4663]
|
|
116
|
+
SDK -->|AUREON_NETWORK=testnet| Test[api.aureonlabs.network / still 46630]
|
|
117
|
+
Main --> Vault[Smart Vault]
|
|
118
|
+
Test --> Vault
|
|
118
119
|
```
|
|
119
120
|
|
|
120
121
|
### Surface & Ownership Breakdown
|
|
@@ -145,11 +146,13 @@ Get your AI agent running with AUREON MCP in 4 easy steps:
|
|
|
145
146
|
|
|
146
147
|
### 1. Create an issued API key
|
|
147
148
|
|
|
148
|
-
|
|
149
|
-
2. Connect your wallet (invite early access)
|
|
150
|
-
3. Navigate to **Developers** → click **Create API Key** → copy your key once
|
|
149
|
+
Issue the key on the **same** API this MCP process will call:
|
|
151
150
|
|
|
152
|
-
|
|
151
|
+
1. Local mainnet (default 8788 / 4663): open Living Capital on `http://127.0.0.1:5174` → **Developers**.
|
|
152
|
+
2. Public testnet (optional): open https://app.aureonlabs.network → **Developers** (still chain 46630).
|
|
153
|
+
3. Create API Key → copy your key once.
|
|
154
|
+
|
|
155
|
+
That key identifies your wallet for control-plane tools. **No Bearer token required.** A testnet key will not authenticate the local mainnet API.
|
|
153
156
|
|
|
154
157
|
### 2. Configure Cursor IDE
|
|
155
158
|
|
|
@@ -162,7 +165,6 @@ Copy [`examples/cursor.mcp.json`](examples/cursor.mcp.json) into `.cursor/mcp.js
|
|
|
162
165
|
"command": "npx",
|
|
163
166
|
"args": ["-y", "@buildaureon/mcp"],
|
|
164
167
|
"env": {
|
|
165
|
-
"AUREON_API_URL": "https://api.aureonlabs.network",
|
|
166
168
|
"AUREON_API_KEY": "<issued-developer-api-key>"
|
|
167
169
|
}
|
|
168
170
|
}
|
|
@@ -186,7 +188,6 @@ Merge [`examples/claude-desktop.json`](examples/claude-desktop.json) into Claude
|
|
|
186
188
|
"command": "npx",
|
|
187
189
|
"args": ["-y", "@buildaureon/mcp"],
|
|
188
190
|
"env": {
|
|
189
|
-
"AUREON_API_URL": "https://api.aureonlabs.network",
|
|
190
191
|
"AUREON_API_KEY": "<issued-developer-api-key>"
|
|
191
192
|
}
|
|
192
193
|
}
|
|
@@ -215,7 +216,8 @@ Point the host `command` / `args` at the built `dist/index.js`. See [docs/setup.
|
|
|
215
216
|
| Variable | Required | Role |
|
|
216
217
|
| --- | --- | --- |
|
|
217
218
|
| `AUREON_API_KEY` | Yes (recommended) | Issued developer key for product access **and** wallet identity |
|
|
218
|
-
| `
|
|
219
|
+
| `AUREON_NETWORK` | No | Omit for mainnet (4663 / 8788). Set `testnet` for the public host (still 46630). |
|
|
220
|
+
| `AUREON_API_URL` | No | Optional override. Must match `AUREON_NETWORK` if both are set. |
|
|
219
221
|
| `AUREON_AUTH_TOKEN` | No | Optional wallet Bearer (**wins** if both key and Bearer are sent) |
|
|
220
222
|
|
|
221
223
|
**Private Key Boundary**: Private keys are only needed outside MCP when signing and broadcasting deposit or withdrawal transactions. Prepare tools return unsigned transaction steps; the MCP server never signs.
|
|
@@ -372,7 +374,7 @@ pnpm --filter @buildaureon/mcp typecheck
|
|
|
372
374
|
No. You only need an issued `AUREON_API_KEY`. Private keys stay in your host wallet when signing prepare steps.
|
|
373
375
|
|
|
374
376
|
**Does MCP talk to a local backend server?**
|
|
375
|
-
|
|
377
|
+
Yes by default. Omit `AUREON_API_URL` for local mainnet `http://127.0.0.1:8788` (chain 4663). Set `AUREON_NETWORK=testnet` for the public host (still chain 46630). `api.aureonlabs.network` is not 4663.
|
|
376
378
|
|
|
377
379
|
**Why did my restore receipt say `staged`?**
|
|
378
380
|
`staged` indicates a ledger-local simulation receipt rather than an on-chain vault settlement. Always describe settlement receipts accurately in agent responses.
|
package/dist/index.js
CHANGED
|
@@ -1,23 +1,30 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
3
3
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
4
|
-
import {
|
|
4
|
+
import { resolveAureonNetworkFromEnv, createSessionTokenProvider, createAureonClient, validateExecutionReceipt, isAureonError } from '@buildaureon/sdk';
|
|
5
5
|
import { z } from 'zod';
|
|
6
6
|
|
|
7
7
|
function loadConfig() {
|
|
8
|
-
const
|
|
8
|
+
const resolved = resolveAureonNetworkFromEnv();
|
|
9
9
|
const apiKey = process.env.AUREON_API_KEY || void 0;
|
|
10
10
|
const authToken = process.env.AUREON_AUTH_TOKEN || void 0;
|
|
11
11
|
if (!apiKey && !authToken) {
|
|
12
12
|
throw new Error(
|
|
13
|
-
"Set AUREON_API_KEY (issued developer key
|
|
13
|
+
"Set AUREON_API_KEY (issued developer key) or AUREON_AUTH_TOKEN (wallet Bearer). Default network is mainnet (http://127.0.0.1:8788). Set AUREON_NETWORK=testnet for the public host (still 46630). See https://github.com/buildaureon/aureon-mcp#authentication"
|
|
14
14
|
);
|
|
15
15
|
}
|
|
16
|
-
return {
|
|
16
|
+
return {
|
|
17
|
+
apiUrl: resolved.baseUrl,
|
|
18
|
+
apiKey,
|
|
19
|
+
authToken,
|
|
20
|
+
network: resolved.network,
|
|
21
|
+
chainId: resolved.chainId
|
|
22
|
+
};
|
|
17
23
|
}
|
|
18
24
|
function createClient(config) {
|
|
19
25
|
const session = createSessionTokenProvider(config.authToken ?? null);
|
|
20
26
|
const client = createAureonClient({
|
|
27
|
+
network: config.network,
|
|
21
28
|
baseUrl: config.apiUrl,
|
|
22
29
|
apiKey: config.apiKey ?? null,
|
|
23
30
|
getAccessToken: session.getAccessToken
|
package/dist/index.js.map
CHANGED
|
@@ -1 +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/intent.ts","../src/tools/drift-restore.ts","../src/tools/receipt-verification.ts","../src/tools/portfolio-watch.ts","../src/tools/full-aureon-loop.ts","../src/tools/objectives.ts","../src/tools/portfolio.ts","../src/tools/market.ts","../src/tools/developer.ts","../src/tools/registry.ts","../src/tools/settlement.ts","../src/tools/receipt.ts","../src/tools/audit-trail.ts","../src/tools/index.ts","../src/server.ts","../src/index.ts"],"names":["z","objectiveKind","objectivePriority"],"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_allocation_vs_target\",\r\n \"Objective vs actual portfolio — current weight vs policy target per objective, plus green-book/off-plan paradox flag\",\r\n {},\r\n async () => {\r\n try {\r\n return ok(await client.getAllocationVsTarget());\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 outside policy. Read receipt.settlement and receipt.verifiedOnChain — staged = never on-chain; vault + verifiedOnChain = chain-observed; vault without verified = submitted but not yet observed.\",\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 restorative execution for an objective outside policy. Not always vault-backed: read settlement and verifiedOnChain. staged is never on-chain. vault without verifiedOnChain is submitted, not proven. Returns ExecutionReceipt.\",\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 — read settlement, verifiedOnChain, settlementRecord, explorerUrl, registryRef.\",\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\nexport function registerIntentTools(server: McpServer, client: AureonClient) {\r\n server.tool(\r\n \"aureon_apply_financial_intent\",\r\n \"Register user/agent intent as an Automatic objective and return AI → objective → portfolio flow\",\r\n {\r\n brief: z\r\n .string()\r\n .describe(\"What the user wants their money to do — agent-extracted wording\"),\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 targetSymbol: z\r\n .string()\r\n .optional()\r\n .describe(\"Asset symbol for balanced_portfolio (required for that kind)\"),\r\n name: z.string().optional().describe(\"Objective display name override\"),\r\n priority: objectivePriority.optional().describe(\"Evaluation priority\"),\r\n },\r\n async (input) => {\r\n try {\r\n return ok(await client.applyFinancialIntent(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_get_objective_portfolio_flow\",\r\n \"Read AI → objective → portfolio flow for active objectives\",\r\n {\r\n objectiveId: z\r\n .string()\r\n .optional()\r\n .describe(\"Filter to one objective (omit for all active)\"),\r\n },\r\n async ({ objectiveId }) => {\r\n try {\r\n return ok(await client.getObjectivePortfolioFlow(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 registerDriftRestoreTools(server: McpServer, client: AureonClient) {\r\n server.tool(\r\n \"aureon_run_drift_restore_demo\",\r\n \"Run drift → detection → restore demo (seed book, break rule, manual restore)\",\r\n {},\r\n async () => {\r\n try {\r\n return ok(await client.runDriftRestoreDemo());\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_drift_restore_flow\",\r\n \"Read drift → detection → restore flow for active objectives\",\r\n {\r\n objectiveId: z\r\n .string()\r\n .optional()\r\n .describe(\"Filter to one objective (omit for all active)\"),\r\n },\r\n async ({ objectiveId }) => {\r\n try {\r\n return ok(await client.getDriftRestoreFlow(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 registerReceiptVerificationTools(\r\n server: McpServer,\r\n client: AureonClient\r\n) {\r\n server.tool(\r\n \"aureon_run_receipt_verification_demo\",\r\n \"Run receipt → verification demo (restore + validate receipt + settlement lookup)\",\r\n {},\r\n async () => {\r\n try {\r\n return ok(await client.runReceiptVerificationDemo());\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_receipt_verification_flow\",\r\n \"Read receipt → verification flow for execution receipts\",\r\n {\r\n executionId: z\r\n .string()\r\n .optional()\r\n .describe(\"Filter to one execution id (omit for five most recent)\"),\r\n },\r\n async ({ executionId }) => {\r\n try {\r\n return ok(await client.getReceiptVerificationFlow(executionId));\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 agentHost = z.enum([\"cursor\", \"claude\", \"mcp\"]);\r\n\r\nexport function registerPortfolioWatchTools(\r\n server: McpServer,\r\n client: AureonClient\r\n) {\r\n server.tool(\r\n \"aureon_run_portfolio_watch_demo\",\r\n \"Run portfolio watch demo (brief → Automatic objective → while-away event → return briefing)\",\r\n {\r\n brief: z\r\n .string()\r\n .optional()\r\n .describe(\r\n \"User wording — default: Watch my portfolio while I'm away — keep about 20% in stable assets.\"\r\n ),\r\n host: agentHost\r\n .optional()\r\n .describe(\"Agent host label for briefing (cursor | claude | mcp)\"),\r\n },\r\n async ({ brief, host }) => {\r\n try {\r\n return ok(await client.runPortfolioWatchDemo({ brief, host }));\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_watch_flow\",\r\n \"Read portfolio watch briefing for Automatic objectives\",\r\n {\r\n objectiveId: z\r\n .string()\r\n .optional()\r\n .describe(\"Filter to one objective (omit for all Automatic)\"),\r\n brief: z.string().optional().describe(\"User brief for briefing lines\"),\r\n host: agentHost.optional().describe(\"Agent host label\"),\r\n },\r\n async ({ objectiveId, brief, host }) => {\r\n try {\r\n return ok(\r\n await client.getPortfolioWatchFlow({ objectiveId, brief, host })\r\n );\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 registerFullAureonLoopTools(\r\n server: McpServer,\r\n client: AureonClient\r\n) {\r\n server.tool(\r\n \"aureon_run_full_aureon_loop_demo\",\r\n \"Run Content Arc full AUREON loop (intent → plan check → restore → receipt verification)\",\r\n {\r\n brief: z\r\n .string()\r\n .optional()\r\n .describe(\r\n \"User wording — default: Keep about 20% in stable assets — grow the book without abandoning the plan.\"\r\n ),\r\n },\r\n async ({ brief }) => {\r\n try {\r\n return ok(await client.runFullAureonLoopDemo({ brief }));\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_full_aureon_loop_flow\",\r\n \"Read full AUREON loop for active objectives with a latest execution receipt\",\r\n {\r\n objectiveId: z\r\n .string()\r\n .optional()\r\n .describe(\"Filter to one objective (omit for all active with receipts)\"),\r\n brief: z.string().optional().describe(\"User brief for teaching shape\"),\r\n },\r\n async ({ objectiveId, brief }) => {\r\n try {\r\n return ok(await client.getFullAureonLoopFlow({ objectiveId, brief }));\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(\"Opt in to run restore if objectives breach. Omit or false = drift only. Automatic still 409s if the vault cannot execute.\"),\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 } from \"@buildaureon/sdk\";\r\nimport { z } from \"zod\";\r\nimport { fail, ok } from \"./handler.js\";\r\n\r\nexport function registerRegistryTools(server: McpServer, client: AureonClient) {\r\n server.tool(\r\n \"aureon_registry_status\",\r\n \"Returns Phase 2 ObjectiveRegistry deployment status (testnet contract address when configured).\",\r\n {},\r\n async () => {\r\n try {\r\n return ok(await client.getRegistryStatus());\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_objective_registry\",\r\n \"Returns the on-chain registry record for an objective when registered.\",\r\n {\r\n objectiveId: z.string().describe(\"Objective id\"),\r\n },\r\n async ({ objectiveId }) => {\r\n try {\r\n return ok(await client.getObjectiveRegistry(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_prepare_objective_registry\",\r\n \"Prepares wallet-signed calldata to register an objective on ObjectiveRegistry. The host wallet must broadcast the tx, then call confirm via SDK.\",\r\n {\r\n objectiveId: z.string().describe(\"Objective id to register on-chain\"),\r\n },\r\n async ({ objectiveId }) => {\r\n try {\r\n return ok(await client.prepareObjectiveRegistry(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_confirm_objective_registry\",\r\n \"Confirms an on-chain ObjectiveRegistry registration after the host wallet broadcast the prepare tx. Pass the transaction hash. The API verifies the receipt on chain and stores the registry link.\",\r\n {\r\n objectiveId: z.string().describe(\"Objective id that was registered\"),\r\n transactionHash: z.string().describe(\"0x transaction hash from the wallet broadcast\"),\r\n },\r\n async ({ objectiveId, transactionHash }) => {\r\n try {\r\n return ok(await client.confirmObjectiveRegistry(objectiveId, transactionHash));\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 registerSettlementTools(server: McpServer, client: AureonClient) {\r\n server.tool(\r\n \"aureon_get_execution_settlement\",\r\n \"Returns the chain-verified settlement record for a vault execution when the listener has observed an on-chain Rebalanced event. Staged executions never have settlement records — do not claim on-chain proof without this.\",\r\n {\r\n executionId: z.string().describe(\"Execution receipt id\"),\r\n },\r\n async ({ executionId }) => {\r\n try {\r\n return ok(await client.getExecutionSettlement(executionId));\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_settlements\",\r\n \"Lists settlement records for the authenticated wallet. May include orphans (observed vault Rebalanced events not yet bound to an execution). Optional objectiveId filter. Read status and executionId before claiming proof.\",\r\n {\r\n objectiveId: z.string().optional().describe(\"Filter by objective id\"),\r\n },\r\n async ({ objectiveId }) => {\r\n try {\r\n return ok({ settlements: await client.listSettlements(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_confirm_execution_settlement\",\r\n \"Manual backfill: verify a vault Rebalanced transaction on chain and attach a settlement record to an execution. Use when the listener missed the event. Staged executions cannot be confirmed this way.\",\r\n {\r\n executionId: z.string().describe(\"Execution receipt id\"),\r\n transactionHash: z.string().describe(\"0x vault Rebalanced transaction hash\"),\r\n },\r\n async ({ executionId, transactionHash }) => {\r\n try {\r\n return ok(await client.confirmExecutionSettlement(executionId, transactionHash));\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 { validateExecutionReceipt } from \"@buildaureon/sdk\";\r\nimport { z } from \"zod\";\r\nimport { ok } from \"./handler.js\";\r\n\r\nexport function registerReceiptTools(server: McpServer) {\r\n server.tool(\r\n \"aureon_validate_receipt\",\r\n \"Validates an execution receipt locally (schema + settlement honesty). No API call. Returns { valid, issues }. Do not trust or summarize a receipt as on-chain when validation fails.\",\r\n {\r\n receipt: z\r\n .record(z.unknown())\r\n .describe(\"ExecutionReceipt JSON from restore, listExecutions, or API\"),\r\n },\r\n async ({ receipt }) => {\r\n const result = validateExecutionReceipt(receipt);\r\n return ok(result);\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 registerAuditTrailTools(\r\n server: McpServer,\r\n client: AureonClient\r\n) {\r\n server.tool(\r\n \"aureon_get_audit_trail\",\r\n \"Export the financial audit trail for one objective: registry, receipts, settlements, timeline. Missing proof is labeled. Never invent on-chain claims.\",\r\n {\r\n objectiveId: z.string().describe(\"Objective id to export\"),\r\n },\r\n async ({ objectiveId }) => {\r\n try {\r\n return ok(await client.getAuditTrail(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, 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 { registerIntentTools } from \"./intent.js\";\r\nimport { registerDriftRestoreTools } from \"./drift-restore.js\";\r\nimport { registerReceiptVerificationTools } from \"./receipt-verification.js\";\r\nimport { registerPortfolioWatchTools } from \"./portfolio-watch.js\";\r\nimport { registerFullAureonLoopTools } from \"./full-aureon-loop.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 { registerRegistryTools } from \"./registry.js\";\r\nimport { registerSettlementTools } from \"./settlement.js\";\r\nimport { registerReceiptTools } from \"./receipt.js\";\r\nimport { registerAuditTrailTools } from \"./audit-trail.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 registerIntentTools(server, client);\r\n registerDriftRestoreTools(server, client);\r\n registerReceiptVerificationTools(server, client);\r\n registerPortfolioWatchTools(server, client);\r\n registerFullAureonLoopTools(server, client);\r\n registerPortfolioTools(server, client);\r\n registerMarketTools(server, client);\r\n registerDeveloperTools(server, client);\r\n registerRegistryTools(server, client);\r\n registerSettlementTools(server, client);\r\n registerReceiptTools(server);\r\n registerAuditTrailTools(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"]}
|
|
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/intent.ts","../src/tools/drift-restore.ts","../src/tools/receipt-verification.ts","../src/tools/portfolio-watch.ts","../src/tools/full-aureon-loop.ts","../src/tools/objectives.ts","../src/tools/portfolio.ts","../src/tools/market.ts","../src/tools/developer.ts","../src/tools/registry.ts","../src/tools/settlement.ts","../src/tools/receipt.ts","../src/tools/audit-trail.ts","../src/tools/index.ts","../src/server.ts","../src/index.ts"],"names":["z","objectiveKind","objectivePriority"],"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 * Default network is mainnet (4663 / local 8788). Set `AUREON_NETWORK=testnet` for\r\n * the public host (still chain 46630). `AUREON_API_URL` still overrides when set.\r\n */\r\n\r\nimport {\r\n resolveAureonNetworkFromEnv,\r\n type AureonNetwork,\r\n} 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 network: AureonNetwork;\r\n chainId: number;\r\n}\r\n\r\nexport function loadConfig(): McpConfig {\r\n const resolved = resolveAureonNetworkFromEnv();\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) \" +\r\n \"or AUREON_AUTH_TOKEN (wallet Bearer). \" +\r\n \"Default network is mainnet (http://127.0.0.1:8788). \" +\r\n \"Set AUREON_NETWORK=testnet for the public host (still 46630). \" +\r\n \"See https://github.com/buildaureon/aureon-mcp#authentication\"\r\n );\r\n }\r\n\r\n return {\r\n apiUrl: resolved.baseUrl,\r\n apiKey,\r\n authToken,\r\n network: resolved.network,\r\n chainId: resolved.chainId,\r\n };\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 network: config.network,\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_allocation_vs_target\",\r\n \"Objective vs actual portfolio — current weight vs policy target per objective, plus green-book/off-plan paradox flag\",\r\n {},\r\n async () => {\r\n try {\r\n return ok(await client.getAllocationVsTarget());\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 outside policy. Read receipt.settlement and receipt.verifiedOnChain — staged = never on-chain; vault + verifiedOnChain = chain-observed; vault without verified = submitted but not yet observed.\",\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 restorative execution for an objective outside policy. Not always vault-backed: read settlement and verifiedOnChain. staged is never on-chain. vault without verifiedOnChain is submitted, not proven. Returns ExecutionReceipt.\",\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 — read settlement, verifiedOnChain, settlementRecord, explorerUrl, registryRef.\",\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\nexport function registerIntentTools(server: McpServer, client: AureonClient) {\r\n server.tool(\r\n \"aureon_apply_financial_intent\",\r\n \"Register user/agent intent as an Automatic objective and return AI → objective → portfolio flow\",\r\n {\r\n brief: z\r\n .string()\r\n .describe(\"What the user wants their money to do — agent-extracted wording\"),\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 targetSymbol: z\r\n .string()\r\n .optional()\r\n .describe(\"Asset symbol for balanced_portfolio (required for that kind)\"),\r\n name: z.string().optional().describe(\"Objective display name override\"),\r\n priority: objectivePriority.optional().describe(\"Evaluation priority\"),\r\n },\r\n async (input) => {\r\n try {\r\n return ok(await client.applyFinancialIntent(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_get_objective_portfolio_flow\",\r\n \"Read AI → objective → portfolio flow for active objectives\",\r\n {\r\n objectiveId: z\r\n .string()\r\n .optional()\r\n .describe(\"Filter to one objective (omit for all active)\"),\r\n },\r\n async ({ objectiveId }) => {\r\n try {\r\n return ok(await client.getObjectivePortfolioFlow(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 registerDriftRestoreTools(server: McpServer, client: AureonClient) {\r\n server.tool(\r\n \"aureon_run_drift_restore_demo\",\r\n \"Run drift → detection → restore demo (seed book, break rule, manual restore)\",\r\n {},\r\n async () => {\r\n try {\r\n return ok(await client.runDriftRestoreDemo());\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_drift_restore_flow\",\r\n \"Read drift → detection → restore flow for active objectives\",\r\n {\r\n objectiveId: z\r\n .string()\r\n .optional()\r\n .describe(\"Filter to one objective (omit for all active)\"),\r\n },\r\n async ({ objectiveId }) => {\r\n try {\r\n return ok(await client.getDriftRestoreFlow(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 registerReceiptVerificationTools(\r\n server: McpServer,\r\n client: AureonClient\r\n) {\r\n server.tool(\r\n \"aureon_run_receipt_verification_demo\",\r\n \"Run receipt → verification demo (restore + validate receipt + settlement lookup)\",\r\n {},\r\n async () => {\r\n try {\r\n return ok(await client.runReceiptVerificationDemo());\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_receipt_verification_flow\",\r\n \"Read receipt → verification flow for execution receipts\",\r\n {\r\n executionId: z\r\n .string()\r\n .optional()\r\n .describe(\"Filter to one execution id (omit for five most recent)\"),\r\n },\r\n async ({ executionId }) => {\r\n try {\r\n return ok(await client.getReceiptVerificationFlow(executionId));\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 agentHost = z.enum([\"cursor\", \"claude\", \"mcp\"]);\r\n\r\nexport function registerPortfolioWatchTools(\r\n server: McpServer,\r\n client: AureonClient\r\n) {\r\n server.tool(\r\n \"aureon_run_portfolio_watch_demo\",\r\n \"Run portfolio watch demo (brief → Automatic objective → while-away event → return briefing)\",\r\n {\r\n brief: z\r\n .string()\r\n .optional()\r\n .describe(\r\n \"User wording — default: Watch my portfolio while I'm away — keep about 20% in stable assets.\"\r\n ),\r\n host: agentHost\r\n .optional()\r\n .describe(\"Agent host label for briefing (cursor | claude | mcp)\"),\r\n },\r\n async ({ brief, host }) => {\r\n try {\r\n return ok(await client.runPortfolioWatchDemo({ brief, host }));\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_watch_flow\",\r\n \"Read portfolio watch briefing for Automatic objectives\",\r\n {\r\n objectiveId: z\r\n .string()\r\n .optional()\r\n .describe(\"Filter to one objective (omit for all Automatic)\"),\r\n brief: z.string().optional().describe(\"User brief for briefing lines\"),\r\n host: agentHost.optional().describe(\"Agent host label\"),\r\n },\r\n async ({ objectiveId, brief, host }) => {\r\n try {\r\n return ok(\r\n await client.getPortfolioWatchFlow({ objectiveId, brief, host })\r\n );\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 registerFullAureonLoopTools(\r\n server: McpServer,\r\n client: AureonClient\r\n) {\r\n server.tool(\r\n \"aureon_run_full_aureon_loop_demo\",\r\n \"Run Content Arc full AUREON loop (intent → plan check → restore → receipt verification)\",\r\n {\r\n brief: z\r\n .string()\r\n .optional()\r\n .describe(\r\n \"User wording — default: Keep about 20% in stable assets — grow the book without abandoning the plan.\"\r\n ),\r\n },\r\n async ({ brief }) => {\r\n try {\r\n return ok(await client.runFullAureonLoopDemo({ brief }));\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_full_aureon_loop_flow\",\r\n \"Read full AUREON loop for active objectives with a latest execution receipt\",\r\n {\r\n objectiveId: z\r\n .string()\r\n .optional()\r\n .describe(\"Filter to one objective (omit for all active with receipts)\"),\r\n brief: z.string().optional().describe(\"User brief for teaching shape\"),\r\n },\r\n async ({ objectiveId, brief }) => {\r\n try {\r\n return ok(await client.getFullAureonLoopFlow({ objectiveId, brief }));\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(\"Opt in to run restore if objectives breach. Omit or false = drift only. Automatic still 409s if the vault cannot execute.\"),\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 } from \"@buildaureon/sdk\";\r\nimport { z } from \"zod\";\r\nimport { fail, ok } from \"./handler.js\";\r\n\r\nexport function registerRegistryTools(server: McpServer, client: AureonClient) {\r\n server.tool(\r\n \"aureon_registry_status\",\r\n \"Returns Phase 2 ObjectiveRegistry deployment status (testnet contract address when configured).\",\r\n {},\r\n async () => {\r\n try {\r\n return ok(await client.getRegistryStatus());\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_objective_registry\",\r\n \"Returns the on-chain registry record for an objective when registered.\",\r\n {\r\n objectiveId: z.string().describe(\"Objective id\"),\r\n },\r\n async ({ objectiveId }) => {\r\n try {\r\n return ok(await client.getObjectiveRegistry(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_prepare_objective_registry\",\r\n \"Prepares wallet-signed calldata to register an objective on ObjectiveRegistry. The host wallet must broadcast the tx, then call confirm via SDK.\",\r\n {\r\n objectiveId: z.string().describe(\"Objective id to register on-chain\"),\r\n },\r\n async ({ objectiveId }) => {\r\n try {\r\n return ok(await client.prepareObjectiveRegistry(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_confirm_objective_registry\",\r\n \"Confirms an on-chain ObjectiveRegistry registration after the host wallet broadcast the prepare tx. Pass the transaction hash. The API verifies the receipt on chain and stores the registry link.\",\r\n {\r\n objectiveId: z.string().describe(\"Objective id that was registered\"),\r\n transactionHash: z.string().describe(\"0x transaction hash from the wallet broadcast\"),\r\n },\r\n async ({ objectiveId, transactionHash }) => {\r\n try {\r\n return ok(await client.confirmObjectiveRegistry(objectiveId, transactionHash));\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 registerSettlementTools(server: McpServer, client: AureonClient) {\r\n server.tool(\r\n \"aureon_get_execution_settlement\",\r\n \"Returns the chain-verified settlement record for a vault execution when the listener has observed an on-chain Rebalanced event. Staged executions never have settlement records — do not claim on-chain proof without this.\",\r\n {\r\n executionId: z.string().describe(\"Execution receipt id\"),\r\n },\r\n async ({ executionId }) => {\r\n try {\r\n return ok(await client.getExecutionSettlement(executionId));\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_settlements\",\r\n \"Lists settlement records for the authenticated wallet. May include orphans (observed vault Rebalanced events not yet bound to an execution). Optional objectiveId filter. Read status and executionId before claiming proof.\",\r\n {\r\n objectiveId: z.string().optional().describe(\"Filter by objective id\"),\r\n },\r\n async ({ objectiveId }) => {\r\n try {\r\n return ok({ settlements: await client.listSettlements(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_confirm_execution_settlement\",\r\n \"Manual backfill: verify a vault Rebalanced transaction on chain and attach a settlement record to an execution. Use when the listener missed the event. Staged executions cannot be confirmed this way.\",\r\n {\r\n executionId: z.string().describe(\"Execution receipt id\"),\r\n transactionHash: z.string().describe(\"0x vault Rebalanced transaction hash\"),\r\n },\r\n async ({ executionId, transactionHash }) => {\r\n try {\r\n return ok(await client.confirmExecutionSettlement(executionId, transactionHash));\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 { validateExecutionReceipt } from \"@buildaureon/sdk\";\r\nimport { z } from \"zod\";\r\nimport { ok } from \"./handler.js\";\r\n\r\nexport function registerReceiptTools(server: McpServer) {\r\n server.tool(\r\n \"aureon_validate_receipt\",\r\n \"Validates an execution receipt locally (schema + settlement honesty). No API call. Returns { valid, issues }. Do not trust or summarize a receipt as on-chain when validation fails.\",\r\n {\r\n receipt: z\r\n .record(z.unknown())\r\n .describe(\"ExecutionReceipt JSON from restore, listExecutions, or API\"),\r\n },\r\n async ({ receipt }) => {\r\n const result = validateExecutionReceipt(receipt);\r\n return ok(result);\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 registerAuditTrailTools(\r\n server: McpServer,\r\n client: AureonClient\r\n) {\r\n server.tool(\r\n \"aureon_get_audit_trail\",\r\n \"Export the financial audit trail for one objective: registry, receipts, settlements, timeline. Missing proof is labeled. Never invent on-chain claims.\",\r\n {\r\n objectiveId: z.string().describe(\"Objective id to export\"),\r\n },\r\n async ({ objectiveId }) => {\r\n try {\r\n return ok(await client.getAuditTrail(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, 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 { registerIntentTools } from \"./intent.js\";\r\nimport { registerDriftRestoreTools } from \"./drift-restore.js\";\r\nimport { registerReceiptVerificationTools } from \"./receipt-verification.js\";\r\nimport { registerPortfolioWatchTools } from \"./portfolio-watch.js\";\r\nimport { registerFullAureonLoopTools } from \"./full-aureon-loop.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 { registerRegistryTools } from \"./registry.js\";\r\nimport { registerSettlementTools } from \"./settlement.js\";\r\nimport { registerReceiptTools } from \"./receipt.js\";\r\nimport { registerAuditTrailTools } from \"./audit-trail.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 registerIntentTools(server, client);\r\n registerDriftRestoreTools(server, client);\r\n registerReceiptVerificationTools(server, client);\r\n registerPortfolioWatchTools(server, client);\r\n registerFullAureonLoopTools(server, client);\r\n registerPortfolioTools(server, client);\r\n registerMarketTools(server, client);\r\n registerDeveloperTools(server, client);\r\n registerRegistryTools(server, client);\r\n registerSettlementTools(server, client);\r\n registerReceiptTools(server);\r\n registerAuditTrailTools(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"]}
|
package/docs/agent-guide.md
CHANGED
|
@@ -32,7 +32,7 @@ Translate operator intent into a **single** next action (or a short sequenced pl
|
|
|
32
32
|
|
|
33
33
|
Decide:
|
|
34
34
|
|
|
35
|
-
-
|
|
35
|
+
- Is the vault empty (restore must 409; return unsigned prepare; do not fund)?
|
|
36
36
|
- Do we create a new Automatic objective?
|
|
37
37
|
- Do we restore an existing breach?
|
|
38
38
|
- Is this only a rehearsal (market event)?
|
|
@@ -467,10 +467,10 @@ Avoid these failure modes.
|
|
|
467
467
|
|
|
468
468
|
Agents operate best as **keepers with Automatic objectives**:
|
|
469
469
|
|
|
470
|
-
1.
|
|
470
|
+
1. On first use the vault is empty: `aureon_restore_objective` must **409**. Call `aureon_prepare_vault_deposit` and return unsigned steps. **Do not fund.** The user signs when they use the product (same as testnet).
|
|
471
471
|
2. Create objectives with `automationMode: "auto"`.
|
|
472
472
|
3. Watch health via `aureon_refresh_watchdog` / `aureon_get_health`.
|
|
473
|
-
4. On breach: plan → `aureon_restore_objective` → confirm timeline / executions.
|
|
473
|
+
4. On breach after the user has funded: plan → `aureon_restore_objective` → confirm timeline / executions.
|
|
474
474
|
|
|
475
475
|
Manual mode remains available for humans who want Approve gates. If the operator insists on Manual, say clearly that agent-driven restores may be limited and the utility Approve surface is the control plane for those swaps.
|
|
476
476
|
|
|
@@ -482,7 +482,7 @@ Manual mode remains available for humans who want Approve gates. If the operator
|
|
|
482
482
|
| --- | --- | --- |
|
|
483
483
|
| 401 / invalid key | Bad or revoked issued key | Stop. Ask operator to rotate in Developers and update host env. |
|
|
484
484
|
| Wallet session required / env key cannot identify wallet | Non-issued gating key | Switch to an **issued** Developers key. |
|
|
485
|
-
| Vault empty / cannot restore |
|
|
485
|
+
| Vault empty / cannot restore | First use — user has not deposited | Prepare deposit (unsigned); wait for the user/host to broadcast; re-sync. Agents do not fund. |
|
|
486
486
|
| Update rejects symbol / mode | Immutable create fields | Explain lock; offer recreate + pause old. |
|
|
487
487
|
| Restore flaps / healthy immediately | Marks shifted or race | Re-read health + vault; avoid spam restores. |
|
|
488
488
|
| Prepare succeeds, balances unchanged | Broadcast never happened | Remind: unsigned steps need host signature. |
|
|
@@ -534,7 +534,7 @@ In the **@buildaureon/sdk documentation** (client API, data contracts, error mod
|
|
|
534
534
|
|
|
535
535
|
### What URL should agents use?
|
|
536
536
|
|
|
537
|
-
|
|
537
|
+
Omit `AUREON_API_URL` for local mainnet `http://127.0.0.1:8788` (chain 4663). Set `AUREON_NETWORK=testnet` for the public host (still 46630). Do not treat `api.aureonlabs.network` as 4663.
|
|
538
538
|
|
|
539
539
|
### What if the operator asks me to “just send the transaction”?
|
|
540
540
|
|
|
@@ -608,7 +608,7 @@ Agents should be decisive about what they can do alone with an issued key:
|
|
|
608
608
|
|
|
609
609
|
```text
|
|
610
610
|
READ: ping → me → sync_portfolio → vault_status → health
|
|
611
|
-
DECIDE: fund? create auto? restore? rehearse only?
|
|
611
|
+
DECIDE: empty vault 409 + unsigned prepare (do not fund)? create auto? restore? rehearse only?
|
|
612
612
|
ACT: prepare_* (host signs) | create_objective(auto) | restore_objective
|
|
613
613
|
CHECK: timeline / executions / health — quote settlement=vault|staged
|
|
614
614
|
```
|
package/docs/architecture.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
How `@buildaureon/mcp` sits on top of `@buildaureon/sdk` and the hosted AUREON API.
|
|
4
4
|
|
|
5
|
-
This document is for humans integrating the package and for AI agents that need a stable mental model of layers, ownership, and request flow. It describes the published adapter only: a thin stdio MCP server that forwards tool calls to the SDK
|
|
5
|
+
This document is for humans integrating the package and for AI agents that need a stable mental model of layers, ownership, and request flow. It describes the published adapter only: a thin stdio MCP server that forwards tool calls to the SDK. Default API is local mainnet `http://127.0.0.1:8788` (chain 4663). `AUREON_NETWORK=testnet` selects `https://api.aureonlabs.network` (still 46630).
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -26,7 +26,7 @@ Host (Cursor / Claude / other MCP host)
|
|
|
26
26
|
→ MCP JSON-RPC over stdio
|
|
27
27
|
→ mcp handlers + Zod
|
|
28
28
|
→ @buildaureon/sdk HTTP client
|
|
29
|
-
→
|
|
29
|
+
→ http://127.0.0.1:8788 (4663) or public testnet host (46630)
|
|
30
30
|
→ vault / Robinhood Chain settlement path
|
|
31
31
|
```
|
|
32
32
|
|
|
@@ -55,7 +55,7 @@ flowchart TB
|
|
|
55
55
|
ErrModel[Error_codes]
|
|
56
56
|
end
|
|
57
57
|
|
|
58
|
-
API[
|
|
58
|
+
API[8788_mainnet_or_public_testnet]
|
|
59
59
|
Vault[Smart_Vault]
|
|
60
60
|
Chain[Robinhood_Chain]
|
|
61
61
|
|
|
@@ -109,7 +109,7 @@ Rule of thumb: if a change affects every AUREON client (CLI scripts, bots, MCP),
|
|
|
109
109
|
|
|
110
110
|
1. Host launches `aureon-mcp` (or `npx -y @buildaureon/mcp`) with environment variables.
|
|
111
111
|
2. `src/index.ts` calls `startServer()` from `server.ts`.
|
|
112
|
-
3. `loadConfig()`
|
|
112
|
+
3. `loadConfig()` uses `resolveAureonNetworkFromEnv()` (default 8788 / 4663; `AUREON_NETWORK=testnet` for the public host, still 46630), plus `AUREON_API_KEY` and optional `AUREON_AUTH_TOKEN`.
|
|
113
113
|
4. Startup requires at least one credential: issued API key and/or initial Bearer.
|
|
114
114
|
5. `createClient()` builds a `SessionTokenProvider` and an `AureonClient` bound to that provider.
|
|
115
115
|
6. `registerTools()` attaches the full tool catalog to an `McpServer` instance.
|
|
@@ -231,7 +231,7 @@ MCP does not invent new error codes. Codes originate in the SDK / API so scripts
|
|
|
231
231
|
|
|
232
232
|
### Lives in `@buildaureon/sdk`
|
|
233
233
|
|
|
234
|
-
- HTTP transport to
|
|
234
|
+
- HTTP transport to the resolved network URL (default 8788 / 4663, or the public testnet host).
|
|
235
235
|
- Header composition (API key + Bearer).
|
|
236
236
|
- Retries, timeouts, and typed client methods.
|
|
237
237
|
- Shared types for objectives, health, restore plans, vault prepare results.
|
|
@@ -289,7 +289,7 @@ Supporting package docs (`setup`, `auth`, `tools`, `agent-guide`, `security`) de
|
|
|
289
289
|
| `@buildaureon/mcp` package version | Adapter release (tool catalog, schemas, formatting) |
|
|
290
290
|
| MCP server `version` field | Mirrors package version reported to hosts |
|
|
291
291
|
| `@buildaureon/sdk` dependency | Protocol / client contract with the API |
|
|
292
|
-
| API
|
|
292
|
+
| Public API `api.aureonlabs.network` | Server-side behavior on **testnet 46630**; may evolve independently |
|
|
293
293
|
|
|
294
294
|
Compatibility expectations:
|
|
295
295
|
|
|
@@ -374,4 +374,4 @@ The utility remains a separate wallet-Bearer UI. MCP does not replace it.
|
|
|
374
374
|
|
|
375
375
|
## 14. Summary
|
|
376
376
|
|
|
377
|
-
`@buildaureon/mcp` is a **thin stdio adapter**: Host → MCP handlers/Zod → `@buildaureon/sdk` →
|
|
377
|
+
`@buildaureon/mcp` is a **thin stdio adapter**: Host → MCP handlers/Zod → `@buildaureon/sdk` → resolved API (default 8788 / 4663; public host still 46630) → vault/chain. Responsibilities are split so agents get a stable tool surface while all financial intelligence and custody boundaries remain outside the MCP process.
|
package/docs/auth.md
CHANGED
|
@@ -19,7 +19,7 @@ If you have not configured the host yet, start with [./setup.md](./setup.md), th
|
|
|
19
19
|
|
|
20
20
|
## Goals of MCP auth
|
|
21
21
|
|
|
22
|
-
1. Reach `
|
|
22
|
+
1. Reach the resolved API (default local mainnet `http://127.0.0.1:8788` / 4663). Opt in to the public host with `AUREON_NETWORK=testnet` (still 46630).
|
|
23
23
|
2. Bind control-plane actions to a wallet identity (issued key or Bearer session).
|
|
24
24
|
3. Keep signing and broadcasting of on-chain vault steps **outside** MCP.
|
|
25
25
|
4. Prefer a long-lived issued key for always-on agents over interactive wallet handshakes.
|
|
@@ -49,9 +49,10 @@ Plain language:
|
|
|
49
49
|
|
|
50
50
|
| Variable | Role |
|
|
51
51
|
| --- | --- |
|
|
52
|
-
| `AUREON_API_KEY` | Preferred. Issued developer key
|
|
52
|
+
| `AUREON_API_KEY` | Preferred. Issued developer key. |
|
|
53
53
|
| `AUREON_AUTH_TOKEN` | Optional Bearer. Use when you intentionally want a session without (or in addition to) a key — see conflict rules below. |
|
|
54
|
-
| `
|
|
54
|
+
| `AUREON_NETWORK` | Optional. Omit for mainnet (4663 / 8788). Set `testnet` for the public host (still 46630). |
|
|
55
|
+
| `AUREON_API_URL` | Optional override. Must match `AUREON_NETWORK` if both are set. |
|
|
55
56
|
|
|
56
57
|
Startup rule: at least one of `AUREON_API_KEY` or `AUREON_AUTH_TOKEN` must be set or the MCP process exits with a clear error.
|
|
57
58
|
|
|
@@ -65,18 +66,18 @@ This is the default for Cursor, Claude, and other always-on agents.
|
|
|
65
66
|
|
|
66
67
|
### Steps
|
|
67
68
|
|
|
68
|
-
1.
|
|
69
|
+
1. Issue a key on the **same** API you will call. Local mainnet: Developers on `http://127.0.0.1:5174`. Public testnet: [app.aureonlabs.network](https://app.aureonlabs.network) (still 46630).
|
|
69
70
|
2. Connect the wallet that should own objectives and Capital Book state.
|
|
70
71
|
3. Open **Developers** and create a key (name it after the host, e.g. `cursor-mcp`).
|
|
71
72
|
4. Copy the secret once into the host MCP `env` as `AUREON_API_KEY`.
|
|
72
73
|
5. Do **not** set `AUREON_AUTH_TOKEN` unless you have a specific reason.
|
|
73
74
|
6. Restart the host and call `aureon_ping` then `aureon_me`.
|
|
74
75
|
|
|
75
|
-
Minimal env:
|
|
76
|
+
Minimal env (local mainnet 8788 / 4663):
|
|
76
77
|
|
|
77
78
|
```bash
|
|
78
|
-
AUREON_API_URL=https://api.aureonlabs.network
|
|
79
79
|
AUREON_API_KEY=aureon_....
|
|
80
|
+
# AUREON_NETWORK=testnet # only for the public host (still 46630)
|
|
80
81
|
```
|
|
81
82
|
|
|
82
83
|
With only the issued key, agents can sync portfolio, create objectives, fetch restore plans, restore, refresh watchdog, and manage developer keys — without an interactive signature each session.
|
|
@@ -218,9 +219,9 @@ Never paste a private key into MCP tool arguments or host env “for convenience
|
|
|
218
219
|
| `401` Unauthorized | Key revoked/paused, Bearer expired, or typo | Rotate key or re-verify wallet |
|
|
219
220
|
| Wrong wallet on `aureon_me` | Bearer winning over key | `aureon_logout`; remove env Bearer; restart |
|
|
220
221
|
| `aureon_verify_wallet` fails | Bad signature, stale nonce, or missing invite | New nonce; re-sign; supply `inviteCode` if required |
|
|
221
|
-
| `aureon_dev_login` fails on live API | Expected | Use issued key
|
|
222
|
+
| `aureon_dev_login` fails on live API | Expected | Use an issued key. Public host is still 46630. |
|
|
222
223
|
| Prepare tools succeed but funds do not move | Unsigned steps not broadcast | Sign outside MCP with a real wallet |
|
|
223
|
-
| Agent invents a local API URL | Misconfigured override |
|
|
224
|
+
| Agent invents a local API URL | Misconfigured override | Omit `AUREON_API_URL` for 8788, or set `AUREON_NETWORK=testnet` |
|
|
224
225
|
|
|
225
226
|
Map structured SDK errors in tool output to the same categories; do not retry blindly on `401` without rotating credentials.
|
|
226
227
|
|
|
@@ -251,9 +252,10 @@ MCP host (Cursor / Claude)
|
|
|
251
252
|
│
|
|
252
253
|
▼
|
|
253
254
|
@buildaureon/sdk (HTTP, retries, types)
|
|
254
|
-
│
|
|
255
|
+
│ HTTP(S) + API key and/or Bearer
|
|
255
256
|
▼
|
|
256
|
-
|
|
257
|
+
default http://127.0.0.1:8788 (4663)
|
|
258
|
+
opt-in https://api.aureonlabs.network (still 46630)
|
|
257
259
|
│
|
|
258
260
|
├── control plane (objectives, portfolio, restore, …)
|
|
259
261
|
└── prepare vault steps → human/agent signs elsewhere
|
|
@@ -318,7 +320,7 @@ Do not reuse the compromised secret “temporarily.” Treat rotation as mandato
|
|
|
318
320
|
|
|
319
321
|
- Issued key → API key header / client option
|
|
320
322
|
- Bearer → access token via the session provider
|
|
321
|
-
- Base URL → `
|
|
323
|
+
- Base URL → `http://127.0.0.1:8788` by default (4663). Public host is `AUREON_NETWORK=testnet` (still 46630).
|
|
322
324
|
|
|
323
325
|
If a typed SDK script works with your issued key but MCP fails, compare env names (`AUREON_API_KEY` vs hard-coded client options) and confirm the host actually injects env into the stdio child process.
|
|
324
326
|
|
package/docs/security.md
CHANGED
|
@@ -15,12 +15,12 @@ This document is for operators configuring agent hosts and for AI agents that mu
|
|
|
15
15
|
| Private key | Never enters MCP env or process | Full fund theft if combined with broadcast capability |
|
|
16
16
|
| Host LLM / agent | Can call any enabled tool | Prompt injection or confused deputy may trigger writes |
|
|
17
17
|
| Operator utility | Separate wallet-Bearer UI | Unrelated to MCP, but same API identity if same wallet |
|
|
18
|
-
|
|
|
18
|
+
| HTTP(S) to API | Default local 8788 (4663). Public host TLS is `https://api.aureonlabs.network` (still 46630) | MITM if URL pointed at attacker |
|
|
19
19
|
|
|
20
20
|
```mermaid
|
|
21
21
|
flowchart LR
|
|
22
22
|
Host[MCP_host_and_LLM] -->|tool_calls_stdio| MCP[local_MCP_adapter]
|
|
23
|
-
MCP -->|API_key_and_optional_Bearer| API[
|
|
23
|
+
MCP -->|API_key_and_optional_Bearer| API[8788_or_public_testnet_host]
|
|
24
24
|
MCP -.->|never_holds| PK[private_keys]
|
|
25
25
|
Human[Human_operator] -->|reviews_and_signs| Chain[Robinhood_Chain]
|
|
26
26
|
API --> Vault[Smart_Vault]
|
|
@@ -171,7 +171,7 @@ MCP hosts typically store command + env in a JSON (or UI) config. Hygiene rules:
|
|
|
171
171
|
1. **Secrets only in env fields** managed by the host — not in chat history, not in repo files checked into git.
|
|
172
172
|
2. **Do not commit** MCP config files that contain live keys. Prefer redacted examples in docs (see package `examples/`).
|
|
173
173
|
3. **Restrict workspace access** — anyone who can edit MCP config can point the agent at their own key or change the API base URL.
|
|
174
|
-
4. **Watch `AUREON_API_URL` overrides** — only use non-default
|
|
174
|
+
4. **Watch `AUREON_API_URL` overrides** — only use a non-default base when you intentionally target a documented other host (local 8788 is the omitted default; public `api.aureonlabs.network` is still testnet 46630). A malicious override is a credential phishing vector.
|
|
175
175
|
5. **Browser vs agent hosting** — browser-based agent products may persist configs in cloud profiles; treat those as higher risk than a local desktop host you control. Prefer short-lived keys and aggressive revoke there.
|
|
176
176
|
6. **Disable MCP** when not needed — reduce accidental write tool invocation.
|
|
177
177
|
7. **Never ask the model to echo env** — including “debug by printing AUREON_API_KEY.”
|
|
@@ -207,7 +207,7 @@ Use this before enabling `@buildaureon/mcp` on a machine that can affect real ca
|
|
|
207
207
|
- [ ] Issued API key created specifically for this host
|
|
208
208
|
- [ ] Key stored only in host secret/env config (not in git)
|
|
209
209
|
- [ ] Private keys absent from MCP env and agent-accessible storage
|
|
210
|
-
- [ ] Default API
|
|
210
|
+
- [ ] Default API is local 8788 / 4663 unless `AUREON_NETWORK=testnet` (public host still 46630)
|
|
211
211
|
- [ ] Host is local stdio — not published as an open network service
|
|
212
212
|
- [ ] Write tools understood by operators (`create`, `restore`, `prepare`, key CRUD)
|
|
213
213
|
- [ ] Prepare → human sign → broadcast workflow documented for the team
|
|
@@ -332,4 +332,4 @@ Follow AUREON’s published support / security channels on the product site; inc
|
|
|
332
332
|
|
|
333
333
|
## 15. Summary
|
|
334
334
|
|
|
335
|
-
Treat `@buildaureon/mcp` as a **local, non-custodial stdio adapter** over `@buildaureon/sdk
|
|
335
|
+
Treat `@buildaureon/mcp` as a **local, non-custodial stdio adapter** over `@buildaureon/sdk`. Default API is `http://127.0.0.1:8788` (4663); the public host is still testnet 46630. Protect issued keys like passwords, keep private keys out of the MCP process, require human (or hardened external) signing for deposit/withdraw broadcast, rotate and revoke quickly, and assume the LLM is not a security boundary — configuration hygiene and least privilege are.
|
package/docs/setup.md
CHANGED
|
@@ -28,8 +28,8 @@ If you only want auth semantics (key vs Bearer vs private key), skip ahead to [.
|
|
|
28
28
|
| Requirement | Notes |
|
|
29
29
|
| --- | --- |
|
|
30
30
|
| **Node.js 20+** | ESM runtime. Check with `node -v`. |
|
|
31
|
-
| **Issued developer API key** |
|
|
32
|
-
| **Network access** |
|
|
31
|
+
| **Issued developer API key** | Issue the key on the **same** API you will call. Local mainnet: Developers on `http://127.0.0.1:5174`. Public testnet: [app.aureonlabs.network](https://app.aureonlabs.network) → **Developers** (still chain 46630). Plaintext is shown once. |
|
|
32
|
+
| **Network access** | Default is local mainnet `http://127.0.0.1:8788` (chain 4663). Optional `AUREON_NETWORK=testnet` uses `https://api.aureonlabs.network` (still 46630). |
|
|
33
33
|
| **MCP host** | Cursor, Claude Desktop, or any client that can launch a stdio MCP server. |
|
|
34
34
|
|
|
35
35
|
You do **not** need a wallet Bearer token for day-to-day control-plane tools when you use an issued key.
|
|
@@ -49,7 +49,7 @@ The MCP server never custodies funds and never signs chain transactions.
|
|
|
49
49
|
| Depends on | `@buildaureon/sdk` |
|
|
50
50
|
| Transport | stdio MCP (JSON-RPC over stdin/stdout) |
|
|
51
51
|
| Tool count | 47 |
|
|
52
|
-
|
|
|
52
|
+
| Default API | `http://127.0.0.1:8788` (4663). Public host is opt-in testnet 46630. |
|
|
53
53
|
| Console | [app.aureonlabs.network](https://app.aureonlabs.network) |
|
|
54
54
|
|
|
55
55
|
Primary launch command (recommended for hosts):
|
|
@@ -68,11 +68,12 @@ The process reads these at startup. Put them in your MCP host `env` block (Curso
|
|
|
68
68
|
| --- | --- | --- | --- |
|
|
69
69
|
| `AUREON_API_KEY` | **Preferred** | — | Issued developer key (`aureon_…`). Product access **and** wallet identity for control-plane tools. |
|
|
70
70
|
| `AUREON_AUTH_TOKEN` | Optional | — | Wallet Bearer session. Wins over key identity when both are present on a request. |
|
|
71
|
-
| `
|
|
71
|
+
| `AUREON_NETWORK` | Optional | `mainnet` | Omit for local mainnet 4663 / 8788. Set `testnet` for the public host (still 46630). |
|
|
72
|
+
| `AUREON_API_URL` | Optional | mainnet `http://127.0.0.1:8788` | Override URL. Must match `AUREON_NETWORK` if both are set. |
|
|
72
73
|
|
|
73
74
|
At least one of `AUREON_API_KEY` or `AUREON_AUTH_TOKEN` must be set or the server refuses to start.
|
|
74
75
|
|
|
75
|
-
**Recommendation:** set only `AUREON_API_KEY`
|
|
76
|
+
**Recommendation:** set only `AUREON_API_KEY` for local mainnet. Add `AUREON_NETWORK=testnet` only if you want the public host (still 46630).
|
|
76
77
|
|
|
77
78
|
Never put a wallet private key in MCP env. Prepare tools return unsigned calldata; the host wallet signs elsewhere.
|
|
78
79
|
|
|
@@ -105,7 +106,6 @@ Create or edit `.cursor/mcp.json` in the project, or merge into your user MCP co
|
|
|
105
106
|
"command": "npx",
|
|
106
107
|
"args": ["-y", "@buildaureon/mcp"],
|
|
107
108
|
"env": {
|
|
108
|
-
"AUREON_API_URL": "https://api.aureonlabs.network",
|
|
109
109
|
"AUREON_API_KEY": "aureon_...."
|
|
110
110
|
}
|
|
111
111
|
}
|
|
@@ -117,6 +117,8 @@ Restart Cursor (or reload MCP servers). Confirm **aureon** appears under MCP / t
|
|
|
117
117
|
|
|
118
118
|
Ask a smoke prompt such as: *“Use aureon_ping, then aureon_me.”*
|
|
119
119
|
|
|
120
|
+
Issue the key on the same network this process will call. A public-console key does not authenticate the local 8788 mainnet API. To hit the public host (still 46630), add `"AUREON_NETWORK": "testnet"`.
|
|
121
|
+
|
|
120
122
|
### Option B — from a local build
|
|
121
123
|
|
|
122
124
|
Use this only when you are iterating on a clone of the package. Replace the working directory with your own clone path.
|
|
@@ -129,7 +131,6 @@ Use this only when you are iterating on a clone of the package. Replace the work
|
|
|
129
131
|
"args": ["dist/index.js"],
|
|
130
132
|
"cwd": "/path/to/your/clone/mcp",
|
|
131
133
|
"env": {
|
|
132
|
-
"AUREON_API_URL": "https://api.aureonlabs.network",
|
|
133
134
|
"AUREON_API_KEY": "aureon_...."
|
|
134
135
|
}
|
|
135
136
|
}
|
|
@@ -154,7 +155,6 @@ Merge the same shape into Claude Desktop’s MCP config file (location depends o
|
|
|
154
155
|
"command": "npx",
|
|
155
156
|
"args": ["-y", "@buildaureon/mcp"],
|
|
156
157
|
"env": {
|
|
157
|
-
"AUREON_API_URL": "https://api.aureonlabs.network",
|
|
158
158
|
"AUREON_API_KEY": "aureon_...."
|
|
159
159
|
}
|
|
160
160
|
}
|
|
@@ -176,8 +176,8 @@ From a terminal, with the key in the environment:
|
|
|
176
176
|
|
|
177
177
|
```bash
|
|
178
178
|
export AUREON_API_KEY=aureon_....
|
|
179
|
-
#
|
|
180
|
-
export
|
|
179
|
+
# omit AUREON_API_URL for local mainnet 8788 / 4663
|
|
180
|
+
# export AUREON_NETWORK=testnet # public host, still 46630
|
|
181
181
|
|
|
182
182
|
npx -y @buildaureon/mcp
|
|
183
183
|
```
|
|
@@ -186,7 +186,8 @@ On Windows PowerShell:
|
|
|
186
186
|
|
|
187
187
|
```powershell
|
|
188
188
|
$env:AUREON_API_KEY = "aureon_...."
|
|
189
|
-
|
|
189
|
+
# omit AUREON_API_URL for local mainnet 8788 / 4663
|
|
190
|
+
# $env:AUREON_NETWORK = "testnet" # public host, still 46630
|
|
190
191
|
npx -y @buildaureon/mcp
|
|
191
192
|
```
|
|
192
193
|
|
|
@@ -280,7 +281,7 @@ Vault **prepare** tools return unsigned steps only. Signing and broadcasting sta
|
|
|
280
281
|
| Startup error about missing credentials | Neither key nor Bearer set | Set `AUREON_API_KEY` in the host `env` block |
|
|
281
282
|
| `401` / unauthorized on tools | Bad, paused, or revoked key | Create a new issued key; update config |
|
|
282
283
|
| `npx` hangs or fails | Network / registry issue | Retry; ensure Node 20+; try `npm view @buildaureon/mcp version` |
|
|
283
|
-
| Tools listed but every call fails | Wrong `AUREON_API_URL`
|
|
284
|
+
| Tools listed but every call fails | Wrong URL / mixed network | Omit `AUREON_API_URL` for 8788, or set `AUREON_NETWORK=testnet` for the public host (still 46630) |
|
|
284
285
|
| `aureon_me` shows unexpected wallet | Bearer also set and winning | Clear `AUREON_AUTH_TOKEN` / logout; prefer key-only — see [./auth.md](./auth.md) |
|
|
285
286
|
| Local `node dist/index.js` fails | Missing build | Run `pnpm build` so `dist/index.js` exists |
|
|
286
287
|
| Deposit / withdraw “not signed” | Expected | MCP returns unsigned steps; sign outside MCP |
|
|
@@ -306,7 +307,7 @@ No. Keep private keys out of MCP. Use them only in a separate signing host when
|
|
|
306
307
|
|
|
307
308
|
### Does MCP talk to a local backend?
|
|
308
309
|
|
|
309
|
-
|
|
310
|
+
Default (omit `AUREON_API_URL`) is local mainnet `http://127.0.0.1:8788` (chain 4663). Set `AUREON_NETWORK=testnet` only for the public host (still 46630). Do not map mainnet to `api.aureonlabs.network`.
|
|
310
311
|
|
|
311
312
|
### How is this different from `@buildaureon/sdk`?
|
|
312
313
|
|
|
@@ -328,7 +329,7 @@ Node.js **20 or newer**. Older runtimes are unsupported.
|
|
|
328
329
|
- [ ] Issued key created on the Developers page
|
|
329
330
|
- [ ] Host config uses `npx -y @buildaureon/mcp` (or local `node dist/index.js` with a placeholder cwd)
|
|
330
331
|
- [ ] `AUREON_API_KEY` set in host `env` (no private key)
|
|
331
|
-
- [ ] `AUREON_API_URL` omitted
|
|
332
|
+
- [ ] `AUREON_API_URL` omitted (mainnet 8788). Optional `AUREON_NETWORK=testnet` for the public host (still 46630)
|
|
332
333
|
- [ ] Host restarted; aureon server shows connected
|
|
333
334
|
- [ ] `aureon_ping` succeeds
|
|
334
335
|
- [ ] `aureon_me` returns the expected wallet
|
package/docs/tools.md
CHANGED
|
@@ -8,7 +8,7 @@ For request/response shapes, error codes, and HTTP contracts, see the **@buildau
|
|
|
8
8
|
|
|
9
9
|
**Tool count:** 52.
|
|
10
10
|
|
|
11
|
-
**API:** `https://api.aureonlabs.network` (
|
|
11
|
+
**API:** default local mainnet `http://127.0.0.1:8788` (chain 4663). Optional `AUREON_NETWORK=testnet` uses `https://api.aureonlabs.network` (still 46630).
|
|
12
12
|
|
|
13
13
|
---
|
|
14
14
|
|
|
@@ -20,19 +20,19 @@ These conventions apply to every tool below.
|
|
|
20
20
|
| --- | --- |
|
|
21
21
|
| Issued API key | Set `AUREON_API_KEY` to an issued Developers key. That key is product access **and** wallet identity for control-plane calls. |
|
|
22
22
|
| Optional Bearer | You may also supply a wallet Bearer (`AUREON_AUTH_TOKEN` or `aureon_verify_wallet`). If both key and Bearer are present, Bearer wins. |
|
|
23
|
-
|
|
|
23
|
+
| Default network | Local mainnet 8788 / 4663. Optional `AUREON_NETWORK=testnet` for the public host (still 46630). |
|
|
24
24
|
| Private key outside MCP | Deposit and withdraw **prepare** tools return unsigned steps. Signing and broadcast happen in the host wallet — never inside the MCP process. |
|
|
25
25
|
| Default automation | `aureon_create_objective` defaults `automationMode` to `"auto"`. |
|
|
26
26
|
| Locked at create | `targetSymbol` and `automationMode` are immutable after create. Recreate the objective to change them. |
|
|
27
27
|
| Unsigned prepare | `aureon_prepare_vault_deposit` and `aureon_prepare_vault_withdraw` never broadcast. |
|
|
28
28
|
| Settlement honesty | Restore / execution receipts may show `settlement: "vault"` (on-chain) or `"staged"` (ledger-local). Label them honestly. |
|
|
29
29
|
|
|
30
|
-
The catalog includes `aureon_dev_login` for preview APIs only. On
|
|
30
|
+
The catalog includes `aureon_dev_login` for preview APIs only. On hosted APIs it fails by design — agents should use an issued key (or optional Bearer) instead. The public host is still testnet 46630, not 4663.
|
|
31
31
|
|
|
32
32
|
### Auth bootstrap (agents)
|
|
33
33
|
|
|
34
34
|
1. Create an issued key in the operator utility **Developers** console.
|
|
35
|
-
2. Configure the MCP host with `AUREON_API_URL
|
|
35
|
+
2. Configure the MCP host with `AUREON_API_KEY`. Omit `AUREON_API_URL` for local mainnet 8788. Set `AUREON_NETWORK=testnet` only for the public host (still 46630).
|
|
36
36
|
3. Call tools. Day-to-day agent work does **not** require a wallet handshake.
|
|
37
37
|
|
|
38
38
|
Optional wallet path: `aureon_get_auth_nonce` → host signs → `aureon_verify_wallet`. Prefer issued keys for always-on agents.
|
package/examples/cursor.mcp.json
CHANGED
package/package.json
CHANGED
|
@@ -1,63 +1,66 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@buildaureon/mcp",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "MCP server for AUREON Financial Compass: Financial Compass capital context for AI agents",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"main": "./dist/index.js",
|
|
7
|
-
"types": "./dist/index.d.ts",
|
|
8
|
-
"bin": {
|
|
9
|
-
"aureon-mcp": "./dist/index.js"
|
|
10
|
-
},
|
|
11
|
-
"exports": {
|
|
12
|
-
".": {
|
|
13
|
-
"types": "./dist/index.d.ts",
|
|
14
|
-
"import": "./dist/index.js"
|
|
15
|
-
}
|
|
16
|
-
},
|
|
17
|
-
"files": [
|
|
18
|
-
"dist",
|
|
19
|
-
"README.md",
|
|
20
|
-
"LICENSE",
|
|
21
|
-
"docs",
|
|
22
|
-
"examples"
|
|
23
|
-
],
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
"
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
"
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
"
|
|
42
|
-
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
"
|
|
49
|
-
"node": "
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
|
|
63
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "@buildaureon/mcp",
|
|
3
|
+
"version": "0.1.8",
|
|
4
|
+
"description": "MCP server for AUREON Financial Compass: Financial Compass capital context for AI agents",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"bin": {
|
|
9
|
+
"aureon-mcp": "./dist/index.js"
|
|
10
|
+
},
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"import": "./dist/index.js"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist",
|
|
19
|
+
"README.md",
|
|
20
|
+
"LICENSE",
|
|
21
|
+
"docs",
|
|
22
|
+
"examples"
|
|
23
|
+
],
|
|
24
|
+
"keywords": [
|
|
25
|
+
"aureon",
|
|
26
|
+
"mcp",
|
|
27
|
+
"model-context-protocol",
|
|
28
|
+
"robinhood-chain",
|
|
29
|
+
"financial-compass",
|
|
30
|
+
"ai-agents"
|
|
31
|
+
],
|
|
32
|
+
"repository": {
|
|
33
|
+
"type": "git",
|
|
34
|
+
"url": "https://github.com/buildaureon/aureon-mcp"
|
|
35
|
+
},
|
|
36
|
+
"license": "MIT",
|
|
37
|
+
"publishConfig": {
|
|
38
|
+
"access": "public"
|
|
39
|
+
},
|
|
40
|
+
"engines": {
|
|
41
|
+
"node": ">=20"
|
|
42
|
+
},
|
|
43
|
+
"dependencies": {
|
|
44
|
+
"@modelcontextprotocol/sdk": "^1.12.1",
|
|
45
|
+
"zod": "^3.25.67",
|
|
46
|
+
"@buildaureon/sdk": "0.1.8"
|
|
47
|
+
},
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"@types/node": "^22.13.10",
|
|
50
|
+
"tsup": "^8.4.0",
|
|
51
|
+
"tsx": "^4.19.3",
|
|
52
|
+
"typescript": "^5.8.2",
|
|
53
|
+
"viem": "^2.55.0"
|
|
54
|
+
},
|
|
55
|
+
"scripts": {
|
|
56
|
+
"build": "tsup",
|
|
57
|
+
"dev": "tsx src/index.ts",
|
|
58
|
+
"start": "node dist/index.js",
|
|
59
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
60
|
+
"test": "tsx --test tests/**/*.test.ts",
|
|
61
|
+
"test:e2e": "tsx tests/e2e-full.mjs",
|
|
62
|
+
"test:phase2": "tsx tests/verify-phase2-session.mjs",
|
|
63
|
+
"test:live-agent": "tsx tests/live-agent-exercise.mjs",
|
|
64
|
+
"verify": "tsx tests/verify-agent.ts"
|
|
65
|
+
}
|
|
66
|
+
}
|