@buildaureon/mcp 0.1.8 → 0.1.9

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.
@@ -1,652 +1,652 @@
1
- # AUREON MCP Agent Guide
2
-
3
- Playbooks for AI agents using `@buildaureon/mcp` against the **live** AUREON API.
4
-
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
-
7
- **Surface:** 54 tools · issued API key · optional Bearer · private key only outside MCP for broadcast.
8
-
9
- ---
10
-
11
- ## How agents should think
12
-
13
- Use a simple loop on every non-trivial request:
14
-
15
- **Read → Decide → Act.**
16
-
17
- ### 1. Read
18
-
19
- Gather facts before proposing mutations.
20
-
21
- Typical read set:
22
-
23
- - `aureon_ping` — is the live API up?
24
- - `aureon_me` — which wallet am I acting as?
25
- - `aureon_sync_portfolio` + `aureon_get_portfolio` — what does the Capital Book say?
26
- - `aureon_get_vault_status` — can Automatic restores actually fund?
27
- - `aureon_list_objectives` + `aureon_get_health` — what policy exists and is it breached?
28
-
29
- ### 2. Decide
30
-
31
- Translate operator intent into a **single** next action (or a short sequenced plan).
32
-
33
- Decide:
34
-
35
- - Is the vault empty (restore must 409; return unsigned prepare; do not fund)?
36
- - Do we create a new Automatic objective?
37
- - Do we restore an existing breach?
38
- - Is this only a rehearsal (market event)?
39
-
40
- Prefer **Automatic** (`automationMode: "auto"`) for agents. Manual mode is for humans who must Approve in the utility.
41
-
42
- ### 3. Act
43
-
44
- Call the write / prepare / restore tool. Then **read again** to confirm.
45
-
46
- Never claim success from prepare alone. Never claim on-chain settlement unless the receipt says `settlement: "vault"`.
47
-
48
- ---
49
-
50
- ## Trust boundary (memorize this)
51
-
52
- | Credential | Role |
53
- | --- | --- |
54
- | Issued `AUREON_API_KEY` | Product access + wallet identity for control-plane tools |
55
- | Optional Bearer | Wallet session via nonce → sign → `aureon_verify_wallet` (wins if both present) |
56
- | Private key | **Outside MCP only** — host signs unsigned vault steps |
57
-
58
- The MCP server is not a custodian and not a broadcaster. `prepare_*` returns unsigned steps.
59
-
60
- ---
61
-
62
- ## Locked fields and defaults
63
-
64
- | Field | Rule |
65
- | --- | --- |
66
- | `automationMode` | Defaults to **`auto`** on create. Locked after create. |
67
- | `targetSymbol` | Locked after create. Recreate to change the token. |
68
- | Update patch | Name, weight, tolerance, priority (and related numeric fields) — **not** symbol/mode. |
69
-
70
- Agents: create Automatic objectives unless the human explicitly asks for Manual.
71
-
72
- ---
73
-
74
- ## Settlement types
75
-
76
- Restore and execution receipts may include:
77
-
78
- | Value | Meaning | How to describe it |
79
- | --- | --- | --- |
80
- | `vault` | On-chain / vault-backed settlement | “Settled on-chain via vault.” |
81
- | `staged` | Ledger-local / staged settlement | “Staged (not on-chain).” |
82
-
83
- **Honesty rule:** If the field is missing or unclear, say so. Do not upgrade `staged` to “on-chain” in chat.
84
-
85
- ---
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
-
107
- ## Recommended workflows
108
-
109
- ### A. Morning check
110
-
111
- Goal: identity, book, vault readiness, health — no surprise mutations.
112
-
113
- ```text
114
- aureon_ping
115
- aureon_me
116
- aureon_sync_portfolio
117
- aureon_get_portfolio
118
- aureon_get_vault_status
119
- aureon_get_overview
120
- aureon_list_objectives
121
- aureon_refresh_watchdog
122
- aureon_get_health
123
- ```
124
-
125
- **Agent summary checklist**
126
-
127
- - Wallet address
128
- - Whether vault looks fundable / ready
129
- - Objective count and any breaches
130
- - One recommended next action (fund, restore, or none)
131
-
132
- ### B. Create an Automatic objective
133
-
134
- Example intent: maintain ~15% WETH with 3% tolerance.
135
-
136
- **Read first**
137
-
138
- ```text
139
- aureon_me
140
- aureon_sync_portfolio
141
- aureon_get_vault_status
142
- aureon_list_objectives
143
- ```
144
-
145
- **Act**
146
-
147
- ```text
148
- aureon_create_objective
149
- name: "Maintain 15% WETH"
150
- kind: balanced_portfolio
151
- targetWeight: 0.15
152
- tolerance: 0.03
153
- targetSymbol: WETH
154
- automationMode: auto
155
- priority: medium
156
- ```
157
-
158
- **Confirm**
159
-
160
- ```text
161
- aureon_get_objective
162
- aureon_get_health
163
- ```
164
-
165
- Remind the operator that `targetSymbol` and `automationMode` are locked.
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
-
186
- ### C. Restore drift
187
-
188
- ```text
189
- aureon_refresh_watchdog
190
- aureon_get_health
191
- aureon_get_restore_plan # when breached — explain steps
192
- aureon_restore_objective
193
- aureon_list_timeline
194
- aureon_list_executions
195
- aureon_get_health # post-check
196
- ```
197
-
198
- **Agent summary checklist**
199
-
200
- - Pre-health vs post-health
201
- - Plan kind (e.g. vault swap / wrap)
202
- - Receipt `settlement` (`vault` vs `staged`)
203
- - Timeline events confirming the restore
204
-
205
- If vault status says funding is insufficient, stop and switch to the deposit workflow.
206
-
207
- ### D. Vault deposit (prepare + host signs)
208
-
209
- ```text
210
- aureon_get_vault_status
211
- aureon_prepare_vault_deposit
212
- symbol: ETH
213
- amount: "0.1"
214
- → host signs & broadcasts unsigned steps (private key outside MCP)
215
- → wait for confirmation
216
- aureon_sync_portfolio
217
- aureon_get_vault_status
218
- aureon_get_vault
219
- ```
220
-
221
- **Agent language**
222
-
223
- - After prepare: “Here are unsigned steps. Sign and broadcast in your wallet. I cannot move funds with the API key alone.”
224
- - After sync: report vault readiness. Do not invent tx hashes the host did not provide.
225
-
226
- ### E. Market rehearsal (integration only)
227
-
228
- ```text
229
- aureon_list_market_presets
230
- aureon_apply_market_event
231
- symbol: TSLA
232
- priceChangeRatio: -0.1
233
- aureon_refresh_watchdog
234
- aureon_get_health
235
- # optional: restore_plan → restore_objective if rehearsing the full loop
236
- ```
237
-
238
- Do **not** treat rehearsal shocks as live oracle prices for production capital decisions.
239
-
240
- ### F. Pause / resume / soft update
241
-
242
- ```text
243
- aureon_pause_objective
244
- aureon_resume_objective
245
- aureon_update_objective # name, weight, tolerance, priority only
246
- ```
247
-
248
- To change token or auto/manual mode: create a new objective; pause or leave the old one.
249
-
250
- ### G. API key hygiene
251
-
252
- ```text
253
- aureon_list_api_keys
254
- aureon_create_api_key # secret once — store in host env
255
- aureon_toggle_api_key # pause without revoke
256
- aureon_revoke_api_key
257
- ```
258
-
259
- Never paste full secrets into public transcripts if the host displays tool output broadly.
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.
405
- ---
406
-
407
- ## Prompt examples
408
-
409
- ### System prompt fragment (paste-ready)
410
-
411
- ```text
412
- You have AUREON MCP tools against the live API.
413
- Prefer aureon_ping / aureon_me / aureon_sync_portfolio before mutations.
414
- Use automationMode auto unless the user explicitly asks for manual.
415
- Never claim on-chain settlement unless the restore receipt says settlement=vault.
416
- Never ask the user for a private key; for deposits call prepare tools and tell them
417
- to sign the returned steps in their wallet.
418
- targetSymbol and automationMode are immutable after create — recreate instead of update.
419
- Follow read → decide → act. Confirm with a second read after writes.
420
- ```
421
-
422
- ### Operator prompts that work well
423
-
424
- > Ping AUREON and show which wallet my issued key is bound to.
425
-
426
- > Sync my portfolio, check vault status, and summarize whether Automatic restores can run.
427
-
428
- > Create an Automatic objective to keep about 20% WETH with 2% tolerance. Confirm locks.
429
-
430
- > Health looks off — show the restore plan for objective `<id>`, then restore if the plan is sensible. Report settlement type.
431
-
432
- > Prepare a 0.05 ETH vault deposit. Do not try to broadcast. Tell me exactly what I must sign.
433
-
434
- > Rehearse a −10% TSLA mark event, refresh watchdog, and report which objectives breached.
435
-
436
- ### Operator prompts to clarify before acting
437
-
438
- > “Fix my portfolio.” → Ask which objective, whether to restore vs recreate, and whether the vault is funded.
439
-
440
- > “Make it manual.” → Confirm they want Manual Approve (human UI). Prefer staying Automatic for agent loops.
441
-
442
- > “Deposit 1 ETH.” → Clarify prepare-only vs they will sign; never imply MCP will broadcast.
443
-
444
- ---
445
-
446
- ## Anti-patterns
447
-
448
- Avoid these failure modes.
449
-
450
- | Anti-pattern | Why it hurts | Do this instead |
451
- | --- | --- | --- |
452
- | Write before read | Acts on stale identity / vault / health | Always ping / me / sync / vault status first |
453
- | Creating Manual by default | Agents cannot Approve in the utility | Default `automationMode: auto` |
454
- | Patching `targetSymbol` or mode | API rejects; wastes turns | Recreate the objective |
455
- | Treating prepare as funded | Balances unchanged until broadcast | Tell host to sign; then sync |
456
- | Spamming restore | Flapping health, noisy timeline | Re-read health; restore once; confirm |
457
- | Calling market events “live prices” | Misleads capital decisions | Label as rehearsal |
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 |
460
- | Asking for private keys | Violates the trust model | Prepare tools + host wallet only |
461
- | Clearing portfolio casually | Destructive book wipe | Confirm; prefer sync |
462
- | Rotating keys into chat | Secret leakage | Create key; instruct secure env storage |
463
-
464
- ---
465
-
466
- ## Automatic-only guidance for agents
467
-
468
- Agents operate best as **keepers with Automatic objectives**:
469
-
470
- 1. On first use the vault is empty: `aureon_restore_objective` must **409**. Call `aureon_prepare_vault_deposit` and return unsigned steps. **Do not fund.** The user signs when they use the product (same as testnet).
471
- 2. Create objectives with `automationMode: "auto"`.
472
- 3. Watch health via `aureon_refresh_watchdog` / `aureon_get_health`.
473
- 4. On breach after the user has funded: plan → `aureon_restore_objective` → confirm timeline / executions.
474
-
475
- Manual mode remains available for humans who want Approve gates. If the operator insists on Manual, say clearly that agent-driven restores may be limited and the utility Approve surface is the control plane for those swaps.
476
-
477
- ---
478
-
479
- ## Error handling tips
480
-
481
- | Symptom | Likely cause | Agent action |
482
- | --- | --- | --- |
483
- | 401 / invalid key | Bad or revoked issued key | Stop. Ask operator to rotate in Developers and update host env. |
484
- | Wallet session required / env key cannot identify wallet | Non-issued gating key | Switch to an **issued** Developers key. |
485
- | Vault empty / cannot restore | First use — user has not deposited | Prepare deposit (unsigned); wait for the user/host to broadcast; re-sync. Agents do not fund. |
486
- | Update rejects symbol / mode | Immutable create fields | Explain lock; offer recreate + pause old. |
487
- | Restore flaps / healthy immediately | Marks shifted or race | Re-read health + vault; avoid spam restores. |
488
- | Prepare succeeds, balances unchanged | Broadcast never happened | Remind: unsigned steps need host signature. |
489
- | Invite / early-access errors on verify | Wallet not invited | Use issued key path or complete invite on first Bearer login. |
490
- | Ambiguous settlement | Receipt missing or staged | Report exactly what the receipt says. |
491
-
492
- ### Retry discipline
493
-
494
- - Retry **reads** after transient network errors.
495
- - Do not blindly retry **restores** or **clears**.
496
- - After a failed write, re-read state before a second attempt.
497
- - After prepare, do not call prepare in a loop hoping balances change — wait for the host.
498
-
499
- ---
500
-
501
- ## FAQ
502
-
503
- ### Do I need a Bearer token every day?
504
-
505
- No. An issued API key is enough for control-plane agent work. Bearer is optional.
506
-
507
- ### Can the MCP server sign deposits?
508
-
509
- No. Prepare tools return unsigned steps. Private keys stay outside MCP.
510
-
511
- ### Why is my restore `staged`?
512
-
513
- Staged means ledger-local settlement for that receipt. Fund the vault and use Automatic restore paths when you need `settlement: "vault"`. Always label honestly.
514
-
515
- ### Can I change `targetSymbol` later?
516
-
517
- No. Recreate the objective. Optionally pause the old one.
518
-
519
- ### What is the default automation mode?
520
-
521
- `auto`. Agents should keep it that way unless the human requests Manual.
522
-
523
- ### Is market event a production price feed?
524
-
525
- No. It is for integration rehearsal and demos.
526
-
527
- ### How many tools are there?
528
-
529
- **47.** See the [tool reference](./tools.md).
530
-
531
- ### Where are the typed schemas?
532
-
533
- In the **@buildaureon/sdk documentation** (client API, data contracts, error model).
534
-
535
- ### What URL should agents use?
536
-
537
- Omit `AUREON_API_URL` for local mainnet `http://127.0.0.1:8788` (chain 4663). Set `AUREON_NETWORK=testnet` for the public host (still 46630). Do not treat `api.aureonlabs.network` as 4663.
538
-
539
- ### What if the operator asks me to “just send the transaction”?
540
-
541
- Refuse to take a private key. Call `aureon_prepare_vault_deposit` or `aureon_prepare_vault_withdraw`, return the unsigned steps, and instruct the host wallet to sign and broadcast.
542
-
543
- ---
544
-
545
- ## Suggested turn templates
546
-
547
- ### Template: status report
548
-
549
- 1. Ping + me
550
- 2. Sync portfolio + vault status
551
- 3. Overview + health
552
- 4. Three-bullet summary + one recommended action
553
-
554
- ### Template: create policy
555
-
556
- 1. Confirm wallet + vault readiness
557
- 2. Create Automatic objective with explicit weight/tolerance/symbol
558
- 3. Fetch objective + health
559
- 4. State locks (`targetSymbol`, `automationMode`)
560
-
561
- ### Template: heal breach
562
-
563
- 1. Refresh watchdog + health
564
- 2. Get restore plan; narrate steps briefly
565
- 3. Restore
566
- 4. List executions/timeline; quote `settlement`
567
- 5. Re-check health
568
-
569
- ### Template: fund vault
570
-
571
- 1. Vault status
572
- 2. Prepare deposit
573
- 3. Hand unsigned steps to operator
574
- 4. After they confirm broadcast: sync + vault status
575
-
576
- ---
577
-
578
- ## Coordination with humans
579
-
580
- Agents should be explicit about what only a human can do:
581
-
582
- - Sign and broadcast vault steps
583
- - Approve Manual restores in the utility
584
- - Create / rotate issued API keys in a secure secret store
585
- - Decide risk appetite (weights, tolerances, which symbols)
586
-
587
- Agents should be decisive about what they can do alone with an issued key:
588
-
589
- - Sync and inspect book / vault / health
590
- - Create Automatic objectives
591
- - Fetch plans and run restores
592
- - Rehearse market events
593
- - Pause / resume / soft-update objectives
594
-
595
- ---
596
-
597
- ## Related reading
598
-
599
- - [Tools](./tools.md) — purpose, args, when to use, caveats per tool
600
- - [Auth](./auth.md) — issued key, optional Bearer, private-key boundary
601
- - [Setup](./setup.md) — wiring Cursor / Claude Desktop to the live API
602
- - [Security](./security.md) — stdio trust model and key hygiene
603
- - **@buildaureon/sdk documentation** — deeper contracts for builders
604
-
605
- ---
606
-
607
- ## Quick reference card
608
-
609
- ```text
610
- READ: ping → me → sync_portfolio → vault_status → health
611
- DECIDE: empty vault 409 + unsigned prepare (do not fund)? create auto? restore? rehearse only?
612
- ACT: prepare_* (host signs) | create_objective(auto) | restore_objective
613
- CHECK: timeline / executions / health — quote settlement=vault|staged
614
- ```
615
-
616
- Keep the loop short. Prefer Automatic. Never invent settlement. Never touch private keys inside MCP.
617
-
618
- ---
619
-
620
- ## Appendix: decision matrix
621
-
622
- | Situation | First tools | Then | Stop if |
623
- | --- | --- | --- | --- |
624
- | New session | `aureon_ping`, `aureon_me` | Sync + vault status | Key invalid |
625
- | Want new policy | List objectives + vault status | `aureon_create_objective` (auto) | Vault empty and restores required |
626
- | Health red | Watchdog + health + plan | `aureon_restore_objective` | Plan unclear / unfunded |
627
- | Need capital in vault | `aureon_prepare_vault_deposit` | Host signs outside MCP | Operator cannot sign |
628
- | Demo shock | List presets + apply event | Health / optional restore | Treating marks as production |
629
- | Soft policy tweak | `aureon_get_objective` | `aureon_update_objective` | Trying to change symbol/mode |
630
- | Change token or mode | Pause or leave old | Create new Automatic objective | Patching locked fields |
631
- | Key rotation | `aureon_list_api_keys` | Create → store secret → revoke old | Echoing secret in public chat |
632
-
633
- ### Narrative examples (short)
634
-
635
- **Morning.** “API is up. Wallet `0x…`. Vault ready. Two Automatic objectives healthy. No action.”
636
-
637
- **Create.** “Created Automatic balanced objective for 15% WETH (±3%). `targetSymbol` and `automationMode` are locked. Health is within band.”
638
-
639
- **Restore.** “Objective breached after watchdog refresh. Plan was a vault-backed rebalance. Restore receipt `settlement: vault`. Post-health green.”
640
-
641
- **Deposit.** “Prepared unsigned deposit for 0.1 ETH. Sign and broadcast in your wallet. After confirmation I will sync and re-check vault status.”
642
-
643
- **Rehearsal.** “Applied −10% TSLA rehearsal event. Two objectives breached in marks. This is not a live oracle price.”
644
-
645
- ### Closing reminders for agents
646
-
647
- 1. Live API only — issued key (optional Bearer).
648
- 2. Thirty-three tools — see the tool reference for args and caveats.
649
- 3. Automatic by default — Manual is a human Approve surface.
650
- 4. Prepare ≠ funded — host signs outside MCP.
651
- 5. Quote `settlement` — `vault` or `staged`, never invent.
652
- 6. Read → decide → act → read again.
1
+ # AUREON MCP Agent Guide
2
+
3
+ Playbooks for AI agents using `@buildaureon/mcp` against the **live** AUREON API.
4
+
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
+
7
+ **Surface:** 54 tools · issued API key · optional Bearer · private key only outside MCP for broadcast.
8
+
9
+ ---
10
+
11
+ ## How agents should think
12
+
13
+ Use a simple loop on every non-trivial request:
14
+
15
+ **Read → Decide → Act.**
16
+
17
+ ### 1. Read
18
+
19
+ Gather facts before proposing mutations.
20
+
21
+ Typical read set:
22
+
23
+ - `aureon_ping` — is the live API up?
24
+ - `aureon_me` — which wallet am I acting as?
25
+ - `aureon_sync_portfolio` + `aureon_get_portfolio` — what does the Capital Book say?
26
+ - `aureon_get_vault_status` — can Automatic restores actually fund?
27
+ - `aureon_list_objectives` + `aureon_get_health` — what policy exists and is it breached?
28
+
29
+ ### 2. Decide
30
+
31
+ Translate operator intent into a **single** next action (or a short sequenced plan).
32
+
33
+ Decide:
34
+
35
+ - Is the vault empty (restore must 409; return unsigned prepare; do not fund)?
36
+ - Do we create a new Automatic objective?
37
+ - Do we restore an existing breach?
38
+ - Is this only a rehearsal (market event)?
39
+
40
+ Prefer **Automatic** (`automationMode: "auto"`) for agents. Manual mode is for humans who must Approve in the utility.
41
+
42
+ ### 3. Act
43
+
44
+ Call the write / prepare / restore tool. Then **read again** to confirm.
45
+
46
+ Never claim success from prepare alone. Never claim on-chain settlement unless the receipt says `settlement: "vault"`.
47
+
48
+ ---
49
+
50
+ ## Trust boundary (memorize this)
51
+
52
+ | Credential | Role |
53
+ | --- | --- |
54
+ | Issued `AUREON_API_KEY` | Product access + wallet identity for control-plane tools |
55
+ | Optional Bearer | Wallet session via nonce → sign → `aureon_verify_wallet` (wins if both present) |
56
+ | Private key | **Outside MCP only** — host signs unsigned vault steps |
57
+
58
+ The MCP server is not a custodian and not a broadcaster. `prepare_*` returns unsigned steps.
59
+
60
+ ---
61
+
62
+ ## Locked fields and defaults
63
+
64
+ | Field | Rule |
65
+ | --- | --- |
66
+ | `automationMode` | Defaults to **`auto`** on create. Locked after create. |
67
+ | `targetSymbol` | Locked after create. Recreate to change the token. |
68
+ | Update patch | Name, weight, tolerance, priority (and related numeric fields) — **not** symbol/mode. |
69
+
70
+ Agents: create Automatic objectives unless the human explicitly asks for Manual.
71
+
72
+ ---
73
+
74
+ ## Settlement types
75
+
76
+ Restore and execution receipts may include:
77
+
78
+ | Value | Meaning | How to describe it |
79
+ | --- | --- | --- |
80
+ | `vault` | On-chain / vault-backed settlement | “Settled on-chain via vault.” |
81
+ | `staged` | Ledger-local / staged settlement | “Staged (not on-chain).” |
82
+
83
+ **Honesty rule:** If the field is missing or unclear, say so. Do not upgrade `staged` to “on-chain” in chat.
84
+
85
+ ---
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
+
107
+ ## Recommended workflows
108
+
109
+ ### A. Morning check
110
+
111
+ Goal: identity, book, vault readiness, health — no surprise mutations.
112
+
113
+ ```text
114
+ aureon_ping
115
+ aureon_me
116
+ aureon_sync_portfolio
117
+ aureon_get_portfolio
118
+ aureon_get_vault_status
119
+ aureon_get_overview
120
+ aureon_list_objectives
121
+ aureon_refresh_watchdog
122
+ aureon_get_health
123
+ ```
124
+
125
+ **Agent summary checklist**
126
+
127
+ - Wallet address
128
+ - Whether vault looks fundable / ready
129
+ - Objective count and any breaches
130
+ - One recommended next action (fund, restore, or none)
131
+
132
+ ### B. Create an Automatic objective
133
+
134
+ Example intent: maintain ~15% WETH with 3% tolerance.
135
+
136
+ **Read first**
137
+
138
+ ```text
139
+ aureon_me
140
+ aureon_sync_portfolio
141
+ aureon_get_vault_status
142
+ aureon_list_objectives
143
+ ```
144
+
145
+ **Act**
146
+
147
+ ```text
148
+ aureon_create_objective
149
+ name: "Maintain 15% WETH"
150
+ kind: balanced_portfolio
151
+ targetWeight: 0.15
152
+ tolerance: 0.03
153
+ targetSymbol: WETH
154
+ automationMode: auto
155
+ priority: medium
156
+ ```
157
+
158
+ **Confirm**
159
+
160
+ ```text
161
+ aureon_get_objective
162
+ aureon_get_health
163
+ ```
164
+
165
+ Remind the operator that `targetSymbol` and `automationMode` are locked.
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
+
186
+ ### C. Restore drift
187
+
188
+ ```text
189
+ aureon_refresh_watchdog
190
+ aureon_get_health
191
+ aureon_get_restore_plan # when breached — explain steps
192
+ aureon_restore_objective
193
+ aureon_list_timeline
194
+ aureon_list_executions
195
+ aureon_get_health # post-check
196
+ ```
197
+
198
+ **Agent summary checklist**
199
+
200
+ - Pre-health vs post-health
201
+ - Plan kind (e.g. vault swap / wrap)
202
+ - Receipt `settlement` (`vault` vs `staged`)
203
+ - Timeline events confirming the restore
204
+
205
+ If vault status says funding is insufficient, stop and switch to the deposit workflow.
206
+
207
+ ### D. Vault deposit (prepare + host signs)
208
+
209
+ ```text
210
+ aureon_get_vault_status
211
+ aureon_prepare_vault_deposit
212
+ symbol: ETH
213
+ amount: "0.1"
214
+ → host signs & broadcasts unsigned steps (private key outside MCP)
215
+ → wait for confirmation
216
+ aureon_sync_portfolio
217
+ aureon_get_vault_status
218
+ aureon_get_vault
219
+ ```
220
+
221
+ **Agent language**
222
+
223
+ - After prepare: “Here are unsigned steps. Sign and broadcast in your wallet. I cannot move funds with the API key alone.”
224
+ - After sync: report vault readiness. Do not invent tx hashes the host did not provide.
225
+
226
+ ### E. Market rehearsal (integration only)
227
+
228
+ ```text
229
+ aureon_list_market_presets
230
+ aureon_apply_market_event
231
+ symbol: TSLA
232
+ priceChangeRatio: -0.1
233
+ aureon_refresh_watchdog
234
+ aureon_get_health
235
+ # optional: restore_plan → restore_objective if rehearsing the full loop
236
+ ```
237
+
238
+ Do **not** treat rehearsal shocks as live oracle prices for production capital decisions.
239
+
240
+ ### F. Pause / resume / soft update
241
+
242
+ ```text
243
+ aureon_pause_objective
244
+ aureon_resume_objective
245
+ aureon_update_objective # name, weight, tolerance, priority only
246
+ ```
247
+
248
+ To change token or auto/manual mode: create a new objective; pause or leave the old one.
249
+
250
+ ### G. API key hygiene
251
+
252
+ ```text
253
+ aureon_list_api_keys
254
+ aureon_create_api_key # secret once — store in host env
255
+ aureon_toggle_api_key # pause without revoke
256
+ aureon_revoke_api_key
257
+ ```
258
+
259
+ Never paste full secrets into public transcripts if the host displays tool output broadly.
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.
405
+ ---
406
+
407
+ ## Prompt examples
408
+
409
+ ### System prompt fragment (paste-ready)
410
+
411
+ ```text
412
+ You have AUREON MCP tools against the live API.
413
+ Prefer aureon_ping / aureon_me / aureon_sync_portfolio before mutations.
414
+ Use automationMode auto unless the user explicitly asks for manual.
415
+ Never claim on-chain settlement unless the restore receipt says settlement=vault.
416
+ Never ask the user for a private key; for deposits call prepare tools and tell them
417
+ to sign the returned steps in their wallet.
418
+ targetSymbol and automationMode are immutable after create — recreate instead of update.
419
+ Follow read → decide → act. Confirm with a second read after writes.
420
+ ```
421
+
422
+ ### Operator prompts that work well
423
+
424
+ > Ping AUREON and show which wallet my issued key is bound to.
425
+
426
+ > Sync my portfolio, check vault status, and summarize whether Automatic restores can run.
427
+
428
+ > Create an Automatic objective to keep about 20% WETH with 2% tolerance. Confirm locks.
429
+
430
+ > Health looks off — show the restore plan for objective `<id>`, then restore if the plan is sensible. Report settlement type.
431
+
432
+ > Prepare a 0.05 ETH vault deposit. Do not try to broadcast. Tell me exactly what I must sign.
433
+
434
+ > Rehearse a −10% TSLA mark event, refresh watchdog, and report which objectives breached.
435
+
436
+ ### Operator prompts to clarify before acting
437
+
438
+ > “Fix my portfolio.” → Ask which objective, whether to restore vs recreate, and whether the vault is funded.
439
+
440
+ > “Make it manual.” → Confirm they want Manual Approve (human UI). Prefer staying Automatic for agent loops.
441
+
442
+ > “Deposit 1 ETH.” → Clarify prepare-only vs they will sign; never imply MCP will broadcast.
443
+
444
+ ---
445
+
446
+ ## Anti-patterns
447
+
448
+ Avoid these failure modes.
449
+
450
+ | Anti-pattern | Why it hurts | Do this instead |
451
+ | --- | --- | --- |
452
+ | Write before read | Acts on stale identity / vault / health | Always ping / me / sync / vault status first |
453
+ | Creating Manual by default | Agents cannot Approve in the utility | Default `automationMode: auto` |
454
+ | Patching `targetSymbol` or mode | API rejects; wastes turns | Recreate the objective |
455
+ | Treating prepare as funded | Balances unchanged until broadcast | Tell host to sign; then sync |
456
+ | Spamming restore | Flapping health, noisy timeline | Re-read health; restore once; confirm |
457
+ | Calling market events “live prices” | Misleads capital decisions | Label as rehearsal |
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 |
460
+ | Asking for private keys | Violates the trust model | Prepare tools + host wallet only |
461
+ | Clearing portfolio casually | Destructive book wipe | Confirm; prefer sync |
462
+ | Rotating keys into chat | Secret leakage | Create key; instruct secure env storage |
463
+
464
+ ---
465
+
466
+ ## Automatic-only guidance for agents
467
+
468
+ Agents operate best as **keepers with Automatic objectives**:
469
+
470
+ 1. On first use the vault is empty: `aureon_restore_objective` must **409**. Call `aureon_prepare_vault_deposit` and return unsigned steps. **Do not fund.** The user signs when they use the product (same as testnet).
471
+ 2. Create objectives with `automationMode: "auto"`.
472
+ 3. Watch health via `aureon_refresh_watchdog` / `aureon_get_health`.
473
+ 4. On breach after the user has funded: plan → `aureon_restore_objective` → confirm timeline / executions.
474
+
475
+ Manual mode remains available for humans who want Approve gates. If the operator insists on Manual, say clearly that agent-driven restores may be limited and the utility Approve surface is the control plane for those swaps.
476
+
477
+ ---
478
+
479
+ ## Error handling tips
480
+
481
+ | Symptom | Likely cause | Agent action |
482
+ | --- | --- | --- |
483
+ | 401 / invalid key | Bad or revoked issued key | Stop. Ask operator to rotate in Developers and update host env. |
484
+ | Wallet session required / env key cannot identify wallet | Non-issued gating key | Switch to an **issued** Developers key. |
485
+ | Vault empty / cannot restore | First use — user has not deposited | Prepare deposit (unsigned); wait for the user/host to broadcast; re-sync. Agents do not fund. |
486
+ | Update rejects symbol / mode | Immutable create fields | Explain lock; offer recreate + pause old. |
487
+ | Restore flaps / healthy immediately | Marks shifted or race | Re-read health + vault; avoid spam restores. |
488
+ | Prepare succeeds, balances unchanged | Broadcast never happened | Remind: unsigned steps need host signature. |
489
+ | Invite / early-access errors on verify | Wallet not invited | Use issued key path or complete invite on first Bearer login. |
490
+ | Ambiguous settlement | Receipt missing or staged | Report exactly what the receipt says. |
491
+
492
+ ### Retry discipline
493
+
494
+ - Retry **reads** after transient network errors.
495
+ - Do not blindly retry **restores** or **clears**.
496
+ - After a failed write, re-read state before a second attempt.
497
+ - After prepare, do not call prepare in a loop hoping balances change — wait for the host.
498
+
499
+ ---
500
+
501
+ ## FAQ
502
+
503
+ ### Do I need a Bearer token every day?
504
+
505
+ No. An issued API key is enough for control-plane agent work. Bearer is optional.
506
+
507
+ ### Can the MCP server sign deposits?
508
+
509
+ No. Prepare tools return unsigned steps. Private keys stay outside MCP.
510
+
511
+ ### Why is my restore `staged`?
512
+
513
+ Staged means ledger-local settlement for that receipt. Fund the vault and use Automatic restore paths when you need `settlement: "vault"`. Always label honestly.
514
+
515
+ ### Can I change `targetSymbol` later?
516
+
517
+ No. Recreate the objective. Optionally pause the old one.
518
+
519
+ ### What is the default automation mode?
520
+
521
+ `auto`. Agents should keep it that way unless the human requests Manual.
522
+
523
+ ### Is market event a production price feed?
524
+
525
+ No. It is for integration rehearsal and demos.
526
+
527
+ ### How many tools are there?
528
+
529
+ **47.** See the [tool reference](./tools.md).
530
+
531
+ ### Where are the typed schemas?
532
+
533
+ In the **@buildaureon/sdk documentation** (client API, data contracts, error model).
534
+
535
+ ### What URL should agents use?
536
+
537
+ Omit `AUREON_API_URL` for the official API `https://api.aureonlabs.network` (currently chain 46630). Set `AUREON_NETWORK=mainnet` for chain 4663 on the same host.
538
+
539
+ ### What if the operator asks me to “just send the transaction”?
540
+
541
+ Refuse to take a private key. Call `aureon_prepare_vault_deposit` or `aureon_prepare_vault_withdraw`, return the unsigned steps, and instruct the host wallet to sign and broadcast.
542
+
543
+ ---
544
+
545
+ ## Suggested turn templates
546
+
547
+ ### Template: status report
548
+
549
+ 1. Ping + me
550
+ 2. Sync portfolio + vault status
551
+ 3. Overview + health
552
+ 4. Three-bullet summary + one recommended action
553
+
554
+ ### Template: create policy
555
+
556
+ 1. Confirm wallet + vault readiness
557
+ 2. Create Automatic objective with explicit weight/tolerance/symbol
558
+ 3. Fetch objective + health
559
+ 4. State locks (`targetSymbol`, `automationMode`)
560
+
561
+ ### Template: heal breach
562
+
563
+ 1. Refresh watchdog + health
564
+ 2. Get restore plan; narrate steps briefly
565
+ 3. Restore
566
+ 4. List executions/timeline; quote `settlement`
567
+ 5. Re-check health
568
+
569
+ ### Template: fund vault
570
+
571
+ 1. Vault status
572
+ 2. Prepare deposit
573
+ 3. Hand unsigned steps to operator
574
+ 4. After they confirm broadcast: sync + vault status
575
+
576
+ ---
577
+
578
+ ## Coordination with humans
579
+
580
+ Agents should be explicit about what only a human can do:
581
+
582
+ - Sign and broadcast vault steps
583
+ - Approve Manual restores in the utility
584
+ - Create / rotate issued API keys in a secure secret store
585
+ - Decide risk appetite (weights, tolerances, which symbols)
586
+
587
+ Agents should be decisive about what they can do alone with an issued key:
588
+
589
+ - Sync and inspect book / vault / health
590
+ - Create Automatic objectives
591
+ - Fetch plans and run restores
592
+ - Rehearse market events
593
+ - Pause / resume / soft-update objectives
594
+
595
+ ---
596
+
597
+ ## Related reading
598
+
599
+ - [Tools](./tools.md) — purpose, args, when to use, caveats per tool
600
+ - [Auth](./auth.md) — issued key, optional Bearer, private-key boundary
601
+ - [Setup](./setup.md) — wiring Cursor / Claude Desktop to the live API
602
+ - [Security](./security.md) — stdio trust model and key hygiene
603
+ - **@buildaureon/sdk documentation** — deeper contracts for builders
604
+
605
+ ---
606
+
607
+ ## Quick reference card
608
+
609
+ ```text
610
+ READ: ping → me → sync_portfolio → vault_status → health
611
+ DECIDE: empty vault 409 + unsigned prepare (do not fund)? create auto? restore? rehearse only?
612
+ ACT: prepare_* (host signs) | create_objective(auto) | restore_objective
613
+ CHECK: timeline / executions / health — quote settlement=vault|staged
614
+ ```
615
+
616
+ Keep the loop short. Prefer Automatic. Never invent settlement. Never touch private keys inside MCP.
617
+
618
+ ---
619
+
620
+ ## Appendix: decision matrix
621
+
622
+ | Situation | First tools | Then | Stop if |
623
+ | --- | --- | --- | --- |
624
+ | New session | `aureon_ping`, `aureon_me` | Sync + vault status | Key invalid |
625
+ | Want new policy | List objectives + vault status | `aureon_create_objective` (auto) | Vault empty and restores required |
626
+ | Health red | Watchdog + health + plan | `aureon_restore_objective` | Plan unclear / unfunded |
627
+ | Need capital in vault | `aureon_prepare_vault_deposit` | Host signs outside MCP | Operator cannot sign |
628
+ | Demo shock | List presets + apply event | Health / optional restore | Treating marks as production |
629
+ | Soft policy tweak | `aureon_get_objective` | `aureon_update_objective` | Trying to change symbol/mode |
630
+ | Change token or mode | Pause or leave old | Create new Automatic objective | Patching locked fields |
631
+ | Key rotation | `aureon_list_api_keys` | Create → store secret → revoke old | Echoing secret in public chat |
632
+
633
+ ### Narrative examples (short)
634
+
635
+ **Morning.** “API is up. Wallet `0x…`. Vault ready. Two Automatic objectives healthy. No action.”
636
+
637
+ **Create.** “Created Automatic balanced objective for 15% WETH (±3%). `targetSymbol` and `automationMode` are locked. Health is within band.”
638
+
639
+ **Restore.** “Objective breached after watchdog refresh. Plan was a vault-backed rebalance. Restore receipt `settlement: vault`. Post-health green.”
640
+
641
+ **Deposit.** “Prepared unsigned deposit for 0.1 ETH. Sign and broadcast in your wallet. After confirmation I will sync and re-check vault status.”
642
+
643
+ **Rehearsal.** “Applied −10% TSLA rehearsal event. Two objectives breached in marks. This is not a live oracle price.”
644
+
645
+ ### Closing reminders for agents
646
+
647
+ 1. Live API only — issued key (optional Bearer).
648
+ 2. Thirty-three tools — see the tool reference for args and caveats.
649
+ 3. Automatic by default — Manual is a human Approve surface.
650
+ 4. Prepare ≠ funded — host signs outside MCP.
651
+ 5. Quote `settlement` — `vault` or `staged`, never invent.
652
+ 6. Read → decide → act → read again.