tokenizedblock

Plan swaps of Coinbase tokenized stocks and TokenizedBlock blocks on Base; your wallet signs.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
87%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~3,459Tokens (tool definitions)
~1.5 KBTypical response size
Significant attention impact (2.70% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "tokenizedblock": {
      "url": "https://tokenizedblock.space/mcp"
    }
  }
}

Remote endpoints

https://tokenizedblock.space/mcpstreamable-http

What it can do

Tool inventory

Tools (12)

🟒 Read-only🟑 WriteπŸ”΄ Deleteβšͺ Unknown
🟒tblock_pairs

Lists the currencies a new block can be paired with at birth on TokenizedBlock (ETH, USDC, cbBTC, OUSD and Coinbase tokenized stocks), with the creator minimum floor of each, and in `echanges` the currency swaps tblock_plan_swap builds (both ways). Read-only, no input.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟒tblock_plan_birth(name, symbol, account, pair, salt)

Returns the unsigned calls that create a block (a B20 token with an engraved face and a brain) AND open its market, paired with ETH or with one of the currencies from tblock_pairs: createPaid, approvals, registration, market opening β€” to be signed in order by `account`. Fee: 0.001 ETH. The response lists every cost (`cout`), the block address, and the result of simulating the whole sequence from that wallet. For a non-ETH pair the wallet must already hold the creator minimum in that currency.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 32,
      "description": "Block name (at most 32 bytes)."
    },
    "symbol": {
      "type": "string",
      "minLength": 1,
      "maxLength": 32,
      "description": "Ticker (at most 32 bytes); stored upper-case."
    },
    "account": {
      "type": "string",
      "pattern": "^0x[0-9a-fA-F]{40}$",
      "description": "The wallet that will sign; it receives the whole supply and becomes the creator."
    },
    "pair": {
      "type": "string",
      "pattern": "^(?:[eE][tT][hH]|0x[0-9a-fA-F]{40})$",
      "description": "ETH (default) or the address of a currency from tblock_pairs."
    },
    "salt": {
      "type": "string",
      "maxLength": 64,
      "description": "Optional free text that fixes the block address. Generated when absent; send it again to get the same plan."
    }
  },
  "required": [
    "name",
    "symbol",
    "account"
  ],
  "additionalProperties": false
}
🟒tblock_plan_swap(from, to, amount, account)

Returns the unsigned calls for a swap routed by TokenizedBlock: a block against its quote token, block to block, block to a tokenized stock, or ETH/USDC to a Coinbase tokenized stock and back, ETH to USDC and back, and OUSD to USDC and back (OUSD trades against USDC only: ETH <-> OUSD is refused, swap through USDC in two trades). `amount` is in raw units of the token paid. APPROBATIONS means: sign the approvals, then ask again.

Input Schema

{
  "type": "object",
  "properties": {
    "from": {
      "type": "string",
      "pattern": "^(?:[eE][tT][hH]|0x[0-9a-fA-F]{40})$",
      "description": "Token paid: ETH or an address."
    },
    "to": {
      "type": "string",
      "pattern": "^(?:[eE][tT][hH]|0x[0-9a-fA-F]{40})$",
      "description": "Token received: ETH or an address."
    },
    "amount": {
      "type": "string",
      "pattern": "^[1-9][0-9]{0,40}$",
      "description": "Raw integer units of the token paid."
    },
    "account": {
      "type": "string",
      "pattern": "^0x[0-9a-fA-F]{40}$",
      "description": "The wallet that will sign."
    }
  },
  "required": [
    "from",
    "to",
    "amount",
    "account"
  ],
  "additionalProperties": false
}
🟒tblock_creator_minimum(block, pair, account)

Reads the creator minimum deposited for a block’s market (who deposited, how much, whether the 0.03% creator share is flowing) and, when `account` is that creator, returns the unsigned call for the next exit step: a request (the share stops at once), then, 7 days later, the withdrawal.

Input Schema

{
  "type": "object",
  "properties": {
    "block": {
      "type": "string",
      "pattern": "^0x[0-9a-fA-F]{40}$",
      "description": "The block (token) address."
    },
    "pair": {
      "type": "string",
      "pattern": "^(?:[eE][tT][hH]|0x[0-9a-fA-F]{40})$",
      "description": "The currency it was paired with at birth: ETH (default) or an address."
    },
    "account": {
      "type": "string",
      "pattern": "^0x[0-9a-fA-F]{40}$",
      "description": "Optional: the wallet that would sign the exit."
    }
  },
  "required": [
    "block"
  ],
  "additionalProperties": false
}
🟑tblock_panel_open(block)

Opens a remote-control session and returns the link of the TokenizedBlock control panel: a visual dashboard (the block in the centre; Market, Trade, Brain and Chat tabs) for the user to open in their browser with their wallet. Give the link to the user. Then send commands with tblock_command and read what happened with tblock_panel_state. Commands are proposals: the block’s brain accepts or refuses each task, and only the user’s wallet signs.

Input Schema

{
  "type": "object",
  "properties": {
    "block": {
      "type": "string",
      "pattern": "^0x[0-9a-fA-F]{40}$",
      "description": "Optional: the block to show first."
    }
  },
  "additionalProperties": false
}
🟑tblock_command(session, type, from, to, token, ...)

Proposes one command to an open control panel. type = select (show a block), show (switch tab: market, trade, brain, chat), trade (side buy|sell, block, amount in raw units, optional `with` token), swap (from, to, amount in raw units of `from` β€” e.g. USDC to a Coinbase tokenized stock), send (token, amount in raw units, recipient: a transfer the user must confirm twice), task (a brain task: trade_tblock, launch_wake, feed_trusted, record_memory, offer_food, export_snapshot, read_agent_catalog, decision_receipts), birth (name, symbol, optional pair) or say (a short text shown in the chat). Nothing is signed by this call: the panel shows the proposal with buttons, and the user decides. One command per second.

Input Schema

{
  "type": "object",
  "properties": {
    "session": {
      "type": "string",
      "pattern": "^[0-9a-f]{32}$",
      "description": "The session returned by tblock_panel_open."
    },
    "type": {
      "type": "string",
      "pattern": "^(select|show|trade|swap|send|task|birth|say)$",
      "description": "select | show | trade | swap | send | task | birth | say"
    },
    "from": {
      "type": "string",
      "pattern": "^(?:[eE][tT][hH]|0x[0-9a-fA-F]{40})$",
      "description": "For swap: the token paid (ETH or an address)."
    },
    "to": {
      "type": "string",
      "pattern": "^(?:[eE][tT][hH]|0x[0-9a-fA-F]{40})$",
      "description": "For swap: the token received (ETH or an address)."
    },
    "token": {
      "type": "string",
      "pattern": "^(?:[eE][tT][hH]|0x[0-9a-fA-F]{40})$",
      "description": "For send: the token sent (ETH or an address)."
    },
    "recipient": {
      "type": "string",
      "pattern": "^0x[0-9a-fA-F]{40}$",
      "description": "For send: the whole address that receives. Never abbreviated."
    },
    "block": {
      "type": "string",
      "pattern": "^0x[0-9a-fA-F]{40}$",
      "description": "For select, trade, task: the block address."
    },
    "tab": {
      "type": "string",
      "pattern": "^(market|trade|brain|chat)$",
      "description": "For show."
    },
    "side": {
      "type": "string",
      "pattern": "^(buy|sell)$",
      "description": "For trade."
    },
    "amount": {
      "type": "string",
      "pattern": "^[1-9][0-9]{0,40}$",
      "description": "For trade, swap, send: raw integer units (trade: of the token paid for a buy, of the block for a sell; swap: of `from`; send: of `token`)."
    },
    "with": {
      "type": "string",
      "pattern": "^(?:[eE][tT][hH]|0x[0-9a-fA-F]{40})$",
      "description": "For trade: the token paid (buy) or received (sell); default: the block’s own quote token."
    },
    "task": {
      "type": "string",
      "maxLength": 40,
      "description": "For task: the brain task id."
    },
    "name": {
      "type": "string",
      "maxLength": 32,
      "description": "For birth."
    },
    "symbol": {
      "type": "string",
      "maxLength": 32,
      "description": "For birth."
    },
    "pair": {
      "type": "string",
      "pattern": "^(?:[eE][tT][hH]|0x[0-9a-fA-F]{40})$",
      "description": "For birth: ETH (default) or a currency from tblock_pairs."
    },
    "text": {
      "type": "string",
      "maxLength": 500,
      "description": "For say."
    }
  },
  "required": [
    "session",
    "type"
  ],
  "additionalProperties": false
}
🟒tblock_panel_state(session, since)

Reads the control panel, which is wired to the block’s brain: `cerveau` is the brain as the panel sees it (block, mood, beat, market read, and the tasks it accepts or refuses right now), and `evenements` are the events since `since` β€” the brain’s verdict on each command, plans built, and what the user signed (transaction hash) or declined.

Input Schema

{
  "type": "object",
  "properties": {
    "session": {
      "type": "string",
      "pattern": "^[0-9a-f]{32}$",
      "description": "The session returned by tblock_panel_open."
    },
    "since": {
      "type": "string",
      "pattern": "^[0-9]{1,9}$",
      "description": "Optional: only events after this event number."
    }
  },
  "required": [
    "session"
  ],
  "additionalProperties": false
}
🟒tblock_game_state(wallet)

Reads the Game tab as the server serves it (GET /api/tirage): today's draw (tickets, closing time, practice or paid mode), the live preview face (the face the latest Base block would draw), yesterday's revealed day, the BlockRolls contract when one is served (prices, prizes, pot) or null (practice: free rolls, nothing to sign), and the recent off-chain practice rolls (GET /api/jeu/rolls). With `wallet`: that wallet's ticket (held or not, verified volume, skin pass), its ticket face as the 5-trait guess tblock_plan_roll uses by default, and its entries in this week's and month's draws. Read-only.

Input Schema

{
  "type": "object",
  "properties": {
    "wallet": {
      "type": "string",
      "pattern": "^0x[0-9a-fA-F]{40}$",
      "description": "Optional: the wallet whose ticket and progress to read."
    }
  },
  "additionalProperties": false
}
🟒tblock_plan_roll(wallet, guess, rolls)

Returns the unsigned calls for `rolls` (1 to 10, default 1) BlockRolls rolls on one guess, for ONE wallet_sendCalls batch signed by `wallet`: one approve of EXACTLY rolls x 0.50 USDC, then one roll(guess) per roll β€” or, when that wallet holds an active day pass on the contract, rollWithPass x rolls with no payment. The block 2 blocks after the roll decides; the roll is scored against the guess (traits in common out of 5), a fixed prize from 3/5. `guess` defaults to the face of the wallet's ticket of the day (SHA-256(wallet|day), the same face the Game tab shows). REFUSED with the state when no contract is served (practice mode, 0 USDC): then nothing is to be signed.

Input Schema

{
  "type": "object",
  "properties": {
    "wallet": {
      "type": "string",
      "pattern": "^0x[0-9a-fA-F]{40}$",
      "description": "The wallet that will sign and play."
    },
    "guess": {
      "type": "string",
      "pattern": "^[0-9]{1,2}(,[0-9]{1,2}){4}$",
      "description": "Optional: 5 traits \"colorBand,orbit,facet,material,ornament\" (0..5, 0..9, 0..18, 0..8, 0..7). Default: the wallet's ticket face."
    },
    "rolls": {
      "type": "string",
      "pattern": "^(10|[1-9])$",
      "description": "Optional: how many rolls in the batch, 1 to 10 (default 1)."
    }
  },
  "required": [
    "wallet"
  ],
  "additionalProperties": false
}
🟒tblock_plan_settle(rollIds)

Reads settleableUntil(id) for each roll and the head block, says the state of each (TROP_TOT: wait `blocsAvant` blocks; REGLABLE; PERDU: the 256-block window passed; PAS_EN_ATTENTE: already settled or expired), and returns one unsigned settleMany call for the settleable ones. Anyone may send it: the prize always goes to the player. REFUSED when no contract is served.

Input Schema

{
  "type": "object",
  "properties": {
    "rollIds": {
      "type": "string",
      "pattern": "^[0-9]{1,20}(,[0-9]{1,20}){0,49}$",
      "description": "The roll numbers (from the Rolled events), comma-separated, 1 to 50."
    }
  },
  "required": [
    "rollIds"
  ],
  "additionalProperties": false
}
🟒tblock_plan_task(block, reward, maxDone, hold)

Returns the unsigned calls that post a mission on the Block Missions board for a block: approve EXACTLY reward x maxDone (raw units of the block), then postTask. The task is "trade my block on its TokenizedBlock pool" (a v4 Swap on the block's pool on our hook, the only pool a mission may name), held `hold` raw units for 24 h, open 7 days, one completion per wallet. The block creator's wallet signs. REFUSED while the board's contract is not deployed, or when the block has no pool on a TokenizedBlock hook.

Input Schema

{
  "type": "object",
  "properties": {
    "block": {
      "type": "string",
      "pattern": "^0x[0-9a-fA-F]{40}$",
      "description": "The block (B20 token) the mission is about; its units pay the reward."
    },
    "reward": {
      "type": "string",
      "pattern": "^[1-9][0-9]{0,40}$",
      "description": "Reward per player, raw units of the block (18 decimals)."
    },
    "maxDone": {
      "type": "string",
      "pattern": "^[1-9][0-9]{0,4}$",
      "description": "How many players can complete it, 1 to 10000."
    },
    "hold": {
      "type": "string",
      "pattern": "^[1-9][0-9]{0,40}$",
      "description": "Minimum holding of the block during the 24 h window, raw units."
    }
  },
  "required": [
    "block",
    "reward",
    "maxDone",
    "hold"
  ],
  "additionalProperties": false
}
🟒tblock_missions

Reads the Block Missions board as the server serves it (GET /api/missions): the contract and each mission (id, reward token and amount, done/maxDone, holding, state). REFUSED with tableau = PAS_OUVERT while the board's contract is not deployed. Read-only, no input.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded12 tools
verifiedversion not recorded7 tools