@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 CHANGED
@@ -11,7 +11,7 @@ Exposes the full `@buildaureon/sdk` surface as tools for Cursor, Claude Desktop,
11
11
 
12
12
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.x-3178C6?style=flat-square&logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
13
13
  [![MCP](https://img.shields.io/badge/Protocol-MCP_stdio-0b0e0d?style=flat-square)](https://modelcontextprotocol.io)
14
- [![Version](https://img.shields.io/badge/version-0.1.1-a8e00d?style=flat-square)](https://github.com/buildaureon)
14
+ [![Version](https://img.shields.io/badge/version-0.1.8-a8e00d?style=flat-square)](https://github.com/buildaureon)
15
15
  [![License: MIT](https://img.shields.io/badge/license-MIT-0b0e0d?style=flat-square)](LICENSE)
16
16
  [![Node](https://img.shields.io/badge/node-%3E%3D20-339933?style=flat-square&logo=nodejs&logoColor=white)](#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**: An issued key from [app.aureonlabs.network](https://app.aureonlabs.network) **Developers**
90
- - **Network Access**: Outbound connectivity to `https://api.aureonlabs.network`
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, the live API URL, and your issued key.
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 -->|HTTPS| API[api.aureonlabs.network]
116
- Utility[Operator utility] -->|wallet Bearer| API
117
- API --> Vault[Smart Vault · Robinhood Chain]
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
- 1. Open https://app.aureonlabs.network
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
- That key identifies your wallet for control-plane tools. **No Bearer token required.**
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
- | `AUREON_API_URL` | No | Defaults to `https://api.aureonlabs.network` |
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
- No. By default, it connects to the live production API at `https://api.aureonlabs.network`. Override `AUREON_API_URL` only if targeting a custom gateway.
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 { DEFAULT_API_BASE_URL, createSessionTokenProvider, createAureonClient, validateExecutionReceipt, isAureonError } from '@buildaureon/sdk';
4
+ import { resolveAureonNetworkFromEnv, createSessionTokenProvider, createAureonClient, validateExecutionReceipt, isAureonError } from '@buildaureon/sdk';
5
5
  import { z } from 'zod';
6
6
 
7
7
  function loadConfig() {
8
- const apiUrl = process.env.AUREON_API_URL || DEFAULT_API_BASE_URL;
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 from app.aureonlabs.network Developers) or AUREON_AUTH_TOKEN (wallet Bearer). See https://github.com/buildaureon/aureon-mcp#authentication"
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 { apiUrl, apiKey, authToken };
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":";;;;;;AAwBO,SAAS,UAAA,GAAwB;AACtC,EAAA,MAAM,WAAW,2BAAA,EAA4B;AAC7C,EAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,GAAA,CAAI,cAAA,IAAkB,MAAA;AAC7C,EAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,GAAA,CAAI,iBAAA,IAAqB,MAAA;AAEnD,EAAA,IAAI,CAAC,MAAA,IAAU,CAAC,SAAA,EAAW;AACzB,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KAKF;AAAA,EACF;AAEA,EAAA,OAAO;AAAA,IACL,QAAQ,QAAA,CAAS,OAAA;AAAA,IACjB,MAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAS,QAAA,CAAS,OAAA;AAAA,IAClB,SAAS,QAAA,CAAS;AAAA,GACpB;AACF;AC7BO,SAAS,aAAa,MAAA,EAAoC;AAC/D,EAAA,MAAM,OAAA,GAAU,0BAAA,CAA2B,MAAA,CAAO,SAAA,IAAa,IAAI,CAAA;AACnE,EAAA,MAAM,SAAS,kBAAA,CAAmB;AAAA,IAChC,SAAS,MAAA,CAAO,OAAA;AAAA,IAChB,SAAS,MAAA,CAAO,MAAA;AAAA,IAChB,MAAA,EAAQ,OAAO,MAAA,IAAU,IAAA;AAAA,IACzB,gBAAgB,OAAA,CAAQ;AAAA,GACzB,CAAA;AACD,EAAA,OAAO,EAAE,QAAQ,OAAA,EAAQ;AAC3B;;;AC1BO,SAAS,WAAW,IAAA,EAAuB;AAChD,EAAA,OAAO,IAAA,CAAK,SAAA,CAAU,IAAA,EAAM,IAAA,EAAM,CAAC,CAAA;AACrC;ACAO,SAAS,UAAU,GAAA,EAAsB;AAC9C,EAAA,IAAI,aAAA,CAAc,GAAG,CAAA,EAAG;AACtB,IAAA,OAAO,CAAA,CAAA,EAAI,GAAA,CAAI,IAAI,CAAA,EAAA,EAAK,IAAI,OAAO,CAAA,CAAA;AAAA,EACrC;AACA,EAAA,IAAI,eAAe,KAAA,EAAO;AACxB,IAAA,OAAO,GAAA,CAAI,OAAA;AAAA,EACb;AACA,EAAA,OAAO,OAAO,GAAG,CAAA;AACnB;;;ACPO,SAAS,GAAG,IAAA,EAAe;AAChC,EAAA,OAAO,EAAE,OAAA,EAAS,CAAC,EAAE,IAAA,EAAM,MAAA,EAAiB,IAAA,EAAM,UAAA,CAAW,IAAI,CAAA,EAAG,CAAA,EAAE;AACxE;AAEO,SAAS,KAAK,GAAA,EAAc;AACjC,EAAA,OAAO,EAAE,OAAA,EAAS,CAAC,EAAE,IAAA,EAAM,MAAA,EAAiB,IAAA,EAAM,SAAA,CAAU,GAAG,CAAA,EAAG,CAAA,EAAG,SAAS,IAAA,EAAK;AACrF;;;ACJO,SAAS,iBAAA,CAAkB,QAAmB,MAAA,EAAsB;AACzE,EAAA,MAAA,CAAO,IAAA,CAAK,aAAA,EAAe,+CAAA,EAA4C,IAAI,YAAY;AACrF,IAAA,IAAI;AACF,MAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,IAAA,EAAM,CAAA;AAAA,IAC/B,SAAS,GAAA,EAAK;AACZ,MAAA,OAAO,KAAK,GAAG,CAAA;AAAA,IACjB;AAAA,EACF,CAAC,CAAA;AAED,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,qBAAA;AAAA,IACA,wEAAA;AAAA,IACA,EAAC;AAAA,IACD,YAAY;AACV,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,WAAA,EAAa,CAAA;AAAA,MACtC,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,iCAAA;AAAA,IACA,2HAAA;AAAA,IACA,EAAC;AAAA,IACD,YAAY;AACV,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,qBAAA,EAAuB,CAAA;AAAA,MAChD,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,sBAAA;AAAA,IACA,gEAAA;AAAA,IACA,EAAC;AAAA,IACD,YAAY;AACV,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,YAAA,EAAc,CAAA;AAAA,MACvC,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,IAAA,CAAK,wBAAA,EAA0B,uCAAA,EAAyC,IAAI,YAAY;AAC7F,IAAA,IAAI;AACF,MAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,cAAA,EAAgB,CAAA;AAAA,IACzC,SAAS,GAAA,EAAK;AACZ,MAAA,OAAO,KAAK,GAAG,CAAA;AAAA,IACjB;AAAA,EACF,CAAC,CAAA;AAED,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,sBAAA;AAAA,IACA,8BAAA;AAAA,IACA,EAAE,WAAA,EAAa,CAAA,CAAE,QAAO,CAAE,QAAA,CAAS,kBAAkB,CAAA,EAAE;AAAA,IACvD,OAAO,EAAE,WAAA,EAAY,KAAM;AACzB,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,YAAA,CAAa,WAAW,CAAC,CAAA;AAAA,MAClD,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,mBAAA;AAAA,IACA,4EAAA;AAAA,IACA,EAAE,aAAa,CAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,QAAA,CAAS,uCAAuC,CAAA,EAAE;AAAA,IACvF,OAAO,EAAE,WAAA,EAAY,KAAM;AACzB,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,SAAA,CAAU,WAAW,CAAC,CAAA;AAAA,MAC/C,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,sBAAA;AAAA,IACA,6EAAA;AAAA,IACA,EAAE,aAAa,CAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,QAAA,CAAS,uCAAuC,CAAA,EAAE;AAAA,IACvF,OAAO,EAAE,WAAA,EAAY,KAAM;AACzB,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,WAAA,CAAY,WAAW,CAAC,CAAA;AAAA,MACjD,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,4BAAA;AAAA,IACA,2CAAA;AAAA,IACA,EAAC;AAAA,IACD,YAAY;AACV,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,iBAAA,EAAmB,CAAA;AAAA,MAC5C,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AACF;AC3GO,SAAS,oBAAA,CAAqB,QAAmB,MAAA,EAAsB;AAC5E,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,yBAAA;AAAA,IACA,mFAAA;AAAA,IACA,EAAE,WAAA,EAAaA,CAAAA,CAAE,QAAO,CAAE,QAAA,CAAS,kBAAkB,CAAA,EAAE;AAAA,IACvD,OAAO,EAAE,WAAA,EAAY,KAAM;AACzB,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,cAAA,CAAe,WAAW,CAAC,CAAA;AAAA,MACpD,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,sBAAA;AAAA,IACA,mPAAA;AAAA,IACA,EAAE,WAAA,EAAaA,CAAAA,CAAE,QAAO,CAAE,QAAA,CAAS,kBAAkB,CAAA,EAAE;AAAA,IACvD,OAAO,EAAE,WAAA,EAAY,KAAM;AACzB,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,YAAA,CAAa,WAAW,CAAC,CAAA;AAAA,MAClD,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,0BAAA;AAAA,IACA,sOAAA;AAAA,IACA,EAAE,WAAA,EAAaA,CAAAA,CAAE,QAAO,CAAE,QAAA,CAAS,kBAAkB,CAAA,EAAE;AAAA,IACvD,OAAO,EAAE,WAAA,EAAY,KAAM;AACzB,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,gBAAA,CAAiB,WAAW,CAAC,CAAA;AAAA,MACtD,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,wBAAA;AAAA,IACA,gHAAA;AAAA,IACA,EAAE,aAAaA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,QAAA,CAAS,uCAAuC,CAAA,EAAE;AAAA,IACvF,OAAO,EAAE,WAAA,EAAY,KAAM;AACzB,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,cAAA,CAAe,WAAW,CAAC,CAAA;AAAA,MACpD,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AACF;ACpDO,SAAS,kBAAA,CAAmB,QAAmB,MAAA,EAAsB;AAC1E,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,kBAAA;AAAA,IACA,yDAAA;AAAA,IACA,EAAC;AAAA,IACD,YAAY;AACV,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,QAAA,EAAU,CAAA;AAAA,MACnC,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,yBAAA;AAAA,IACA,gEAAA;AAAA,IACA,EAAC;AAAA,IACD,YAAY;AACV,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,cAAA,EAAgB,CAAA;AAAA,MACzC,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,8BAAA;AAAA,IACA,6JAAA;AAAA,IACA;AAAA,MACE,MAAA,EAAQA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,4CAA4C,CAAA;AAAA,MACxE,MAAA,EAAQA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,uBAAuB;AAAA,KACrD;AAAA,IACA,OAAO,EAAE,MAAA,EAAQ,MAAA,EAAO,KAAM;AAC5B,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,mBAAA,CAAoB,EAAE,MAAA,EAAQ,MAAA,EAAQ,CAAC,CAAA;AAAA,MAChE,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,+BAAA;AAAA,IACA,gIAAA;AAAA,IACA;AAAA,MACE,QAAQA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,yCAAyC,CAAA;AAAA,MAChF,MAAA,EAAQA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,uBAAuB;AAAA,KACrD;AAAA,IACA,OAAO,EAAE,MAAA,EAAQ,MAAA,EAAO,KAAM;AAC5B,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,oBAAA,CAAqB,EAAE,MAAA,EAAQ,MAAA,EAAQ,CAAC,CAAA;AAAA,MACjE,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AACF;ACnDO,SAAS,iBAAA,CACd,MAAA,EACA,MAAA,EACA,OAAA,EACA;AACA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,uBAAA;AAAA,IACA,6GAAA;AAAA,IACA,EAAE,OAAA,EAASA,CAAAA,CAAE,QAAO,CAAE,QAAA,CAAS,2BAAsB,CAAA,EAAE;AAAA,IACvD,OAAO,EAAE,OAAA,EAAQ,KAAM;AACrB,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,YAAA,CAAa,OAAO,CAAC,CAAA;AAAA,MAC9C,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,sBAAA;AAAA,IACA,4FAAA;AAAA,IACA;AAAA,MACE,OAAA,EAASA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,gBAAgB,CAAA;AAAA,MAC7C,OAAA,EAASA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,oCAAoC,CAAA;AAAA,MACjE,SAAA,EAAWA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,sBAAsB,CAAA;AAAA,MACrD,YAAYA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,wCAAwC;AAAA,KACrF;AAAA,IACA,OAAO,EAAE,OAAA,EAAS,OAAA,EAAS,SAAA,EAAW,YAAW,KAAM;AACrD,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAQ,MAAM,MAAA,CAAO,YAAA,CAAa;AAAA,UACtC,OAAA;AAAA,UACA,OAAA;AAAA,UACA,SAAA;AAAA,UACA;AAAA,SACD,CAAA;AACD,QAAA,OAAA,CAAQ,QAAA,CAAS,MAAM,KAAK,CAAA;AAC5B,QAAA,OAAO,GAAG,KAAK,CAAA;AAAA,MACjB,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,kBAAA;AAAA,IACA,+GAAA;AAAA,IACA,EAAC;AAAA,IACD,YAAY;AACV,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAQ,MAAM,MAAA,CAAO,QAAA,EAAS;AACpC,QAAA,OAAA,CAAQ,QAAA,CAAS,MAAM,KAAK,CAAA;AAC5B,QAAA,OAAO,GAAG,KAAK,CAAA;AAAA,MACjB,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,eAAA;AAAA,IACA,kEAAA;AAAA,IACA,EAAC;AAAA,IACD,YAAY;AACV,MAAA,IAAI;AACF,QAAA,MAAM,MAAA,GAAS,MAAM,MAAA,CAAO,MAAA,EAAO;AACnC,QAAA,OAAA,CAAQ,KAAA,EAAM;AACd,QAAA,OAAO,GAAG,MAAM,CAAA;AAAA,MAClB,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,WAAA;AAAA,IACA,yEAAA;AAAA,IACA,EAAC;AAAA,IACD,YAAY;AACV,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,EAAA,EAAI,CAAA;AAAA,MAC7B,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AACF;AC5FA,IAAM,aAAA,GAAgBA,EAAE,IAAA,CAAK;AAAA,EAC3B,mBAAA;AAAA,EACA,oBAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAC,CAAA;AAED,IAAM,iBAAA,GAAoBA,EAAE,IAAA,CAAK,CAAC,OAAO,QAAA,EAAU,MAAA,EAAQ,UAAU,CAAC,CAAA;AAE/D,SAAS,mBAAA,CAAoB,QAAmB,MAAA,EAAsB;AAC3E,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,+BAAA;AAAA,IACA,2GAAA;AAAA,IACA;AAAA,MACE,KAAA,EAAOA,CAAAA,CACJ,MAAA,EAAO,CACP,SAAS,sEAAiE,CAAA;AAAA,MAC7E,IAAA,EAAM,aAAA,CAAc,QAAA,CAAS,gBAAgB,CAAA;AAAA,MAC7C,YAAA,EAAcA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,oCAA+B,CAAA;AAAA,MACjE,SAAA,EAAWA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,+BAA0B,CAAA;AAAA,MACzD,cAAcA,CAAAA,CACX,MAAA,GACA,QAAA,EAAS,CACT,SAAS,8DAA8D,CAAA;AAAA,MAC1E,MAAMA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,iCAAiC,CAAA;AAAA,MACtE,QAAA,EAAU,iBAAA,CAAkB,QAAA,EAAS,CAAE,SAAS,qBAAqB;AAAA,KACvE;AAAA,IACA,OAAO,KAAA,KAAU;AACf,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,oBAAA,CAAqB,KAAK,CAAC,CAAA;AAAA,MACpD,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,qCAAA;AAAA,IACA,sEAAA;AAAA,IACA;AAAA,MACE,aAAaA,CAAAA,CACV,MAAA,GACA,QAAA,EAAS,CACT,SAAS,+CAA+C;AAAA,KAC7D;AAAA,IACA,OAAO,EAAE,WAAA,EAAY,KAAM;AACzB,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,yBAAA,CAA0B,WAAW,CAAC,CAAA;AAAA,MAC/D,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AACF;ACrDO,SAAS,yBAAA,CAA0B,QAAmB,MAAA,EAAsB;AACjF,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,+BAAA;AAAA,IACA,wFAAA;AAAA,IACA,EAAC;AAAA,IACD,YAAY;AACV,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,mBAAA,EAAqB,CAAA;AAAA,MAC9C,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,+BAAA;AAAA,IACA,uEAAA;AAAA,IACA;AAAA,MACE,aAAaA,CAAAA,CACV,MAAA,GACA,QAAA,EAAS,CACT,SAAS,+CAA+C;AAAA,KAC7D;AAAA,IACA,OAAO,EAAE,WAAA,EAAY,KAAM;AACzB,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,mBAAA,CAAoB,WAAW,CAAC,CAAA;AAAA,MACzD,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AACF;AC/BO,SAAS,gCAAA,CACd,QACA,MAAA,EACA;AACA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,sCAAA;AAAA,IACA,uFAAA;AAAA,IACA,EAAC;AAAA,IACD,YAAY;AACV,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,0BAAA,EAA4B,CAAA;AAAA,MACrD,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,sCAAA;AAAA,IACA,8DAAA;AAAA,IACA;AAAA,MACE,aAAaA,CAAAA,CACV,MAAA,GACA,QAAA,EAAS,CACT,SAAS,wDAAwD;AAAA,KACtE;AAAA,IACA,OAAO,EAAE,WAAA,EAAY,KAAM;AACzB,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,0BAAA,CAA2B,WAAW,CAAC,CAAA;AAAA,MAChE,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AACF;AClCA,IAAM,YAAYA,CAAAA,CAAE,IAAA,CAAK,CAAC,QAAA,EAAU,QAAA,EAAU,KAAK,CAAC,CAAA;AAE7C,SAAS,2BAAA,CACd,QACA,MAAA,EACA;AACA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,iCAAA;AAAA,IACA,4GAAA;AAAA,IACA;AAAA,MACE,KAAA,EAAOA,CAAAA,CACJ,MAAA,EAAO,CACP,UAAS,CACT,QAAA;AAAA,QACC;AAAA,OACF;AAAA,MACF,IAAA,EAAM,SAAA,CACH,QAAA,EAAS,CACT,SAAS,uDAAuD;AAAA,KACrE;AAAA,IACA,OAAO,EAAE,KAAA,EAAO,IAAA,EAAK,KAAM;AACzB,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,qBAAA,CAAsB,EAAE,KAAA,EAAO,IAAA,EAAM,CAAC,CAAA;AAAA,MAC/D,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,iCAAA;AAAA,IACA,wDAAA;AAAA,IACA;AAAA,MACE,aAAaA,CAAAA,CACV,MAAA,GACA,QAAA,EAAS,CACT,SAAS,kDAAkD,CAAA;AAAA,MAC9D,OAAOA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,+BAA+B,CAAA;AAAA,MACrE,IAAA,EAAM,SAAA,CAAU,QAAA,EAAS,CAAE,SAAS,kBAAkB;AAAA,KACxD;AAAA,IACA,OAAO,EAAE,WAAA,EAAa,KAAA,EAAO,MAAK,KAAM;AACtC,MAAA,IAAI;AACF,QAAA,OAAO,EAAA;AAAA,UACL,MAAM,MAAA,CAAO,qBAAA,CAAsB,EAAE,WAAA,EAAa,KAAA,EAAO,MAAM;AAAA,SACjE;AAAA,MACF,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AACF;AClDO,SAAS,2BAAA,CACd,QACA,MAAA,EACA;AACA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,kCAAA;AAAA,IACA,wGAAA;AAAA,IACA;AAAA,MACE,KAAA,EAAOA,CAAAA,CACJ,MAAA,EAAO,CACP,UAAS,CACT,QAAA;AAAA,QACC;AAAA;AACF,KACJ;AAAA,IACA,OAAO,EAAE,KAAA,EAAM,KAAM;AACnB,MAAA,IAAI;AACF,QAAA,OAAO,GAAG,MAAM,MAAA,CAAO,sBAAsB,EAAE,KAAA,EAAO,CAAC,CAAA;AAAA,MACzD,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,kCAAA;AAAA,IACA,6EAAA;AAAA,IACA;AAAA,MACE,aAAaA,CAAAA,CACV,MAAA,GACA,QAAA,EAAS,CACT,SAAS,6DAA6D,CAAA;AAAA,MACzE,OAAOA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,+BAA+B;AAAA,KACvE;AAAA,IACA,OAAO,EAAE,WAAA,EAAa,KAAA,EAAM,KAAM;AAChC,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,qBAAA,CAAsB,EAAE,WAAA,EAAa,KAAA,EAAO,CAAC,CAAA;AAAA,MACtE,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AACF;AC1CA,IAAMC,cAAAA,GAAgBD,EAAE,IAAA,CAAK;AAAA,EAC3B,mBAAA;AAAA,EACA,oBAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAC,CAAA;AAED,IAAME,kBAAAA,GAAoBF,EAAE,IAAA,CAAK,CAAC,OAAO,QAAA,EAAU,MAAA,EAAQ,UAAU,CAAC,CAAA;AAEtE,IAAM,iBAAiBA,CAAAA,CAAE,IAAA,CAAK,CAAC,MAAA,EAAQ,QAAQ,CAAC,CAAA;AAEzC,SAAS,sBAAA,CAAuB,QAAmB,MAAA,EAAsB;AAC9E,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,yBAAA;AAAA,IACA,gKAAA;AAAA,IACA;AAAA,MACE,IAAA,EAAMA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,wBAAwB,CAAA;AAAA,MAClD,IAAA,EAAMC,cAAAA,CAAc,QAAA,CAAS,gBAAgB,CAAA;AAAA,MAC7C,YAAA,EAAcD,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,oCAA+B,CAAA;AAAA,MACjE,SAAA,EAAWA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,+BAA0B,CAAA;AAAA,MACzD,QAAA,EAAUE,kBAAAA,CAAkB,QAAA,EAAS,CAAE,SAAS,qBAAqB,CAAA;AAAA,MACrE,cAAcF,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,wBAAwB,CAAA;AAAA,MACrE,eAAeA,CAAAA,CACZ,MAAA,GACA,QAAA,EAAS,CACT,SAAS,sCAAsC,CAAA;AAAA,MAClD,YAAA,EAAcA,EACX,MAAA,EAAO,CACP,UAAS,CACT,QAAA,EAAS,CACT,QAAA,CAAS,6CAA6C,CAAA;AAAA,MACzD,cAAA,EAAgB,cAAA,CACb,QAAA,EAAS,CACT,SAAS,8EAA8E;AAAA,KAC5F;AAAA,IACA,OAAO,KAAA,KAAU;AACf,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,eAAA,CAAgB,KAAK,CAAC,CAAA;AAAA,MAC/C,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,yBAAA;AAAA,IACA,2HAAA;AAAA,IACA;AAAA,MACE,WAAA,EAAaA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,cAAc,CAAA;AAAA,MAC/C,IAAA,EAAMA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,MAC1B,QAAA,EAAUE,mBAAkB,QAAA,EAAS;AAAA,MACrC,YAAA,EAAcF,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,MAClC,SAAA,EAAWA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,MAC/B,YAAA,EAAcA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,MAClC,aAAA,EAAeA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAAS,KACrC;AAAA,IACA,OAAO,EAAE,WAAA,EAAa,GAAG,OAAM,KAAM;AACnC,MAAA,IAAI;AACF,QAAA,OAAO,GAAG,MAAM,MAAA,CAAO,eAAA,CAAgB,WAAA,EAAa,KAAK,CAAC,CAAA;AAAA,MAC5D,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,wBAAA;AAAA,IACA,8CAAA;AAAA,IACA,EAAE,WAAA,EAAaA,CAAAA,CAAE,QAAO,CAAE,QAAA,CAAS,cAAc,CAAA,EAAE;AAAA,IACnD,OAAO,EAAE,WAAA,EAAY,KAAM;AACzB,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,cAAA,CAAe,WAAW,CAAC,CAAA;AAAA,MACpD,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,yBAAA;AAAA,IACA,0CAAA;AAAA,IACA,EAAE,WAAA,EAAaA,CAAAA,CAAE,QAAO,CAAE,QAAA,CAAS,cAAc,CAAA,EAAE;AAAA,IACnD,OAAO,EAAE,WAAA,EAAY,KAAM;AACzB,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,eAAA,CAAgB,WAAW,CAAC,CAAA;AAAA,MACrD,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AACF;AC1FA,IAAM,aAAA,GAAgBA,EAAE,MAAA,CAAO;AAAA,EAC7B,MAAA,EAAQA,EAAE,MAAA,EAAO;AAAA,EACjB,IAAA,EAAMA,EAAE,MAAA,EAAO;AAAA,EACf,QAAA,EAAUA,EAAE,IAAA,CAAK,CAAC,UAAU,aAAA,EAAe,KAAA,EAAO,OAAO,CAAC,CAAA;AAAA,EAC1D,QAAA,EAAUA,EAAE,MAAA,EAAO;AAAA,EACnB,YAAA,EAAcA,EAAE,MAAA;AAClB,CAAC,CAAA;AAEM,SAAS,sBAAA,CAAuB,QAAmB,MAAA,EAAsB;AAC9E,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,sBAAA;AAAA,IACA,yDAAA;AAAA,IACA;AAAA,MACE,SAAA,EAAWA,EAAE,KAAA,CAAM,aAAa,EAAE,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,CAAS,yBAAyB;AAAA,KAC7E;AAAA,IACA,OAAO,EAAE,SAAA,EAAU,KAAM;AACvB,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,YAAA,CAAa,SAAS,CAAC,CAAA;AAAA,MAChD,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,wBAAA;AAAA,IACA,+DAAA;AAAA,IACA,EAAC;AAAA,IACD,YAAY;AACV,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,cAAA,EAAgB,CAAA;AAAA,MACzC,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,uBAAA;AAAA,IACA,wEAAA;AAAA,IACA,EAAC;AAAA,IACD,YAAY;AACV,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,aAAA,EAAe,CAAA;AAAA,MACxC,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AACF;ACjDO,SAAS,mBAAA,CAAoB,QAAmB,MAAA,EAAsB;AAC3E,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,2BAAA;AAAA,IACA,6EAAA;AAAA,IACA;AAAA,MACE,MAAA,EAAQA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,uBAAuB,CAAA;AAAA,MACnD,gBAAA,EAAkBA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,6CAA6C,CAAA;AAAA,MACnF,MAAMA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,aAAa,CAAA;AAAA,MAClD,aAAaA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mBAAmB,CAAA;AAAA,MAC/D,aAAaA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,2HAA2H;AAAA,KAC1K;AAAA,IACA,OAAO,KAAA,KAAU;AACf,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,gBAAA,CAAiB,KAAK,CAAC,CAAA;AAAA,MAChD,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,yBAAA;AAAA,IACA,mEAAA;AAAA,IACA,EAAC;AAAA,IACD,YAAY;AACV,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,eAAA,EAAiB,CAAA;AAAA,MAC1C,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AACF;AChCO,SAAS,sBAAA,CAAuB,QAAmB,MAAA,EAAsB;AAC9E,EAAA,MAAA,CAAO,IAAA,CAAK,sBAAA,EAAwB,gDAAA,EAAkD,IAAI,YAAY;AACpG,IAAA,IAAI;AACF,MAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,WAAA,EAAa,CAAA;AAAA,IACtC,SAAS,GAAA,EAAK;AACZ,MAAA,OAAO,KAAK,GAAG,CAAA;AAAA,IACjB;AAAA,EACF,CAAC,CAAA;AAED,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,uBAAA;AAAA,IACA,uEAAA;AAAA,IACA,EAAE,IAAA,EAAMA,CAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,QAAA,CAAS,kBAAkB,CAAA,EAAE;AAAA,IACvD,OAAO,EAAE,IAAA,EAAK,KAAM;AAClB,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,YAAA,CAAa,IAAI,CAAC,CAAA;AAAA,MAC3C,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,uBAAA;AAAA,IACA,gCAAA;AAAA,IACA,EAAE,KAAA,EAAOA,CAAAA,CAAE,QAAO,CAAE,QAAA,CAAS,YAAY,CAAA,EAAE;AAAA,IAC3C,OAAO,EAAE,KAAA,EAAM,KAAM;AACnB,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,YAAA,CAAa,KAAK,CAAC,CAAA;AAAA,MAC5C,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,uBAAA;AAAA,IACA,+CAAA;AAAA,IACA,EAAE,KAAA,EAAOA,CAAAA,CAAE,QAAO,CAAE,QAAA,CAAS,YAAY,CAAA,EAAE;AAAA,IAC3C,OAAO,EAAE,KAAA,EAAM,KAAM;AACnB,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,YAAA,CAAa,KAAK,CAAC,CAAA;AAAA,MAC5C,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AACF;AC/CO,SAAS,qBAAA,CAAsB,QAAmB,MAAA,EAAsB;AAC7E,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,wBAAA;AAAA,IACA,iGAAA;AAAA,IACA,EAAC;AAAA,IACD,YAAY;AACV,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,iBAAA,EAAmB,CAAA;AAAA,MAC5C,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,+BAAA;AAAA,IACA,wEAAA;AAAA,IACA;AAAA,MACE,WAAA,EAAaA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,cAAc;AAAA,KACjD;AAAA,IACA,OAAO,EAAE,WAAA,EAAY,KAAM;AACzB,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,oBAAA,CAAqB,WAAW,CAAC,CAAA;AAAA,MAC1D,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,mCAAA;AAAA,IACA,kJAAA;AAAA,IACA;AAAA,MACE,WAAA,EAAaA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,mCAAmC;AAAA,KACtE;AAAA,IACA,OAAO,EAAE,WAAA,EAAY,KAAM;AACzB,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,wBAAA,CAAyB,WAAW,CAAC,CAAA;AAAA,MAC9D,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,mCAAA;AAAA,IACA,oMAAA;AAAA,IACA;AAAA,MACE,WAAA,EAAaA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,kCAAkC,CAAA;AAAA,MACnE,eAAA,EAAiBA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,+CAA+C;AAAA,KACtF;AAAA,IACA,OAAO,EAAE,WAAA,EAAa,eAAA,EAAgB,KAAM;AAC1C,MAAA,IAAI;AACF,QAAA,OAAO,GAAG,MAAM,MAAA,CAAO,wBAAA,CAAyB,WAAA,EAAa,eAAe,CAAC,CAAA;AAAA,MAC/E,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AACF;AC3DO,SAAS,uBAAA,CAAwB,QAAmB,MAAA,EAAsB;AAC/E,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,iCAAA;AAAA,IACA,kOAAA;AAAA,IACA;AAAA,MACE,WAAA,EAAaA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,sBAAsB;AAAA,KACzD;AAAA,IACA,OAAO,EAAE,WAAA,EAAY,KAAM;AACzB,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,sBAAA,CAAuB,WAAW,CAAC,CAAA;AAAA,MAC5D,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,yBAAA;AAAA,IACA,8NAAA;AAAA,IACA;AAAA,MACE,aAAaA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,wBAAwB;AAAA,KACtE;AAAA,IACA,OAAO,EAAE,WAAA,EAAY,KAAM;AACzB,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,EAAE,WAAA,EAAa,MAAM,OAAO,eAAA,CAAgB,WAAW,GAAG,CAAA;AAAA,MACtE,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,qCAAA;AAAA,IACA,yMAAA;AAAA,IACA;AAAA,MACE,WAAA,EAAaA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,sBAAsB,CAAA;AAAA,MACvD,eAAA,EAAiBA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,sCAAsC;AAAA,KAC7E;AAAA,IACA,OAAO,EAAE,WAAA,EAAa,eAAA,EAAgB,KAAM;AAC1C,MAAA,IAAI;AACF,QAAA,OAAO,GAAG,MAAM,MAAA,CAAO,0BAAA,CAA2B,WAAA,EAAa,eAAe,CAAC,CAAA;AAAA,MACjF,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AACF;AC9CO,SAAS,qBAAqB,MAAA,EAAmB;AACtD,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,yBAAA;AAAA,IACA,sLAAA;AAAA,IACA;AAAA,MACE,OAAA,EAASA,EACN,MAAA,CAAOA,CAAAA,CAAE,SAAS,CAAA,CAClB,SAAS,4DAA4D;AAAA,KAC1E;AAAA,IACA,OAAO,EAAE,OAAA,EAAQ,KAAM;AACrB,MAAA,MAAM,MAAA,GAAS,yBAAyB,OAAO,CAAA;AAC/C,MAAA,OAAO,GAAG,MAAM,CAAA;AAAA,IAClB;AAAA,GACF;AACF;ACdO,SAAS,uBAAA,CACd,QACA,MAAA,EACA;AACA,EAAA,MAAA,CAAO,IAAA;AAAA,IACL,wBAAA;AAAA,IACA,wJAAA;AAAA,IACA;AAAA,MACE,WAAA,EAAaA,CAAAA,CAAE,MAAA,EAAO,CAAE,SAAS,wBAAwB;AAAA,KAC3D;AAAA,IACA,OAAO,EAAE,WAAA,EAAY,KAAM;AACzB,MAAA,IAAI;AACF,QAAA,OAAO,EAAA,CAAG,MAAM,MAAA,CAAO,aAAA,CAAc,WAAW,CAAC,CAAA;AAAA,MACnD,SAAS,GAAA,EAAK;AACZ,QAAA,OAAO,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACF;AAAA,GACF;AACF;;;ACCO,SAAS,aAAA,CACd,MAAA,EACA,MAAA,EACA,OAAA,EACA;AACA,EAAA,iBAAA,CAAkB,QAAQ,MAAM,CAAA;AAChC,EAAA,oBAAA,CAAqB,QAAQ,MAAM,CAAA;AACnC,EAAA,kBAAA,CAAmB,QAAQ,MAAM,CAAA;AACjC,EAAA,iBAAA,CAAkB,MAAA,EAAQ,QAAQ,OAAO,CAAA;AACzC,EAAA,sBAAA,CAAuB,QAAQ,MAAM,CAAA;AACrC,EAAA,mBAAA,CAAoB,QAAQ,MAAM,CAAA;AAClC,EAAA,yBAAA,CAA0B,QAAQ,MAAM,CAAA;AACxC,EAAA,gCAAA,CAAiC,QAAQ,MAAM,CAAA;AAC/C,EAAA,2BAAA,CAA4B,QAAQ,MAAM,CAAA;AAC1C,EAAA,2BAAA,CAA4B,QAAQ,MAAM,CAAA;AAC1C,EAAA,sBAAA,CAAuB,QAAQ,MAAM,CAAA;AACrC,EAAA,mBAAA,CAAoB,QAAQ,MAAM,CAAA;AAClC,EAAA,sBAAA,CAAuB,QAAQ,MAAM,CAAA;AACrC,EAAA,qBAAA,CAAsB,QAAQ,MAAM,CAAA;AACpC,EAAA,uBAAA,CAAwB,QAAQ,MAAM,CAAA;AACtC,EAAA,oBAAA,CAAqB,MAAM,CAAA;AAC3B,EAAA,uBAAA,CAAwB,QAAQ,MAAM,CAAA;AACxC;;;ACxCA,eAAsB,WAAA,GAAc;AAClC,EAAA,MAAM,SAAS,UAAA,EAAW;AAC1B,EAAA,MAAM,EAAE,MAAA,EAAQ,OAAA,EAAQ,GAAI,aAAa,MAAM,CAAA;AAE/C,EAAA,MAAM,MAAA,GAAS,IAAI,SAAA,CAAU;AAAA,IAC3B,IAAA,EAAM,QAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACV,CAAA;AAED,EAAA,aAAA,CAAc,MAAA,EAAQ,QAAQ,OAAO,CAAA;AAErC,EAAA,MAAM,SAAA,GAAY,IAAI,oBAAA,EAAqB;AAC3C,EAAA,MAAM,MAAA,CAAO,QAAQ,SAAS,CAAA;AAChC;;;ACfA,WAAA,EAAY,CAAE,KAAA,CAAM,CAAC,GAAA,KAAiB;AACpC,EAAA,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAM,CAAA,kBAAA,EAAqB,GAAG;AAAA,CAAI,CAAA;AACjD,EAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAChB,CAAC,CAAA","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"]}
@@ -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
- - Do we need funding first (prepare deposit host signs)?
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. Ensure vault funding (prepare host signs sync).
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 | No funding for Automatic path | Prepare deposit; wait for broadcast; re-sync; re-check status. |
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
- The live API: `https://api.aureonlabs.network`.
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
  ```
@@ -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, which talks to `https://api.aureonlabs.network`.
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
- https://api.aureonlabs.network
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[api.aureonlabs.network]
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()` reads `AUREON_API_URL` (default production API), `AUREON_API_KEY`, and optional `AUREON_AUTH_TOKEN`.
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 `https://api.aureonlabs.network` (or configured base URL).
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 at `api.aureonlabs.network` | Server-side behavior; may evolve independently |
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` → `https://api.aureonlabs.network` → vault/chain. Responsibilities are split so agents get a stable tool surface while all financial intelligence and custody boundaries remain outside the MCP process.
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 `https://api.aureonlabs.network` with credentials the gateway accepts.
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 from [app.aureonlabs.network](https://app.aureonlabs.network) **Developers**. |
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
- | `AUREON_API_URL` | Defaults to `https://api.aureonlabs.network`. Leave default for public use. |
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. Open [https://app.aureonlabs.network](https://app.aureonlabs.network).
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 on `https://api.aureonlabs.network` |
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 | Reset `AUREON_API_URL` to the live default |
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
- HTTPS + API key and/or Bearer
255
+ HTTP(S) + API key and/or Bearer
255
256
 
256
- https://api.aureonlabs.network
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 → `https://api.aureonlabs.network` by default
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
- | HTTPS to API | TLS to `https://api.aureonlabs.network` | MITM only if TLS broken or base URL pointed at attacker |
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[api.aureonlabs.network]
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 bases when you intentionally target a documented non-production environment. A malicious override is a credential phishing vector.
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 URL is `https://api.aureonlabs.network` unless override is intentional
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` to `https://api.aureonlabs.network`. 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.
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** | Create at [app.aureonlabs.network](https://app.aureonlabs.network) → **Developers**. Plaintext is shown once. |
32
- | **Network access** | HTTPS to `https://api.aureonlabs.network` (Robinhood Chain early 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
- | Live API | `https://api.aureonlabs.network` |
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
- | `AUREON_API_URL` | Optional | `https://api.aureonlabs.network` | API base URL. Leave unset unless you intentionally override. |
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` (and optionally leave `AUREON_API_URL` at the default). That is the agent-friendly path documented in [./auth.md](./auth.md).
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
- # optional live API is already the default
180
- export AUREON_API_URL=https://api.aureonlabs.network
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
- $env:AUREON_API_URL = "https://api.aureonlabs.network"
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` | Remove override or set `https://api.aureonlabs.network` |
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
- Public setup uses `https://api.aureonlabs.network` only. Point hosts at that URL (or omit `AUREON_API_URL` to use the default).
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 or set to `https://api.aureonlabs.network`
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` (Robinhood Chain L2, early access).
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
- | Live API only | Tools talk to the live AUREON gateway. There is no local-backend mode for agents. |
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 the live production API it fails by design — agents should use an issued key (or optional Bearer) instead.
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=https://api.aureonlabs.network` and `AUREON_API_KEY`.
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.
@@ -4,7 +4,6 @@
4
4
  "command": "npx",
5
5
  "args": ["-y", "@buildaureon/mcp"],
6
6
  "env": {
7
- "AUREON_API_URL": "https://api.aureonlabs.network",
8
7
  "AUREON_API_KEY": "<issued-developer-api-key>"
9
8
  }
10
9
  }
@@ -4,7 +4,6 @@
4
4
  "command": "npx",
5
5
  "args": ["-y", "@buildaureon/mcp"],
6
6
  "env": {
7
- "AUREON_API_URL": "https://api.aureonlabs.network",
8
7
  "AUREON_API_KEY": "<issued-developer-api-key>"
9
8
  }
10
9
  }
package/package.json CHANGED
@@ -1,63 +1,66 @@
1
- {
2
- "name": "@buildaureon/mcp",
3
- "version": "0.1.7",
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
- "scripts": {
25
- "build": "tsup",
26
- "dev": "tsx src/index.ts",
27
- "start": "node dist/index.js",
28
- "typecheck": "tsc -p tsconfig.json --noEmit",
29
- "test": "tsx --test tests/**/*.test.ts",
30
- "test:e2e": "tsx tests/e2e-full.mjs",
31
- "test:phase2": "tsx tests/verify-phase2-session.mjs",
32
- "test:live-agent": "tsx tests/live-agent-exercise.mjs",
33
- "verify": "tsx tests/verify-agent.ts"
34
- },
35
- "keywords": [
36
- "aureon",
37
- "mcp",
38
- "model-context-protocol",
39
- "robinhood-chain",
40
- "financial-compass",
41
- "ai-agents"
42
- ],
43
- "repository": {
44
- "type": "git",
45
- "url": "https://github.com/buildaureon/aureon-mcp"
46
- },
47
- "license": "MIT",
48
- "engines": {
49
- "node": ">=20"
50
- },
51
- "dependencies": {
52
- "@buildaureon/sdk": "0.1.7",
53
- "@modelcontextprotocol/sdk": "^1.12.1",
54
- "zod": "^3.25.67"
55
- },
56
- "devDependencies": {
57
- "@types/node": "^22.13.10",
58
- "tsup": "^8.4.0",
59
- "tsx": "^4.19.3",
60
- "typescript": "^5.8.2",
61
- "viem": "^2.55.0"
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
+ }