runtime
Self-hosted MCP server: 26 deterministic dev, security, and EVM tools.
¿Debería usar esto?
Calidad y seguridad
Hallazgos (26)
- LOWen json.format
- LOWen json.minify
- LOWen json.validate
- LOWen base64.encode
- LOWen base64.decode
- LOWen url.encode
- LOWen url.decode
- LOWen slug.generate
- LOWen hash.text
- LOWen uuid.v4
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"runtime": {
"url": "https://mcp.formatho.com/mcp"
}
}
}Puntos de conexión remotos
https://mcp.formatho.com/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (26)
⚪json.format(json, indent)
Validate and pretty-print JSON with a configurable indent level. [data · v1.0.0 · deterministic: true · permissions: none]
Esquema de entrada
{
"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]
Esquema de entrada
{
"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]
Esquema de entrada
{
"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]
Esquema de entrada
{
"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]
Esquema de entrada
{
"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]
Esquema de entrada
{
"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]
Esquema de entrada
{
"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]
Esquema de entrada
{
"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]
Esquema de entrada
{
"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]
Esquema de entrada
{
"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]
Esquema de entrada
{
"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]
Esquema de entrada
{
"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]
Esquema de entrada
{
"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]
Esquema de entrada
{
"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]
Esquema de entrada
{
"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]
Esquema de entrada
{
"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]
Esquema de entrada
{
"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]
Esquema de entrada
{
"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]
Esquema de entrada
{
"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]
Esquema de entrada
{
"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]
Esquema de entrada
{
"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]
Esquema de entrada
{
"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]
Esquema de entrada
{
"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]
Esquema de entrada
{
"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]
Esquema de entrada
{
"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]
Esquema de entrada
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}Ejemplos de llamadas registradas
evm.v4_hook_permissionsParámetros de entrada
{
"calls": [
"item1",
"item2"
],
"address": "example-0"
}Resultado de salida
{
"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": 248
}Comunidad
Evidencia