api.seneschal.space. Connect any EVM wallet via WalletConnect (or MetaMask). Pay for watches, top-ups and historical scans in USDC on Base via the x402 protocol — no account, no API key, no sign-up. Every action below shows the equivalent API call so you can graduate to your own automation any time. View keys never leave your browser except to be sent over TLS to the API for the specific action.
Create a new payment-monitoring watch
You'll be asked to sign an EIP-3009 transferWithAuthorization for $0.10 USDC on Base. Once payment is verified by the openx402 facilitator the watch is created with $0.10 of starter credit (~5 idle days at the $0.02/day rate). Top up any time.
Equivalent API call
curl + your own x402 signercurl -s https://api.seneschal.space/v1/private/watch \
-X POST -H "content-type: application/json" \
-H "x-payment: <base64 EIP-3009 payload, $0.10 USDC on Base>" \
-d '{
"chain": "monero",
"address": "44AFFq…",
"viewKey": "0123…",
"webhookUrl": "https://your.server/seneschal-hook"
}'
Node.js (x402-fetch wraps the payment flow)
import { wrapFetchWithPayment } from "x402-fetch";
import { createWalletClient, http } from "viem";
import { base } from "viem/chains";
const fetchPaid = wrapFetchWithPayment(fetch, walletClient);
const r = await fetchPaid("https://api.seneschal.space/v1/private/watch", {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({ chain, address, viewKey, webhookUrl })
});
const { watchId, watchToken, webhookSecret } = await r.json();
MCP (for AI agents already in a paid session)
tool: seneschal_private_watch_create
input: { chain, address, viewKey, webhookUrl }
My watches stored in this browser’s localStorage
Watches you create on this device are remembered locally so you can top up, check status and cancel them. Nothing is sent to our server about your saved list — the API only knows the watchToken we hand back at creation, and we cannot reconstruct that for you if you lose this browser. Export / import a JSON backup any time.
Equivalent API calls — managing a watch
Status (free)curl -s -H "x-watch-token: <token>" \
https://api.seneschal.space/v1/private/watch/<watchId>
Top up — $0.10 / $1 / $5 tier
curl -s -X POST https://api.seneschal.space/v1/private/topup-1 \
-H "x-payment: <base64 EIP-3009, $1.00 USDC on Base>" \
-H "content-type: application/json" \
-d '{"watchId":"…","watchToken":"…"}'
Cancel (free, no refund)
curl -s -X DELETE -H "x-watch-token: <token>" \
https://api.seneschal.space/v1/private/watch/<watchId>
One-off historical lookup
Single $0.50 USDC payment runs a full historical scan against the view key you supply and returns aggregated totals (received / spent / spendable in atomic units) and optionally per-note breakdowns. Your view key transits our process in memory only — it is never written to our SQLite or logs.
Equivalent API call
curl -s -X POST https://api.seneschal.space/v1/private/historical \
-H "x-payment: <base64 EIP-3009 payload, $0.50 USDC on Base>" \
-H "content-type: application/json" \
-d '{
"chain": "monero",
"address": "44AFFq…",
"viewKey": "0123…",
"includeNotes": true
}'
Derive a Zcash viewing key from a BIP-39 phrase
Free, no payment. Rate-limited 6/min/IP. Forwards your phrase to the local orchard-scanner derive-ufvk command and returns the matching read-only Unified Full Viewing Key.
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 orchard-scanner. Leave the textarea blank to use the canonical BIP-39 test vector (no risk).Equivalent API call
curl -s -X POST https://api.seneschal.space/v1/private/derive-viewkey \
-H "content-type: application/json" \
-d '{"chain":"zcash","network":"mainnet","phrase":"abandon abandon … art"}'