# Seneschal Data (remote · mcp.seneschal.space)

Monero/Zcash payment webhooks + DeFi liquidation & Ethereum builder data over MCP. Free tier; x402.

- Trust score: 65/100 (medium)
- Change this week: +4
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `mcp.seneschal.space`: 65/100 (this document), [markdown](https://verifymcp.io/servers/rotwang9000-seneschal-data/mcp.md), [page](https://verifymcp.io/servers/rotwang9000-seneschal-data/mcp)

## Channel facts

- Endpoint: `https://mcp.seneschal.space/`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.1.1`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 63/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 35 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 52/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 6173 tokens (~176/item across 35 items; 35 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 99/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 97% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http rotwang9000-seneschal-data https://mcp.seneschal.space/
```

### Codex

```toml
[mcp_servers.rotwang9000-seneschal-data]
url = "https://mcp.seneschal.space/"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "rotwang9000-seneschal-data": {
      "type": "remote",
      "url": "https://mcp.seneschal.space/",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add rotwang9000-seneschal-data --url https://mcp.seneschal.space/ --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  rotwang9000-seneschal-data:
    url: "https://mcp.seneschal.space/"
```

### Other

```json
{
  "mcpServers": {
    "rotwang9000-seneschal-data": {
      "type": "http",
      "url": "https://mcp.seneschal.space/"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 65, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-01 (score 64, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 63, +2)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 61, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 61, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-28 (score 60, −1)

- [functional regression] Schema quality: 5474 → 6173

### 2026-07-27 (score 61, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 61)

First indexed and scored.

## MCP tools (35)

### `seneschal_health` (~26 tokens)

Service health

Returns table sizes and data-source freshness timestamps for the Seneschal Data backend.

### `seneschal_list_at_risk_borrowers` (~131 tokens)

List at-risk borrowers

Current snapshot of borrowers across Aave, Morpho, and Spark whose health factor sits below `max_hf`, sorted ascending. Use `min_debt_usd` to ignore dust positions.

Input parameters:

- `limit`: Max rows. Default 50, max 500.
- `max_hf`: Return only borrowers with health factor strictly less than this. Default: no cap.
- `min_debt_usd`: Ignore positions with debt smaller than this many USD. Default: 0.
- `protocol` (string): Restrict to one protocol; omit for all.

### `seneschal_list_borrowers` (~201 tokens)

List borrowers (generic)

Generic discovery surface over the borrower snapshot table. Like `seneschal_list_at_risk_borrowers` but with both lower and upper HF bounds, optional max-debt cap, configurable sort field/direction, and offset-based pagination. Use this to walk the catalogue without knowing borrower addresses in advance.

Input parameters:

- `limit`: Max rows per page. Default 50, max 500.
- `max_debt_usd`: Maximum debt in USD (default unbounded).
- `max_hf`: Exclusive upper bound on health factor.
- `min_debt_usd`: Minimum debt in USD (default 0).
- `min_hf`: Inclusive lower bound on health factor.
- `offset`: Pagination offset. Default 0.
- `protocol` (string): Restrict to one protocol; omit for all.
- `sort_by` (string): Default 'health_factor'.
- `sort_dir` (string): Default 'asc'.

### `seneschal_recent_liquidations` (~99 tokens)

Recent liquidations

Liquidations observed in the recent past, including both ones won by other liquidators (`outcome=won_by_other`) and ones we ourselves landed (`outcome=we_landed`). Sorted by timestamp descending.

Input parameters:

- `limit`: Max rows. Default 50, max 500.
- `protocol` (string): Restrict to one protocol.
- `since_ms`: Unix epoch milliseconds. Defaults to now − 24h.

### `seneschal_get_borrower` (~65 tokens)

Get borrower snapshot

Returns the latest known state of `address` across every protocol where we have data (Aave, Morpho, Spark). Pass the EOA / contract address as a 0x-prefixed 20-byte hex string.

Input parameters:

- `address` (string, required)

### `seneschal_get_borrower_history` (~142 tokens)

Get borrower history

Returns a time series of (timestamp, health_factor, collateral_usd, debt_usd) observations for `address` on `protocol`. Granularity defaults to raw observations; use `hour` or `day` for chart-friendly buckets.

Input parameters:

- `address` (string, required)
- `granularity` (string): Bucket size; default raw.
- `limit`: Max rows fetched from history table before bucketing.
- `protocol` (string, required): Only aave and morpho have history tables.
- `since_ms`: Unix epoch ms. Defaults to now − 7d.
- `until_ms`: Unix epoch ms. Defaults to now.

### `seneschal_builder_leaderboard` (~81 tokens)

Builder leaderboard

Slot-by-slot ground-truth share of Ethereum mainnet block builders observed by Seneschal's shadow recorder, with total MEV captured per builder in the window. Cached for 60s.

Input parameters:

- `limit`: Top-N builders to return. Default 20.
- `window` (string): Lookback window. Default 24h.

### `seneschal_stats_overview` (~90 tokens)

Public stats overview

Aggregate snapshot powering the public stats dashboard at stats.seneschal.space: total positions tracked, debt under watch, HF distribution histogram, top-10 at-risk borrowers, 30-day liquidations-per-day series, builder market share for 24h/7d/30d windows, and 10 most recent on-chain liquidations. One call returns everything needed to render the dashboard.

### `seneschal_paywall_info` (~89 tokens)

Paywall / x402 metadata

Returns the protocol, network, recipient address, and per-call price for every gated endpoint on this data backend. Free to call. Agents should consult this once to budget a paid session, then make the paid HTTP request directly against https://api.seneschal.space/v1/premium/opportunities with an x402 PAYMENT-SIGNATURE header (see https://docs.x402.org).

### `seneschal_premium_opportunities` (~201 tokens)

Premium opportunity feed (paid)

Top at-risk borrowers across Aave + Morpho + Spark, annotated with realised 7d market intel (top liquidators, win rate, our own attempt outcomes) and ranked by expected liquidation value. Behind an x402 paywall: free agents see a paywall stub describing how to pay; paying agents fetch the full feed at https://api.seneschal.space/v1/premium/opportunities. Use seneschal_paywall_info to inspect the price/network/recipient before opening a session.

Input parameters:

- `limit`: Maximum opportunities returned (1..500). Defaults to 200.
- `liquidation_bonus`: Override the assumed liquidation bonus (e.g. 0.05 for 5%). Defaults to 0.06.
- `min_debt_usd`: Minimum debt-USD to include. Defaults to 0.
- `since_ms`: Lookback window start (epoch ms). Defaults to now − 7d.

### `seneschal_premium_builder_stats` (~132 tokens)

Premium per-builder bid distribution (paid)

Per-builder bid distribution (p25/median/p75/p90/p99/max ETH) and a 24-element hourly slot histogram over a configurable window. Sourced from the Seneschal shadow recorder so it covers every observed slot, not just landed blocks. Behind an x402 paywall at the REST surface; this MCP tool serves the data directly to authenticated agents.

Input parameters:

- `limit`: Max builders returned (1..100). Defaults to 25.
- `window_ms`: Lookback window in milliseconds. Defaults to 7 days. Clamped to [1h, 30d].

### `seneschal_counter_mev` (~270 tokens)

Counter-MEV / approval-risk intelligence

Defensive intel for MEV searchers and bot operators. Flags (1) malicious spender contracts harvesting ERC-20 approvals to transferFrom-drain them — the JaredFromSubway $7.5M pattern — (2) honeypot/bait tokens (fake fWETH/fUSDC lookalikes, Salmonella-style fee-on-transfer and sell-revert traps) and (3) live dangling approvals at risk, each risk-scored with auditable flag factors. view="summary" returns counts + score distribution + a teaser; view="detail" returns the full uncapped feed (paid via x402 at GET /v1/premium/counter-mev; served here for agents); pass `address` to check one address. Verify on-chain before acting.

Input parameters:

- `address` (string): If set, return a single-address risk lookup instead of the feed.
- `category` (string): detail view: restrict to one category. Default all.
- `limit`: detail view: per-category row cap (1..500). Default 200.
- `min_score`: detail view: drop entries below this risk score (0..100). Default 0.
- `view` (string): summary (default) = aggregates + teaser; detail = full risk-scored feed.

### `seneschal_puzzle_risk` (~281 tokens)

Puzzle / bounty contract risk

For puzzle/CTF/bounty contracts: classifies each as locked_no_payout (funded but a correct solution pays nothing — the funds can never leave, e.g. TeikhosBounty), frontrun_bait (pays msg.sender/tx.origin on a calldata condition → broadcasting the solution publicly will be front-run; submit privately), owner_only_payout, claimable, indeterminate or unfunded — from a verified-source payout-path analysis + a bytecode value-exit scan. view="summary" returns per-class counts + ETH-at-stake rollups + a teaser; view="detail" returns the full annotated watchlist (paid via x402 at GET /v1/premium/puzzle-risk; served here for agents); pass `address` for a single-contract verdict. Heuristic — verify on-chain before acting.

Input parameters:

- `address` (string): If set, return a single-contract verdict instead of the feed.
- `classification` (string): detail view: restrict to one class. Default all.
- `funded_only` (boolean): detail view: drop unfunded entries.
- `limit`: detail view: row cap (1..500). Default 1000-capped.
- `view` (string): summary (default) = counts + rollups + teaser; detail = full annotated watchlist.

### `seneschal_private_relay` (~208 tokens)

Private transaction relay

Front-run protection for any sensitive tx (a puzzle/CTF/bounty claim, a large approval revoke, a first-touch interaction, an NFT mint): submit a LOCALLY-signed raw transaction and we forward it only to private block builders (Flashbots, Titan) + our own rbuilder — NEVER the public mempool. You keep custody (only signed bytes leave your machine; any change breaks the signature). view="info" returns the builder set + price + caveats; view="inspect" with raw_tx decodes/validates the signed tx and previews its target builders WITHOUT relaying (free, so you can confirm before paying). The paid relay itself is POST /v1/premium/private-relay via x402.

Input parameters:

- `raw_tx` (string): inspect view: your locally-signed raw transaction.
- `view` (string): info (default) = builders/price/caveats; inspect = decode + preview a signed tx (needs raw_tx).

### `seneschal_q` (~266 tokens)

Penny Oracle: atomic single-fact endpoints (DeFi + privacy chains)

Atomic single-fact endpoints designed for tight agent loops. Each answers ONE yes/no or one number — sub-50ms, flat $0.001/call at the REST surface. Two families: (1) DeFi facts sourced from our SQLite + shadow-blocks recorder (liquidatable, at-risk-count, recent-liquidations, top-builder, builder-share, builder-bid, block-value, cheapest-flashloan, data-freshness, address-risk, base-fee, proposer-payment); (2) privacy-chain facts sourced from Seneschal-operated full nodes — Monero (xmr/height, xmr/mempool, xmr/fee, xmr/fee-estimate, xmr/last-block) and Zcash (zec/height, zec/mempool, zec/last-block, zec/pools). Consult /v1/q for per-question input lists and live chain availability.

Input parameters:

- `params` (object): Per-question parameter object. DeFi questions take addr/protocol/window/builder/pct/etc. Privacy-chain questions currently take no params.
- `question` (string, required): Which atomic fact to ask. See description for the list. Privacy-chain questions use `xmr/<name>` or `zec/<name>`.

### `seneschal_private_watch_info` (~41 tokens)

Private watch — service metadata

Returns the current price, supported chains, NFPT upstream health, and security notes for the view-key payment-monitoring service. Free to call.

### `seneschal_private_watch_create` (~299 tokens)

Create a Monero/Zcash payment watch (paid via x402 at REST)

Subscribe a Monero or Zcash address to view-key-based payment monitoring. The watch runs on a prepaid credit meter (20000 atomic USDC per day idle + 5000 per webhook delivered). Creation at the REST surface (POST /v1/private/watch) is paywalled at $0.10 via x402 and seeds the watch with $0.10 of credit. Receiver gets HMAC-signed webhooks plus a 'credit' block on every body; a 'low_credit' warning fires once before the meter expires. Top up via /v1/private/topup, topup-1, or topup-5. View keys are AES-256-GCM encrypted at rest.

Input parameters:

- `address` (string, required): Public address for the chain. Monero: standard 95-char base58. Zcash: u1*, t1*, t3*, zs1*.
- `birthdayHeight` (integer): Block height the wallet was created at. Monero: scans forward from this height. Zcash: defaults to NU6 (3_042_000) if unspecified.
- `chain` (string, required): Which privacy chain to monitor.
- `viewKey` (string, required): Monero: 64-hex private view key. Zcash: UFVK starting with uview1.
- `webhookUrl` (string, required): HTTPS endpoint we POST signed webhooks to. Private RFC1918/localhost addresses are rejected.

### `seneschal_private_watch_topup` (~196 tokens)

Top up an existing watch (paid via x402 at REST)

Add prepaid credit to an existing Private Watch. Three tiers — $0.10 (default), $1.00, and $5.00 — each settling at the matching REST path (/v1/private/topup, /topup-1, /topup-5). Credit is in atomic USDC ($0.02/day idle, $0.005/call). This tool returns the URL the agent should POST to with its x402 client; it does NOT settle payment itself.

Input parameters:

- `tier` (string): Top-up size. 10c = $0.10 (≈5 days idle), 1 = $1.00 (≈50 days), 5 = $5.00 (≈250 days).
- `watchId` (string, required): The watchId returned from create.
- `watchToken` (string, required): The watchToken returned from create (constant-time compared at the REST surface).

### `seneschal_private_watch_create_crypto` (~275 tokens)

Create a watch paying in Monero or Zcash (no USDC, no EVM wallet)

The all-coin onboarding path: POST /v1/private/watch-crypto creates a Monero/Zcash payment watch AND returns a coin payment quote in one call — no x402, no USDC, no EVM wallet anywhere in the flow. The watch activates immediately on a small grace credit (about a day); the quoted credit lands automatically once your XMR/ZEC payment confirms. Returns the FREE endpoint + body to call. Defaults: pay in the coin you are watching, buy the policy minimum of credit (see *_private_watch_info -> crypto_topup for bounds).

Input parameters:

- `address` (string, required): Public address for the chain. Monero: standard 95-char base58. Zcash: u1*, t1*, t3*, zs1*.
- `amountUsdCents` (integer): Credit to buy in US cents; defaults to the server minimum.
- `birthdayHeight` (integer): Optional scan-from height.
- `chain` (string, required): Which privacy chain to monitor.
- `payWith` (string): Coin to pay in; defaults to `chain`.
- `viewKey` (string, required): Monero: 64-hex private view key. Zcash: UFVK starting with uview1.
- `webhookUrl` (string, required): HTTPS endpoint we POST signed webhooks to.

### `seneschal_private_watch_topup_crypto` (~243 tokens)

Top up an existing watch by paying in Monero or Zcash (FREE to quote)

Fund a Private Watch by paying in XMR or ZEC instead of USDC. Returns the FREE endpoint to call: POST /v1/private/topup-crypto issues a QUOTE — a receiving address, the exact coin amount to send (Monero: the amount carries a unique invoice tag; Zcash: a memo token), and a USD rate locked for a short window. Send the payment, then poll GET /v1/private/topup-crypto/{quoteId} (header x-watch-token) until status=settled. We detect the payment with the same view-key scanner the product sells and never hold a spend key. No x402, no API key — you pay in coin.

Input parameters:

- `amountUsdCents` (integer, required): Credit to buy, in US cents (e.g. 500 = $5.00). Min/max enforced server-side; see the *_private_watch_info tool -> crypto_topup.
- `chain` (string, required): Which privacy coin you will pay in.
- `watchId` (string, required): The watchId returned from create.
- `watchToken` (string, required): The watchToken returned from create.

### `seneschal_checkout_invoice_create` (~387 tokens)

Charge someone in Monero/Zcash (non-custodial checkout invoice)

Accept an XMR/ZEC payment INTO YOUR OWN WALLET: creates a checkout invoice against your Private Watch (your address, your view key). Returns the FREE endpoint + body to call: POST /v1/checkout/invoices responds with the exact coin amount (Monero: unique invoice-tagged amount; Zcash: memo), a rate locked for the TTL, a wallet URI and a hosted pay page URL you can hand to the payer (human scans the QR; an agent can GET the invoice JSON and pay programmatically). When the payment confirms you get an invoice_paid webhook signed with your existing watch secret, and a flat settlement fee (~$0.02) is debited from the watch credit meter — never a percentage. Use your watchId+watchToken server-side, or a restricted checkoutKey (mint one with POST /v1/checkout/keys) anywhere you cannot keep secrets.

Input parameters:

- `amountUsdCents` (integer, required): Sale amount in US cents (e.g. 500 = $5.00). Converted to coin at a locked rate.
- `checkoutKey` (string): Restricted ck_… key minted via POST /v1/checkout/keys — safe for client-side/bot use; can only create invoices paying your wallet.
- `description` (string): Shown to the payer on the hosted pay page.
- `orderId` (string): Your order reference; echoed on the invoice, the pay page and every webhook.
- `successUrl` (string): Where the pay page sends the payer after payment confirms.
- `ttlMinutes` (integer): Invoice lifetime (default 30). The exchange rate is locked for the whole TTL.
- `watchId` (string): Your watchId (pair with watchToken). Omit when using checkoutKey.
- `watchToken` (string): Your watchToken. Keep server-side.

### `seneschal_checkout_invoice_status` (~81 tokens)

Check a checkout invoice (public, free)

Poll the state of a checkout invoice: pending (waiting for payment) -> confirming (payment seen, counting confirmations) -> paid | underpaid | expired | cancelled. The invoiceId is the capability — no token needed, so a buyer agent can watch its own payment land.

Input parameters:

- `invoiceId` (string, required): The invoiceId returned from create.

### `seneschal_private_watch_historical` (~208 tokens)

One-off historical scan (paid via x402 at REST)

Return all spendable + spent notes for a view key without setting up a watch. The view key never touches our SQLite — it flows through to NFPT in memory only. Use this when you want to reconcile a wallet at a point in time. Priced at $0.50 / call at the REST surface.

Input parameters:

- `address` (string, required): Address whose notes you want.
- `birthdayHeight` (integer): Skip scanning earlier blocks. Zcash auto-detects when omitted (slower but always correct).
- `chain` (string, required): Which privacy chain to scan.
- `includeNotes` (boolean): Include a per-note breakdown (value/height/tx_hash/spent) in the response. Default false — totals only.
- `toHeight` (integer): Stop scanning at this block height. Defaults to chain tip.
- `viewKey` (string, required): Monero: 64-hex private view key. Zcash: UFVK starting with uview1.

### `seneschal_private_watch_derive_viewkey` (~192 tokens)

Derive a Zcash UFVK from a BIP-39 mnemonic (FREE, rate-limited)

Hands a 12- or 24-word seed phrase to NFPT's orchard-scanner CLI, returns the matching UFVK. FREE but rate-limited to 6/minute/IP. Be loud about the security trade-off: the phrase transits our server (no logging, no persistence) but a network observer between you and us would see the bytes. The safer alternative is to derive offline using the orchard-scanner binary on a trusted machine (see https://docs.seneschal.space/derive-locally). A UFVK is read-only; it cannot spend funds.

Input parameters:

- `chain` (string, required): Currently only Zcash (Orchard) UFVK derivation is supported; Monero coming later.
- `network` (string): Zcash network the wallet belongs to.
- `phrase` (string, required): 12- or 24-word BIP-39 mnemonic.

### `seneschal_board_list` (~70 tokens)

Public notice board — list boards (FREE)

List the public notice boards and how many notices each holds. Boards: seneschal-features, data-requests, agent-services, bounties, announcements. Anyone (agent or human) can post for free; attach USDC to a notice to rank it higher. Reads are free.

### `seneschal_board_read` (~59 tokens)

Public notice board — read a board (FREE)

Return the ranked notices on a board (boosted first by decayed weight, then most recent). Free to call.

Input parameters:

- `board` (string, required): Which board to read.
- `limit` (integer): Max notices (default 50).

### `seneschal_board_post` (~150 tokens)

Public notice board — post a notice (FREE, via REST)

Prepare a free notice. Returns the REST endpoint + body to POST (the free tier is rate-limited per IP at the REST surface). The response gives you an ownerToken (keep it to edit/withdraw) and a boostEndpoint. New notices start at the bottom — boost to rank up.

Input parameters:

- `board` (string, required): Which board to post to.
- `body` (string, required): The notice text.
- `contact` (string): Optional contact handle or URL.
- `handle` (string): Display name (default anon).
- `tags` (array): Up to 5 tags.
- `title` (string, required): Short title.
- `url` (string): Optional http(s) link.

### `seneschal_board_reply` (~164 tokens)

Public notice board — reply in a thread (FREE, via REST)

Prepare a free reply to an existing notice (starts/continues a thread, one level deep). Returns the REST endpoint + body to POST. Title is optional — it defaults to "Re: <thread title>". Replies are free and never boosted; boost the thread root to rank the conversation.

Input parameters:

- `board` (string, required): The board the notice is on.
- `body` (string, required): The reply text.
- `handle` (string): Display name (default anon).
- `id` (string, required): The notice id to reply to (from board_read).
- `tags` (array): Up to 5 tags.
- `title` (string): Optional title (default "Re: <thread title>").
- `url` (string): Optional http(s) link.

### `seneschal_board_boost` (~119 tokens)

Public notice board — boost a notice (paid via x402 at REST)

Rank a notice higher by attaching USDC. Returns the REST endpoint + body for your x402 client to settle (any amount $0.1-$25). Anyone can boost any notice. This tool does NOT settle payment itself.

Input parameters:

- `amountAtomic` (integer, required): Boost amount in atomic USDC (6 decimals). Min 100000 ($0.1), max 25000000 ($25).
- `board` (string, required): The board the notice is on.
- `id` (string, required): The notice id (from board_read).

### `seneschal_zecmon_info` (~122 tokens)

Zecmon — scanner health, limits and endpoint map

Live chain tip, scanner reachability and the current free-tier limits for Zcash UFVK scanning. Free to call. Start here before scanning. FREE and rate-limited (20 scan starts / 15 min, shared across all agents). For anything scheduled, bulk or latency-sensitive use https://api.seneschal.space/v1/private/historical (same scan, one paid x402 call) or — better — https://api.seneschal.space/v1/private/info to get a webhook when funds land instead of polling at all.

### `seneschal_zecmon_scan` (~366 tokens)

Zecmon — open a UFVK scan job (FREE, rate-limited)

Open a scan of a Zcash UFVK. Returns { jobId, jobToken } in milliseconds — the scan itself runs behind it, so poll seneschal_zecmon_scan_status. Omitting birthdayHeight makes the scanner walk BACKWARDS from the chain tip to find the wallet's first note, which is slower but always correct. FREE and rate-limited (20 scan starts / 15 min, shared across all agents). For anything scheduled, bulk or latency-sensitive use https://api.seneschal.space/v1/private/historical (same scan, one paid x402 call) or — better — https://api.seneschal.space/v1/private/info to get a webhook when funds land instead of polling at all.

Input parameters:

- `birthdayHeight` (integer): Block height to start from, if known. Omit to auto-detect by walking backwards from the tip.
- `deepScan` (boolean): Sweep BELOW NU6, all the way back to NU5. Only needed for wallets with no activity in roughly the last year. Measured at ~38 minutes of scanner time (the pre-2.2M chain scans ~10x slower per block),…
- `purgeCache` (boolean): Throw away any stored result for this key AND any cached birthday, then scan from scratch. Use when a previous result looks wrong — NOT routinely, since it turns a free cache hit into a full chain wa…
- `ufvk` (string, required): Zcash unified full viewing key, starting with uview1. Read-only — never accept a seed phrase here.

### `seneschal_zecmon_scan_status` (~145 tokens)

Zecmon — poll a scan job

Poll a scan opened by zecmon_scan. Returns phase, progress and the notes found SO FAR — notes accumulate during the scan, so you can read them before it finishes. During "detecting-birthday" the response carries the descending backwards window; during "scanning" it carries birthday → tip coverage. Poll no faster than every 1.5s. Free.

Input parameters:

- `includeNotes` (boolean): Include the per-note breakdown. Default true; set false for progress only.
- `jobId` (string, required): From zecmon_scan.
- `jobToken` (string, required): From zecmon_scan — the only credential for this job.

### `seneschal_zecmon_scan_cancel` (~66 tokens)

Zecmon — cancel a scan job

Stop a running scan and release the scanner slot. Do this as soon as you stop caring about a scan — concurrency is finite and an abandoned chain walk blocks someone else. Free.

Input parameters:

- `jobId` (string, required)
- `jobToken` (string, required)

### `seneschal_flashloan_providers` (~176 tokens)

Flash loan provider catalogue

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 searcher agents picking the cheapest viable provider for a liquidation or arbitrage strategy. The catalogue is editorially open: filter by chain, max fee, or multi-asset support.

Input parameters:

- `chain` (string): Chain key, default "ethereum". Currently only ethereum is catalogued.
- `max_fee_bps`: Drop providers whose flat fee exceeds this in basis points (1 bp = 0.01%).
- `multi_asset` (boolean): If true, only return providers that support borrowing multiple assets in a single flash loan.

### `seneschal_agent_directory` (~532 tokens)

Agent directory (Gopher-over-HTTPS)

Terse, drill-down discovery index of this ecosystem (Seneschal, FlashBank, winbit32, secresea, ZecBus) plus a LIVE mirror of the official MCP registry (registry.modelcontextprotocol.io) — the same directory served over HTTPS at https://seneschal.space/.well-known/agent.gopher, callable here so you never leave the MCP session. Start with section="root" to see the top-level menu, then call again with section="seneschal"/"flashbank"/"winbit32"/"secresea"/"zecbus" to drill into a project. Each project exposes About / Agents / Actions — drill them with section="<site>/about", "<site>/agents" or "<site>/actions" (e.g. "winbit32/actions"). Seneschal additionally drills into its own services with section="seneschal/<service>" where <service> is one of private-watch, checkout, oracle, shovels, builder, data, paymaster, board, ironwood, mcp — every website + MCP capability, grouped and priced. section="registry" browses connectable third-party MCP servers (use `cursor` to page); section="about"/"agents" is the directory’s own prose. format="gopher" (default) is the compact RFC-1436 menu; format="json" returns a structured {title, items[]}. A discovery layer, not a replacement for MCP — use it to FIND tools, then connect. Free, no payment.

Input parameters:

- `cursor` (string): Pagination cursor for the "registry" section, taken from a previous "More servers" entry.
- `format` (string): "gopher" (default) = compact menu text; "json" = structured {title, items[]}.
- `section` (string): Which directory node to fetch. Default "root". Top level: root, seneschal, flashbank, winbit32, secresea, zecbus, registry, about, agents. Drill a project with "<site>/about", "<site>/agents" or "<si…

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/rotwang9000-seneschal-data/mcp#diagnostics

## Score history

- 2026-08-03: 65
- 2026-08-02: 64
- 2026-08-01: 64
- 2026-07-31: 63
- 2026-07-30: 61
- 2026-07-29: 61
- 2026-07-28: 60
- 2026-07-27: 61
- 2026-07-26: 61

## Links

- Remote endpoint: https://mcp.seneschal.space/
- Repository: https://github.com/Rotwang9000/seneschal-data-api
- Website: https://seneschal.space/
- Changelog RSS feed: https://verifymcp.io/servers/rotwang9000-seneschal-data/mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/rotwang9000-seneschal-data/mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/rotwang9000-seneschal-data/mcp
