Seneschal Data API

Pay-per-call data over HTTP and the Model Context Protocol. The headline product is Private Watch — view-key payment webhooks for Monero & Zcash (below). Alongside it: Seneschal Pay non-custodial XMR/ZEC checkout, and the Penny Oracle — single Monero and Zcash chain facts from our own full nodes. No signup, no API key.

No signup. No API key. No rate limit beyond DoS protection (120 req/min/IP). Submit bugs and feature requests to @OrknetP on Telegram.
New · 2026-06-05: Zcash patched a critical Orchard bug — a supply bug, not a privacy one. What happened, what node operators must do, and why view-key payment monitoring is unaffected »

Private Watch — the headline product

Get an HMAC-signed webhook the instant a Monero or Zcash payment lands at your address. You supply a view key (read-only, cannot spend), an address, and a webhook URL. We POST you a notification on every balance change. Prepaid credit meter: $0.02 per day idle + $0.005 per webhook delivered — no account, no API key, no node.

Who it’s for: merchants accepting XMR or ZEC, donation pages, tip jars, payment bots, anyone selling something off-platform who would rather not run a 100 GB monerod or 300 GB zebra just to know whether the customer paid. View keys never let us move funds; if our DB leaks we can’t spend anything.

How the meter works: the first $0.10 (paywall on watch creation) buys 5 idle days. After that, top up any amount via dedicated paywalled paths: $0.10, $1.00, or $5.00 a pop. Every webhook body carries a credit block so your receiver always knows how much it has left. We’ll fire one low_credit warning when you have ~2 idle days remaining, even if no payments have come in.

Pay in privacy coin, not just USDC. A Monero/Zcash service that only took stablecoins on a transparent chain would be missing the point. So the entire lifecycle works in coin: POST /v1/private/watch-crypto (free call, no x402) creates the watch and returns a payment quote in one go — the watch goes live immediately on a small grace credit, and the full credit lands when your XMR/ZEC payment confirms. Existing watches top up the same way via POST /v1/private/topup-crypto: a receiving address plus the exact amount to send (Monero uses a unique-amount invoice tag; Zcash uses a memo) at a USD rate locked for the quote window. We detect your payment with the same view-key scanner this product sells — dogfooding the whole way down — and we hold only a view key for that wallet, never a spend key. No USDC, no EVM wallet, no wallet connection, no API key — at any step.

Integrate in minutes: GET /v1/private/snippets (free) returns zero-dependency, copy-paste webhook receivers for Node, Python and PHP with the correct signature header baked in, and POST /v1/private/watch/{id}/test fires a synthetic signed delivery at your endpoint so you can prove your handler works before real money moves.

Sell things, not just watch: the same watch powers Seneschal Pay — Stripe-style checkout with zero custody. POST /v1/checkout/invoices creates an exact-amount invoice paying your wallet (Monero: unique invoice-tagged amount; Zcash: memo token) with a hosted QR pay page at seneschal.space/pay/#<invoiceId>; we match the payment via your view key, fire invoice_seen/invoice_paid webhooks with your orderId echoed back, and charge a flat $0.02 per sale off the watch meter — never a percentage. Mint a restricted checkout key and the one-tag embed (seneschal.space/pay/button.js) turns any static page into a shop. GET /v1/checkout has the full how-to.

Why it’s cheap: small users pay cents per month even with no traffic. Heavy users pay a few dollars even after thousands of webhook deliveries. Compare to a self-hosted full node (~$30/mo VPS + storage), light-wallet subscriptions ($5–$50/mo), or merchant gateways (1–2%): the only ones with skin in the game.

# 1. Create a watch — ALL-COIN path (free call; you pay the quote in XMR/ZEC;
#    live immediately on grace credit; no USDC or EVM wallet ever):
curl -s https://api.seneschal.space/v1/private/watch-crypto \
  -X POST -H 'content-type: application/json' \
  -d '{
    "chain": "monero",
    "address": "44AFFq…",
    "viewKey": "0123…",
    "webhookUrl": "https://shop.example.com/webhook/xmr"
  }'
# -> { watchId, watchToken, webhookSecret, payment:{ payTo, amount, memo, expiresAt } }

# 1b. …or create via x402 (one $0.10 USDC payment — the fee IS your starting credit):
curl -s https://api.seneschal.space/v1/private/watch \
  -X POST -H 'content-type: application/json' \
  -H 'x-payment: <eip3009 payload, $0.10 USDC on Base>' \
  -d '{
    "chain": "monero",
    "address": "44AFFq…",
    "viewKey": "0123…",
    "webhookUrl": "https://shop.example.com/webhook/xmr"
  }'

# 2. Top up later (a $1 top-up buys ~50 idle days):
curl -X POST https://api.seneschal.space/v1/private/topup-1 \
  -H 'x-payment: <eip3009 payload, $1.00 USDC on Base>' \
  -H 'content-type: application/json' \
  -d '{"watchId":"...","watchToken":"..."}'

# 2b. ...or pay in Monero/Zcash instead (FREE quote, no x402, no key):
curl -X POST https://api.seneschal.space/v1/private/topup-crypto \
  -H 'content-type: application/json' \
  -d '{"watchId":"...","watchToken":"...","chain":"monero","amountUsdCents":500}'
# -> { quoteId, payTo, amount:{display,coin}, memo, confirmations, expiresAt }
# Send the exact amount (Monero) or include the memo (Zcash), then poll:
curl -s -H 'x-watch-token: ...' \
  https://api.seneschal.space/v1/private/topup-crypto/<quoteId>

# 3. One-off historical lookup (returns notes; view key never persists):
curl -X POST https://api.seneschal.space/v1/private/historical \
  -H 'x-payment: <eip3009 payload, $0.50 USDC on Base>' \
  -H 'content-type: application/json' \
  -d '{"chain":"zcash","address":"u1...","viewKey":"uview1...","includeNotes":true}'

# 4. FREE: derive a Zcash UFVK from a BIP-39 mnemonic (loud warning, rate-limited):
curl -X POST https://api.seneschal.space/v1/private/derive-viewkey \
  -H 'content-type: application/json' \
  -d '{"chain":"zcash","phrase":"abandon abandon ... 24 words"}'

Open WalletConnect panel » Full integration guide Free derive form /v1/private/info Service status

Four endpoints, one prepaid balance

Create a watch

$0.10 · x402 · seeds $0.10 credit

POST /v1/private/watch — HMAC-signed webhook on every balance change. View key encrypted at rest, polled every 3 min.

Top up credit

USDC (x402) or XMR/ZEC · any amount

POST /v1/private/topup{,-1,-5,-custom} — $1 buys ~50 idle days. Or pay in coin (free quote) via POST /v1/private/topup-crypto. low_credit webhook tells you when to top up.

Historical lookup

$0.50 · one-off · view key in-memory only

POST /v1/private/historical — returns received / spent / spendable totals and optional per-note breakdown. Auto-detects birthday for Zcash.

Derive view key

FREE · 6/min/IP · Zcash UFVK from a phrase

POST /v1/private/derive-viewkey — forwards a BIP-39 phrase to the local orchard-scanner. Try it in-page below.

1. Pay $0.10 x402 (USDC on Base) /v1/private/watch 2. Watch created credit = $0.10 view key encrypted at rest 3. Credit drains – $0.02 per UTC day (idle) – $0.005 per webhook poller billed each tick (3 min default) 4. Webhook delivered HMAC-SHA256 signed body includes credit block 5. Low-credit warning fires once when credit < $0.05 6. Top up any amount $0.10 / $1 / $5 via x402 re-arms low-credit warning
Lifecycle of one Private Watch. Credit ticks down per day and per webhook; top-ups extend the meter at any time.

Try the free derive endpoint in-page (no x402 payment, no curl)

Calls POST /v1/private/derive-viewkey directly from this page. Returns a read-only Unified Full Viewing Key (UFVK) that you can plug into /v1/private/watch or /v1/private/historical.

Security warning. Your seed phrase will be sent over TLS to api.seneschal.space. We do not log or persist it, but a network attacker between you and us would see the bytes. For maximum safety, derive offline using the orchard-scanner binary on a trusted machine. If you only want to see it work, paste the canonical BIP-39 vector abandon abandon … abandon art (24 words) — it’s a public test vector and grants nothing.
Looking for the ERC-4337 paymaster? Pay gas in USDC / EURC / USDT / DAI / cbBTC on Base mainnet via the Seneschal paymaster — verified on BaseScan + Sourcify, smoke-tested via Pimlico, no SDK lock-in. Paymaster integration docs »

Why this exists

Seneschal runs synced Monero and Zcash full nodes and a view-key wallet scanner. Running either node yourself is genuinely awkward, and public RPC endpoints rate-limit aggressively, so we sell what those nodes see — payment webhooks, one-off scans and single chain facts — per call, with no account.

Two protocols, same backend:

Quick start

REST

curl https://api.seneschal.space/v1/private/info

MCP (Claude Desktop / Cursor)

Add this to your MCP client config (e.g. ~/.cursor/mcp.json):

{
  "mcpServers": {
    "seneschal-data": {
      "url": "https://mcp.seneschal.space/"
    }
  }
}

The full Seneschal tool surface becomes available to your agent: seneschal_health, seneschal_flashloan_providers, seneschal_q (Penny Oracle dispatcher), plus the Private Watch suite: seneschal_private_watch_info, seneschal_private_watch_create, seneschal_private_watch_topup, seneschal_private_watch_topup_crypto, seneschal_private_watch_historical, seneschal_private_watch_derive_viewkey, seneschal_private_watch_status, seneschal_private_watch_cancel and seneschal_private_watch_test.

REST endpoints

GET/v1/health

Service liveness plus Monero and Zcash node availability. Useful as a monitoring probe before relying on chain facts or payment watches.

GET/v1/flashloan/providers

Curated catalogue of Ethereum mainnet flash-loan providers (Aave V3, Balancer V2, Morpho Blue, Uniswap V3, FlashBank) with current fee in basis points, contract addresses, qualitative liquidity notes, and per-provider caveats. Helpful for picking the cheapest viable provider for a flash loan.

Query paramTypeDefaultNotes
chainstringethereumOnly ethereum is catalogued today.
max_fee_bpsnumber(none)Drop providers whose flat fee exceeds this (1bp = 0.01%).
multi_assetbool(any)If true, only return providers that support borrowing multiple assets in one flash loan.

MCP tool reference

Identical surface to REST: every endpoint has a matching tool with the same parameters and same response shape (just wrapped as MCP tool content).

ToolUse
seneschal_healthLiveness + freshness probe.
seneschal_flashloan_providersCurated catalogue of mainnet flash-loan providers (Aave, Balancer, Morpho, Uniswap V3, FlashBank).
seneschal_paywall_infoFree. Describes the live x402 paywall (network, recipient, per-call price, MCP tool name) for the paid endpoints.
seneschal_qPenny Oracle dispatcher — any /v1/q/* question via {question, params}.

Premium tier (x402) — LIVE

Pay-per-call endpoints on Base mainnet, settled in USDC via the x402 protocol — from sub-cent single-fact queries to the Private Watch credit meter:

EndpointPriceWhat you get
GET /v1/q/* (11 endpoints) $0.001 Penny Oracle. Atomic single-fact endpoints — each answers ONE yes/no or one number, returns in <50 ms, and is designed for tight agent loops where bulk JSON is overkill. See the catalogue below.
POST /v1/private/watch $0.10 Private Watch — create. Subscribes a Monero or Zcash address to view-key based payment monitoring. $0.10 buys the watch + $0.10 of opening credit. Credit meter runs at $0.02/day idle + $0.005/webhook delivered. View keys are AES-256-GCM encrypted at rest with an operator-supplied master key. See private watch below.
POST /v1/private/topup — $0.10
POST /v1/private/topup-1 — $1.00
POST /v1/private/topup-5 — $5.00
POST /v1/private/topup-custom — any $0.10–$25
tiered Top up an existing watch (USDC via x402). Explicit tiers so the x402 paywall can quote each price up front. $0.10 buys ~5 idle days, $1.00 buys ~50, $5.00 buys ~250; topup-custom takes any amount. Body: {watchId, watchToken} (plus amountAtomic for custom).
POST /v1/private/watch-crypto FREE call
(pay in coin)
Create + fund a watch entirely in XMR/ZEC. One free call creates the watch and returns a coin payment quote — no USDC, no EVM wallet, no x402 anywhere. The watch is live immediately on a small grace credit (about a day); the quoted credit lands automatically once your payment confirms. Body: {chain, address, viewKey, webhookUrl, birthdayHeight?, payWith?, amountUsdCents?}. Rate-limited per IP.
POST /v1/private/topup-crypto
GET /v1/private/topup-crypto/:quoteId
FREE quote
(pay in coin)
Top up by paying in Monero/Zcash. The POST is free and returns a quote — a receiving address, the exact coin amount to send (Monero: a unique-amount invoice tag; Zcash: a memo), and a USD rate locked for ~15 min. Send the payment, then poll the GET (header x-watch-token) until status=settled. We detect it with our own view-key scan and credit the watch after the stated confirmations; we never hold a spend key. Body: {watchId, watchToken, chain, amountUsdCents} ($2–$500).
GET /v1/private/snippets FREE Copy-paste webhook receivers. Zero-dependency HMAC-SHA256 verification snippets for Node, Python and PHP with the live signature header baked in (?lang= to narrow), plus create/test instructions.
POST /v1/checkout/invoices
GET /v1/checkout/invoices/:id
POST /v1/checkout/keys
FREE calls
($0.02 per paid sale)
Seneschal Pay — accept XMR/ZEC on your site/bot/agent, zero custody. Invoices pay your watched wallet directly (Monero: unique invoice-tagged exact amount; Zcash: memo token) at a rate locked for the TTL, with a hosted QR pay page (seneschal.space/pay/#id) and a one-script-tag embed button. We detect payment via your view key, webhook you (invoice_seen/invoice_paid, orderId echoed), and debit a flat $0.02 off the watch meter. Restricted checkout keys are safe to embed client-side. Full how-to.
POST /v1/private/historical $0.50 One-off scan. Returns all spendable + spent notes for a view key without setting up a watch. View key streams to NFPT in memory only — never written to our SQLite or logs. Body: {chain, address, viewKey, birthdayHeight?, toHeight?, includeNotes?}.
POST /v1/private/derive-viewkey FREE BIP-39 → UFVK derivation (Zcash). Rate-limited to 6/min/IP. Forwards a 12- or 24-word seed phrase to NFPT’s orchard-scanner CLI and returns the matching read-only Unified Full Viewing Key. Loud security warning in the response — the phrase transits our server (no logging, no persistence) but a network observer between you and us would see the bytes; derive offline if you can.

Penny Oracle — /v1/q/* atomic-fact endpoints

Eleven micro-priced endpoints, all GET, all $0.001 per call (1/100th of a cent). Each returns a flat object so an agent can branch directly on the answer without nested-field gymnastics. The free catalogue at GET /v1/q enumerates every question and its input parameters.

EndpointInputsAnswers
/v1/q/cheapest-flashloanasset, chain?Cheapest flash-loan provider for that asset on that chain. Defaults to Ethereum mainnet.
/v1/q/base-fee—Ethereum gas right now: latest block’s base fee + blob base fee and the consensus-computed next-block projection, from eth_feeHistory.
Privacy-chain facts — sourced from Seneschal-operated full nodes
/v1/q/xmr/height—Current Monero chain height + sync state. Sourced from a synced monerod v0.18 instance.
/v1/q/xmr/mempool—Number of pending transactions in the Monero mempool right now.
/v1/q/xmr/fee—Recommended per-byte fee in piconero (also per-kB) so wallets can budget the next-block tx.
/v1/q/xmr/fee-estimate—Actionable Monero fee estimate: per-byte fee × a typical 1500-byte tx, broken out by priority level, in piconero and XMR.
/v1/q/xmr/last-block—Timestamp + age of the most recent Monero block, plus hash, difficulty, size.
/v1/q/zec/height—Current Zcash chain height + verification progress + best block hash. Sourced from a synced zebra node.
/v1/q/zec/mempool—Zcash mempool count + bytes.
/v1/q/zec/last-block—Timestamp + age of the most recent Zcash block, plus hash, difficulty, size.
/v1/q/zec/pools—ZEC supply by value pool (transparent / sprout / sapling / orchard / ironwood / lockbox) + the NU6.3 “Ironwood” migration readout — how much Orchard-protocol value has crossed into the quantum-recoverable pool. Free flavour with context: /v1/zec/ironwood; free 15-min history: /v1/zec/ironwood/history; charts: ironwood.seneschal.space.

The privacy-chain set is the "joining the dots" of this product line: Monero and Zcash are the two chains where running a node yourself is genuinely awkward (~108 GB and ~270 GB respectively, plus syncing hours), public RPC endpoints rate-limit aggressively, and there is no Etherscan-style hosted explorer to fall back on. We run synced nodes already; the x402 sub-cent paywall finally makes selling individual reads worth the trouble. All responses are cached server-side for 10 s so an agent in a tight loop costs the daemon nothing extra.

Hand-rolled flow:

curl -s 'https://api.seneschal.space/v1/q/xmr/height'
# Pays $0.001 USDC on Base via x402-fetch and returns the current
# Monero chain height + sync state as one flat JSON object

MCP agents can use the single dispatcher tool seneschal_q with {question, params} rather than wiring up separate tool calls per question. The MCP path is currently free; the HTTP path is paywalled.

Payment uses the x402 protocol (spec v2). Unsigned requests get HTTP 402 with a base64-encoded Payment-Required header carrying machine-readable PaymentRequirements; the client signs an EIP-3009 transferWithAuthorization off-chain and retries with a X-PAYMENT header. We delegate verify + settle to Coinbase’s CDP facilitator, which broadcasts the EIP-3009 transfer on Base. No API keys for the payer, no subscriptions, no gas for the payer — the facilitator pays the gas. (Settling through Coinbase also lists the service in the Coinbase x402 Bazaar.)

Free metadata endpoint for budgeting before any paid call:

curl https://api.seneschal.space/v1/paywall
# → {"protocol":"x402","network":"eip155:8453",
#    "facilitator":"https://api.cdp.coinbase.com/platform/v2/x402",
#    "facilitator_mode":"cdp",
#    "payTo":"0x46Ba634261566CF242c853d1f49511f9268ba674",
#    "scheme":"exact (EIP-3009 transferWithAuthorization)",
#    "routes":[{"endpoint":"POST /v1/private/watch","price":"$0.10",...},
#              {"endpoint":"POST /v1/private/historical","price":"$0.50",...},
#              {"endpoint":"GET /v1/q/xmr/height","price":"$0.001",...}, … ]}

Agents using x402-axios, x402-fetch, @x402/express, @x402/fastify or the official client libraries pay automatically on 402. Hand-rolled flow, in three lines of TypeScript:

import { wrapFetchWithPayment } from 'x402-fetch';
import { createWalletClient, http } from 'viem';
import { base } from 'viem/chains';

const wallet = createWalletClient({ account, transport: http(), chain: base });
const fetchPaid = wrapFetchWithPayment(fetch, wallet);
const r = await fetchPaid('https://api.seneschal.space/v1/q/zec/pools');
console.log(await r.json());

The account is any viem-compatible signer holding a small USDC balance on Base — a fresh EOA + 1 USDC will fund ~1,000 Penny Oracle calls.

Private Watch — /v1/private/* (XMR/ZEC payment monitoring)

This is the headline product. The agent (or merchant, or wallet) hands us a public address, a view key, and a webhook URL. We scan every new block against the view key on the local NFPT wallet-scanner (driven by monerod for Monero and zebra + the Zcash orchard-scanner binary for Zcash) and POST a signed event to the webhook the moment the balance changes.

Pricing — prepaid credit meter. One payment of $0.10 opens a watch and seeds $0.10 of credit. The watch then drains at $0.02 per UTC day idle (proportional, billed each poll tick) plus $0.005 per webhook delivered. When credit hits a low threshold ($0.05) we POST a one-shot low_credit warning so your receiver can top up before going silent. Top up any time with one of three paywalled paths ($0.10 / $1 / $5). Credit balance is in every webhook body so well-behaved receivers can ignore the dedicated event.

EndpointMethodAuthDescription
/v1/private/watchPOSTx402 $0.10Create a watch with $0.10 of starter credit. Body: {chain, address, viewKey, webhookUrl, birthdayHeight?}. Returns {watchId, watchToken, webhookSecret, expiresAt, creditAtomic, ratePerDayAtomic, ratePerCallAtomic, topupEndpoints, testEndpoint}. durationDays is silently ignored for backward compatibility — the credit meter is the only knob now.
/v1/private/topupPOSTx402 $0.10Adds $0.10 of credit (~5 idle days). Body: {watchId, watchToken}.
/v1/private/topup-1POSTx402 $1.00Adds $1.00 of credit (~50 idle days).
/v1/private/topup-5POSTx402 $5.00Adds $5.00 of credit (~250 idle days).
/v1/private/historicalPOSTx402 $0.50One-off historical scan. Returns spendable + spent + total-received totals (and optionally per-note breakdowns). View key streams to NFPT in-memory only — never written to our SQLite or logs.
/v1/private/derive-viewkeyPOSTFREE (6/min/IP)Zcash only. Derives a UFVK from a BIP-39 mnemonic via NFPT’s orchard-scanner. Phrase transits in-memory; we do not log or persist. Use offline derivation where possible.
/v1/private/watch/:idGETheader x-watch-tokenRead current status: credit block (remaining / days_remaining / low-credit flag), last polled time, delivery count, last event type, last known balance snapshot, ETA to next poll. Free.
/v1/private/watch/:idDELETEheader x-watch-tokenCancel a watch (any remaining credit is forfeited — this is by design to avoid refund accounting and chargebacks). Free.
/v1/private/watch/:id/testPOSTheader x-watch-tokenFires one synthetic webhook so you can verify your signature handling and receiver before relying on real payments. Stamped event: synthetic_test so well-behaved receivers can branch and skip processing. Free.
/v1/private/infoGET—Free metadata: current prices, supported chains, top-up tiers, upstream NFPT health, security notes.
/v1/private/healthGET—Counters only (no PII) for ops monitoring — includes credit aggregates.

Webhook contract. Every delivery is a POST with content-type: application/json and three Seneschal headers:

X-Seneschal-Watch-Id: <uuid>
X-Seneschal-Event: balance_change | scan_complete | status_change | low_credit | synthetic_test
X-Seneschal-Signature: sha256=<HMAC-SHA256(webhookSecret, exact request body)>

The body is plain JSON. Every delivery (including low_credit warnings) carries a credit block so receivers always know where they stand:

{
  "watchId": "fb1a29bd-…",
  "chain": "monero",
  "address": "46FzbF…",
  "event": "balance_change",
  "timestamp": "2026-05-21T08:06:54.626Z",
  "nonce": "mpf7j7he-30s7yx",
  "previous": { "balanceAtomic": "0", "scannedHeight": 3349800, … },
  "current":  { "balanceAtomic": "1234567890", "scannedHeight": 3349881, … },
  "delta": {
    "balance_atomic": "1234567890",
    "before_atomic": "0",
    "after_atomic":  "1234567890"
  },
  "credit": {
    "remaining_atomic": "94750",
    "remaining_usd": "0.0948",
    "days_remaining": 4.7,
    "low_credit": false,
    "rate_per_day_atomic": "20000",
    "rate_per_call_atomic": "5000",
    "low_credit_threshold_atomic": "50000"
  }
}

The low_credit event is fired once when remaining_atomic first drops below the threshold ($0.05 of credit, ~2.5 idle days). Top up >= the threshold to re-arm the warning. After credit reaches zero the watch stops being polled entirely; no further deliveries happen until the next top-up.

Receivers verify the signature with the per-watch webhookSecret returned at creation. Constant-time HMAC comparison defeats forgery; the secret is generated server-side and never reused across watches. Bodies are capped at 64 KB.

Security model. View keys decrypt incoming transactions but cannot spend — you can hand us one without giving up custody. We nonetheless encrypt the key at rest with AES-256-GCM under an operator-held master key (PRIVATE_WATCH_ENCRYPTION_KEY); plaintext only exists in memory while the poller is decrypting it for the next scan call. Webhook URLs are vetted at creation:

Tunables. Polling cadence is 3 min by default (stays inside NFPT's 5 min scanner idle window). Webhook receivers get an 8 s HTTP timeout and we cap drained response body at 4 KB to defeat slow-loris megabyte responses. On webhook failure we retry on the next tick; 50 consecutive failures retire the watch with a dead flag. After expiry the row is hard-deleted on the next tick.

Zcash birthday height. If omitted we default to NU6 (3,042,000) so the scanner never trips into a multi-hour autoDetect backwards-walk. Wallets created before April 2024 should pass an explicit birthdayHeight matching wallet age.

MCP. Agents already inside a paid MCP session can use seneschal_private_watch_create, seneschal_private_watch_topup, seneschal_private_watch_topup_crypto, seneschal_private_watch_historical, seneschal_private_watch_derive_viewkey, seneschal_private_watch_status, seneschal_private_watch_cancel and seneschal_private_watch_info for end-to-end flow without direct HTTP.

Historical lookups & view-key derivation

Two new on-demand services let agents recover state without committing to a long-running watch:

Limits, terms, fair use

About

Seneschal is a single-operator service running its own Monero and Zcash full nodes. Contact @OrknetP on Telegram. By using the service you agree to the Terms and Privacy policy.