Self-hosted MCP server: 26 deterministic dev, security, and EVM tools.
| Endpoint | https://mcp.formatho.com/mcp (streamable-http) |
|---|---|
| Registry version | 0.3.0 |
| Now | 26 tools · grade F (20) · pin ts_a0f3e4c1c9dc7ef937d7dfd62ff9099c · protocol 2025-06-18 |
| First / last listed | 2026-10-25 07:01 UTC / 2026-10-25 07:01 UTC |
| Grade over time | 2026-10-25: F (20), 26 tools |
Is this your server? Own a server? ToolFit hosted watch re-checks it every 24 h ($0.25 per 30 days) or 6 h ($0.60) and sends you an HMAC-signed webhook when its tools or grade change: POST https://api.youraitools.co/toolfit/v1/watch. To opt out, see About & opt-out.
Tools: json.format json.minify json.validate base64.encode base64.decode url.encode url.decode slug.generate hash.text uuid.v4 random.string jwt.decode evm.keccak256 evm.function_selector evm.create2_address evm.storage_slot evm.decode_calldata evm.v4_hook_permissions erc4626.math timestamp.convert regex.test case.convert hex.encode evm.checksum_address evm.unit_convert formatho.registry
json.format | Validate and pretty-print JSON with a configurable indent level. [data · v1.0.0 · deterministic: true · permissions: none] params: json*, indent |
json.minify | Validate JSON and strip all insignificant whitespace. [data · v1.0.0 · deterministic: true · permissions: none] params: json* |
json.validate | Validate JSON and report the parse error position if invalid. [data · v1.0.0 · deterministic: true · permissions: none] params: json* |
base64.encode | Base64-encode text (standard alphabet). [data · v1.0.0 · deterministic: true · permissions: none] params: text* |
base64.decode | Base64-decode to text. [data · v1.0.0 · deterministic: true · permissions: none] params: base64* |
url.encode | Percent-encode text (component encoding). [network · v1.0.0 · deterministic: true · permissions: none] params: text* |
url.decode | Decode percent-encoded text. [network · v1.0.0 · deterministic: true · permissions: none] params: text* |
slug.generate | Convert text to a URL-safe kebab-case slug. [dev · v1.0.0 · deterministic: true · permissions: none] params: text* |
hash.text | 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] params: text*, algorithm |
uuid.v4 | Generate random UUID v4 values. [security · v1.0.0 · deterministic: false · permissions: none] params: count |
random.string | Generate a cryptographically random alphanumeric string. [security · v1.0.0 · deterministic: false · permissions: none] params: length |
jwt.decode | 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] params: token* |
evm.keccak256 | Keccak-256 (Ethereum flavor, NOT NIST SHA3-256) of arbitrary hex or text. [web3 · v1.0.0 · deterministic: true · permissions: none] params: data*, encoding |
evm.function_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] params: signature, selector |
evm.create2_address | Compute the deterministic CREATE2 address: keccak256(0xff ‖ factory ‖ salt ‖ initCodeHash)[12:]. [web3 · v1.0.0 · deterministic: true · permissions: none] params: factory*, salt*, initCodeHash* |
evm.storage_slot | 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] params: kind, baseSlot*, keyHex, arrayIndex |
evm.decode_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] params: calldata* |
evm.v4_hook_permissions | 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] params: calls, address |
erc4626.math | 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] params: totalAssets*, totalSupply*, amount*, direction, virtualAssets, virtualShares |
timestamp.convert | Convert Unix seconds/milliseconds to ISO 8601 (UTC) and back. [dev · v1.0.0 · deterministic: true · permissions: none] params: value, iso |
regex.test | Test a regular expression against text: match result plus all capture groups. [dev · v1.0.0 · deterministic: true · permissions: none] params: pattern*, text*, flags |
case.convert | Convert an identifier between camelCase, snake_case, kebab-case, CONSTANT_CASE, and Title Case. [dev · v1.0.0 · deterministic: true · permissions: none] params: text*, to |
hex.encode | Encode text to hex, or decode hex (with or without 0x) to text. [data · v1.0.0 · deterministic: true · permissions: none] params: text, hex |
evm.checksum_address | EIP-55 checksum an Ethereum address, or verify a checksummed one. [web3 · v1.0.0 · deterministic: true · permissions: none] params: address* |
evm.unit_convert | Convert EVM amounts between wei, gwei, and ether with exact BigInt math. [web3 · v1.0.0 · deterministic: true · permissions: none] params: value*, from, to |
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] params: none |
Entries describe changes in tool definitions. They are not statements about a server, its quality or its author. The grade measures how the tool definitions fit model providers (token cost, schema compatibility, confusable names) as scored by the ToolFit engine at the time of the listing. JSON: append .json. Opt-out: how or hello@youraitools.co.