@oracle-agent/oracle 0.35.19 → 0.35.21
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/dist/assets/skills/oracle-desk-product/SKILL.md +23 -17
- package/dist/assets/skills/oracle-mcp-install/SKILL.md +17 -22
- package/dist/assets/skills/protocol-api-key-integration/SKILL.md +14 -11
- package/dist/assets/skills/self-custodial-onchain-execution/SKILL.md +14 -13
- package/dist/assets/skills/trade-loop-circuit-breaker/SKILL.md +1 -1
- package/dist/bin/desk-server.mjs +30 -30
- package/dist/bin/oracle-data-mcp.mjs +17 -17
- package/dist/bin/oracle-gateway.mjs +3 -3
- package/dist/bin/oracle-public-server.mjs +5 -5
- package/dist/bin/oracle-telegram-mcp.mjs +5 -5
- package/dist/cli/commands/chat.mjs +200 -200
- package/dist/cli/commands/doctor.mjs +7 -7
- package/dist/cli/commands/eval.mjs +113 -113
- package/dist/cli/commands/extension-policy.mjs +1 -1
- package/dist/cli/commands/governance-prepare.mjs +5 -0
- package/dist/cli/commands/model.mjs +204 -204
- package/dist/cli/commands/portfolio-risk.mjs +4 -0
- package/dist/cli/commands/position-health.mjs +4 -0
- package/dist/cli/commands/safety-intelligence.mjs +4 -0
- package/dist/cli/commands/swap.mjs +12 -12
- package/dist/cli/commands/tax-lots.mjs +4 -0
- package/dist/cli/commands/telegram.mjs +6 -6
- package/dist/data/desk-data.mjs +26 -26
- package/dist/index.mjs +40 -40
- package/package.json +1 -1
- package/public/eval-report.json +22 -8
- package/public/oracle-splash/index.html +44 -23
- package/server.json +2 -2
- package/dist/assets/skills/oracle-best-execution.md +0 -27
- package/dist/assets/skills/oracle-desk.md +0 -27
- package/dist/assets/skills/oracle-receipts.md +0 -29
package/package.json
CHANGED
package/public/eval-report.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"surface": "oracle-public-eval",
|
|
3
3
|
"version": 1,
|
|
4
|
-
"generatedAt": "2026-08-
|
|
4
|
+
"generatedAt": "2026-08-26T03:16:16.859799+00:00",
|
|
5
5
|
"source": {
|
|
6
|
-
"commit": "
|
|
7
|
-
"dirty":
|
|
6
|
+
"commit": "96d67d6a7d652950f3ecdc7b845376820922a580",
|
|
7
|
+
"dirty": true,
|
|
8
8
|
"node": "v26.7.0"
|
|
9
9
|
},
|
|
10
10
|
"package": "@oracle-agent/oracle",
|
|
11
|
-
"packageVersion": "0.35.
|
|
11
|
+
"packageVersion": "0.35.21",
|
|
12
12
|
"methodology": "Reproduce locally: npx @oracle-agent/oracle eval guards|adversarial|fidelity --json. Dated, commit-stamped output; no chain state or live keys involved. A report is evidence of the pinned commit only.",
|
|
13
13
|
"suites": {
|
|
14
14
|
"guards": {
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
{
|
|
21
21
|
"name": "version",
|
|
22
22
|
"ok": true,
|
|
23
|
-
"detail": "oracle 0.35.
|
|
23
|
+
"detail": "oracle 0.35.20"
|
|
24
24
|
},
|
|
25
25
|
{
|
|
26
26
|
"name": "help-loads",
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
"adversarial": {
|
|
48
48
|
"ok": true,
|
|
49
49
|
"status": "passed",
|
|
50
|
+
"blocked": false,
|
|
50
51
|
"packageTests": {
|
|
51
52
|
"total": 159,
|
|
52
53
|
"pass": 159,
|
|
@@ -70,11 +71,24 @@
|
|
|
70
71
|
"expectedFiles": 9,
|
|
71
72
|
"failures": []
|
|
72
73
|
},
|
|
73
|
-
"
|
|
74
|
-
|
|
74
|
+
"coverage": [
|
|
75
|
+
"exact-confirmation",
|
|
76
|
+
"artifact-mutation",
|
|
77
|
+
"replay-idempotency",
|
|
78
|
+
"receipt-finality",
|
|
79
|
+
"autonomous-mint-gates",
|
|
80
|
+
"exact-nft-contract",
|
|
81
|
+
"hyperliquid-position-drift"
|
|
82
|
+
]
|
|
75
83
|
},
|
|
76
84
|
"fidelity": {
|
|
77
|
-
"ok": true
|
|
85
|
+
"ok": true,
|
|
86
|
+
"status": "passed",
|
|
87
|
+
"blocked": false,
|
|
88
|
+
"code": 0,
|
|
89
|
+
"signal": null,
|
|
90
|
+
"summary": "summary: 3/3 ok, 0 prepare-fail, 0 structural-fail, 0 sim-fail, 3 simulated",
|
|
91
|
+
"tail": "prepare-fidelity eval taker=0x70997970... generated=2026-08-26T03:15:52.383Z\nid status artifact sim liq% notes\nethereum-weth-usdc ok unsigned-transactionnofund 100% execution reverted: STF\nbase-weth-usdc ok unsigned-transactionnofund 100% execution reverted: STF\narbitrum-weth-usdc ok unsigned-transactionnofund 100% execution reverted: STF\nsummary: 3/3 ok, 0 prepare-fail, 0 structural-fail, 0 sim-fail, 3 simulated\n\n"
|
|
78
92
|
}
|
|
79
93
|
},
|
|
80
94
|
"adversarialClassesCovered": [
|
|
@@ -110,11 +110,7 @@ img{display:inline-block}
|
|
|
110
110
|
.scene-rail{position:fixed;right:18px;top:50%;z-index:29;transform:translateY(-50%);display:grid;gap:11px;font-family:var(--mono);font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:rgba(201,218,236,.44)}
|
|
111
111
|
.scene-rail span{position:relative;display:grid;place-items:center;width:30px;height:22px;border:1px solid rgba(124,196,255,.12);border-radius:999px;background:rgba(11,16,24,.40);transition:color .35s var(--ease),border-color .35s var(--ease),background .35s var(--ease),transform .35s var(--ease)}
|
|
112
112
|
body[data-scene="home"] .scene-rail span[data-scene-dot="home"],body[data-scene="orchestration"] .scene-rail span[data-scene-dot="orchestration"],body[data-scene="chains"] .scene-rail span[data-scene-dot="chains"],body[data-scene="cli"] .scene-rail span[data-scene-dot="cli"],body[data-scene="fees"] .scene-rail span[data-scene-dot="fees"]{color:#071018;border-color:rgba(184,240,255,.82);background:linear-gradient(180deg,var(--scene-a),var(--scene-b));transform:translateX(-4px)}
|
|
113
|
-
body[data-scene="home"]{--scene-a:#7CC4FF;--scene-b:#50D2C1;--scene-soft:rgba(124,196,255,.16)}
|
|
114
|
-
body[data-scene="orchestration"]{--scene-a:#A7D8FF;--scene-b:#9945FF;--scene-soft:rgba(153,69,255,.12)}
|
|
115
|
-
body[data-scene="chains"]{--scene-a:#50D2C1;--scene-b:#D7FF4D;--scene-soft:rgba(80,210,193,.13)}
|
|
116
|
-
body[data-scene="cli"]{--scene-a:#F4F9FE;--scene-b:#7CC4FF;--scene-soft:rgba(244,249,254,.12)}
|
|
117
|
-
body[data-scene="fees"]{--scene-a:#D7FF4D;--scene-b:#F0B90B;--scene-soft:rgba(240,185,11,.12)}
|
|
113
|
+
body[data-scene="home"],body[data-scene="orchestration"],body[data-scene="chains"],body[data-scene="cli"],body[data-scene="fees"]{--scene-a:#7CC4FF;--scene-b:#50D2C1;--scene-soft:rgba(124,196,255,.16)}
|
|
118
114
|
|
|
119
115
|
/* ── orbital oracle mark ───────────────────────────── */
|
|
120
116
|
.orbital{position:relative;display:inline-block}
|
|
@@ -1117,6 +1113,10 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
1117
1113
|
.js .rv{opacity:0;transform:translate3d(0,22px,0);will-change:opacity,transform}
|
|
1118
1114
|
.js .rv.in{opacity:1;transform:translate3d(0,0,0);transition:opacity 1.05s var(--ease),transform 1.05s var(--ease)}
|
|
1119
1115
|
.js .rv.done{transform:none;will-change:auto}
|
|
1116
|
+
.js .home-kicker.rv.in{transition-delay:.04s}
|
|
1117
|
+
.js .home-title.rv.in{transition-delay:.14s}
|
|
1118
|
+
.js .hero-sub.rv.in{transition-delay:.26s}
|
|
1119
|
+
.js .home-stats.rv.in{transition-delay:.34s}
|
|
1120
1120
|
|
|
1121
1121
|
|
|
1122
1122
|
.section{position:relative}
|
|
@@ -1272,7 +1272,7 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
1272
1272
|
<div class="hero-split">
|
|
1273
1273
|
<div class="hero-lede">
|
|
1274
1274
|
<p class="home-kicker rv">self-custody agent control</p>
|
|
1275
|
-
<h1 class="home-title rv">Trade every chain<br>from <em>one</em> agent</h1>
|
|
1275
|
+
<h1 class="home-title rv" data-split>Trade every chain<br>from <em>one</em> agent</h1>
|
|
1276
1276
|
<p class="hero-sub rv">Hyperliquid, EVM, Bitcoin, Solana, Stable and Robinhood Chain in a single control plane. Oracle reads state, prices routes and prepares the transaction. Your wallet signs it.</p>
|
|
1277
1277
|
<div class="home-actions">
|
|
1278
1278
|
<a class="enter-cta primary" href="#cli">Download</a>
|
|
@@ -1326,14 +1326,14 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
1326
1326
|
<div class="home-stats rv" aria-label="Oracle surface metrics">
|
|
1327
1327
|
<div class="home-stat"><b id="hero-protocol-count" data-count="220">220</b><span>protocols / venues wired</span></div>
|
|
1328
1328
|
<div class="home-stat"><b id="hero-provider-count" data-count="122">122</b><span>data providers</span></div>
|
|
1329
|
-
<div class="home-stat"><b id="hero-op-count" data-count="
|
|
1329
|
+
<div class="home-stat"><b id="hero-op-count" data-count="527">527</b><span>data operations</span></div>
|
|
1330
1330
|
<div class="home-stat"><b id="hero-chain-count">14 + EVM</b><span>chains wired</span></div>
|
|
1331
1331
|
</div>
|
|
1332
1332
|
</div>
|
|
1333
1333
|
</section>
|
|
1334
1334
|
<section class="section" id="orchestration">
|
|
1335
1335
|
<p class="section-label rv">Profiles</p>
|
|
1336
|
-
<h2 class="section-title rv">Multi-profile. <em>Customizable.</em></h2>
|
|
1336
|
+
<h2 class="section-title rv" data-split>Multi-profile. <em>Customizable.</em></h2>
|
|
1337
1337
|
<p class="section-lede rv">Input hits the Oracle control plane and routes across venue profiles, multi-chain EVM, Bitcoin, Solana, and the protocol builder. Any MCP harness drives a single agent.</p>
|
|
1338
1338
|
|
|
1339
1339
|
<div class="graph-shell rv">
|
|
@@ -1670,7 +1670,7 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
1670
1670
|
</div>
|
|
1671
1671
|
|
|
1672
1672
|
<p class="section-label rv">Self-custodial agents</p>
|
|
1673
|
-
<h2 class="section-title rv">No third party holds your keys. Not even Oracle.</h2>
|
|
1673
|
+
<h2 class="section-title rv" data-split>No third party holds your keys. Not even Oracle.</h2>
|
|
1674
1674
|
<div class="selfcustody-grid">
|
|
1675
1675
|
<div>
|
|
1676
1676
|
<h4>Everything runs on your machine</h4>
|
|
@@ -1885,7 +1885,7 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
1885
1885
|
|
|
1886
1886
|
<section class="section" id="chains">
|
|
1887
1887
|
<p class="section-label rv">Chains</p>
|
|
1888
|
-
<h2 class="section-title rv">Where you can <em>operate.</em></h2>
|
|
1888
|
+
<h2 class="section-title rv" data-split>Where you can <em>operate.</em></h2>
|
|
1889
1889
|
<p class="section-lede rv">Every built-in EVM chain exposes the full scanner set. <b>Route</b> means Oracle can price and prepare a swap there. Register any extra EVM chain with a chain id and an RPC; unsupported paths fail closed.</p>
|
|
1890
1890
|
<div class="chain-grid" id="chain-grid"></div>
|
|
1891
1891
|
<div class="hl-surface rv">
|
|
@@ -1902,7 +1902,7 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
1902
1902
|
</section>
|
|
1903
1903
|
<section class="section cli-section" id="cli">
|
|
1904
1904
|
<p class="section-label rv">Oracle CLI</p>
|
|
1905
|
-
<h2 class="section-title rv">One surface. <em>Every chain.</em></h2>
|
|
1905
|
+
<h2 class="section-title rv" data-split>One surface. <em>Every chain.</em></h2>
|
|
1906
1906
|
<div class="cli-install rv">
|
|
1907
1907
|
<div class="cli-install-cmd"><code>curl -fsSL https://oracle.demi.la/install.sh | bash</code> <span class="cli-install-hint">then oracle setup model && oracle chat</span></div>
|
|
1908
1908
|
</div>
|
|
@@ -1940,7 +1940,7 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
1940
1940
|
|
|
1941
1941
|
<section class="section" id="fees">
|
|
1942
1942
|
<p class="section-label rv">Fees</p>
|
|
1943
|
-
<h2 class="section-title rv">5 bps. <em>Holders zero.</em></h2>
|
|
1943
|
+
<h2 class="section-title rv" data-split>5 bps. <em>Holders zero.</em></h2>
|
|
1944
1944
|
<p class="section-lede rv">5 basis points (0.05%) on swaps Oracle routes. Eligible Hyperliquid orders can add a 1–2 bps builder fee after wallet approval. Both show before you sign.</p>
|
|
1945
1945
|
<div class="moat-grid rv" style="margin-top:28px">
|
|
1946
1946
|
<article class="moat-card">
|
|
@@ -2480,10 +2480,28 @@ var activeLenis = null;
|
|
|
2480
2480
|
root.querySelectorAll("[data-split]").forEach(function (el) {
|
|
2481
2481
|
if (el.dataset.splitDone) return;
|
|
2482
2482
|
el.dataset.splitDone = "1";
|
|
2483
|
-
|
|
2484
|
-
|
|
2485
|
-
|
|
2486
|
-
|
|
2483
|
+
function wrap(node) {
|
|
2484
|
+
var frag = document.createDocumentFragment();
|
|
2485
|
+
Array.prototype.slice.call(node.childNodes).forEach(function (child) {
|
|
2486
|
+
if (child.nodeType === 3) {
|
|
2487
|
+
child.textContent.split(/(\s+)/).forEach(function (w) {
|
|
2488
|
+
if (!w) return;
|
|
2489
|
+
if (/^\s+$/.test(w)) { frag.appendChild(document.createTextNode(w)); return; }
|
|
2490
|
+
var m = document.createElement("span"); m.className = "word-mask";
|
|
2491
|
+
var s = document.createElement("span"); s.textContent = w;
|
|
2492
|
+
m.appendChild(s); frag.appendChild(m);
|
|
2493
|
+
});
|
|
2494
|
+
} else if (child.nodeType === 1) {
|
|
2495
|
+
var clone = child.cloneNode(false);
|
|
2496
|
+
clone.appendChild(wrap(child));
|
|
2497
|
+
frag.appendChild(clone);
|
|
2498
|
+
}
|
|
2499
|
+
});
|
|
2500
|
+
return frag;
|
|
2501
|
+
}
|
|
2502
|
+
var out = wrap(el);
|
|
2503
|
+
el.innerHTML = "";
|
|
2504
|
+
el.appendChild(out);
|
|
2487
2505
|
});
|
|
2488
2506
|
}
|
|
2489
2507
|
function initPremiumMotion() {
|
|
@@ -2499,14 +2517,17 @@ var activeLenis = null;
|
|
|
2499
2517
|
}
|
|
2500
2518
|
splitWords(document);
|
|
2501
2519
|
if (window.ScrollTrigger) {
|
|
2502
|
-
|
|
2520
|
+
document.querySelectorAll("[data-split]").forEach(function (el) {
|
|
2521
|
+
el.classList.add("in", "done");
|
|
2522
|
+
gsap.fromTo(el.querySelectorAll(".word-mask > span"), { yPercent:112 }, { yPercent:0, duration:1.05, ease:"power4.out", stagger:.04, scrollTrigger:{ trigger:el, start:"top 82%" }, clearProps:"transform" });
|
|
2523
|
+
});
|
|
2503
2524
|
gsap.to(".hero-art", { yPercent:18, scale:.9, ease:"none", scrollTrigger:{ trigger:".home", start:"top top", end:"bottom top", scrub:true } });
|
|
2504
|
-
gsap.fromTo(".hero-installer", { y:
|
|
2505
|
-
gsap.fromTo(".motion-card", { y:
|
|
2506
|
-
gsap.to(".motion-command", { y:-54,
|
|
2507
|
-
gsap.fromTo(".chain", { y:
|
|
2508
|
-
gsap.fromTo(".strategy-card", { y:
|
|
2509
|
-
gsap.fromTo(".cli-proof", { scale:.
|
|
2525
|
+
gsap.fromTo(".hero-installer", { y:26, filter:"brightness(.92)" }, { y:0, filter:"brightness(1)", duration:1.1, ease:"power4.out", scrollTrigger:{ trigger:".hero-installer", start:"top 88%" }, clearProps:"transform,filter" });
|
|
2526
|
+
gsap.fromTo(".motion-card", { y:44, scale:.97 }, { y:0, scale:1, duration:1.15, ease:"power4.out", stagger:.07, scrollTrigger:{ trigger:".operator-grid", start:"top 82%" }, clearProps:"transform" });
|
|
2527
|
+
gsap.to(".motion-command", { y:-54, ease:"none", scrollTrigger:{ trigger:".motion-lab", start:"top 76%", end:"bottom top", scrub:true } });
|
|
2528
|
+
gsap.fromTo(".chain", { y:28, opacity:.55 }, { y:0, opacity:1, duration:.85, ease:"power3.out", stagger:.03, scrollTrigger:{ trigger:"#chains", start:"top 76%" }, clearProps:"transform,opacity" });
|
|
2529
|
+
gsap.fromTo(".strategy-card", { y:30, opacity:.58 }, { y:0, opacity:1, duration:.95, ease:"power3.out", stagger:.025, scrollTrigger:{ trigger:".strategy-grid", start:"top 78%" }, clearProps:"transform,opacity" });
|
|
2530
|
+
gsap.fromTo(".cli-proof", { scale:.96, y:30 }, { scale:1, y:0, ease:"none", scrollTrigger:{ trigger:".cli-proof", start:"top 86%", end:"bottom 38%", scrub:1 }, clearProps:"transform" });
|
|
2510
2531
|
gsap.to(".route-tree", { scale:1.018, ease:"none", transformOrigin:"50% 50%", scrollTrigger:{ trigger:".route-tree", start:"top 82%", end:"bottom 40%", scrub:1 } });
|
|
2511
2532
|
gsap.to(".mega-oracle", { xPercent:-14, letterSpacing:".02em", ease:"none", scrollTrigger:{ trigger:".mega-oracle", start:"top bottom", end:"bottom top", scrub:true } });
|
|
2512
2533
|
}
|
package/server.json
CHANGED
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
"name": "io.github.demi-hl/oracle",
|
|
4
4
|
"description": "Keyless multichain crypto desk: chain reads + prepare-only unsigned txs. Your wallet signs.",
|
|
5
5
|
"websiteUrl": "https://oracle.demi.la",
|
|
6
|
-
"version": "0.35.
|
|
6
|
+
"version": "0.35.21",
|
|
7
7
|
"packages": [
|
|
8
8
|
{
|
|
9
9
|
"registryType": "npm",
|
|
10
10
|
"identifier": "@oracle-agent/oracle",
|
|
11
|
-
"version": "0.35.
|
|
11
|
+
"version": "0.35.21",
|
|
12
12
|
"transport": {
|
|
13
13
|
"type": "stdio"
|
|
14
14
|
},
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: oracle-best-execution
|
|
3
|
-
description: Use whenever swapping or bridging. The rule that the highest-output route wins.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Best execution
|
|
7
|
-
|
|
8
|
-
## One rule
|
|
9
|
-
The highest **net output** (after gas + bridge + impact) wins. Not the best quote, not the shortest route, not the prettiest UI.
|
|
10
|
-
|
|
11
|
-
## Swap flow
|
|
12
|
-
1. `data dex_search` → resolve token to chain + address
|
|
13
|
-
2. `data dex_token` → get live pairs, liquidity, price
|
|
14
|
-
3. `exec evm_quote` → exact-input quote from Uniswap V3
|
|
15
|
-
4. `data best_swap_route` → compare across aggregators (Li.Fi, Paraswap, 0x, CoW)
|
|
16
|
-
5. `data best_bridge_route` → if cross-chain, rank by net output
|
|
17
|
-
6. `exec evm_prepare` → build unsigned tx
|
|
18
|
-
7. Report: best route, net output, slippage, gas estimate
|
|
19
|
-
|
|
20
|
-
## Comparison always in USD
|
|
21
|
-
Convert gas + bridge fees to USD. 0.001 ETH ≠ 0.001 ETH across chains.
|
|
22
|
-
|
|
23
|
-
## Slippage
|
|
24
|
-
- Stable pools: 0.1% default
|
|
25
|
-
- Volatile pools: 0.5% default
|
|
26
|
-
- Memecoins: 1-3% or auto-detect from depth
|
|
27
|
-
- Block >1% slippage without explicit user approval
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: oracle-desk
|
|
3
|
-
description: Use when routing a crypto request to the right lane or comparing options across chains.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Oracle desk routing
|
|
7
|
-
|
|
8
|
-
1. **Which chain?** Resolve via DexScreener or user input. Never guess.
|
|
9
|
-
2. **Which lane?** Use public data and prepare providers for the resolved chain. Return unsigned transactions or typed-data intents for connected-wallet approval.
|
|
10
|
-
3. **Multi-chain?** Quote each option, synthesize. Same notional, include gas in USD, include bridge cost.
|
|
11
|
-
4. **Ambiguous?** Ask.
|
|
12
|
-
|
|
13
|
-
## Comparison rules
|
|
14
|
-
- Same notional on each chain
|
|
15
|
-
- Gas in USD (not native units)
|
|
16
|
-
- Include bridge cost + time if cross-chain
|
|
17
|
-
- Include price impact at request size
|
|
18
|
-
- Note liquidity depth — cheapest at $100 may not be cheapest at $50k
|
|
19
|
-
|
|
20
|
-
## Capability tiers
|
|
21
|
-
- `read-only` — data only
|
|
22
|
-
- `quote-only` — can price a route
|
|
23
|
-
- `prepare` — returns unsigned tx
|
|
24
|
-
- `intent` — typed-data order to sign
|
|
25
|
-
|
|
26
|
-
## Confidence
|
|
27
|
-
State explicitly: high / moderate / low / unknown. Never invent chain facts.
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: oracle-receipts
|
|
3
|
-
description: Use whenever reporting the outcome of any on-chain action (swap, bridge, mint, send, list, accept-offer).
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Receipt format
|
|
7
|
-
|
|
8
|
-
## Required fields
|
|
9
|
-
- tx hash (full, with chain explorer link)
|
|
10
|
-
- chain + chainId
|
|
11
|
-
- action (swap/bridge/mint/send/list/accept-offer)
|
|
12
|
-
- from → to (addresses)
|
|
13
|
-
- amount in → amount out (with token symbols)
|
|
14
|
-
- gas used + gas cost in USD
|
|
15
|
-
- status: confirmed / pending / failed
|
|
16
|
-
|
|
17
|
-
## Explorer links
|
|
18
|
-
- Ethereum: https://etherscan.io/tx/{hash}
|
|
19
|
-
- Base: https://basescan.org/tx/{hash}
|
|
20
|
-
- Arbitrum: https://arbiscan.io/tx/{hash}
|
|
21
|
-
- Optimism: https://optimistic.etherscan.io/tx/{hash}
|
|
22
|
-
- Polygon: https://polygonscan.com/tx/{hash}
|
|
23
|
-
- BSC: https://bscscan.com/tx/{hash}
|
|
24
|
-
- HyperEVM: https://www.hyperscan.com/tx/{hash}
|
|
25
|
-
|
|
26
|
-
## Never claim
|
|
27
|
-
- "submitted" = confirmed. Only tx receipt with status=1 is confirmed.
|
|
28
|
-
- A prepare is not a fill. Report prepare as "prepared, unsigned."
|
|
29
|
-
- A sign is not a send. Report sign as "signed, not broadcast."
|