@buildaureon/mcp 0.1.2 → 0.1.7

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
@@ -64,7 +64,7 @@ npx -y @buildaureon/mcp
64
64
  | Rehearse market shocks | `aureon_apply_market_event`, `aureon_refresh_watchdog` |
65
65
  | Manage developer API keys | `aureon_list_api_keys`, `aureon_create_api_key`, … |
66
66
 
67
- **34 tools**: one per public `AureonClient` method. Full schemas: [docs/tools.md](docs/tools.md).
67
+ **54 tools**: one per public `AureonClient` method. Full schemas: [docs/tools.md](docs/tools.md).
68
68
 
69
69
  For scripts without MCP, use [`@buildaureon/sdk`](https://github.com/buildaureon/aureon-sdk). The operator app at [app.aureonlabs.network](https://app.aureonlabs.network) stays wallet-Bearer only.
70
70
 
@@ -234,13 +234,13 @@ Deep dive: [docs/auth.md](docs/auth.md).
234
234
 
235
235
  ## Tool Surface
236
236
 
237
- AUREON MCP exposes **34 tools** covering 100% of the `AureonClient` SDK surface:
237
+ AUREON MCP exposes **54 tools** covering 100% of the `AureonClient` SDK surface:
238
238
 
239
239
  | Category | Count | Tools Included | Primary Purpose |
240
240
  | --- | --- | --- | --- |
241
241
  | **Health** | 1 | `aureon_ping` | Check API connectivity & backend watchdog state |
242
242
  | **Auth** | 5 | `aureon_get_auth_nonce`, `aureon_verify_wallet`, `aureon_dev_login`, `aureon_logout`, `aureon_me` | Manage wallet sessions, challenges, and identity |
243
- | **Read** | 11 | `aureon_get_overview`, `aureon_get_portfolio`, `aureon_list_objectives`, `aureon_get_objective`, `aureon_get_health`, `aureon_list_timeline`, `aureon_list_market_presets`, `aureon_get_restore_plan`, `aureon_list_executions`, `aureon_get_vault`, `aureon_get_vault_status` | Inspect portfolio allocations, health scores, timelines, and vault state |
243
+ | **Read** | 12 | `aureon_get_overview`, `aureon_get_portfolio`, `aureon_list_objectives`, `aureon_get_objective`, `aureon_get_health`, `aureon_list_timeline`, `aureon_list_market_presets`, `aureon_get_restore_plan`, `aureon_list_executions`, `aureon_get_vault`, `aureon_get_vault_status`, `aureon_get_audit_trail` | Inspect portfolio allocations, health scores, timelines, vault state, and the joined audit trail |
244
244
  | **Objectives** | 4 | `aureon_create_objective`, `aureon_update_objective`, `aureon_pause_objective`, `aureon_resume_objective` | Create, modify, pause, and resume Financial Compass Objectives |
245
245
  | **Portfolio** | 3 | `aureon_set_portfolio`, `aureon_clear_portfolio`, `aureon_sync_portfolio` | Synchronize and manage live Capital Book asset marks |
246
246
  | **Execution** | 2 | `aureon_run_execution`, `aureon_restore_objective` | Trigger policy rebalancing and execute objective restore plans |
@@ -358,7 +358,7 @@ pnpm --filter @buildaureon/mcp typecheck
358
358
  | --- | --- |
359
359
  | **[Setup Guide](docs/setup.md)** | Step-by-step setup for Cursor, Claude Desktop, npx, building from source, and troubleshooting |
360
360
  | **[Authentication Guide](docs/auth.md)** | Issued API key vs. Wallet Bearer vs. private key boundaries |
361
- | **[Tools Reference](docs/tools.md)** | Full 34-tool reference with arguments, schemas, and caveats |
361
+ | **[Tools Reference](docs/tools.md)** | Full 47-tool reference with arguments, schemas, and caveats |
362
362
  | **[Agent Playbooks](docs/agent-guide.md)** | End-to-end agent decision playbooks, turn templates, and anti-patterns |
363
363
  | **[Architecture Deep Dive](docs/architecture.md)** | Module boundaries, file maps, and end-to-end request data flows |
364
364
  | **[Security Model](docs/security.md)** | Credential management, threat modeling, and operational safety |
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
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, isAureonError } from '@buildaureon/sdk';
4
+ import { DEFAULT_API_BASE_URL, createSessionTokenProvider, createAureonClient, validateExecutionReceipt, isAureonError } from '@buildaureon/sdk';
5
5
  import { z } from 'zod';
6
6
 
7
7
  function loadConfig() {
@@ -68,6 +68,18 @@ function registerReadTools(server, client) {
68
68
  }
69
69
  }
70
70
  );
71
+ server.tool(
72
+ "aureon_get_allocation_vs_target",
73
+ "Objective vs actual portfolio \u2014 current weight vs policy target per objective, plus green-book/off-plan paradox flag",
74
+ {},
75
+ async () => {
76
+ try {
77
+ return ok(await client.getAllocationVsTarget());
78
+ } catch (err) {
79
+ return fail(err);
80
+ }
81
+ }
82
+ );
71
83
  server.tool(
72
84
  "aureon_get_portfolio",
73
85
  "Current capital book snapshot \u2014 positions, marks, weights",
@@ -151,7 +163,7 @@ function registerCompassTools(server, client) {
151
163
  );
152
164
  server.tool(
153
165
  "aureon_run_execution",
154
- "Run restorative execution for an objective currently outside policy",
166
+ "Run restorative execution for an objective outside policy. Read receipt.settlement and receipt.verifiedOnChain \u2014 staged = never on-chain; vault + verifiedOnChain = chain-observed; vault without verified = submitted but not yet observed.",
155
167
  { objectiveId: z.string().describe("The objective ID") },
156
168
  async ({ objectiveId }) => {
157
169
  try {
@@ -163,7 +175,7 @@ function registerCompassTools(server, client) {
163
175
  );
164
176
  server.tool(
165
177
  "aureon_restore_objective",
166
- "Run vault-backed restorative execution for an objective outside policy",
178
+ "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.",
167
179
  { objectiveId: z.string().describe("The objective ID") },
168
180
  async ({ objectiveId }) => {
169
181
  try {
@@ -175,7 +187,7 @@ function registerCompassTools(server, client) {
175
187
  );
176
188
  server.tool(
177
189
  "aureon_list_executions",
178
- "Recent execution receipts \u2014 past restorative actions taken",
190
+ "Recent execution receipts \u2014 read settlement, verifiedOnChain, settlementRecord, explorerUrl, registryRef.",
179
191
  { objectiveId: z.string().optional().describe("Filter by objective ID (omit for all)") },
180
192
  async ({ objectiveId }) => {
181
193
  try {
@@ -327,6 +339,176 @@ var objectiveKind = z.enum([
327
339
  "reward_reinvestment"
328
340
  ]);
329
341
  var objectivePriority = z.enum(["low", "medium", "high", "critical"]);
342
+ function registerIntentTools(server, client) {
343
+ server.tool(
344
+ "aureon_apply_financial_intent",
345
+ "Register user/agent intent as an Automatic objective and return AI \u2192 objective \u2192 portfolio flow",
346
+ {
347
+ brief: z.string().describe("What the user wants their money to do \u2014 agent-extracted wording"),
348
+ kind: objectiveKind.describe("Objective kind"),
349
+ targetWeight: z.number().describe("Target portfolio weight (0\u20131)"),
350
+ tolerance: z.number().describe("Allowed drift band (0\u20131)"),
351
+ targetSymbol: z.string().optional().describe("Asset symbol for balanced_portfolio (required for that kind)"),
352
+ name: z.string().optional().describe("Objective display name override"),
353
+ priority: objectivePriority.optional().describe("Evaluation priority")
354
+ },
355
+ async (input) => {
356
+ try {
357
+ return ok(await client.applyFinancialIntent(input));
358
+ } catch (err) {
359
+ return fail(err);
360
+ }
361
+ }
362
+ );
363
+ server.tool(
364
+ "aureon_get_objective_portfolio_flow",
365
+ "Read AI \u2192 objective \u2192 portfolio flow for active objectives",
366
+ {
367
+ objectiveId: z.string().optional().describe("Filter to one objective (omit for all active)")
368
+ },
369
+ async ({ objectiveId }) => {
370
+ try {
371
+ return ok(await client.getObjectivePortfolioFlow(objectiveId));
372
+ } catch (err) {
373
+ return fail(err);
374
+ }
375
+ }
376
+ );
377
+ }
378
+ function registerDriftRestoreTools(server, client) {
379
+ server.tool(
380
+ "aureon_run_drift_restore_demo",
381
+ "Run drift \u2192 detection \u2192 restore demo (seed book, break rule, manual restore)",
382
+ {},
383
+ async () => {
384
+ try {
385
+ return ok(await client.runDriftRestoreDemo());
386
+ } catch (err) {
387
+ return fail(err);
388
+ }
389
+ }
390
+ );
391
+ server.tool(
392
+ "aureon_get_drift_restore_flow",
393
+ "Read drift \u2192 detection \u2192 restore flow for active objectives",
394
+ {
395
+ objectiveId: z.string().optional().describe("Filter to one objective (omit for all active)")
396
+ },
397
+ async ({ objectiveId }) => {
398
+ try {
399
+ return ok(await client.getDriftRestoreFlow(objectiveId));
400
+ } catch (err) {
401
+ return fail(err);
402
+ }
403
+ }
404
+ );
405
+ }
406
+ function registerReceiptVerificationTools(server, client) {
407
+ server.tool(
408
+ "aureon_run_receipt_verification_demo",
409
+ "Run receipt \u2192 verification demo (restore + validate receipt + settlement lookup)",
410
+ {},
411
+ async () => {
412
+ try {
413
+ return ok(await client.runReceiptVerificationDemo());
414
+ } catch (err) {
415
+ return fail(err);
416
+ }
417
+ }
418
+ );
419
+ server.tool(
420
+ "aureon_get_receipt_verification_flow",
421
+ "Read receipt \u2192 verification flow for execution receipts",
422
+ {
423
+ executionId: z.string().optional().describe("Filter to one execution id (omit for five most recent)")
424
+ },
425
+ async ({ executionId }) => {
426
+ try {
427
+ return ok(await client.getReceiptVerificationFlow(executionId));
428
+ } catch (err) {
429
+ return fail(err);
430
+ }
431
+ }
432
+ );
433
+ }
434
+ var agentHost = z.enum(["cursor", "claude", "mcp"]);
435
+ function registerPortfolioWatchTools(server, client) {
436
+ server.tool(
437
+ "aureon_run_portfolio_watch_demo",
438
+ "Run portfolio watch demo (brief \u2192 Automatic objective \u2192 while-away event \u2192 return briefing)",
439
+ {
440
+ brief: z.string().optional().describe(
441
+ "User wording \u2014 default: Watch my portfolio while I'm away \u2014 keep about 20% in stable assets."
442
+ ),
443
+ host: agentHost.optional().describe("Agent host label for briefing (cursor | claude | mcp)")
444
+ },
445
+ async ({ brief, host }) => {
446
+ try {
447
+ return ok(await client.runPortfolioWatchDemo({ brief, host }));
448
+ } catch (err) {
449
+ return fail(err);
450
+ }
451
+ }
452
+ );
453
+ server.tool(
454
+ "aureon_get_portfolio_watch_flow",
455
+ "Read portfolio watch briefing for Automatic objectives",
456
+ {
457
+ objectiveId: z.string().optional().describe("Filter to one objective (omit for all Automatic)"),
458
+ brief: z.string().optional().describe("User brief for briefing lines"),
459
+ host: agentHost.optional().describe("Agent host label")
460
+ },
461
+ async ({ objectiveId, brief, host }) => {
462
+ try {
463
+ return ok(
464
+ await client.getPortfolioWatchFlow({ objectiveId, brief, host })
465
+ );
466
+ } catch (err) {
467
+ return fail(err);
468
+ }
469
+ }
470
+ );
471
+ }
472
+ function registerFullAureonLoopTools(server, client) {
473
+ server.tool(
474
+ "aureon_run_full_aureon_loop_demo",
475
+ "Run Content Arc full AUREON loop (intent \u2192 plan check \u2192 restore \u2192 receipt verification)",
476
+ {
477
+ brief: z.string().optional().describe(
478
+ "User wording \u2014 default: Keep about 20% in stable assets \u2014 grow the book without abandoning the plan."
479
+ )
480
+ },
481
+ async ({ brief }) => {
482
+ try {
483
+ return ok(await client.runFullAureonLoopDemo({ brief }));
484
+ } catch (err) {
485
+ return fail(err);
486
+ }
487
+ }
488
+ );
489
+ server.tool(
490
+ "aureon_get_full_aureon_loop_flow",
491
+ "Read full AUREON loop for active objectives with a latest execution receipt",
492
+ {
493
+ objectiveId: z.string().optional().describe("Filter to one objective (omit for all active with receipts)"),
494
+ brief: z.string().optional().describe("User brief for teaching shape")
495
+ },
496
+ async ({ objectiveId, brief }) => {
497
+ try {
498
+ return ok(await client.getFullAureonLoopFlow({ objectiveId, brief }));
499
+ } catch (err) {
500
+ return fail(err);
501
+ }
502
+ }
503
+ );
504
+ }
505
+ var objectiveKind2 = z.enum([
506
+ "stable_allocation",
507
+ "balanced_portfolio",
508
+ "risk_ceiling",
509
+ "reward_reinvestment"
510
+ ]);
511
+ var objectivePriority2 = z.enum(["low", "medium", "high", "critical"]);
330
512
  var automationMode = z.enum(["auto", "manual"]);
331
513
  function registerObjectiveTools(server, client) {
332
514
  server.tool(
@@ -334,10 +516,10 @@ function registerObjectiveTools(server, client) {
334
516
  "Create a Financial Compass Objective. targetSymbol and automationMode are locked after create \u2014 recreate to change them. Defaults to automationMode auto.",
335
517
  {
336
518
  name: z.string().describe("Objective display name"),
337
- kind: objectiveKind.describe("Objective kind"),
519
+ kind: objectiveKind2.describe("Objective kind"),
338
520
  targetWeight: z.number().describe("Target portfolio weight (0\u20131)"),
339
521
  tolerance: z.number().describe("Allowed drift band (0\u20131)"),
340
- priority: objectivePriority.optional().describe("Evaluation priority"),
522
+ priority: objectivePriority2.optional().describe("Evaluation priority"),
341
523
  maxRiskScore: z.number().optional().describe("Max risk score ceiling"),
342
524
  reinvestRatio: z.number().optional().describe("Reinvest ratio for reward objectives"),
343
525
  targetSymbol: z.string().nullable().optional().describe("Asset symbol to track (locked after create)"),
@@ -357,7 +539,7 @@ function registerObjectiveTools(server, client) {
357
539
  {
358
540
  objectiveId: z.string().describe("Objective ID"),
359
541
  name: z.string().optional(),
360
- priority: objectivePriority.optional(),
542
+ priority: objectivePriority2.optional(),
361
543
  targetWeight: z.number().optional(),
362
544
  tolerance: z.number().optional(),
363
545
  maxRiskScore: z.number().optional(),
@@ -452,7 +634,7 @@ function registerMarketTools(server, client) {
452
634
  priceChangeRatio: z.number().describe("Fractional price change (e.g. -0.15 = -15%)"),
453
635
  name: z.string().optional().describe("Event label"),
454
636
  description: z.string().optional().describe("Event description"),
455
- autoRestore: z.boolean().optional().describe("Run restorative execution if objectives breach")
637
+ 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.")
456
638
  },
457
639
  async (input) => {
458
640
  try {
@@ -561,6 +743,95 @@ function registerRegistryTools(server, client) {
561
743
  }
562
744
  }
563
745
  );
746
+ server.tool(
747
+ "aureon_confirm_objective_registry",
748
+ "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.",
749
+ {
750
+ objectiveId: z.string().describe("Objective id that was registered"),
751
+ transactionHash: z.string().describe("0x transaction hash from the wallet broadcast")
752
+ },
753
+ async ({ objectiveId, transactionHash }) => {
754
+ try {
755
+ return ok(await client.confirmObjectiveRegistry(objectiveId, transactionHash));
756
+ } catch (err) {
757
+ return fail(err);
758
+ }
759
+ }
760
+ );
761
+ }
762
+ function registerSettlementTools(server, client) {
763
+ server.tool(
764
+ "aureon_get_execution_settlement",
765
+ "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 \u2014 do not claim on-chain proof without this.",
766
+ {
767
+ executionId: z.string().describe("Execution receipt id")
768
+ },
769
+ async ({ executionId }) => {
770
+ try {
771
+ return ok(await client.getExecutionSettlement(executionId));
772
+ } catch (err) {
773
+ return fail(err);
774
+ }
775
+ }
776
+ );
777
+ server.tool(
778
+ "aureon_list_settlements",
779
+ "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.",
780
+ {
781
+ objectiveId: z.string().optional().describe("Filter by objective id")
782
+ },
783
+ async ({ objectiveId }) => {
784
+ try {
785
+ return ok({ settlements: await client.listSettlements(objectiveId) });
786
+ } catch (err) {
787
+ return fail(err);
788
+ }
789
+ }
790
+ );
791
+ server.tool(
792
+ "aureon_confirm_execution_settlement",
793
+ "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.",
794
+ {
795
+ executionId: z.string().describe("Execution receipt id"),
796
+ transactionHash: z.string().describe("0x vault Rebalanced transaction hash")
797
+ },
798
+ async ({ executionId, transactionHash }) => {
799
+ try {
800
+ return ok(await client.confirmExecutionSettlement(executionId, transactionHash));
801
+ } catch (err) {
802
+ return fail(err);
803
+ }
804
+ }
805
+ );
806
+ }
807
+ function registerReceiptTools(server) {
808
+ server.tool(
809
+ "aureon_validate_receipt",
810
+ "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.",
811
+ {
812
+ receipt: z.record(z.unknown()).describe("ExecutionReceipt JSON from restore, listExecutions, or API")
813
+ },
814
+ async ({ receipt }) => {
815
+ const result = validateExecutionReceipt(receipt);
816
+ return ok(result);
817
+ }
818
+ );
819
+ }
820
+ function registerAuditTrailTools(server, client) {
821
+ server.tool(
822
+ "aureon_get_audit_trail",
823
+ "Export the financial audit trail for one objective: registry, receipts, settlements, timeline. Missing proof is labeled. Never invent on-chain claims.",
824
+ {
825
+ objectiveId: z.string().describe("Objective id to export")
826
+ },
827
+ async ({ objectiveId }) => {
828
+ try {
829
+ return ok(await client.getAuditTrail(objectiveId));
830
+ } catch (err) {
831
+ return fail(err);
832
+ }
833
+ }
834
+ );
564
835
  }
565
836
 
566
837
  // src/tools/index.ts
@@ -570,10 +841,18 @@ function registerTools(server, client, session) {
570
841
  registerVaultTools(server, client);
571
842
  registerAuthTools(server, client, session);
572
843
  registerObjectiveTools(server, client);
844
+ registerIntentTools(server, client);
845
+ registerDriftRestoreTools(server, client);
846
+ registerReceiptVerificationTools(server, client);
847
+ registerPortfolioWatchTools(server, client);
848
+ registerFullAureonLoopTools(server, client);
573
849
  registerPortfolioTools(server, client);
574
850
  registerMarketTools(server, client);
575
851
  registerDeveloperTools(server, client);
576
852
  registerRegistryTools(server, client);
853
+ registerSettlementTools(server, client);
854
+ registerReceiptTools(server);
855
+ registerAuditTrailTools(server, client);
577
856
  }
578
857
 
579
858
  // src/server.ts
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/objectives.ts","../src/tools/portfolio.ts","../src/tools/market.ts","../src/tools/developer.ts","../src/tools/registry.ts","../src/tools/index.ts","../src/server.ts","../src/index.ts"],"names":["z"],"mappings":"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","file":"index.js","sourcesContent":["/**\r\n * @fileoverview MCP process configuration from environment.\r\n *\r\n * Prefer an **issued** developer API key from the Operator Console (Developers page).\r\n * That key identifies the bound wallet for control-plane tools — no Bearer required.\r\n * `AUREON_AUTH_TOKEN` is optional (utility-style session, or when using env bootstrap keys).\r\n */\r\n\r\nimport { DEFAULT_API_BASE_URL } from \"@buildaureon/sdk\";\r\n\r\nexport interface McpConfig {\r\n apiUrl: string;\r\n apiKey: string | undefined;\r\n authToken: string | undefined;\r\n}\r\n\r\nexport function loadConfig(): McpConfig {\r\n const apiUrl = process.env.AUREON_API_URL || DEFAULT_API_BASE_URL;\r\n const apiKey = process.env.AUREON_API_KEY || undefined;\r\n const authToken = process.env.AUREON_AUTH_TOKEN || undefined;\r\n\r\n if (!apiKey && !authToken) {\r\n throw new Error(\r\n \"Set AUREON_API_KEY (issued developer key from app.aureonlabs.network Developers) \" +\r\n \"or AUREON_AUTH_TOKEN (wallet Bearer). \" +\r\n \"See https://github.com/buildaureon/aureon-mcp#authentication\"\r\n );\r\n }\r\n\r\n return { apiUrl, apiKey, authToken };\r\n}\r\n","/**\r\n * @fileoverview Builds the shared AureonClient for MCP tool handlers.\r\n */\r\n\r\nimport {\r\n createAureonClient,\r\n createSessionTokenProvider,\r\n type AureonClient,\r\n type SessionTokenProvider,\r\n} from \"@buildaureon/sdk\";\r\nimport type { McpConfig } from \"./config.js\";\r\n\r\nexport type McpClientBundle = {\r\n client: AureonClient;\r\n session: SessionTokenProvider;\r\n};\r\n\r\nexport function createClient(config: McpConfig): McpClientBundle {\r\n const session = createSessionTokenProvider(config.authToken ?? null);\r\n const client = createAureonClient({\r\n baseUrl: config.apiUrl,\r\n apiKey: config.apiKey ?? null,\r\n getAccessToken: session.getAccessToken,\r\n });\r\n return { client, session };\r\n}\r\n","export function formatJson(data: unknown): string {\r\n return JSON.stringify(data, null, 2);\r\n}\r\n","import { isAureonError } from \"@buildaureon/sdk\";\r\n\r\nexport function errorText(err: unknown): string {\r\n if (isAureonError(err)) {\r\n return `[${err.code}] ${err.message}`;\r\n }\r\n if (err instanceof Error) {\r\n return err.message;\r\n }\r\n return String(err);\r\n}\r\n","import { formatJson } from \"../format.js\";\r\nimport { errorText } from \"../errors.js\";\r\n\r\nexport function ok(data: unknown) {\r\n return { content: [{ type: \"text\" as const, text: formatJson(data) }] };\r\n}\r\n\r\nexport function fail(err: unknown) {\r\n return { content: [{ type: \"text\" as const, text: errorText(err) }], isError: true };\r\n}\r\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\r\nimport type { AureonClient } from \"@buildaureon/sdk\";\r\nimport { z } from \"zod\";\r\nimport { fail, ok } from \"./handler.js\";\r\n\r\nexport function registerReadTools(server: McpServer, client: AureonClient) {\r\n server.tool(\"aureon_ping\", \"Health probe — confirms API connectivity\", {}, async () => {\r\n try {\r\n return ok(await client.ping());\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n });\r\n\r\n server.tool(\r\n \"aureon_get_overview\",\r\n \"Dashboard overview — total AUM, objective count, aggregate health\",\r\n {},\r\n async () => {\r\n try {\r\n return ok(await client.getOverview());\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_get_portfolio\",\r\n \"Current capital book snapshot — positions, marks, weights\",\r\n {},\r\n async () => {\r\n try {\r\n return ok(await client.getPortfolio());\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\"aureon_list_objectives\", \"List all Financial Compass Objectives\", {}, async () => {\r\n try {\r\n return ok(await client.listObjectives());\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n });\r\n\r\n server.tool(\r\n \"aureon_get_objective\",\r\n \"Get a single objective by ID\",\r\n { objectiveId: z.string().describe(\"The objective ID\") },\r\n async ({ objectiveId }) => {\r\n try {\r\n return ok(await client.getObjective(objectiveId));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_get_health\",\r\n \"Health state for objectives — drift, breach status, policy compliance\",\r\n { objectiveId: z.string().optional().describe(\"Filter by objective ID (omit for all)\") },\r\n async ({ objectiveId }) => {\r\n try {\r\n return ok(await client.getHealth(objectiveId));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_list_timeline\",\r\n \"Timeline of events — objective changes, executions, health transitions\",\r\n { objectiveId: z.string().optional().describe(\"Filter by objective ID (omit for all)\") },\r\n async ({ objectiveId }) => {\r\n try {\r\n return ok(await client.getTimeline(objectiveId));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_list_market_presets\",\r\n \"Available market event simulation presets\",\r\n {},\r\n async () => {\r\n try {\r\n return ok(await client.listMarketPresets());\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n}\r\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\r\nimport type { AureonClient } from \"@buildaureon/sdk\";\r\nimport { z } from \"zod\";\r\nimport { fail, ok } from \"./handler.js\";\r\n\r\nexport function registerCompassTools(server: McpServer, client: AureonClient) {\r\n server.tool(\r\n \"aureon_get_restore_plan\",\r\n \"Restore plan for an objective — proposed rebalance steps to return to policy\",\r\n { objectiveId: z.string().describe(\"The objective ID\") },\r\n async ({ objectiveId }) => {\r\n try {\r\n return ok(await client.getRestorePlan(objectiveId));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_run_execution\",\r\n \"Run restorative execution for an objective currently outside policy\",\r\n { objectiveId: z.string().describe(\"The objective ID\") },\r\n async ({ objectiveId }) => {\r\n try {\r\n return ok(await client.runExecution(objectiveId));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_restore_objective\",\r\n \"Run vault-backed restorative execution for an objective outside policy\",\r\n { objectiveId: z.string().describe(\"The objective ID\") },\r\n async ({ objectiveId }) => {\r\n try {\r\n return ok(await client.restoreObjective(objectiveId));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_list_executions\",\r\n \"Recent execution receipts — past restorative actions taken\",\r\n { objectiveId: z.string().optional().describe(\"Filter by objective ID (omit for all)\") },\r\n async ({ objectiveId }) => {\r\n try {\r\n return ok(await client.listExecutions(objectiveId));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n}\r\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\r\nimport type { AureonClient } from \"@buildaureon/sdk\";\r\nimport { z } from \"zod\";\r\nimport { fail, ok } from \"./handler.js\";\r\n\r\nexport function registerVaultTools(server: McpServer, client: AureonClient) {\r\n server.tool(\r\n \"aureon_get_vault\",\r\n \"Vault overview — balances, tokens, deposit history\",\r\n {},\r\n async () => {\r\n try {\r\n return ok(await client.getVault());\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_get_vault_status\",\r\n \"Compact vault funding status — ready state before restore\",\r\n {},\r\n async () => {\r\n try {\r\n return ok(await client.getVaultStatus());\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_prepare_vault_deposit\",\r\n \"Prepare unsigned vault deposit steps. Returns calldata only — the host must sign/broadcast with a wallet private key. API key alone cannot move funds.\",\r\n {\r\n symbol: z.string().describe(\"Deposit symbol (ETH or allowlisted ERC-20)\"),\r\n amount: z.string().describe(\"Human-readable amount\"),\r\n },\r\n async ({ symbol, amount }) => {\r\n try {\r\n return ok(await client.prepareVaultDeposit({ symbol, amount }));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_prepare_vault_withdraw\",\r\n \"Prepare unsigned vault withdraw steps. Returns calldata only — host must sign/broadcast. API key alone cannot move funds.\",\r\n {\r\n symbol: z.string().optional().describe(\"Withdraw symbol (default WETH; not ETH)\"),\r\n amount: z.string().describe(\"Human-readable amount\"),\r\n },\r\n async ({ symbol, amount }) => {\r\n try {\r\n return ok(await client.prepareVaultWithdraw({ symbol, amount }));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n}\r\n","/**\r\n * @fileoverview Auth tools — wallet handshake is optional for MCP.\r\n *\r\n * Recommended path: issued AUREON_API_KEY identifies the wallet.\r\n * verify_wallet / dev_login update the in-process session provider when used.\r\n */\r\n\r\nimport type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\r\nimport type { AureonClient, SessionTokenProvider } from \"@buildaureon/sdk\";\r\nimport { z } from \"zod\";\r\nimport { fail, ok } from \"./handler.js\";\r\n\r\nexport function registerAuthTools(\r\n server: McpServer,\r\n client: AureonClient,\r\n session: SessionTokenProvider\r\n) {\r\n server.tool(\r\n \"aureon_get_auth_nonce\",\r\n \"Request a wallet auth nonce/message for EIP-191 signing (optional — issued API keys usually skip this)\",\r\n { address: z.string().describe(\"Wallet address (0x…)\") },\r\n async ({ address }) => {\r\n try {\r\n return ok(await client.getAuthNonce(address));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_verify_wallet\",\r\n \"Verify a wallet signature and store the Bearer session for later tools in this MCP process\",\r\n {\r\n address: z.string().describe(\"Wallet address\"),\r\n message: z.string().describe(\"Signed message from get_auth_nonce\"),\r\n signature: z.string().describe(\"Wallet signature hex\"),\r\n inviteCode: z.string().optional().describe(\"Invite code if required on first login\"),\r\n },\r\n async ({ address, message, signature, inviteCode }) => {\r\n try {\r\n const login = await client.verifyWallet({\r\n address,\r\n message,\r\n signature,\r\n inviteCode,\r\n });\r\n session.setToken(login.token);\r\n return ok(login);\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_dev_login\",\r\n \"Local preview login without wallet signature (requires AUREON_ALLOW_DEV_LOGIN=1 on API — not production)\",\r\n {},\r\n async () => {\r\n try {\r\n const login = await client.devLogin();\r\n session.setToken(login.token);\r\n return ok(login);\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_logout\",\r\n \"Revoke the current Bearer session and clear the in-process token\",\r\n {},\r\n async () => {\r\n try {\r\n const result = await client.logout();\r\n session.clear();\r\n return ok(result);\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_me\",\r\n \"Return the wallet bound to the issued API key or current Bearer session\",\r\n {},\r\n async () => {\r\n try {\r\n return ok(await client.me());\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n}\r\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\r\nimport type { AureonClient } from \"@buildaureon/sdk\";\r\nimport { z } from \"zod\";\r\nimport { fail, ok } from \"./handler.js\";\r\n\r\nconst objectiveKind = z.enum([\r\n \"stable_allocation\",\r\n \"balanced_portfolio\",\r\n \"risk_ceiling\",\r\n \"reward_reinvestment\",\r\n]);\r\n\r\nconst objectivePriority = z.enum([\"low\", \"medium\", \"high\", \"critical\"]);\r\n\r\nconst automationMode = z.enum([\"auto\", \"manual\"]);\r\n\r\nexport function registerObjectiveTools(server: McpServer, client: AureonClient) {\r\n server.tool(\r\n \"aureon_create_objective\",\r\n \"Create a Financial Compass Objective. targetSymbol and automationMode are locked after create — recreate to change them. Defaults to automationMode auto.\",\r\n {\r\n name: z.string().describe(\"Objective display name\"),\r\n kind: objectiveKind.describe(\"Objective kind\"),\r\n targetWeight: z.number().describe(\"Target portfolio weight (0–1)\"),\r\n tolerance: z.number().describe(\"Allowed drift band (0–1)\"),\r\n priority: objectivePriority.optional().describe(\"Evaluation priority\"),\r\n maxRiskScore: z.number().optional().describe(\"Max risk score ceiling\"),\r\n reinvestRatio: z\r\n .number()\r\n .optional()\r\n .describe(\"Reinvest ratio for reward objectives\"),\r\n targetSymbol: z\r\n .string()\r\n .nullable()\r\n .optional()\r\n .describe(\"Asset symbol to track (locked after create)\"),\r\n automationMode: automationMode\r\n .optional()\r\n .describe(\"auto = keeper vault restore; manual = operator Approve (locked after create)\"),\r\n },\r\n async (input) => {\r\n try {\r\n return ok(await client.createObjective(input));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_update_objective\",\r\n \"Partial update (name, weight, tolerance, priority). Cannot change targetSymbol or automationMode — recreate instead.\",\r\n {\r\n objectiveId: z.string().describe(\"Objective ID\"),\r\n name: z.string().optional(),\r\n priority: objectivePriority.optional(),\r\n targetWeight: z.number().optional(),\r\n tolerance: z.number().optional(),\r\n maxRiskScore: z.number().optional(),\r\n reinvestRatio: z.number().optional(),\r\n },\r\n async ({ objectiveId, ...input }) => {\r\n try {\r\n return ok(await client.updateObjective(objectiveId, input));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_pause_objective\",\r\n \"Pause continuous evaluation for an objective\",\r\n { objectiveId: z.string().describe(\"Objective ID\") },\r\n async ({ objectiveId }) => {\r\n try {\r\n return ok(await client.pauseObjective(objectiveId));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_resume_objective\",\r\n \"Resume evaluation for a paused objective\",\r\n { objectiveId: z.string().describe(\"Objective ID\") },\r\n async ({ objectiveId }) => {\r\n try {\r\n return ok(await client.resumeObjective(objectiveId));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n}\r\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\r\nimport type { AureonClient } from \"@buildaureon/sdk\";\r\nimport { z } from \"zod\";\r\nimport { fail, ok } from \"./handler.js\";\r\n\r\nconst positionInput = z.object({\r\n symbol: z.string(),\r\n name: z.string(),\r\n category: z.enum([\"stable\", \"stock_token\", \"gas\", \"other\"]),\r\n quantity: z.number(),\r\n markPriceUsd: z.number(),\r\n});\r\n\r\nexport function registerPortfolioTools(server: McpServer, client: AureonClient) {\r\n server.tool(\r\n \"aureon_set_portfolio\",\r\n \"Replace the wallet capital book with provided positions\",\r\n {\r\n positions: z.array(positionInput).min(1).describe(\"Portfolio position rows\"),\r\n },\r\n async ({ positions }) => {\r\n try {\r\n return ok(await client.setPortfolio(positions));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_clear_portfolio\",\r\n \"Clear all capital-book positions for the authenticated wallet\",\r\n {},\r\n async () => {\r\n try {\r\n return ok(await client.clearPortfolio());\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_sync_portfolio\",\r\n \"Replace the capital book with on-chain balances for the session wallet\",\r\n {},\r\n async () => {\r\n try {\r\n return ok(await client.syncPortfolio());\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n}\r\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\r\nimport type { AureonClient } from \"@buildaureon/sdk\";\r\nimport { z } from \"zod\";\r\nimport { fail, ok } from \"./handler.js\";\r\n\r\nexport function registerMarketTools(server: McpServer, client: AureonClient) {\r\n server.tool(\r\n \"aureon_apply_market_event\",\r\n \"Apply a controlled market event to portfolio marks; optionally auto-restore\",\r\n {\r\n symbol: z.string().describe(\"Asset symbol to shock\"),\r\n priceChangeRatio: z.number().describe(\"Fractional price change (e.g. -0.15 = -15%)\"),\r\n name: z.string().optional().describe(\"Event label\"),\r\n description: z.string().optional().describe(\"Event description\"),\r\n autoRestore: z.boolean().optional().describe(\"Run restorative execution if objectives breach\"),\r\n },\r\n async (input) => {\r\n try {\r\n return ok(await client.applyMarketEvent(input));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_refresh_watchdog\",\r\n \"Refresh portfolio marks from live data and re-evaluate objectives\",\r\n {},\r\n async () => {\r\n try {\r\n return ok(await client.refreshWatchdog());\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n}\r\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\r\nimport type { AureonClient } from \"@buildaureon/sdk\";\r\nimport { z } from \"zod\";\r\nimport { fail, ok } from \"./handler.js\";\r\n\r\nexport function registerDeveloperTools(server: McpServer, client: AureonClient) {\r\n server.tool(\"aureon_list_api_keys\", \"List SDK API keys for the authenticated wallet\", {}, async () => {\r\n try {\r\n return ok(await client.listApiKeys());\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n });\r\n\r\n server.tool(\r\n \"aureon_create_api_key\",\r\n \"Create an SDK API key (secret returned once — store immediately)\",\r\n { name: z.string().min(2).describe(\"Key display name\") },\r\n async ({ name }) => {\r\n try {\r\n return ok(await client.createApiKey(name));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_revoke_api_key\",\r\n \"Revoke (delete) an SDK API key\",\r\n { keyId: z.string().describe(\"API key ID\") },\r\n async ({ keyId }) => {\r\n try {\r\n return ok(await client.revokeApiKey(keyId));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n\r\n server.tool(\r\n \"aureon_toggle_api_key\",\r\n \"Toggle active/paused status of an SDK API key\",\r\n { keyId: z.string().describe(\"API key ID\") },\r\n async ({ keyId }) => {\r\n try {\r\n return ok(await client.toggleApiKey(keyId));\r\n } catch (err) {\r\n return fail(err);\r\n }\r\n }\r\n );\r\n}\r\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\r\nimport type { AureonClient } 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","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\r\nimport type { AureonClient, SessionTokenProvider } from \"@buildaureon/sdk\";\r\nimport { registerReadTools } from \"./read.js\";\r\nimport { registerCompassTools } from \"./compass.js\";\r\nimport { registerVaultTools } from \"./vault.js\";\r\nimport { registerAuthTools } from \"./auth.js\";\r\nimport { registerObjectiveTools } from \"./objectives.js\";\r\nimport { registerPortfolioTools } from \"./portfolio.js\";\r\nimport { registerMarketTools } from \"./market.js\";\r\nimport { registerDeveloperTools } from \"./developer.js\";\r\nimport { registerRegistryTools } from \"./registry.js\";\r\nimport { SDK_TOOL_NAMES, TOOL_COUNT } from \"./catalog.js\";\r\n\r\nexport { SDK_TOOL_NAMES, TOOL_COUNT };\r\n\r\n/** All AureonClient SDK methods exposed as MCP tools. */\r\nexport function registerTools(\r\n server: McpServer,\r\n client: AureonClient,\r\n session: SessionTokenProvider\r\n) {\r\n registerReadTools(server, client);\r\n registerCompassTools(server, client);\r\n registerVaultTools(server, client);\r\n registerAuthTools(server, client, session);\r\n registerObjectiveTools(server, client);\r\n registerPortfolioTools(server, client);\r\n registerMarketTools(server, client);\r\n registerDeveloperTools(server, client);\r\n registerRegistryTools(server, client);\r\n}\r\n","import { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\r\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\r\nimport { loadConfig } from \"./config.js\";\r\nimport { createClient } from \"./client.js\";\r\nimport { registerTools } from \"./tools/index.js\";\r\n\r\nexport async function startServer() {\r\n const config = loadConfig();\r\n const { client, session } = createClient(config);\r\n\r\n const server = new McpServer({\r\n name: \"aureon\",\r\n version: \"0.1.1\",\r\n });\r\n\r\n registerTools(server, client, session);\r\n\r\n const transport = new StdioServerTransport();\r\n await server.connect(transport);\r\n}\r\n","import { startServer } from \"./server.js\";\r\n\r\nexport { startServer } from \"./server.js\";\r\n\r\nstartServer().catch((err: unknown) => {\r\n process.stderr.write(`aureon-mcp fatal: ${err}\\n`);\r\n process.exit(1);\r\n});\r\n"]}
1
+ {"version":3,"sources":["../src/config.ts","../src/client.ts","../src/format.ts","../src/errors.ts","../src/tools/handler.ts","../src/tools/read.ts","../src/tools/compass.ts","../src/tools/vault.ts","../src/tools/auth.ts","../src/tools/intent.ts","../src/tools/drift-restore.ts","../src/tools/receipt-verification.ts","../src/tools/portfolio-watch.ts","../src/tools/full-aureon-loop.ts","../src/tools/objectives.ts","../src/tools/portfolio.ts","../src/tools/market.ts","../src/tools/developer.ts","../src/tools/registry.ts","../src/tools/settlement.ts","../src/tools/receipt.ts","../src/tools/audit-trail.ts","../src/tools/index.ts","../src/server.ts","../src/index.ts"],"names":["z","objectiveKind","objectivePriority"],"mappings":"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","file":"index.js","sourcesContent":["/**\r\n * @fileoverview MCP process configuration from environment.\r\n *\r\n * Prefer an **issued** developer API key from the Operator Console (Developers page).\r\n * That key identifies the bound wallet for control-plane tools — no Bearer required.\r\n * `AUREON_AUTH_TOKEN` is optional (utility-style session, or when using env bootstrap keys).\r\n */\r\n\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"]}
@@ -4,7 +4,7 @@ Playbooks for AI agents using `@buildaureon/mcp` against the **live** AUREON API
4
4
 
5
5
  This guide teaches agents how to think, which tools to call, and how to talk honestly about settlement. Pair it with the [tool reference](./tools.md). For typed contracts and error codes, see the **@buildaureon/sdk documentation**.
6
6
 
7
- **Surface:** 34 tools · issued API key · optional Bearer · private key only outside MCP for broadcast.
7
+ **Surface:** 54 tools · issued API key · optional Bearer · private key only outside MCP for broadcast.
8
8
 
9
9
  ---
10
10
 
@@ -84,6 +84,26 @@ Restore and execution receipts may include:
84
84
 
85
85
  ---
86
86
 
87
+ ## How to read a Phase 2 receipt
88
+
89
+ After `aureon_restore_objective` or `aureon_run_execution`, inspect the returned receipt:
90
+
91
+ | Field | What to tell the operator |
92
+ | --- | --- |
93
+ | `settlement: "vault"` | Restored via vault keeper path; may have on-chain tx |
94
+ | `verifiedOnChain: true` | Listener observed vault `Rebalanced` event — cite `settlementRecord` |
95
+ | `verifiedOnChain: false` + `settlement: "vault"` | Vault path but **not yet** independently observed — do not claim chain proof |
96
+ | `settlement: "staged"` | Capital-book update only — **not** on-chain settlement |
97
+ | `explorerUrl` | Link to block explorer when vault tx exists |
98
+ | `registryRef` | Objective registered on testnet registry — cite `objectiveKey` + contract |
99
+ | `status` | `confirmed` / `failed` / etc. — do not infer success from prepare alone |
100
+
101
+ Cross-check with `aureon_list_timeline`: find events where `payload.executionId` matches `receipt.id` and confirm `payload.settlement` matches the receipt.
102
+
103
+ **Do not say:** “Every restore is on-chain.” Staged receipts are honest book updates when vault is unavailable or unfunded. Do not say “chain-verified” unless `verifiedOnChain` is true or `aureon_get_execution_settlement` returns a record. After every restore, call **`aureon_validate_receipt`** — if validation fails, report the issues and do not override them.
104
+
105
+ ---
106
+
87
107
  ## Recommended workflows
88
108
 
89
109
  ### A. Morning check
@@ -144,6 +164,25 @@ aureon_get_health
144
164
 
145
165
  Remind the operator that `targetSymbol` and `automationMode` are locked.
146
166
 
167
+ ### B2. Register the objective on chain
168
+
169
+ Host wallet broadcasts. MCP never holds a private key.
170
+
171
+ ```text
172
+ aureon_registry_status
173
+ aureon_prepare_objective_registry
174
+ objectiveId: <id>
175
+ # host signs and broadcasts the returned calldata
176
+ aureon_confirm_objective_registry
177
+ objectiveId: <id>
178
+ transactionHash: 0x…
179
+ aureon_get_objective_registry
180
+ ```
181
+
182
+ Do not say the objective is on chain until confirm returns a record.
183
+
184
+ Practical close script (host signs outside MCP): `pnpm --filter @buildaureon/mcp test:phase2` against a Phase 2 API.
185
+
147
186
  ### C. Restore drift
148
187
 
149
188
  ```text
@@ -219,6 +258,150 @@ aureon_revoke_api_key
219
258
 
220
259
  Never paste full secrets into public transcripts if the host displays tool output broadly.
221
260
 
261
+ ### H. Green vs plan paradox demo
262
+
263
+ ```text
264
+ aureon_set_portfolio # or aureon_sync_portfolio
265
+ aureon_create_objective # stable_allocation, targetWeight 0.2, tolerance 0.02
266
+ aureon_get_allocation_vs_target # baseline: rows aligned
267
+ aureon_apply_market_event
268
+ symbol: NVDA
269
+ priceChangeRatio: 0.45
270
+ autoRestore: false
271
+ aureon_get_allocation_vs_target # paradox: book up, stable off-plan
272
+ aureon_get_health
273
+ aureon_list_timeline
274
+ ```
275
+
276
+ **Agent language**
277
+
278
+ - Before shock: “Objective vs actual are aligned — stable sleeve at target.”
279
+ - After shock with `autoRestore: false`: “Book is up {X}%, but your stable objective is at {current}% vs {target}% target — {state}. Portfolio performance and plan adherence are not the same signal.”
280
+ - Do **not** claim on-chain proof for rehearsal marks; they are controlled and staged.
281
+
282
+ ### I. AI → objective → portfolio
283
+
284
+ ```text
285
+ aureon_sync_portfolio
286
+ aureon_apply_financial_intent
287
+ brief: "Keep about 20% in stable assets"
288
+ kind: stable_allocation
289
+ targetWeight: 0.2
290
+ tolerance: 0.02
291
+ aureon_get_objective_portfolio_flow # confirm intent → objective → portfolio link
292
+ aureon_get_allocation_vs_target # ties to objective vs actual
293
+ ```
294
+
295
+ **Agent language**
296
+
297
+ - “You told me what you want your money to do. I registered that as an objective.”
298
+ - “Here is how your portfolio scores against that policy — not just total PnL.”
299
+ - The agent must still supply structured fields (`kind`, `targetWeight`, `tolerance`); `brief` captures user wording for audit and teaching.
300
+ - After intent is applied, use `aureon_get_allocation_vs_target` for ongoing objective vs actual checks.
301
+
302
+ ### J. Drift → detection → restore
303
+
304
+ ```text
305
+ aureon_set_portfolio # or aureon_sync_portfolio
306
+ aureon_create_objective # stable_allocation, targetWeight 0.2, tolerance 0.02
307
+ aureon_apply_market_event
308
+ symbol: NVDA
309
+ priceChangeRatio: 0.45
310
+ autoRestore: false # break the rule on purpose
311
+ aureon_get_health
312
+ aureon_get_restore_plan
313
+ aureon_restore_objective
314
+ aureon_get_drift_restore_flow # confirm three-beat flow
315
+ aureon_list_timeline
316
+ ```
317
+
318
+ Or one-shot: `aureon_run_drift_restore_demo`.
319
+
320
+ **Agent language**
321
+
322
+ - Beat 1: “Rule set — stable sleeve at ~20% target.”
323
+ - Beat 2: “NVDA rally moved the book. Stable allocation drifted off policy — {state}.”
324
+ - Beat 3: “Restore plan executed. Receipt settlement is `{vault|staged}`. Health back within tolerance.”
325
+ - Link back to (`aureon_get_allocation_vs_target` with `autoRestore: false`) and (intent before the rule exists).
326
+ - Do **not** claim discretionary trading; this is controlled rehearsal against registered policy.
327
+
328
+ ### K. Receipt → verification
329
+
330
+ ```text
331
+ aureon_run_drift_restore_demo # or aureon_restore_objective after drift
332
+ aureon_list_executions
333
+ aureon_validate_receipt # local — must pass before claiming proof
334
+ aureon_get_execution_settlement # vault — independent chain record when present
335
+ aureon_get_receipt_verification_flow
336
+ aureon_list_timeline
337
+ ```
338
+
339
+ Or one-shot: `aureon_run_receipt_verification_demo`.
340
+
341
+ **Agent language**
342
+
343
+ - Beat 1: “Restore returned a receipt — status `{status}`, result says `{result}`. That is a **claim**, not proof.”
344
+ - Beat 2: “`aureon_validate_receipt` — schema + honesty check. If invalid, report issues; do not say success.”
345
+ - Beat 3: “For vault receipts, `aureon_get_execution_settlement` — `verifiedOnChain: true` means independent settlement record. Staged receipts can validate but are **never** chain-verified.”
346
+ - Link back to (receipt exists after restore). Never say “chain-verified” unless `verifiedOnChain` or settlement record confirms it.
347
+
348
+ ### L. Portfolio watch while away
349
+
350
+ ```text
351
+ aureon_ping
352
+ aureon_me
353
+ aureon_apply_financial_intent
354
+ brief: Watch my portfolio while I'm away — keep about 20% in stable assets.
355
+ kind: stable_allocation
356
+ targetWeight: 0.2
357
+ tolerance: 0.02
358
+ aureon_refresh_watchdog
359
+ aureon_get_health
360
+ aureon_apply_market_event
361
+ symbol: NVDA
362
+ priceChangeRatio: 0.45
363
+ autoRestore: true
364
+ aureon_list_timeline
365
+ aureon_get_portfolio_watch_flow
366
+ ```
367
+
368
+ Or one-shot: `aureon_run_portfolio_watch_demo`.
369
+
370
+ **Agent language**
371
+
372
+ - Beat 1: “You asked me to watch your portfolio while away. I registered that as an **Automatic** objective — not a blank check, a rule.”
373
+ - Beat 2: “While you were away, the market moved. Automatic mode evaluated health and restored when off-plan.”
374
+ - Beat 3: “Here is your return briefing — health, timeline, and what happened. Use tools if you need receipt verification.”
375
+ - Host context: say **Cursor** or **Claude** when demoing agent-in-host; never claim 24/7 unsupervised trading.
376
+ - Link back to (intent → objective) and (drift/restore with `autoRestore: false` vs **true** here).
377
+
378
+ ### M. Full AUREON loop
379
+
380
+ ```text
381
+ aureon_apply_financial_intent
382
+ brief: Keep about 20% in stable assets — grow the book without abandoning the plan.
383
+ kind: stable_allocation
384
+ targetWeight: 0.2
385
+ tolerance: 0.02
386
+ aureon_get_allocation_vs_target
387
+ aureon_apply_market_event
388
+ symbol: NVDA
389
+ priceChangeRatio: 0.45
390
+ autoRestore: false
391
+ aureon_get_allocation_vs_target # paradox — green book, off-plan
392
+ aureon_restore_objective
393
+ aureon_validate_receipt
394
+ aureon_get_full_aureon_loop_flow
395
+ ```
396
+
397
+ Or one-shot: `aureon_run_full_aureon_loop_demo`.
398
+
399
+ **Agent language**
400
+
401
+ - Positioning: “We're not building another portfolio tracker.”
402
+ - Beat 1: Intent registered as policy — not a price chart goal.
403
+ - Beat 2: Book can look fine while the plan fails — show paradox after shock.
404
+ - Beat 3: Restore closes the loop; receipt must be validated before claiming success.
222
405
  ---
223
406
 
224
407
  ## Prompt examples
@@ -273,6 +456,7 @@ Avoid these failure modes.
273
456
  | Spamming restore | Flapping health, noisy timeline | Re-read health; restore once; confirm |
274
457
  | Calling market events “live prices” | Misleads capital decisions | Label as rehearsal |
275
458
  | Claiming `staged` as on-chain | Breaks trust | Quote `settlement` literally |
459
+ | Inventing missing audit proof | Fake explorer / registry / settlement | Use `aureon_get_audit_trail` and report labeled gaps |
276
460
  | Asking for private keys | Violates the trust model | Prepare tools + host wallet only |
277
461
  | Clearing portfolio casually | Destructive book wipe | Confirm; prefer sync |
278
462
  | Rotating keys into chat | Secret leakage | Create key; instruct secure env storage |
@@ -342,7 +526,7 @@ No. It is for integration rehearsal and demos.
342
526
 
343
527
  ### How many tools are there?
344
528
 
345
- **34.** See the [tool reference](./tools.md).
529
+ **47.** See the [tool reference](./tools.md).
346
530
 
347
531
  ### Where are the typed schemas?
348
532
 
package/docs/auth.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Authentication Guide
2
2
 
3
- How **`@buildaureon/mcp`** `v0.1.1` authenticates to the live AUREON API — aligned with `@buildaureon/sdk`, safe for humans and for agents that call the **34** stdio tools.
3
+ How **`@buildaureon/mcp`** `v0.1.1` authenticates to the live AUREON API — aligned with `@buildaureon/sdk`, safe for humans and for agents that call the **43** stdio tools.
4
4
 
5
5
  Related docs: [Setup](./setup.md) · [Tools](./tools.md) · [Agent guide](./agent-guide.md) · [Architecture](./architecture.md) · [Security](./security.md) · [Package README](../README.md)
6
6
 
@@ -247,7 +247,7 @@ Map structured SDK errors in tool output to the same categories; do not retry bl
247
247
  MCP host (Cursor / Claude)
248
248
  │ stdio
249
249
 
250
- @buildaureon/mcp (34 tools, no private key)
250
+ @buildaureon/mcp (54 tools, no private key)
251
251
 
252
252
 
253
253
  @buildaureon/sdk (HTTP, retries, types)
package/docs/setup.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Complete installation and host configuration for **`@buildaureon/mcp`** `v0.1.1` against the live AUREON API.
4
4
 
5
- This package is a **stdio** [Model Context Protocol](https://modelcontextprotocol.io) server. It wraps [`@buildaureon/sdk`](https://github.com/buildaureon/aureon-sdk) and exposes **34 tools** so Cursor, Claude Desktop, and other MCP hosts can call the Financial Compass control plane.
5
+ This package is a **stdio** [Model Context Protocol](https://modelcontextprotocol.io) server. It wraps [`@buildaureon/sdk`](https://github.com/buildaureon/aureon-sdk) and exposes **54 tools** so Cursor, Claude Desktop, and other MCP hosts can call the Financial Compass control plane.
6
6
 
7
7
  Related docs: [Authentication](./auth.md) · [Tools](./tools.md) · [Agent guide](./agent-guide.md) · [Architecture](./architecture.md) · [Security](./security.md) · [Package README](../README.md)
8
8
 
@@ -48,7 +48,7 @@ The MCP server never custodies funds and never signs chain transactions.
48
48
  | Version | `0.1.1` |
49
49
  | Depends on | `@buildaureon/sdk` |
50
50
  | Transport | stdio MCP (JSON-RPC over stdin/stdout) |
51
- | Tool count | 34 |
51
+ | Tool count | 47 |
52
52
  | Live API | `https://api.aureonlabs.network` |
53
53
  | Console | [app.aureonlabs.network](https://app.aureonlabs.network) |
54
54
 
@@ -258,7 +258,7 @@ For write workflows (create objective, restore, prepare vault), see [./agent-gui
258
258
 
259
259
  ## Verify the tool surface
260
260
 
261
- A healthy install exposes auth, read, objective, portfolio, execution, market, vault prepare, and developer key tools — **34** in total.
261
+ A healthy install exposes auth, read, objective, portfolio, execution, market, vault prepare, and developer key tools — **47** in total.
262
262
 
263
263
  You do not need every tool on day one. Start with:
264
264
 
package/docs/tools.md CHANGED
@@ -6,7 +6,7 @@ Each tool maps to one public method on the `@buildaureon/sdk` client. Handlers v
6
6
 
7
7
  For request/response shapes, error codes, and HTTP contracts, see the **@buildaureon/sdk documentation**.
8
8
 
9
- **Tool count:** 34.
9
+ **Tool count:** 52.
10
10
 
11
11
  **API:** `https://api.aureonlabs.network` (Robinhood Chain L2, early access).
12
12
 
@@ -47,8 +47,8 @@ Successful calls return structured JSON (formatted for agents). Failures return
47
47
  | --- | --- |
48
48
  | Health | `aureon_ping` |
49
49
  | Auth & identity | `aureon_get_auth_nonce`, `aureon_verify_wallet`, `aureon_dev_login`, `aureon_logout`, `aureon_me` |
50
- | Dashboard & read | `aureon_get_overview`, `aureon_get_portfolio`, `aureon_list_objectives`, `aureon_get_objective`, `aureon_get_health`, `aureon_list_timeline`, `aureon_list_market_presets`, `aureon_get_restore_plan`, `aureon_list_executions`, `aureon_get_vault`, `aureon_get_vault_status` |
51
- | Objectives | `aureon_create_objective`, `aureon_update_objective`, `aureon_pause_objective`, `aureon_resume_objective` |
50
+ | Dashboard & read | `aureon_get_overview`, `aureon_get_allocation_vs_target`, `aureon_get_objective_portfolio_flow`, `aureon_get_drift_restore_flow`, `aureon_get_receipt_verification_flow`, `aureon_get_portfolio_watch_flow`, `aureon_get_full_aureon_loop_flow`, `aureon_get_portfolio`, `aureon_list_objectives`, `aureon_get_objective`, `aureon_get_health`, `aureon_list_timeline`, `aureon_list_market_presets`, `aureon_get_restore_plan`, `aureon_list_executions`, `aureon_get_vault`, `aureon_get_vault_status` |
51
+ | Objectives | `aureon_create_objective`, `aureon_apply_financial_intent`, `aureon_run_drift_restore_demo`, `aureon_run_receipt_verification_demo`, `aureon_run_portfolio_watch_demo`, `aureon_run_full_aureon_loop_demo`, `aureon_update_objective`, `aureon_pause_objective`, `aureon_resume_objective` |
52
52
  | Portfolio write | `aureon_set_portfolio`, `aureon_clear_portfolio`, `aureon_sync_portfolio` |
53
53
  | Execution | `aureon_run_execution`, `aureon_restore_objective` |
54
54
  | Market | `aureon_apply_market_event`, `aureon_refresh_watchdog` |
@@ -148,6 +148,154 @@ Successful calls return structured JSON (formatted for agents). Failures return
148
148
 
149
149
  **Caveats:** Overview is a summary. Drill into `aureon_get_health` / `aureon_get_objective` for policy decisions.
150
150
 
151
+ ### `aureon_get_allocation_vs_target`
152
+
153
+ **Purpose:** Objective vs actual portfolio — current weight vs policy target per active objective, plus a green-book/off-plan paradox flag.
154
+
155
+ **Typical args:** none.
156
+
157
+ **When to use:** demos; explain when the book is up but objectives are in warning/violation; avoid stitching overview + health manually.
158
+
159
+ **Returns:** `{ rows, paradox, overview }` — see `@buildaureon/sdk` `getAllocationVsTarget()`.
160
+
161
+ **Caveats:** Paradox detection uses 24h book change when available. Pair with `aureon_apply_market_event` (`autoRestore: false`) for rehearsal demos.
162
+
163
+ ### `aureon_get_objective_portfolio_flow`
164
+
165
+ **Purpose:** Read AI → objective → portfolio flow for active objectives (intent summary, objective, health, portfolio snapshot).
166
+
167
+ **Typical args:**
168
+
169
+ | Arg | Required | Notes |
170
+ | --- | --- | --- |
171
+ | `objectiveId` | no | Filter to one objective; omit for all active |
172
+
173
+ **When to use:** — confirm intent is linked to live portfolio after `aureon_apply_financial_intent`; read-only refresh without creating a new objective.
174
+
175
+ **Returns:** Array of flow objects — see `@buildaureon/sdk` `getObjectivePortfolioFlow()`.
176
+
177
+ **Caveats:** Only active objectives are included. Pair with `aureon_get_allocation_vs_target` for ongoing objective vs actual tracking.
178
+
179
+ ### `aureon_run_drift_restore_demo`
180
+
181
+ **Purpose:** Run drift → detection → restore demo in one call (seed book, create stable objective, NVDA rally with `autoRestore: false`, manual restore).
182
+
183
+ **Typical args:** none.
184
+
185
+ **When to use:** Content Arc Day 4; teach the full loop without stitching portfolio, market, plan, and restore tools.
186
+
187
+ **Returns:** `DriftRestoreFlow` — see `@buildaureon/sdk` `runDriftRestoreDemo()`.
188
+
189
+ **Caveats:** Mutates portfolio and creates a new objective. Settlement may be `vault` or `staged`. Controlled rehearsal — not discretionary trading.
190
+
191
+ ### `aureon_get_drift_restore_flow`
192
+
193
+ **Purpose:** Read drift → detection → restore flow for active objectives (health, allocation row, restore plan when off-plan, latest receipt).
194
+
195
+ **Typical args:**
196
+
197
+ | Arg | Required | Notes |
198
+ | --- | --- | --- |
199
+ | `objectiveId` | no | Filter to one objective; omit for all active |
200
+
201
+ **When to use:** Confirm three-beat arc after manual steps in workflow J; read-only monitoring.
202
+
203
+ **Returns:** Array of `DriftRestoreFlow` — see `@buildaureon/sdk` `getDriftRestoreFlow()`.
204
+
205
+ **Caveats:** Inferred phases when historical aligned/drift snapshots are not stored; pair with `aureon_list_timeline` for audit trail.
206
+
207
+ ### `aureon_run_receipt_verification_demo`
208
+
209
+ **Purpose:** Run receipt → verification demo (drift-restore + validate receipt + settlement lookup + timeline).
210
+
211
+ **Typical args:** none.
212
+
213
+ **When to use:** Content Arc Day 5; teach claim vs validation vs chain proof without stitching restore, validate, and settlement tools.
214
+
215
+ **Returns:** `ReceiptVerificationFlow` — see `@buildaureon/sdk` `runReceiptVerificationDemo()`.
216
+
217
+ **Caveats:** Mutates portfolio via embedded drift-restore. Validator is local — does not re-query chain. Staged receipts validate but are not chain-verified.
218
+
219
+ ### `aureon_get_receipt_verification_flow`
220
+
221
+ **Purpose:** Read receipt → verification flow for execution receipts (claim, validation result, settlement lookup, timeline).
222
+
223
+ **Typical args:**
224
+
225
+ | Arg | Required | Notes |
226
+ | --- | --- | --- |
227
+ | `executionId` | no | Filter to one execution; omit for five most recent |
228
+
229
+ **When to use:** Confirm verification tier after manual steps in workflow K.
230
+
231
+ **Returns:** Array of `ReceiptVerificationFlow` — see `@buildaureon/sdk` `getReceiptVerificationFlow()`.
232
+
233
+ **Caveats:** Pair with `aureon_validate_receipt` for local checks; use `aureon_get_execution_settlement` for vault chain proof.
234
+
235
+ ### `aureon_run_portfolio_watch_demo`
236
+
237
+ **Purpose:** Run portfolio watch demo (brief → Automatic objective → while-away market event with auto restore → return briefing).
238
+
239
+ **Typical args:**
240
+
241
+ | Arg | Required | Notes |
242
+ | --- | --- | --- |
243
+ | `brief` | no | User wording; default watch-while-away brief |
244
+ | `host` | no | `cursor` \| `claude` \| `mcp` for briefing labels |
245
+
246
+ **When to use:** Content Arc Day 6; Claude/Cursor + AUREON agent-in-host teaching.
247
+
248
+ **Returns:** `PortfolioWatchFlow` — see `@buildaureon/sdk` `runPortfolioWatchDemo()`.
249
+
250
+ **Caveats:** Mutates portfolio and objectives. Uses `autoRestore: true`. Not unsupervised trading — registered Automatic policy only.
251
+
252
+ ### `aureon_get_portfolio_watch_flow`
253
+
254
+ **Purpose:** Read portfolio watch briefing for Automatic objectives.
255
+
256
+ **Typical args:**
257
+
258
+ | Arg | Required | Notes |
259
+ | --- | --- | --- |
260
+ | `objectiveId` | no | Filter to one objective |
261
+ | `brief` | no | User brief for summary lines |
262
+ | `host` | no | Agent host label |
263
+
264
+ **When to use:** Confirm briefing after manual steps in workflow L.
265
+
266
+ **Returns:** Array of `PortfolioWatchFlow` — see `@buildaureon/sdk` `getPortfolioWatchFlow()`.
267
+
268
+ ### `aureon_run_full_aureon_loop_demo`
269
+
270
+ **Purpose:** Run Content Arc full AUREON loop (intent → plan check with autoRestore false → restore → receipt verification).
271
+
272
+ **Typical args:**
273
+
274
+ | Arg | Required | Notes |
275
+ | --- | --- | --- |
276
+ | `brief` | no | User wording; default full-loop brief |
277
+
278
+ **When to use:** Content Arc Day 7; positioning demo — not a portfolio tracker.
279
+
280
+ **Returns:** `FullAureonLoopFlow` — see `@buildaureon/sdk` `runFullAureonLoopDemo()`.
281
+
282
+ **Caveats:** Mutates portfolio. Uses `autoRestore: false` then manual restore. Staged receipts validate but are not chain-verified.
283
+
284
+ ### `aureon_get_full_aureon_loop_flow`
285
+
286
+ **Purpose:** Read full AUREON loop for active objectives that already have an execution receipt.
287
+
288
+ **Typical args:**
289
+
290
+ | Arg | Required | Notes |
291
+ | --- | --- | --- |
292
+ | `objectiveId` | no | Filter to one objective |
293
+ | `brief` | no | User brief for teaching shape |
294
+
295
+ **When to use:** Confirm closed loop after manual steps in workflow M.
296
+
297
+ **Returns:** Array of `FullAureonLoopFlow` — see `@buildaureon/sdk` `getFullAureonLoopFlow()`.
298
+
151
299
  ### `aureon_get_portfolio`
152
300
 
153
301
  **Purpose:** Current Capital Book snapshot — positions, marks, and weights.
@@ -333,6 +481,28 @@ Successful calls return structured JSON (formatted for agents). Failures return
333
481
 
334
482
  **Caveats:** Agents should use **Automatic** (`auto`) unless the human explicitly wants Manual Approve. To change symbol or mode later, create a new objective (pause or leave the old one).
335
483
 
484
+ ### `aureon_apply_financial_intent`
485
+
486
+ **Purpose:** Register user/agent intent as an Automatic objective and return the full AI → objective → portfolio flow in one call.
487
+
488
+ **Typical args:**
489
+
490
+ | Arg | Required | Notes |
491
+ | --- | --- | --- |
492
+ | `brief` | yes | What the user wants their money to do — agent-extracted wording |
493
+ | `kind` | yes | `stable_allocation` \| `balanced_portfolio` \| `risk_ceiling` \| `reward_reinvestment` |
494
+ | `targetWeight` | yes | 0–1 |
495
+ | `tolerance` | yes | Drift band 0–1 |
496
+ | `targetSymbol` | no | Asset symbol for `balanced_portfolio` |
497
+ | `name` | no | Display name override |
498
+ | `priority` | no | `low` \| `medium` \| `high` \| `critical` |
499
+
500
+ **When to use:** turn structured agent intent into persistent policy without stitching create + health + portfolio calls.
501
+
502
+ **Returns:** `{ intent, objective, health, portfolio, message }` — see `@buildaureon/sdk` `applyFinancialIntent()`.
503
+
504
+ **Caveats:** Agent must supply structured fields; `brief` is for audit/teaching, not autonomous NLU. Creates a new objective each call.
505
+
336
506
  ### `aureon_update_objective`
337
507
 
338
508
  **Purpose:** Partial update of mutable fields (name, weight, tolerance, priority, optional risk/reinvest fields).
@@ -389,13 +559,44 @@ Successful calls return structured JSON (formatted for agents). Failures return
389
559
 
390
560
  ### `aureon_restore_objective`
391
561
 
392
- **Purpose:** Run vault-backed restorative execution for an objective outside policy (primary agent restore path).
562
+ **Purpose:** Run restorative execution for an objective outside policy. Not always vault-backed.
393
563
 
394
564
  **Typical args:** `objectiveId` (required).
395
565
 
396
- **When to use:** After a clear breach and a reviewed restore plan; Automatic objectives with a funded vault.
566
+ **When to use:** After a clear breach and a reviewed restore plan.
567
+
568
+ **Caveats:** Automatic + configured vault that cannot execute returns 409 — it does not stage a fake restore. Manual may stage. Empty vault blocks Automatic on-chain restore. Confirm with `aureon_list_timeline` / `aureon_list_executions`. Read `settlement`, `verifiedOnChain`, `explorerUrl`, and `registryRef` on every receipt.
569
+
570
+ ### How to read a receipt (agents)
571
+
572
+ 1. Call `aureon_list_executions` or use the receipt from restore/run.
573
+ 2. Check **`settlement`**: `vault` vs `staged` — never claim on-chain for `staged`.
574
+ 3. If **`explorerUrl`** is present, the vault tx can be verified on the explorer.
575
+ 4. If **`registryRef`** is present, the objective was registered on ObjectiveRegistry.
576
+ 5. Match **`aureon_list_timeline`** events via `payload.executionId === receipt.id`.
577
+ 6. For vault receipts, check **`verifiedOnChain`**. When true, cite **`settlementRecord`** or call **`aureon_get_execution_settlement`**. Never invent chain proof when `verifiedOnChain` is false.
578
+
579
+ ### `aureon_get_execution_settlement`
397
580
 
398
- **Caveats:** Empty vault or Manual-only product constraints can block or stage settlement. Confirm with `aureon_list_timeline` / `aureon_list_executions`.
581
+ **Purpose:** Returns the durable on-chain settlement record for a vault execution when the API listener observed a `Rebalanced` event.
582
+
583
+ **When to use:** After a vault restore when you need independent chain proof (tx hash, block, token pair, amounts).
584
+
585
+ **Caveats:** Staged executions return `verifiedOnChain: false` with no settlement. Vault without listener confirmation is **not** chain-verified — say “vault submitted, not yet observed on-chain.”
586
+
587
+ ### `aureon_list_settlements`
588
+
589
+ **Purpose:** Lists settlement records for the wallet (optional `objectiveId` filter). May include orphans — observed vault events not yet bound to an execution.
590
+
591
+ **When to use:** Audit trail review; cross-check multiple restores. Read `status` and `executionId` before claiming proof.
592
+
593
+ ### `aureon_validate_receipt`
594
+
595
+ **Purpose:** Validates an execution receipt locally (no API call). Returns `{ valid, issues }`.
596
+
597
+ **When to use:** After `aureon_restore_objective` or `aureon_list_executions` — confirm the receipt is honest before reporting to the operator.
598
+
599
+ **Caveats:** Validation is schema + policy only; it does not re-fetch chain state. If `valid: false`, quote `issues` and do not claim on-chain settlement.
399
600
 
400
601
  ---
401
602
 
@@ -511,6 +712,16 @@ Successful calls return structured JSON (formatted for agents). Failures return
511
712
 
512
713
  **Caveats:** Toggled-off keys fail subsequent control-plane calls until re-enabled.
513
714
 
715
+ ### `aureon_get_audit_trail`
716
+
717
+ **Purpose:** Export one objective’s financial audit trail — registry, receipts, settlements, timeline — in a single object.
718
+
719
+ **Typical args:** `objectiveId` (required).
720
+
721
+ **When to use:** “Did this restore actually happen?” / follow intent → receipt → settlement without stitching four tools.
722
+
723
+ **Caveats:** Missing proof is labeled as a gap. Staged receipts are never on-chain. Do not invent explorer links or `verifiedOnChain`. Testnet only.
724
+
514
725
  ---
515
726
 
516
727
  ## Prompt → tool mapping
@@ -525,6 +736,7 @@ Successful calls return structured JSON (formatted for agents). Failures return
525
736
  | “Why is health red?” | `aureon_get_health`, `aureon_list_timeline` |
526
737
  | “Show the restore plan” | `aureon_get_restore_plan` |
527
738
  | “Execute restore” | `aureon_restore_objective` |
739
+ | “Export the audit trail” | `aureon_get_audit_trail` |
528
740
  | “Simulate −10% TSLA” | `aureon_apply_market_event` |
529
741
  | “Prepare 0.1 ETH deposit” | `aureon_prepare_vault_deposit` then host signs |
530
742
  | “Rotate my agent key” | `aureon_create_api_key` (+ secure store), optional `aureon_revoke_api_key` |
@@ -550,4 +762,4 @@ Successful calls return structured JSON (formatted for agents). Failures return
550
762
  - Prepare tools are safe to call with an API key; broadcasting is a separate host step.
551
763
  - When summarizing restores, always include settlement type when the receipt provides it.
552
764
 
553
- This reference is the canonical MCP tool surface for live agents: **34 tools**, live API, issued key (optional Bearer), and private key only outside MCP for broadcast.
765
+ This reference is the canonical MCP tool surface for live agents: **54 tools**, live API, issued key (optional Bearer), and private key only outside MCP for broadcast.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@buildaureon/mcp",
3
- "version": "0.1.2",
3
+ "version": "0.1.7",
4
4
  "description": "MCP server for AUREON Financial Compass: Financial Compass capital context for AI agents",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -28,6 +28,7 @@
28
28
  "typecheck": "tsc -p tsconfig.json --noEmit",
29
29
  "test": "tsx --test tests/**/*.test.ts",
30
30
  "test:e2e": "tsx tests/e2e-full.mjs",
31
+ "test:phase2": "tsx tests/verify-phase2-session.mjs",
31
32
  "test:live-agent": "tsx tests/live-agent-exercise.mjs",
32
33
  "verify": "tsx tests/verify-agent.ts"
33
34
  },
@@ -48,7 +49,7 @@
48
49
  "node": ">=20"
49
50
  },
50
51
  "dependencies": {
51
- "@buildaureon/sdk": "^0.1.2",
52
+ "@buildaureon/sdk": "0.1.7",
52
53
  "@modelcontextprotocol/sdk": "^1.12.1",
53
54
  "zod": "^3.25.67"
54
55
  },