{
  "markdown": "# Undertow MCP | Market liquidity and exit-cost tools\n\n**Endpoint:** `https://api.seiche.info/undertow/mcp` (streamable HTTP, no install)\n\n**Start with a question:** [Compare BTC exit estimates in your browser](https://liquilens.in/start/?task=exit).\nChoose a dollar size and click to read the current published venue estimates,\nsnapshot date and method. No account, key, wallet or client installation is\nneeded for this example. The result is a depth-based estimate, not an executable\nquote. The same page provides Codex, Claude Code, Cursor and VS Code setup.\n\n**Try it live:** [liquilens-undertow.com/developers](https://liquilens-undertow.com/developers/) ·\n**API catalog:** [api.seiche.info/undertow](https://api.seiche.info/undertow/)\n\nUndertow exposes estimated exit cost by position size and venue, the concentration of\nquoted depth, realized depth-collapse episodes, and liquidity tiers across market segments.\nThis MCP 1.10.0 endpoint exposes 18 read-only tools, split into 10 public and 8 subscriber\ntools, plus 3 guided prompts. Its capability inventory is pinned to liquilens-undertow\ncommit `9d1fedc28dca133fe6f9e018af1e381e247b8c9b`, the hosted implementation at\n`deploy/hetzner/undertow-mcp`. The stdio discovery server in\n`undertow_mm/mcp_server.py` is a separate discovery surface; it is neither\nthis registry listing nor the public stdio adapter provided here.\n\n## Add it\n\nClaude Code:\n\n    claude mcp add --transport http undertow https://api.seiche.info/undertow/mcp\n\nClaude.ai / ChatGPT / Cursor: add a custom connector or MCP server with the URL above.\nNo key and no wallet for the free surface.\n\nThis repository contains the discovery manifest, documentation and an optional\nanonymous stdio adapter for the hosted service. The official registry serves\n[`io.github.beepboop2025/undertow` version 1.10.0](https://registry.modelcontextprotocol.io/v0.1/servers/io.github.beepboop2025%2Fundertow/versions/latest).\n\n## Local stdio and container installation\n\nThe direct hosted URL above remains the simplest connection. For clients that\nrequire stdio, clone this repository at a reviewed commit and use Python 3.12+\nand [uv](https://docs.astral.sh/uv/):\n\n```sh\nuv sync --locked\nuv run --locked undertow-mcp\n```\n\nA Claude Desktop configuration can use `uv` as its command and\n`[\"run\", \"--directory\", \"/absolute/path/to/undertow-mcp\", \"--locked\", \"undertow-mcp\"]`\nas its arguments. The stdio adapter exposes only the 10 anonymous tools and\nthree prompts; subscriber access uses the direct hosted URL instead.\n\nFor Docker and Glama's container build:\n\n```sh\ndocker build -t undertow-mcp .\ndocker run --rm -i undertow-mcp\n```\n\nThe root Dockerfile runs as an unprivileged user and starts stdio directly.\nNo API key, bearer token, wallet, port, volume or environment setting is needed.\nOutbound HTTPS access to the fixed `api.seiche.info` endpoint is required.\nRedirects, environment proxies and arbitrary upstream URLs are disabled.\nRequests are capped at 64 KiB, responses at 2 MiB, and each upstream operation\nat 10 seconds including queue wait. No automatic retries or response cache can\nhide outages or spend a quota twice. Upstream version/catalog drift fails closed.\nTool results, native `isError` values and rights refusals are preserved.\n\nA Glama maintainer can configure the root Dockerfile, complete its build test,\nand publish a Glama release from the listing's admin page. A GitHub commit or\nrelease does not create a Glama release. This repository does not claim a grade\nuntil Glama has actually rescanned and inspected it. See\n[Glama's release guide](https://glama.ai/blog/2026-03-15-how-to-make-a-release).\n\n## Hosted protocol compatibility\n\n- `2026-07-28`: stateless requests use `server/discover`, per-request `_meta`,\n  `MCP-Protocol-Version`, and mirrored `Mcp-Method` / `Mcp-Name` routing headers.\n- `2025-11-25`, `2025-06-18`, and `2025-03-26`: retained legacy initialization,\n  tools, prompts, notifications, batching, and ping behavior.\n- Discovery identifies all ten public and eight subscriber tools. Anonymous\n  `tools/list` returns only the public inventory; entitlement is checked fresh on every\n  subscriber request.\n- `resources/list` and `resources/templates/list` return explicit empty catalogs.\n  `resources/read` returns a not-found error and never invents a resource.\n\n## Example\n\nIn the snapshot generated at **2026-08-08T15:01:22Z**, selling $1,000,000 of BTC\nat the selected **$1,000,000 published size rung** cost **2.386 bp on Binance and\n13.623 bp on Bitfinex**: about $238.60 against $1,362.30. Gemini was the dearest\nobserved venue in that same snapshot at 25.852 bp, or about $2,585.20.\n\nVenue rankings can change during the day, and those differences are not visible in a\nsingle consolidated price. Undertow publishes the observation time and venue inputs with\nthe estimate.\n\n## Tools\n\n| Tool | What it serves | Surface |\n|---|---|---|\n| `agent_access_status` | Your current tier, daily meter, grants, and the exact route to Agent or Desk access | free |\n| `board_full` | Every measure with its stress percentile or ACCRUING label, limits and analyst note | subscriber |\n| `corporate_transmission` | Whether funding stress is reaching nonfinancial firms | subscriber |\n| `depth_episodes` | Realized depth-collapse episodes with onset, trough, drawdown and recovery, against thresholds declared before any episode accrued | free |\n| `divergence_status` | Compact comparison of corporate and household transmission regimes | subscriber |\n| `exit_cost` | Per-venue sell cost in basis points at the nearest published size rung, cheapest and dearest venue with approximate dollar cost, and the venue spread | free |\n| `exit_desk_full` | BTC and ETH at every published rung, plus the venue-failure withdrawal scenario | subscriber |\n| `exit_schedule` | Position-sized hour-by-hour liquidation schedule beside immediate and TWAP baselines | subscriber |\n| `household_credit` | Whether funding stress is reaching household balance sheets | subscriber |\n| `latest_article` | The exact reviewed daily market-liquidity editorial with its evidence clock and publication authority | free |\n| `liquidity_tiers` | A liquidity tier per market segment (UST, IG, HY, equities, ETF, FX, China basin, crypto) with the funding-stress overlay | free |\n| `sealed_record` | The sealed forward-calls record, hash-chained and signed before outcomes, misses kept | free |\n| `tide_clock` | Clock-phase liquidity map and exit-cost-by-phase for BTC or ETH perpetuals | subscriber |\n| `trade_safety_exit_context` | Exact-rung BTC/USD sell context with request, PIT, rights, clock and depth checks; unavailable inputs remain unavailable, never order clearance | free |\n| `unwind_stress` | Full institutional unwind and forced-sale stress pack | subscriber |\n| `unwind_watch` | Banded public watch over institutional unwind time and forced-sale pressure, with exact sensitive quantities withheld | free |\n| `venue_concentration` | The BTC depth backbone: top venue share of aggregate depth, HHI, effective venue count, per-venue depth in USD | free |\n| `venue_price_reconciliation` | A consensus mark weighted by resting depth over squared half-spread, plus the gap between the deepest venue and consensus | free |\n\n## Prompts\n\n| Prompt | Guided playbook |\n|---|---|\n| `can_this_book_exit` | Compare watched-book door width, unwind horizon, margin clock, venue concentration, and realized depth collapses |\n| `exit_cost_check` | Price a position-sized exit across venues and identify the observed depth limitations |\n| `market_liquidity_briefing` | Read the market-level liquidity board, funding overlay, concentration, and current exit-cost evidence together |\n\nCommodity futures are intentionally absent from that table. Undertow has no\nlicensed point-in-time depth by contract month, venue and session, so\nexecutable commodity exit cost is `CANNOT_ASSESS_EXECUTABLE_EXIT_COST`; open\ninterest or daily volume is never substituted. For aggregate WTI/Henry Hub\ncash pressure, Cushing and benchmark structure, call Seiche's public\n`oil_funding_context` or use `/oil` in\n[`@seiche_desk_bot`](https://t.me/seiche_desk_bot).\n\n## Limitations\n\n- **PARTIAL is not calm.** A segment reads PARTIAL when fewer than two of its measures\n  have earned a scoring history. Four of nine segments read PARTIAL on 2026-07-30, and\n  the board says so instead of guessing.\n- **Exit costs are estimates**, interpolated from published quote depth at the 1% and\n  2% bands. Never a book walk. The snapshot refreshes roughly hourly, so it is a\n  snapshot and not a real-time feed.\n- **Crypto measures are still accruing**, so the board has not earned a crypto stress\n  percentile and you should never quote one from it.\n- **The sealed record includes misses.** Calls are hash-chained and signed before\n  their outcomes are knowable, then scored against the point-in-time board.\n- **Commodity execution is a declared coverage gap.** Ballast is useful upstream\n  context from Seiche, not a depth ladder and not an Undertow exit-cost estimate.\n\nResearch and market data, not investment advice.\n\n## Subscriber tier\n\nThe Agent and Desk tiers unlock the eight subscriber tools. Send `/agent` to the\n[Telegram bot](https://t.me/undertow_LiquiLens_bot) to mint a bearer token:\n\n```json\n{\n  \"mcpServers\": {\n    \"undertow\": {\n      \"url\": \"https://api.seiche.info/undertow/mcp\",\n      \"headers\": { \"Authorization\": \"Bearer YOUR_TOKEN\" }\n    }\n  }\n}\n```\n\nThe token proves **identity only**. Entitlement is re-read from live membership on\nevery call, so access stops when the subscription does rather than when the token\nexpires. Subscriber tools are invisible to an anonymous `tools/list`, and\n`agent_access_status` tells you where you stand.\n\nOnly `tools/call` is metered, reported on `X-MCP-Usage-Used`, `X-MCP-Usage-Limit`\nand `X-MCP-Usage-Remaining`. `GET /undertow/mcp/usage` is the self-meter. Hitting a\nquota returns a normal JSON-RPC result carrying `isError` and an upgrade pointer,\nnever a dropped connection.\n\n## About this repository\n\nThis repo is the **listing**: a README and the two manifests that let directories\ndescribe the server accurately. The server itself is hosted at the endpoint above;\nits source is `deploy/hetzner/undertow-mcp` in the\n[Undertow product repository](https://github.com/beepboop2025/liquilens-undertow)\nand the registry target remains hosted 1.10.0. The adapter forwards the native public schemas and results without computing\nmarket values or granting subscriber access. Its own version is 0.1.0; the\nupstream contract is 1.10.0.\n\n## Verification and deployment boundary\n\nThe verification workflow validates the exact 40-character `releaseCommit` in\n`contract.json` against the immutable source receipt in `source-receipt.json`. The\nreceipt binds that commit and contract to SHA-256 digests of the hosted implementation\nand registry manifest without granting this public repository access to the private\nproduct repository. A maintainer creates or updates the receipt only after running the\nlocal pinned-core verifier against a clean checkout; that verifier derives the\npublic/subscriber split, prompt inventory, protocol versions, server identity and\nregistry manifest directly from the source and checks both artifact digests. A branch\nname or current product-repository HEAD is never accepted as release provenance.\n\nA separate scheduled and manually dispatchable smoke makes anonymous, read-only calls\nto the listed endpoint. It initializes the legacy protocol, exercises modern discovery,\nchecks the public tools, subscriber advertisement, prompts and explicit empty resource\ncatalogs, then calls `agent_access_status`. It does not use a bearer token or exercise a\nsubscriber tool. Run the same checks locally with:\n\n    uv run --locked python -m unittest discover -s tests -v\n    python3 scripts/verify_core_pin.py --receipt\n    python3 scripts/verify_core_pin.py --core /path/to/exact/core/checkout\n    python3 scripts/smoke_live_mcp.py\n\nThe source pin is a reviewed **contract boundary**, not an HTTP deployment receipt.\nUndertow's release controller records the deployed SHA and append-only receipts on the\nhost, while the public MCP response currently reports its semantic version and\ncapability catalog but no exact Git commit. Therefore a green live smoke proves the\npublished behavior, not that the host runs this exact SHA. Do not repin this listing\nfrom a matching version or catalog alone; require the host's exact successful deployment\nreceipt (or an equivalent authenticated SHA attestation) first.\n\n## Siblings from the same lab\n\n- [Seiche](https://api.seiche.info/mcp): US dollar funding stress.\n- [LiquiLens](https://api.liquilens.in/mcp): bank, NBFC and lender failure risk, and\n  whether that stress is reaching firms and households.\n- [groundcheck](https://groundcheck.seiche.info): claim grounding and citation\n  verification for general text.\n- [Palimpsest](https://api.seiche.info/palimpsest/mcp): live internet-censorship\n  signals.\n\nHuman front door: [liquilens-undertow.com](https://liquilens-undertow.com) and the\n[Telegram desk](https://t.me/undertow_LiquiLens_bot).\n\n## License\n\nThe original public integration code and documentation in this repository are\n[MIT licensed](LICENSE). See [NOTICE.md](NOTICE.md) for scope: this grant does\nnot cover the private Undertow service or third-party market data. Native\naccess controls, evidence limitations and source-rights holds still apply.\n",
  "bytes": 13451,
  "sha": "2fdbfd43e2dabe7cc40bdc140d143f2856650a1234e6b34d77c71af0ce54e041",
  "repo_slug": "beepboop2025/undertow-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_beepboop2025_undertow_70696d3a/readme"
}