runtime
Self-hosted MCP server: 26 deterministic dev, security, and EVM tools.
使うべきか
品質と安全性
検出事項(26)
- LOWjson.format 内
- LOWjson.minify 内
- LOWjson.validate 内
- LOWbase64.encode 内
- LOWbase64.decode 内
- LOWurl.encode 内
- LOWurl.decode 内
- LOWslug.generate 内
- LOWhash.text 内
- LOWuuid.v4 内
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"runtime": {
"url": "https://mcp.formatho.com/mcp"
}
}
}リモートエンドポイント
https://mcp.formatho.com/mcpstreamable-httpできること
ツール一覧
ツール(26)
⚪json.format(json, indent)
Validate and pretty-print JSON with a configurable indent level. [data · v1.0.0 · deterministic: true · permissions: none]
入力スキーマ
{
"type": "object",
"properties": {
"json": {
"type": "string",
"minLength": 1
},
"indent": {
"type": "integer",
"minimum": 0,
"maximum": 8,
"default": 2
}
},
"required": [
"json"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪json.minify(json)
Validate JSON and strip all insignificant whitespace. [data · v1.0.0 · deterministic: true · permissions: none]
入力スキーマ
{
"type": "object",
"properties": {
"json": {
"type": "string",
"minLength": 1
}
},
"required": [
"json"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢json.validate(json)
Validate JSON and report the parse error position if invalid. [data · v1.0.0 · deterministic: true · permissions: none]
入力スキーマ
{
"type": "object",
"properties": {
"json": {
"type": "string",
"minLength": 1
}
},
"required": [
"json"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪base64.encode(text)
Base64-encode text (standard alphabet). [data · v1.0.0 · deterministic: true · permissions: none]
入力スキーマ
{
"type": "object",
"properties": {
"text": {
"type": "string"
}
},
"required": [
"text"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪base64.decode(base64)
Base64-decode to text. [data · v1.0.0 · deterministic: true · permissions: none]
入力スキーマ
{
"type": "object",
"properties": {
"base64": {
"type": "string",
"minLength": 1
}
},
"required": [
"base64"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪url.encode(text)
Percent-encode text (component encoding). [network · v1.0.0 · deterministic: true · permissions: none]
入力スキーマ
{
"type": "object",
"properties": {
"text": {
"type": "string"
}
},
"required": [
"text"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪url.decode(text)
Decode percent-encoded text. [network · v1.0.0 · deterministic: true · permissions: none]
入力スキーマ
{
"type": "object",
"properties": {
"text": {
"type": "string"
}
},
"required": [
"text"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪slug.generate(text)
Convert text to a URL-safe kebab-case slug. [dev · v1.0.0 · deterministic: true · permissions: none]
入力スキーマ
{
"type": "object",
"properties": {
"text": {
"type": "string",
"minLength": 1
}
},
"required": [
"text"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪hash.text(text, algorithm)
Hash text with md5/sha1/sha256/sha384/sha512 (hex output). MD5/SHA1 are for compatibility checks only, not security. [security · v1.0.0 · deterministic: true · permissions: none]
入力スキーマ
{
"type": "object",
"properties": {
"text": {
"type": "string"
},
"algorithm": {
"type": "string",
"enum": [
"md5",
"sha1",
"sha256",
"sha384",
"sha512"
],
"default": "sha256"
}
},
"required": [
"text"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪uuid.v4(count)
Generate random UUID v4 values. [security · v1.0.0 · deterministic: false · permissions: none]
入力スキーマ
{
"type": "object",
"properties": {
"count": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 1
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪random.string(length)
Generate a cryptographically random alphanumeric string. [security · v1.0.0 · deterministic: false · permissions: none]
入力スキーマ
{
"type": "object",
"properties": {
"length": {
"type": "integer",
"minimum": 8,
"maximum": 512,
"default": 32
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪jwt.decode(token)
Decode a JWT (JWS compact serialization) header and claims WITHOUT verifying the signature. Reports expiry status from the exp claim. [security · v1.0.0 · deterministic: true · permissions: none]
入力スキーマ
{
"type": "object",
"properties": {
"token": {
"type": "string",
"minLength": 10
}
},
"required": [
"token"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪evm.keccak256(data, encoding)
Keccak-256 (Ethereum flavor, NOT NIST SHA3-256) of arbitrary hex or text. [web3 · v1.0.0 · deterministic: true · permissions: none]
入力スキーマ
{
"type": "object",
"properties": {
"data": {
"type": "string",
"minLength": 1
},
"encoding": {
"type": "string",
"enum": [
"hex",
"utf8"
],
"default": "utf8"
}
},
"required": [
"data"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢evm.function_selector(signature, selector)
Compute the 4-byte function selector from a canonical signature, with reverse lookup against common signatures. [web3 · v1.0.0 · deterministic: true · permissions: none]
入力スキーマ
{
"type": "object",
"properties": {
"signature": {
"type": "string",
"minLength": 3
},
"selector": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{8}$"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢evm.create2_address(factory, salt, initCodeHash)
Compute the deterministic CREATE2 address: keccak256(0xff ‖ factory ‖ salt ‖ initCodeHash)[12:]. [web3 · v1.0.0 · deterministic: true · permissions: none]
入力スキーマ
{
"type": "object",
"properties": {
"factory": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$"
},
"salt": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{1,64}$"
},
"initCodeHash": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{64}$"
}
},
"required": [
"factory",
"salt",
"initCodeHash"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢evm.storage_slot(kind, baseSlot, keyHex, arrayIndex)
Compute Solidity storage slots: simple variables, mapping values (keccak(key ‖ p)), and dynamic array elements (keccak(p) + index). [web3 · v1.0.0 · deterministic: true · permissions: none]
入力スキーマ
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"simple",
"mapping",
"array"
],
"default": "mapping"
},
"baseSlot": {
"type": "integer",
"minimum": 0
},
"keyHex": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{1,64}$"
},
"arrayIndex": {
"type": "integer",
"minimum": 0
}
},
"required": [
"baseSlot"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢evm.decode_calldata(calldata)
Extract the 4-byte selector from raw calldata, match it against common signatures, and decode static (word-based) arguments: address, uint256, int256, bytes32, bool. [web3 · v1.0.0 · deterministic: true · permissions: none]
入力スキーマ
{
"type": "object",
"properties": {
"calldata": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]+$"
}
},
"required": [
"calldata"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢evm.v4_hook_permissions(calls, address)
Uniswap v4 hook permissions: compute the 14-bit permission field from hook-call names, or decode the field from a hook address (bits live in the LOW 14 bits: address & 0x3FFF). [web3 · v1.0.0 · deterministic: true · permissions: none]
入力スキーマ
{
"type": "object",
"properties": {
"calls": {
"type": "array",
"items": {
"type": "string",
"enum": [
"beforeInitialize",
"afterInitialize",
"beforeAddLiquidity",
"afterAddLiquidity",
"beforeRemoveLiquidity",
"afterRemoveLiquidity",
"beforeSwap",
"afterSwap",
"beforeDonate",
"afterDonate",
"beforeSwapReturnsDelta",
"afterSwapReturnsDelta",
"afterAddLiquidityReturnsDelta",
"afterRemoveLiquidityReturnsDelta"
]
}
},
"address": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪erc4626.math(totalAssets, totalSupply, amount, direction, virtualAssets, ...)
Exact EIP-4626 vault math in BigInt: convert assets to shares (round down) and shares to assets (round down), with optional virtual offsets. [defi · v1.0.0 · deterministic: true · permissions: none]
入力スキーマ
{
"type": "object",
"properties": {
"totalAssets": {
"type": "string",
"pattern": "^\\d+$"
},
"totalSupply": {
"type": "string",
"pattern": "^\\d+$"
},
"amount": {
"type": "string",
"pattern": "^\\d+$"
},
"direction": {
"type": "string",
"enum": [
"assetsToShares",
"sharesToAssets"
],
"default": "assetsToShares"
},
"virtualAssets": {
"type": "string",
"pattern": "^\\d+$",
"default": "0"
},
"virtualShares": {
"type": "string",
"pattern": "^\\d+$",
"default": "0"
}
},
"required": [
"totalAssets",
"totalSupply",
"amount"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪timestamp.convert(value, iso)
Convert Unix seconds/milliseconds to ISO 8601 (UTC) and back. [dev · v1.0.0 · deterministic: true · permissions: none]
入力スキーマ
{
"type": "object",
"properties": {
"value": {
"type": [
"string",
"number"
]
},
"iso": {
"type": "string"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪regex.test(pattern, text, flags)
Test a regular expression against text: match result plus all capture groups. [dev · v1.0.0 · deterministic: true · permissions: none]
入力スキーマ
{
"type": "object",
"properties": {
"pattern": {
"type": "string",
"minLength": 1
},
"text": {
"type": "string"
},
"flags": {
"type": "string",
"maxLength": 8,
"default": ""
}
},
"required": [
"pattern",
"text"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪case.convert(text, to)
Convert an identifier between camelCase, snake_case, kebab-case, CONSTANT_CASE, and Title Case. [dev · v1.0.0 · deterministic: true · permissions: none]
入力スキーマ
{
"type": "object",
"properties": {
"text": {
"type": "string",
"minLength": 1
},
"to": {
"type": "string",
"enum": [
"camel",
"snake",
"kebab",
"constant",
"title"
],
"default": "snake"
}
},
"required": [
"text"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪hex.encode(text, hex)
Encode text to hex, or decode hex (with or without 0x) to text. [data · v1.0.0 · deterministic: true · permissions: none]
入力スキーマ
{
"type": "object",
"properties": {
"text": {
"type": "string"
},
"hex": {
"type": "string"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪evm.checksum_address(address)
EIP-55 checksum an Ethereum address, or verify a checksummed one. [web3 · v1.0.0 · deterministic: true · permissions: none]
入力スキーマ
{
"type": "object",
"properties": {
"address": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$"
}
},
"required": [
"address"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪evm.unit_convert(value, from, to)
Convert EVM amounts between wei, gwei, and ether with exact BigInt math. [web3 · v1.0.0 · deterministic: true · permissions: none]
入力スキーマ
{
"type": "object",
"properties": {
"value": {
"type": "string",
"pattern": "^\\d+(\\.\\d+)?$"
},
"from": {
"type": "string",
"enum": [
"wei",
"gwei",
"ether"
],
"default": "ether"
},
"to": {
"type": "string",
"enum": [
"wei",
"gwei",
"ether"
],
"default": "wei"
}
},
"required": [
"value"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢formatho.registry
List every registered Formatho tool with version, category, deterministic flag, permissions, and Formatho Verified status. [meta · v1.0.0 · deterministic: true · permissions: none]
入力スキーマ
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}記録された呼び出し例
evm.v4_hook_permissions入力パラメータ
{
"calls": [
"item1",
"item2"
],
"address": "example-0"
}出力結果
{
"result": {
"content": [
{
"type": "text",
"text": "MCP error -32602: Input validation error: Invalid arguments for tool evm.v4_hook_permissions: Invalid enum value. Expected 'beforeInitialize' | 'afterInitialize' | 'beforeAddLiquidity' | 'afterAddLiquidity' | 'beforeRemoveLiquidity' | 'afterRemoveLiquidity' | 'beforeSwap' | 'afterSwap' | 'beforeDonate' | 'afterDonate' | 'beforeSwapReturnsDelta' | 'afterSwapReturnsDelta' | 'afterAddLiquidityReturnsDelta' | 'afterRemoveLiquidityReturnsDelta', received 'item1' at calls[0]\nInvalid enum value. Expected 'beforeInitialize' | 'afterInitialize' | 'beforeAddLiquidity' | 'afterAddLiquidity' | 'beforeRemoveLiquidity' | 'afterRemoveLiquidity' | 'beforeSwap' | 'afterSwap' | 'beforeDonate' | 'afterDonate' | 'beforeSwapReturnsDelta' | 'afterSwapReturnsDelta' | 'afterAddLiquidityReturnsDelta' | 'afterRemoveLiquidityReturnsDelta', received 'item2' at calls[1]\nInvalid at address"
}
],
"isError": true
},
"durationMs": 49
}コミュニティ
エビデンス