You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
POST /v1/private/watch ($0.10 via x402) creates a 7-day watch tied to
a webhook URL. Server polls the local NFPT scanner (Monero LWS /
Orchard UFVK) every 3 minutes; on balance change, POSTs an
HMAC-SHA256 signed event to the receiver. View keys AES-256-GCM
encrypted at rest under PRIVATE_WATCH_ENCRYPTION_KEY; webhook URLs
SSRF-guarded. GET /v1/private/watch/:id status + DELETE cancel are
free. MCP tools seneschal_private_watch_{create,info} mirror the
REST surface.
Adds private-watch-{crypto,store,nfpt,poller}.js + private-watch.js
plus 5 test files. 354 tests passing.
<tr><td><code>seneschal_premium_opportunities</code></td><td><strong>Premium.</strong> Uncapped at-risk catalogue ranked by expected value, with realised 7d market intel. Paid via x402 at the REST surface.</td></tr>
<tr><td><code>/v1/q/liquidatable</code></td><td><code>addr</code>, <code>protocol?</code></td><td>Is borrower X liquidatable right now? Returns <code>{found, liquidatable, hf, debt_usd, last_seen_ms}</code> across Aave + Morpho.</td></tr>
316
+
<tr><td><code>/v1/q/at-risk-count</code></td><td><code>max_hf?</code>, <code>min_debt_usd?</code>, <code>protocol?</code></td><td>Count + total debt of borrowers below the named HF and above the named debt floor.</td></tr>
317
+
<tr><td><code>/v1/q/recent-liquidations</code></td><td><code>since_min?</code>, <code>protocol?</code></td><td>Number of liquidations observed in the last N minutes and their aggregate debt.</td></tr>
318
+
<tr><td><code>/v1/q/top-builder</code></td><td><code>window?</code></td><td>Highest-share builder in the named window (<code>24h</code>/<code>7d</code>/<code>30d</code>).</td></tr>
319
+
<tr><td><code>/v1/q/builder-share</code></td><td><code>builder</code>, <code>window?</code></td><td>Slot share of a specific builder (substring match) over the window.</td></tr>
320
+
<tr><td><code>/v1/q/builder-bid</code></td><td><code>builder</code>, <code>pct?</code>, <code>window?</code></td><td>Percentile bid value (in ETH) for that builder over the window. Use <code>pct</code> 25/50/75/90/99.</td></tr>
321
+
<tr><td><code>/v1/q/cheapest-flashloan</code></td><td><code>asset</code>, <code>chain?</code></td><td>Cheapest flash-loan provider for that asset on that chain. Defaults to Ethereum mainnet.</td></tr>
322
+
<tr><td><code>/v1/q/data-freshness</code></td><td><code>source</code></td><td>Age in seconds of the freshest row in one of: <code>shadow_blocks</code>, <code>borrower_snapshot</code>, <code>morpho_borrower_snapshot</code>, <code>missed_liquidations</code>, <code>executions</code>.</td></tr>
323
+
<tr><thcolspan="3" style="background:#fff7e6;border-top:2px solid #b35900">Privacy-chain facts — sourced from Seneschal-operated full nodes</th></tr>
324
+
<tr><td><code>/v1/q/xmr/height</code></td><td>—</td><td>Current Monero chain height + sync state. Sourced from a synced <code>monerod</code> v0.18 instance.</td></tr>
325
+
<tr><td><code>/v1/q/xmr/mempool</code></td><td>—</td><td>Number of pending transactions in the Monero mempool right now.</td></tr>
326
+
<tr><td><code>/v1/q/xmr/fee</code></td><td>—</td><td>Recommended per-byte fee in piconero (also per-kB) so wallets can budget the next-block tx.</td></tr>
327
+
<tr><td><code>/v1/q/xmr/last-block</code></td><td>—</td><td>Timestamp + age of the most recent Monero block, plus hash, difficulty, size.</td></tr>
328
+
<tr><td><code>/v1/q/zec/height</code></td><td>—</td><td>Current Zcash chain height + verification progress + best block hash. Sourced from a synced <code>zebra</code> node.</td></tr>
<tr><td><code>/v1/q/zec/last-block</code></td><td>—</td><td>Timestamp + age of the most recent Zcash block, plus hash, difficulty, size.</td></tr>
331
+
</tbody>
332
+
</table>
333
+
<p>
334
+
The privacy-chain set is the "joining the dots" of this product line:
335
+
Monero and Zcash are the two chains where running a node yourself is
336
+
genuinely awkward (~108 GB and ~270 GB respectively, plus syncing
337
+
hours), public RPC endpoints rate-limit aggressively, and there is no
338
+
Etherscan-style hosted explorer to fall back on. We run synced nodes
339
+
already; the x402 sub-cent paywall finally makes selling individual
340
+
reads worth the trouble. All responses are cached server-side for
341
+
10 s so an agent in a tight loop costs the daemon nothing extra.
<tr><td><code>/v1/private/watch/:id</code></td><td><code>GET</code></td><td>header <code>x-watch-token</code></td><td>Read current status: last polled time, delivery count, last known balance snapshot. <strong>Free</strong>.</td></tr>
413
+
<tr><td><code>/v1/private/watch/:id</code></td><td><code>DELETE</code></td><td>header <code>x-watch-token</code></td><td>Cancel a watch. <strong>Free</strong>.</td></tr>
0 commit comments