runtime

Self-hosted MCP server: 26 deterministic dev, security, and EVM tools.

Should I use this

Quality & Safety

B
Description quality
100%
Schema completeness
76%
Naming quality
51%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (26)

  • LOWTool 'json.format' doesn't follow camelCase/snake_casein json.format
  • LOWTool 'json.minify' doesn't follow camelCase/snake_casein json.minify
  • LOWTool 'json.validate' doesn't follow camelCase/snake_casein json.validate
  • LOWTool 'base64.encode' doesn't follow camelCase/snake_casein base64.encode
  • LOWTool 'base64.decode' doesn't follow camelCase/snake_casein base64.decode
  • LOWTool 'url.encode' doesn't follow camelCase/snake_casein url.encode
  • LOWTool 'url.decode' doesn't follow camelCase/snake_casein url.decode
  • LOWTool 'slug.generate' doesn't follow camelCase/snake_casein slug.generate
  • LOWTool 'hash.text' doesn't follow camelCase/snake_casein hash.text
  • LOWTool 'uuid.v4' doesn't follow camelCase/snake_casein uuid.v4

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,987Tokens (tool definitions)
~704 BTypical response size
Significant attention impact (2.33% 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": {
    "runtime": {
      "url": "https://mcp.formatho.com/mcp"
    }
  }
}

Remote endpoints

https://mcp.formatho.com/mcpstreamable-http

What it can do

Tool inventory

Tools (26)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
⚪json.format(json, indent)

Validate and pretty-print JSON with a configurable indent level. [data · v1.0.0 · deterministic: true · permissions: none]

Input Schema

{
  "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]

Input Schema

{
  "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]

Input Schema

{
  "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]

Input Schema

{
  "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]

Input Schema

{
  "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]

Input Schema

{
  "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]

Input Schema

{
  "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]

Input Schema

{
  "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]

Input Schema

{
  "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]

Input Schema

{
  "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]

Input Schema

{
  "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]

Input Schema

{
  "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]

Input Schema

{
  "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]

Input Schema

{
  "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]

Input Schema

{
  "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]

Input Schema

{
  "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]

Input Schema

{
  "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]

Input Schema

{
  "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]

Input Schema

{
  "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]

Input Schema

{
  "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]

Input Schema

{
  "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]

Input Schema

{
  "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]

Input Schema

{
  "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]

Input Schema

{
  "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]

Input Schema

{
  "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]

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded26 tools
verifiedversion not recorded26 tools