io.github.Domirep/the-floor
REMOTE · THEFLOOR-DASHBOARD-PRODUCTION.UP.RAILWAY.APP · SCANNED AUG 3
Read & play The Floor, an on-chain strategy game on Robinhood Chain. Unofficial companion.
Available components
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. How we score →
Endpoint Security57
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation not fully verified: no authorisation is required to call this server, and 18 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. See how to fix → View diagnostics → Unverified
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability70
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 4305 tokens (~134/item across 32 items; 32 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
- Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
remote · thefloor-dashboard-production.up.railway.app
claude mcp add --transport http domirep-the-floor https://thefloor-dashboard-production.up.railway.app/mcp
[mcp_servers.domirep-the-floor] url = "https://thefloor-dashboard-production.up.railway.app/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"domirep-the-floor": {
"type": "remote",
"url": "https://thefloor-dashboard-production.up.railway.app/mcp",
"enabled": true
}
}
} openclaw mcp add domirep-the-floor --url https://thefloor-dashboard-production.up.railway.app/mcp --transport streamable-http
mcp_servers:
domirep-the-floor:
url: "https://thefloor-dashboard-production.up.railway.app/mcp" {
"mcpServers": {
"domirep-the-floor": {
"type": "http",
"url": "https://thefloor-dashboard-production.up.railway.app/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 3 Aug 26 +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.
- 1 Aug 26 +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.
- 31 Jul 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Jul 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 29 Jul 26 +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.
- 28 Jul 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.
- 27 Jul 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 26 Jul 26 62
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 3 Aug 2026 · Probed https://thefloor-dashboard-production.up.railway.app/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=*.up.railway.app | CN=YE1,O=Let's Encrypt,C=US | 29 Jul 2026 | 27 Oct 2026 | ECDSA 256 | ECDSA-SHA384 | 6da79bb561da3efeb0e751ca21abd3999fe |
| SANs: *.up.railway.app, up.railway.app | ||||||
| CN=YE1,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 5ddd70dd31f801c85c186a7a04b80afe |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
DNSSEC insecure
Validation of thefloor-dashboard-production.up.railway.app. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| app. | present | 23684 | 8 | Verified |
| railway.app. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://thefloor-dashboard-production.up.railway.app/mcp | Verified | 200 | |
| http (plaintext) | http://thefloor-dashboard-production.up.railway.app/mcp | HTTPS enforced | 301 | https://thefloor-dashboard-production.up.railway.app/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
get_behavior ~90
Do desk owners reinvest or dump? Splits FLOOR flow into player / trader / routed / liquidity. playerSellShare is a share of ATTRIBUTABLE sells only; routed = aggregator/bot flow with no identifiable human; liquidity (LP adds/withdrawals) is excluded from buys and sells entirely. Use these buckets — deriving "sells" from raw pool transfers double-counts LP deposits as dumps.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_broker ~89
One StonkBroker by id (1-4444): owner, its ERC-6551 wallet address and holdings, the stock it was seeded with, per-stock dividends received, activation tier, whether its wallet owns a Floor desk (floor.hasDesk), and its on-chain art. null means unknown, never zero.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Broker token id, 1-4444 |
No output schema declared.
No examples provided.
get_broker_activation_math ~150
The decision math for activating a StonkBroker: per tier — activation fee in $STONKBROKER and USD, your weight share of the dividend pool after dilution, estimated dividends/day (from the observed drop rate), and payback days. Pass `id` for an exact on-chain fee quote (handles upgrade credit for already-active brokers). FACTS not advice: the drop rate tracks AMM trading volume and varies; new activations dilute everyone; token prices move.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | — | Broker token id for an exact quoteActivation fee (optional — omit for table prices) |
| tier | integer | — | Tier 1-5 to analyze (optional — omit for all five) |
No output schema declared.
No examples provided.
get_broker_floor_status ~121
Cross-game: does this StonkBroker's ERC-6551 wallet play The Floor? Returns the wallet, whether it owns a desk, and if so its live desk state (alpha, share, pending PnL, FLOOR balance). Binding rule: the desk itself (level/alpha) is permanently bound to the NFT and transfers on sale; liquid contents (FLOOR balance, operator NFTs, tokens) remain removable by the current owner until the sale lands.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | Broker token id, 1-4444 |
No output schema declared.
No examples provided.
get_broker_leaderboard ~134
Activated StonkBrokers ranked by the USD value of their wallet CONTENTS right now (the 3 dividend stocks + $STONKBROKER + ETH, priced from their on-chain pools). IMPORTANT framing: contents are a removable snapshot — the current owner can move everything out before a sale; a paid activation is cleared on every transfer (buyers re-activate); a Floor desk lives on the broker's wallet and survives sales. Report this as data, never as an appraisal or a promise of value.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max ranked rows to return (1-50, default 20) |
No output schema declared.
No examples provided.
get_brokers ~82
StonkBrokers collection state in one call: minted/holders, activation tier census, stock-dividend rounds (~10-min cadence, ETH value per round), $STONKBROKER price + burns, and the Floor-crossover count. Different game, same chain — each broker NFT owns a real ERC-6551 wallet seeded with tokenized stock.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_distribution ~33
How desks and alpha are spread across players: tier counts and alpha concentration (top 1% / top 10%).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_firms ~26
Firms, their members and contributions, plus unaffiliated free agents ranked by alpha.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_floor_state ~54
The whole state of the floor in one call: price, market cap, supply, burned, emissions/halving, global alpha, player count, and the reinvest-vs-sell split. Start here for context.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_history ~66
Daily snapshots for trends: price, market cap, burned, supply, players, alpha, holders. Rows before live tracking began are reconstructed from chain events and marked seeded:true; a metric absent on a row could not be honestly sourced for that day — treat it as unknown, not zero.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_holders ~18
Top $FLOOR holders by balance.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_leaderboard ~57
Wallets ranked by alpha (earning power), plus top recruiters by referral earned. A wallet's recruiter is fixed forever at desk creation.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max ranked wallets to return (1-100, default 20) |
No output schema declared.
No examples provided.
get_live_actions ~57
Recent on-chain game actions: collect, claim, seat, recruit, starter, unseat, upgrade, newdesk, referral, firmburn.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | — | Max actions to return (1-60, default 25) |
No output schema declared.
No examples provided.
get_player ~81
One wallet: desk tier, alpha, share of emissions, FLOOR/day, pending PnL, balance, seated operator roster, and lifetime spend/sold. Fields may be null if an upstream scan failed — check partial and unknownFields; null means unknown, not zero.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | 0x-prefixed 40-hex wallet address |
No output schema declared.
No examples provided.
get_stock_tokens ~233
The three DIVIDEND stocks the StockBooster drops into broker wallets (currently AAPL/AMZN/NVDA): symbol, address, decimals, live USD price, and each Uniswap V3 pool with real liquidity (fee tier + quote asset + pool address). This is NOT the full set a broker can hold or trade — wallets also hold SLV, USO, SPCX, GOOGL, META, INTC, ORCL and more; call get_broker for a wallet's complete holdings, which returns an address and USD value per token that you can pass straight to prepare_broker_trade. PRICING THIS CHAIN, if you compute your own: these RWAs quote against USDG (6 decimals) not WETH — assuming WETH finds no AMZN market at all and routes AAPL into EMPTY pools that getPool still returns an address for; check pool.liquidity() before trusting a quote; and beware copycat tokens (AMZNAMZN, AMZNC, AMZNUSDG all exist with large nominal liquidity) — pricing off one is confidently wrong.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_strategy ~141
The decision-relevant math for one wallet, so an agent can reason about its next move: current alpha/share, FLOOR earned per day (and USD), pending PnL waiting to be collected, seat + bandwidth headroom, the next desk upgrade (cost and what it unlocks), each operator's payback in days at the current emission rate, and the halving countdown (emissions ~halve after it). These are FACTS and paybacks, not instructions — the agent decides. Ignores halving decay in payback (best case). Needs the wallet to have a desk.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | 0x wallet to analyze |
No output schema declared.
No examples provided.
get_swap_info ~107
Everything needed to swap ETH↔FLOOR on Robinhood Chain: the Uniswap V3 router, WETH address, the FLOOR/WETH pool and its 1% fee tier, and the LIVE spot price (FLOOR per ETH) read from the pool. Note the pool is thin (~tens of $k liquidity) so large buys move the price hard — size accordingly. Read this before prepare_swap_eth_for_floor, or to construct/verify a swap yourself.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_operators ~60
The operator catalogue: id (zero-based, as passed to prepare_recruit_operator), name, FLOOR cost, alpha and bandwidth. Read this before recruiting so you pick the right id — ids are positional and an off-by-one silently buys a different operator.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
prepare_activate_broker ~220
VERIFICATION-GATED: build the UNSIGNED transaction(s) to activate a StonkBroker's dividend drops at a tier (or upgrade an active one — the on-chain quote credits what was already paid). This tool ERRORS and returns no calldata unless every check passes live on-chain: the fee quote and the signer's $STONKBROKER allowance (so `from` is required). Fee is paid by the signer (50% burned, 50% treasury); `approveFirst` is included when the allowance is short. IMPORTANT: the NFT's transfer hook CLEARS activation on every ownership change — activate AFTER any planned transfer (e.g. moving the broker to an agent wallet), never right before one, or the fee is wasted.
| Name | Type | Req | Description |
|---|---|---|---|
| from | string | — | REQUIRED: the wallet that will pay — the on-chain allowance check is mandatory. |
| id | integer | yes | Broker token id, 1-4444 |
| tier | integer | yes | Target tier 1-5 (5 = 3.33x dividend weight) |
No output schema declared.
No examples provided.
prepare_approve_floor ~88
Build the UNSIGNED ERC20 approve letting the game contract spend your FLOOR. Needed before recruiting or upgrading. Approves an exact amount by default rather than unlimited — pass `amount` in whole FLOOR.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | number | yes | How much FLOOR to approve (whole tokens, not wei). |
| from | string | — | The wallet that will sign (optional; used to report current allowance). |
No output schema declared.
No examples provided.
prepare_broker_floor_collect ~129
VERIFICATION-GATED: build the UNSIGNED transaction that makes a StonkBroker's wallet collect its Floor desk's pending PnL. Errors with no calldata unless `from` matches ownerOf on-chain and the wallet verifiably has a desk. The collected FLOOR lands IN the broker's wallet (it belongs to the NFT, not to you — use the wallet's executeCall for anything further).
| Name | Type | Req | Description |
|---|---|---|---|
| from | string | — | REQUIRED: the broker's current owner — verified against ownerOf on-chain. |
| id | integer | yes | Broker token id, 1-4444 |
No output schema declared.
No examples provided.
prepare_broker_floor_desk ~309
VERIFICATION-GATED cross-game move (nobody on the chain has done it yet): build the UNSIGNED transaction that makes a StonkBroker's OWN ERC-6551 wallet open a desk on The Floor. This tool ERRORS and returns no calldata unless every check passes live on-chain: the broker must be ACTIVATED (policy — activation is the commitment step, the desk is the perk; activate first if not), `from` is required and must match ownerOf (executeCall is owner-gated), and the broker wallet must verifiably have no desk. Why do it: the desk and its alpha bind to the NFT and transfer with it on sale — the only way a Floor position can change hands — giving the broker a second income stream alongside its stock dividends (liquid wallet contents remain owner-removable until a sale; never promise a buyer the wallet's tokens). The 0.01 ETH rides along with your signature (no prior wallet funding). Referrer: on-chain, permanent, defaults to this dashboard's address, overridable — always tell the user who it is before signing.
| Name | Type | Req | Description |
|---|---|---|---|
| from | string | — | REQUIRED: the broker's current owner — verified against ownerOf on-chain before any calldata is returned. |
| id | integer | yes | Broker token id, 1-4444 |
| referrer | string | — | Referrer to credit (permanent). Omit for this dashboard's default; 0x0…0 for none. |
No output schema declared.
No examples provided.
prepare_broker_trade ~451
VERIFICATION-GATED: build the UNSIGNED Uniswap V3 swap that makes a StonkBroker's OWN ERC-6551 wallet trade one token for another on Robinhood Chain — the wallet spends, and the OUTPUT LANDS IN THE WALLET, so both sides belong to the NFT and transfer with it on sale. Errors with no calldata unless `from` matches ownerOf on-chain (executeCall is owner-gated) and the broker wallet verifiably holds enough tokenIn. Refuses to build a swap with no price floor: pass `pool` for a live on-chain quote (amountOutMinimum = quote − slippagePct) or `minAmountOut` yourself — a zero minimum is a guaranteed sandwich. The router pulls via transferFrom, so if the WALLET'S allowance is short an `approveFirst` transaction is returned and both must be signed in order. Nothing here is signed or broadcast; the owner signs both.
| Name | Type | Req | Description |
|---|---|---|---|
| amountIn | number | yes | Amount of tokenIn in whole tokens (not wei). |
| decimals | integer | — | tokenIn decimals (default 18). Wrong decimals means a wrong-sized trade — check it. |
| fee | integer | — | Uniswap V3 fee tier: 100, 500, 3000 or 10000. Default 10000. |
| from | string | yes | REQUIRED: the broker's current owner — verified against ownerOf on-chain before any calldata is returned. |
| id | integer | yes | Broker token id, 1-4444 |
| minAmountOut | number | — | Explicit floor in whole tokenOut. Use when you priced it elsewhere; skips the pool quote. |
| outDecimals | integer | — | tokenOut decimals (default 18), used for the minimum-out maths. |
| pool | string | — | The V3 pool for this pair+tier. Given, the amountOutMinimum is quoted live from slot0. |
| slippagePct | number | — | Max slippage when quoting from `pool` (default 2). |
| tokenIn | string | yes | Token the broker wallet spends (0x address). |
| tokenOut | string | yes | Token the broker wallet receives (0x address). |
No output schema declared.
No examples provided.
prepare_collect ~66
Build the UNSIGNED transaction to collect your desk's pending PnL. Free (no FLOOR, no ETH beyond gas). Use get_player first to see pendingPnL.
| Name | Type | Req | Description |
|---|---|---|---|
| from | string | — | The wallet that will sign (optional; used to sanity-check you have a desk). |
No output schema declared.
No examples provided.
prepare_create_desk ~222
Build the UNSIGNED transaction that opens a desk (joins the game). Returns {to, value, data} for the caller to sign with their OWN wallet — this server never sees, holds, or asks for a private key, and never broadcasts. Costs 0.01 ETH. IMPORTANT: the recruiter is written on-chain at desk creation and can NEVER be changed afterwards; it defaults to this dashboard's address (which earns 5% of what the player later spends, paid from the game treasury, costing the player nothing). Pass `referrer` to set your own, or the zero address for none. Always tell the user who the referrer is before they sign.
| Name | Type | Req | Description |
|---|---|---|---|
| from | string | — | The wallet that will sign. Optional but recommended — lets this tool check the wallet does not already have a desk and would not revert. |
| referrer | string | — | Referrer address to credit. Omit to use this dashboard's default; pass 0x0000000000000000000000000000000000000000 for none. |
No output schema declared.
No examples provided.
prepare_recruit_operator ~125
Build the UNSIGNED transaction to recruit an operator by id (see list_operators — ids are ZERO-BASED). Spends FLOOR, so it requires an ERC20 approve first; if your allowance is short, the response includes an `approveFirst` transaction to sign before this one. 75% of what you spend is burned.
| Name | Type | Req | Description |
|---|---|---|---|
| from | string | — | The wallet that will sign. Recommended — enables the allowance check. |
| operatorId | integer | yes | Zero-based operator id from list_operators (0 = Retail Analyst … 14 = The Closer) |
No output schema declared.
No examples provided.
prepare_recruit_starter ~41
Build the UNSIGNED transaction to recruit the free starter operator. No FLOOR cost.
| Name | Type | Req | Description |
|---|---|---|---|
| from | string | — | The wallet that will sign (optional). |
No output schema declared.
No examples provided.
prepare_seat_operator ~81
Build the UNSIGNED transaction to seat an operator you own (by its FLOOROP NFT token id) at your desk, so it starts earning alpha. Seats and bandwidth are limited by your desk tier.
| Name | Type | Req | Description |
|---|---|---|---|
| from | string | — | The wallet that will sign (optional). |
| tokenId | integer | yes | The FLOOROP operator NFT token id to seat |
No output schema declared.
No examples provided.
prepare_swap_eth_for_floor ~230
Build the UNSIGNED Uniswap V3 swap that buys FLOOR with WETH (exactInputSingle). Full buy flow is 3 signed steps: (1) prepare_wrap_eth, (2) approve WETH to the router [included as approveWeth when `from` is given and allowance is short], (3) this swap. amountOutMinimum is computed from the LIVE pool price minus your slippage, so you are protected from a bad fill — but VERIFY the numbers before signing; this spends real money and the pool is thin. Selling FLOOR for ETH is the reverse and not built here.
| Name | Type | Req | Description |
|---|---|---|---|
| amountEth | number | yes | WETH to spend (whole ETH). You must already hold this much WETH — see prepare_wrap_eth. |
| from | string | — | Signing wallet, used to check WETH allowance and include an approve if needed. |
| recipient | string | yes | Address to receive the FLOOR (the signing wallet). |
| slippagePct | number | — | Max slippage tolerance in percent (default 2). amountOutMinimum = live quote × (1 − this). |
No output schema declared.
No examples provided.
prepare_unseat_operator ~60
Build the UNSIGNED transaction to unseat an operator (frees its seat and bandwidth).
| Name | Type | Req | Description |
|---|---|---|---|
| from | string | — | The wallet that will sign (optional). |
| tokenId | integer | yes | The FLOOROP operator NFT token id to unseat |
No output schema declared.
No examples provided.
prepare_upgrade_desk ~102
Build the UNSIGNED transaction to upgrade your desk to the next tier (takes no arguments — it always steps up one tier). Spends FLOOR, so an approve may be needed first; pass `costFloor` from the desk table if you want the allowance checked against the exact price.
| Name | Type | Req | Description |
|---|---|---|---|
| costFloor | number | — | Expected FLOOR cost of the upgrade, used only for the allowance check. |
| from | string | — | The wallet that will sign (recommended). |
No output schema declared.
No examples provided.
prepare_wrap_eth ~76
Build the UNSIGNED transaction to wrap native ETH into WETH (step 1 of buying FLOOR — the router swaps WETH, not raw ETH). Returns a WETH.deposit() call carrying your ETH as value.
| Name | Type | Req | Description |
|---|---|---|---|
| amountEth | number | yes | How much ETH to wrap (whole ETH, e.g. 0.05). |
No output schema declared.
No examples provided.