{"openapi":"3.1.0","info":{"title":"Seneschal Data API","version":"1.0.0","description":"Monero & Zcash payment watching for agents (view-key webhooks, historical scans, native XMR/ZEC top-ups) plus DeFi liquidation telemetry and Ethereum builder data. Paid per call via x402 USDC on Base — no account, no API key.","contact":{"name":"Seneschal","url":"https://t.me/OrknetP"},"x-guidance":"Seneschal sells per-call data and payment-watching services over x402 (HTTP 402) USDC micropayments on Base — no account, no API key. Flow: GET any paid route → receive 402 + payment requirements → sign an EIP-3009 USDC authorisation for the quoted amount → retry with the X-PAYMENT header → get the data. Compatible clients (e.g. @x402/fetch) do this automatically. Products: (1) Private Watch — POST /v1/private/watch with a Monero/Zcash address + READ-ONLY view key + webhook URL; we run the nodes and POST you an HMAC-signed event for every inbound payment. Keep the returned watchToken + webhookSecret. Top up credit via POST /v1/private/topup{,-1,-5} or natively in XMR/ZEC (see /v1/private/info). (2) Penny Oracle — $0.001 single-fact GETs under /v1/q/* covering Monero/Zcash chain state and DeFi liquidation/builder data. Free catalogue at GET /v1/q. (3) Premium feeds — GET /v1/premium/opportunities (at-risk borrowers ranked by EV) and /v1/premium/builder-stats (builder bid distributions). Both have FREE live redacted samples at /sample sub-paths — try before paying. Start free: GET /v1/q (catalogue), GET /v1/paywall (pricing + rails), GET /v1/private/info (product guide). MCP server with the same tools: https://mcp.seneschal.space."},"externalDocs":{"description":"Service docs","url":"https://docs.seneschal.space"},"servers":[{"url":"https://api.seneschal.space"}],"paths":{"/v1/private/watch":{"post":{"operationId":"POST_v1_private_watch","summary":"/v1/private/watch","description":"","responses":{"200":{"description":"Paid response","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.10"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["chain","address","viewKey","webhookUrl"],"properties":{"chain":{"type":"string","enum":["monero","zcash"],"description":"Which chain the watched address lives on."},"address":{"type":"string","description":"The receiving address to watch (Monero primary/subaddress, or Zcash unified/shielded address)."},"viewKey":{"type":"string","description":"Read-only view key: Monero private view key, or Zcash UFVK. A view key cannot spend funds."},"webhookUrl":{"type":"string","format":"uri","description":"HTTPS endpoint that receives an HMAC-signed POST for every inbound payment."},"birthdayHeight":{"type":"integer","description":"Optional chain height to start scanning from (defaults to current tip)."}}}}}}}},"/v1/private/topup":{"post":{"operationId":"POST_v1_private_topup","summary":"/v1/private/topup","description":"","responses":{"200":{"description":"Paid response","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.10"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["watchId","watchToken"],"properties":{"watchId":{"type":"string","description":"Watch identifier returned by POST /v1/private/watch."},"watchToken":{"type":"string","description":"Bearer credential for the watch, returned at creation. Treat as a secret."}}}}}}}},"/v1/private/topup-1":{"post":{"operationId":"POST_v1_private_topup_1","summary":"/v1/private/topup-1","description":"","responses":{"200":{"description":"Paid response","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"1.00"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["watchId","watchToken"],"properties":{"watchId":{"type":"string","description":"Watch identifier returned by POST /v1/private/watch."},"watchToken":{"type":"string","description":"Bearer credential for the watch, returned at creation. Treat as a secret."}}}}}}}},"/v1/private/topup-5":{"post":{"operationId":"POST_v1_private_topup_5","summary":"/v1/private/topup-5","description":"","responses":{"200":{"description":"Paid response","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"5.00"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["watchId","watchToken"],"properties":{"watchId":{"type":"string","description":"Watch identifier returned by POST /v1/private/watch."},"watchToken":{"type":"string","description":"Bearer credential for the watch, returned at creation. Treat as a secret."}}}}}}}},"/v1/private/historical":{"post":{"operationId":"POST_v1_private_historical","summary":"/v1/private/historical","description":"","responses":{"200":{"description":"Paid response","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.50"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["chain","viewKey"],"properties":{"chain":{"type":"string","enum":["monero","zcash"]},"address":{"type":"string","description":"Required for Monero (address + view key pair); ignored for Zcash UFVK scans."},"viewKey":{"type":"string","description":"Monero private view key or Zcash UFVK. Streamed to the scanner in memory only — never persisted."},"birthdayHeight":{"type":"integer","description":"Scan start height (defaults to chain birthday for the key type)."},"toHeight":{"type":"integer","description":"Scan end height (defaults to tip)."},"includeNotes":{"type":"boolean","description":"Include the per-note breakdown in the response."}}}}}}}},"/v1/q/xmr/height":{"get":{"operationId":"GET_v1_q_xmr_height","summary":"/v1/q/xmr/height","description":"","responses":{"200":{"description":"Paid response","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/v1/q/xmr/mempool":{"get":{"operationId":"GET_v1_q_xmr_mempool","summary":"/v1/q/xmr/mempool","description":"","responses":{"200":{"description":"Paid response","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/v1/q/xmr/fee":{"get":{"operationId":"GET_v1_q_xmr_fee","summary":"/v1/q/xmr/fee","description":"","responses":{"200":{"description":"Paid response","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/v1/q/xmr/fee-estimate":{"get":{"operationId":"GET_v1_q_xmr_fee_estimate","summary":"/v1/q/xmr/fee-estimate","description":"","responses":{"200":{"description":"Paid response","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/v1/q/xmr/last-block":{"get":{"operationId":"GET_v1_q_xmr_last_block","summary":"/v1/q/xmr/last-block","description":"","responses":{"200":{"description":"Paid response","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/v1/q/zec/height":{"get":{"operationId":"GET_v1_q_zec_height","summary":"/v1/q/zec/height","description":"","responses":{"200":{"description":"Paid response","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/v1/q/zec/mempool":{"get":{"operationId":"GET_v1_q_zec_mempool","summary":"/v1/q/zec/mempool","description":"","responses":{"200":{"description":"Paid response","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/v1/q/zec/last-block":{"get":{"operationId":"GET_v1_q_zec_last_block","summary":"/v1/q/zec/last-block","description":"","responses":{"200":{"description":"Paid response","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/v1/q/zec/pools":{"get":{"operationId":"GET_v1_q_zec_pools","summary":"/v1/q/zec/pools","description":"","responses":{"200":{"description":"Paid response","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/v1/premium/opportunities":{"get":{"operationId":"GET_v1_premium_opportunities","summary":"/v1/premium/opportunities","description":"","responses":{"200":{"description":"Paid response","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.05"},"protocols":[{"x402":{}}]}}},"/v1/premium/builder-stats":{"get":{"operationId":"GET_v1_premium_builder_stats","summary":"/v1/premium/builder-stats","description":"","responses":{"200":{"description":"Paid response","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.05"},"protocols":[{"x402":{}}]}}},"/v1/premium/fee-history.csv":{"get":{"operationId":"GET_v1_premium_fee_history_csv","summary":"/v1/premium/fee-history.csv","description":"","responses":{"200":{"description":"Paid response","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.05"},"protocols":[{"x402":{}}]}}},"/v1/premium/builder-bids.csv":{"get":{"operationId":"GET_v1_premium_builder_bids_csv","summary":"/v1/premium/builder-bids.csv","description":"","responses":{"200":{"description":"Paid response","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.05"},"protocols":[{"x402":{}}]}}},"/v1/premium/counter-mev":{"get":{"operationId":"GET_v1_premium_counter_mev","summary":"/v1/premium/counter-mev","description":"","responses":{"200":{"description":"Paid response","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.05"},"protocols":[{"x402":{}}]}}},"/v1/premium/puzzle-risk":{"get":{"operationId":"GET_v1_premium_puzzle_risk","summary":"/v1/premium/puzzle-risk","description":"","responses":{"200":{"description":"Paid response","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.05"},"protocols":[{"x402":{}}]}}},"/v1/premium/private-relay":{"post":{"operationId":"POST_v1_premium_private_relay","summary":"/v1/premium/private-relay","description":"","responses":{"200":{"description":"Paid response","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.50"},"protocols":[{"x402":{}}]}}},"/v1/q/liquidatable":{"get":{"operationId":"GET_v1_q_liquidatable","summary":"/v1/q/liquidatable","description":"","responses":{"200":{"description":"Paid response","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]},"parameters":[{"name":"addr","in":"query","required":true,"schema":{"type":"string"}},{"name":"protocol","in":"query","required":false,"schema":{"type":"string"}}]}},"/v1/q/at-risk-count":{"get":{"operationId":"GET_v1_q_at_risk_count","summary":"/v1/q/at-risk-count","description":"","responses":{"200":{"description":"Paid response","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]},"parameters":[{"name":"max_hf","in":"query","required":false,"schema":{"type":"string"}},{"name":"min_debt_usd","in":"query","required":false,"schema":{"type":"string"}},{"name":"protocol","in":"query","required":false,"schema":{"type":"string"}}]}},"/v1/q/recent-liquidations":{"get":{"operationId":"GET_v1_q_recent_liquidations","summary":"/v1/q/recent-liquidations","description":"","responses":{"200":{"description":"Paid response","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]},"parameters":[{"name":"since_min","in":"query","required":false,"schema":{"type":"string"}},{"name":"protocol","in":"query","required":false,"schema":{"type":"string"}}]}},"/v1/q/top-builder":{"get":{"operationId":"GET_v1_q_top_builder","summary":"/v1/q/top-builder","description":"","responses":{"200":{"description":"Paid response","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]},"parameters":[{"name":"window","in":"query","required":false,"schema":{"type":"string"}}]}},"/v1/q/builder-share":{"get":{"operationId":"GET_v1_q_builder_share","summary":"/v1/q/builder-share","description":"","responses":{"200":{"description":"Paid response","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]},"parameters":[{"name":"builder","in":"query","required":true,"schema":{"type":"string"}},{"name":"window","in":"query","required":false,"schema":{"type":"string"}}]}},"/v1/q/builder-bid":{"get":{"operationId":"GET_v1_q_builder_bid","summary":"/v1/q/builder-bid","description":"","responses":{"200":{"description":"Paid response","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]},"parameters":[{"name":"builder","in":"query","required":true,"schema":{"type":"string"}},{"name":"pct","in":"query","required":false,"schema":{"type":"string"}},{"name":"window","in":"query","required":false,"schema":{"type":"string"}}]}},"/v1/q/block-value":{"get":{"operationId":"GET_v1_q_block_value","summary":"/v1/q/block-value","description":"","responses":{"200":{"description":"Paid response","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]},"parameters":[{"name":"pct","in":"query","required":false,"schema":{"type":"string"}},{"name":"window","in":"query","required":false,"schema":{"type":"string"}}]}},"/v1/q/cheapest-flashloan":{"get":{"operationId":"GET_v1_q_cheapest_flashloan","summary":"/v1/q/cheapest-flashloan","description":"","responses":{"200":{"description":"Paid response","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]},"parameters":[{"name":"asset","in":"query","required":true,"schema":{"type":"string"}},{"name":"chain","in":"query","required":false,"schema":{"type":"string"}}]}},"/v1/q/data-freshness":{"get":{"operationId":"GET_v1_q_data_freshness","summary":"/v1/q/data-freshness","description":"","responses":{"200":{"description":"Paid response","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]},"parameters":[{"name":"source","in":"query","required":true,"schema":{"type":"string"}}]}},"/v1/q/address-risk":{"get":{"operationId":"GET_v1_q_address_risk","summary":"/v1/q/address-risk","description":"","responses":{"200":{"description":"Paid response","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]},"parameters":[{"name":"addr","in":"query","required":true,"schema":{"type":"string"}}]}},"/v1/q/proposer-payment":{"get":{"operationId":"GET_v1_q_proposer_payment","summary":"/v1/q/proposer-payment","description":"","responses":{"200":{"description":"Paid response","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/v1/q/base-fee":{"get":{"operationId":"GET_v1_q_base_fee","summary":"/v1/q/base-fee","description":"","responses":{"200":{"description":"Paid response","content":{"application/json":{"schema":{"type":"object"}}}},"402":{"description":"Payment Required"}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]}}},"/v1/q":{"get":{"operationId":"GET_v1_q_catalogue","security":[],"summary":"Free catalogue of every Penny Oracle question","description":"Lists every /v1/q/* single-fact route with its input parameters, the per-call price, and per-chain availability. No payment required.","responses":{"200":{"description":"Catalogue","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/counter-mev/summary":{"get":{"operationId":"GET_v1_counter_mev_summary","security":[],"summary":"Free counter-MEV / approval-risk summary","description":"Counts, risk-score distribution and a small teaser of the most dangerous approval-harvesting spender contracts and honeypot/bait tokens the bot’s mainnet scanners have flagged. The uncapped, fully-annotated feed is the paid GET /v1/premium/counter-mev.","responses":{"200":{"description":"Counter-MEV summary","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/zec/ironwood":{"get":{"operationId":"GET_v1_zec_ironwood","security":[],"summary":"Free ZEC value-pool + NU6.3 Ironwood migration tracker","description":"Every Zcash value pool (transparent/sprout/sapling/orchard/ironwood/lockbox) from a live operator-run zebra node, plus the Ironwood migration readout: pool balance, Orchard remainder, and the migration % the turnstile makes public. Cached ~60s. Agent-priced flavour of the same numbers: GET /v1/q/zec/pools ($0.001). Human page with charts: https://ironwood.seneschal.space/.","responses":{"200":{"description":"Pool balances + Ironwood migration status","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/zec/ironwood/history":{"get":{"operationId":"GET_v1_zec_ironwood_history","security":[],"summary":"Free Ironwood migration time series (15-min snapshots)","description":"Historical ZEC value-pool series recorded every 15 minutes since 2026-07-04 (pre-activation baseline included, so the whole migration curve is captured from block one). Each row: t_ms, height, per-pool ZEC balances, shielded share and migration %. Server-side downsampled; charts at https://ironwood.seneschal.space/.","parameters":[{"name":"window_ms","in":"query","required":false,"schema":{"type":"integer"},"description":"Lookback window in ms (1h … 90d, default 90d)."},{"name":"max_points","in":"query","required":false,"schema":{"type":"integer"},"description":"Series length cap after downsampling (10 … 5000, default 2000)."}],"responses":{"200":{"description":"Migration time series","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/puzzle-risk/summary":{"get":{"operationId":"GET_v1_puzzle_risk_summary","security":[],"summary":"Free puzzle / bounty contract risk summary","description":"Per-class counts (locked_no_payout vs frontrun_bait vs claimable …) and ETH-at-stake rollups for a watchlist of puzzle/CTF/bounty contracts, plus a teaser. Tells solvers which \"funded bounties\" can never pay (e.g. TeikhosBounty) and which pay the solver but will be front-run in the public mempool. The full annotated watchlist is the paid GET /v1/premium/puzzle-risk.","responses":{"200":{"description":"Puzzle-risk summary","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/puzzle-risk/lookup":{"get":{"operationId":"GET_v1_puzzle_risk_lookup","security":[],"summary":"Free single-contract puzzle-risk verdict","description":"Returns the watchlist verdict for one address: is this puzzle/bounty contract a locked-no-payout trap, front-run bait, or genuinely claimable? Query: ?address=0x….","parameters":[{"name":"address","in":"query","required":true,"schema":{"type":"string"},"description":"Contract address (0x…)."}],"responses":{"200":{"description":"Single-contract verdict","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/private-relay/info":{"get":{"operationId":"GET_v1_private_relay_info","security":[],"summary":"Free private transaction relay metadata","description":"What the private relay does, which private block builders it fans out to (Flashbots, Titan + our own rbuilder), the per-submission price and caveats. The relay forwards a LOCALLY-signed raw tx privately — never the public mempool — so a sensitive tx (a puzzle/bounty claim, an approval revoke, a first-touch interaction) cannot be front-run. The paid action is POST /v1/premium/private-relay.","responses":{"200":{"description":"Relay metadata","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/private-relay/inspect":{"get":{"operationId":"GET_v1_private_relay_inspect","security":[],"summary":"Free signed-tx decode + target-builder preview","description":"Decode and validate a locally-signed raw transaction (recovers the sender, returns hash/to/nonce/chain) and preview exactly which private builders it WOULD be relayed to — without relaying (no charge). Lets a caller confirm the bytes are valid before paying. Query: ?raw_tx=0x….","parameters":[{"name":"raw_tx","in":"query","required":true,"schema":{"type":"string"},"description":"Locally-signed raw transaction (0x-hex)."}],"responses":{"200":{"description":"Decoded tx + target builders","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/paywall":{"get":{"operationId":"GET_v1_paywall","security":[],"summary":"Free paywall metadata (prices, network, recipient)","description":"Introspect x402 pricing and rails without making a paid call.","responses":{"200":{"description":"Paywall summary","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/premium/opportunities/sample":{"get":{"operationId":"GET_v1_premium_opportunities_sample","security":[],"summary":"Free redacted live sample of the paid opportunities feed","description":"The REAL /v1/premium/opportunities computation, top 3 rows only, with addresses truncated and dollar amounts rounded to one significant figure. Aggregate counts and as_of_ms are live — use it to judge data quality before paying for the full feed.","responses":{"200":{"description":"Redacted sample","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/premium/builder-stats/sample":{"get":{"operationId":"GET_v1_premium_builder_stats_sample","security":[],"summary":"Free redacted live sample of the paid builder-stats feed","description":"Top-3 builders over a fixed 6h window with whole-percent share and median bid only. The paid /v1/premium/builder-stats adds p10–p99 bid percentiles, the hourly histogram, the global distribution and windows up to 30 days.","responses":{"200":{"description":"Redacted sample","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/private/info":{"get":{"operationId":"GET_v1_private_info","security":[],"summary":"Free Private Watch product guide","description":"Human- and agent-readable description of the Private Watch product: pricing, webhook signature scheme, top-up options (x402 + native XMR/ZEC), and the create/status/cancel lifecycle.","responses":{"200":{"description":"Product guide","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/private/watch-crypto":{"post":{"operationId":"POST_v1_private_watch_crypto","security":[],"summary":"Create + fund a payment watch entirely in XMR/ZEC (free call; you pay in coin)","description":"The all-coin onboarding path: creates a Monero/Zcash payment watch AND returns a coin payment quote in one call — no USDC, no EVM wallet, no x402 anywhere in the flow. The watch activates immediately on a small grace credit (about a day); the quoted credit lands automatically once the coin payment confirms (poll GET /v1/private/topup-crypto/{quoteId}). Defaults: payWith = the watched chain, amountUsdCents = server minimum. Rate-limited per IP.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["chain","address","viewKey","webhookUrl"],"properties":{"chain":{"type":"string","enum":["monero","zcash"]},"address":{"type":"string","description":"Receiving address to watch."},"viewKey":{"type":"string","description":"READ-ONLY view key (Monero private view key or Zcash UFVK). Cannot spend."},"webhookUrl":{"type":"string","format":"uri"},"birthdayHeight":{"type":"integer"},"payWith":{"type":"string","enum":["monero","zcash"],"description":"Coin to pay in; defaults to `chain`."},"amountUsdCents":{"type":"integer","description":"Credit to buy in US cents; defaults to the server minimum (see /v1/private/info -> crypto_topup)."}}}}}},"responses":{"201":{"description":"Watch credentials + payment quote","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/private/snippets":{"get":{"operationId":"GET_v1_private_snippets","security":[],"summary":"Free copy-paste webhook receivers (Node/Python/PHP)","description":"Zero-dependency HMAC-SHA256 verification snippets with the live signature header baked in, plus create/test instructions. ?lang=node|python|php narrows to one language.","responses":{"200":{"description":"Snippets document","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/checkout":{"get":{"operationId":"GET_v1_checkout","security":[],"summary":"Merchant checkout — accept XMR/ZEC with zero custody (free info)","description":"Product summary for Seneschal Checkout: non-custodial Monero/Zcash invoices paying the merchant's OWN watched wallet, detected via the view key the watch already holds, with invoice_seen/invoice_paid webhooks and a flat settlement fee (default $0.02) off the watch credit meter — never a percentage. Lists all endpoints, fees and limits.","responses":{"200":{"description":"Checkout product summary","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/checkout/invoices":{"post":{"operationId":"POST_v1_checkout_invoices","security":[],"summary":"Create a checkout invoice (free; auth via watch token or checkout key)","description":"Creates an exact-amount XMR/ZEC invoice paying the merchant's watched wallet: Monero amounts carry a unique invoice tag in the low digits, Zcash invoices a memo token. Returns a rate locked for the TTL, a wallet URI (monero:/ZIP-321) and a hosted pay page URL (seneschal.space/pay/#{invoiceId}). Authenticate with { watchId, watchToken } server-side, or a restricted { checkoutKey } (mint via POST /v1/checkout/keys) safe for client-side embeds. When the payment confirms, an invoice_paid webhook signed with the existing watch secret fires and the flat settlement fee is debited from the watch meter.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["amountUsdCents"],"properties":{"checkoutKey":{"type":"string","description":"Restricted ck_… key (alternative to watchId+watchToken)."},"watchId":{"type":"string","format":"uuid"},"watchToken":{"type":"string"},"amountUsdCents":{"type":"integer","minimum":25,"description":"Sale amount in US cents (500 = $5.00)."},"chain":{"type":"string","enum":["monero","zcash"],"description":"Must match the watch chain; defaults to it."},"orderId":{"type":"string","maxLength":120,"description":"Merchant order reference, echoed in webhooks."},"description":{"type":"string","maxLength":200,"description":"Shown to the payer on the pay page."},"successUrl":{"type":"string","description":"Buyer redirect after payment confirms."},"ttlMinutes":{"type":"integer","minimum":5,"maximum":1440,"description":"Invoice lifetime (default 30); the rate stays locked throughout."}}}}}},"responses":{"201":{"description":"Invoice with payTo, exact amount, memo, uri, payUrl, instructions","content":{"application/json":{"schema":{"type":"object"}}}}}},"get":{"operationId":"GET_v1_checkout_invoices","security":[],"summary":"List invoices for a watch (merchant; x-watch-token header)","description":"Recent invoices for ?watchId=… including webhook delivery bookkeeping. Optional ?status= filter.","responses":{"200":{"description":"Invoice list","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/checkout/invoices/{invoiceId}":{"get":{"operationId":"GET_v1_checkout_invoice","security":[],"summary":"Public invoice status (free — the invoiceId is the capability)","description":"Live status for one invoice: pending → confirming (with confirmation counts) → paid | underpaid | expired | cancelled. No auth — buyers and buyer agents poll this; the hosted pay page is a thin client over it.","parameters":[{"name":"invoiceId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Buyer-safe invoice view","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/checkout/keys":{"post":{"operationId":"POST_v1_checkout_keys","security":[],"summary":"Mint a restricted checkout key (free; watch token auth)","description":"Returns a ck_… key (shown once) that can ONLY create invoices paying this watch's wallet — optionally amount-capped — so it is safe to embed in a static site, a bot, or the pay button script tag. Revoke any time with DELETE /v1/checkout/keys/{keyId}.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["watchId","watchToken"],"properties":{"watchId":{"type":"string","format":"uuid"},"watchToken":{"type":"string"},"label":{"type":"string","maxLength":80},"maxAmountUsdCents":{"type":"integer","minimum":1,"description":"Optional per-invoice cap for invoices created with this key."}}}}}},"responses":{"201":{"description":"Checkout key (raw key shown exactly once)","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/v1/private/derive-viewkey":{"post":{"operationId":"POST_v1_private_derive_viewkey","security":[],"summary":"Free, rate-limited Zcash UFVK derivation","description":"Derives a Zcash unified full viewing key from a seed phrase so it can be handed to POST /v1/private/watch. Prefer the offline derivation documented in the response; this endpoint exists for low-stakes convenience and is rate-limited per IP.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["chain"],"properties":{"chain":{"type":"string","enum":["zcash"],"description":"Currently Zcash only (UFVK derivation)."},"seed":{"type":"string","description":"BIP-39 mnemonic to derive from. Prefer running this derivation offline — see the docs link in the response."},"account":{"type":"integer","description":"ZIP-32 account index (default 0)."}}}}}},"responses":{"200":{"description":"Derived view key","content":{"application/json":{"schema":{"type":"object"}}}}}}}}}