{"server":"com.formatho/runtime","count":26,"tools":[{"name":"base64.decode","title":"base64.decode","description":"Base64-decode to text. [data · v1.0.0 · deterministic: true · permissions: none]","input_schema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["base64"],"properties":{"base64":{"type":"string","minLength":1}},"additionalProperties":false},"output_schema":null,"annotations":null,"source":"probe","observed_at":"2026-09-20T12:09:57.501Z"},{"name":"base64.encode","title":"base64.encode","description":"Base64-encode text (standard alphabet). [data · v1.0.0 · deterministic: true · permissions: none]","input_schema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["text"],"properties":{"text":{"type":"string"}},"additionalProperties":false},"output_schema":null,"annotations":null,"source":"probe","observed_at":"2026-09-20T12:09:57.501Z"},{"name":"case.convert","title":"case.convert","description":"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","$schema":"http://json-schema.org/draft-07/schema#","required":["text"],"properties":{"to":{"enum":["camel","snake","kebab","constant","title"],"type":"string","default":"snake"},"text":{"type":"string","minLength":1}},"additionalProperties":false},"output_schema":null,"annotations":null,"source":"probe","observed_at":"2026-09-20T12:09:57.501Z"},{"name":"erc4626.math","title":"erc4626.math","description":"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","$schema":"http://json-schema.org/draft-07/schema#","required":["totalAssets","totalSupply","amount"],"properties":{"amount":{"type":"string","pattern":"^\\d+$"},"direction":{"enum":["assetsToShares","sharesToAssets"],"type":"string","default":"assetsToShares"},"totalAssets":{"type":"string","pattern":"^\\d+$"},"totalSupply":{"type":"string","pattern":"^\\d+$"},"virtualAssets":{"type":"string","default":"0","pattern":"^\\d+$"},"virtualShares":{"type":"string","default":"0","pattern":"^\\d+$"}},"additionalProperties":false},"output_schema":null,"annotations":null,"source":"probe","observed_at":"2026-09-20T12:09:57.501Z"},{"name":"evm.checksum_address","title":"evm.checksum_address","description":"EIP-55 checksum an Ethereum address, or verify a checksummed one. [web3 · v1.0.0 · deterministic: true · permissions: none]","input_schema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["address"],"properties":{"address":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"}},"additionalProperties":false},"output_schema":null,"annotations":null,"source":"probe","observed_at":"2026-09-20T12:09:57.501Z"},{"name":"evm.create2_address","title":"evm.create2_address","description":"Compute the deterministic CREATE2 address: keccak256(0xff ‖ factory ‖ salt ‖ initCodeHash)[12:]. [web3 · v1.0.0 · deterministic: true · permissions: none]","input_schema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["factory","salt","initCodeHash"],"properties":{"salt":{"type":"string","pattern":"^0x[0-9a-fA-F]{1,64}$"},"factory":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"initCodeHash":{"type":"string","pattern":"^0x[0-9a-fA-F]{64}$"}},"additionalProperties":false},"output_schema":null,"annotations":null,"source":"probe","observed_at":"2026-09-20T12:09:57.501Z"},{"name":"evm.decode_calldata","title":"evm.decode_calldata","description":"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","$schema":"http://json-schema.org/draft-07/schema#","required":["calldata"],"properties":{"calldata":{"type":"string","pattern":"^0x[0-9a-fA-F]+$"}},"additionalProperties":false},"output_schema":null,"annotations":null,"source":"probe","observed_at":"2026-09-20T12:09:57.501Z"},{"name":"evm.function_selector","title":"evm.function_selector","description":"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","$schema":"http://json-schema.org/draft-07/schema#","properties":{"selector":{"type":"string","pattern":"^0x[0-9a-fA-F]{8}$"},"signature":{"type":"string","minLength":3}},"additionalProperties":false},"output_schema":null,"annotations":null,"source":"probe","observed_at":"2026-09-20T12:09:57.501Z"},{"name":"evm.keccak256","title":"evm.keccak256","description":"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","$schema":"http://json-schema.org/draft-07/schema#","required":["data"],"properties":{"data":{"type":"string","minLength":1},"encoding":{"enum":["hex","utf8"],"type":"string","default":"utf8"}},"additionalProperties":false},"output_schema":null,"annotations":null,"source":"probe","observed_at":"2026-09-20T12:09:57.501Z"},{"name":"evm.storage_slot","title":"evm.storage_slot","description":"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","$schema":"http://json-schema.org/draft-07/schema#","required":["baseSlot"],"properties":{"kind":{"enum":["simple","mapping","array"],"type":"string","default":"mapping"},"keyHex":{"type":"string","pattern":"^0x[0-9a-fA-F]{1,64}$"},"baseSlot":{"type":"integer","minimum":0},"arrayIndex":{"type":"integer","minimum":0}},"additionalProperties":false},"output_schema":null,"annotations":null,"source":"probe","observed_at":"2026-09-20T12:09:57.501Z"},{"name":"evm.unit_convert","title":"evm.unit_convert","description":"Convert EVM amounts between wei, gwei, and ether with exact BigInt math. [web3 · v1.0.0 · deterministic: true · permissions: none]","input_schema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["value"],"properties":{"to":{"enum":["wei","gwei","ether"],"type":"string","default":"wei"},"from":{"enum":["wei","gwei","ether"],"type":"string","default":"ether"},"value":{"type":"string","pattern":"^\\d+(\\.\\d+)?$"}},"additionalProperties":false},"output_schema":null,"annotations":null,"source":"probe","observed_at":"2026-09-20T12:09:57.501Z"},{"name":"evm.v4_hook_permissions","title":"evm.v4_hook_permissions","description":"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","$schema":"http://json-schema.org/draft-07/schema#","properties":{"calls":{"type":"array","items":{"enum":["beforeInitialize","afterInitialize","beforeAddLiquidity","afterAddLiquidity","beforeRemoveLiquidity","afterRemoveLiquidity","beforeSwap","afterSwap","beforeDonate","afterDonate","beforeSwapReturnsDelta","afterSwapReturnsDelta","afterAddLiquidityReturnsDelta","afterRemoveLiquidityReturnsDelta"],"type":"string"}},"address":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"}},"additionalProperties":false},"output_schema":null,"annotations":null,"source":"probe","observed_at":"2026-09-20T12:09:57.501Z"},{"name":"formatho.registry","title":"formatho.registry","description":"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","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"output_schema":null,"annotations":null,"source":"probe","observed_at":"2026-09-20T12:09:57.501Z"},{"name":"hash.text","title":"hash.text","description":"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","$schema":"http://json-schema.org/draft-07/schema#","required":["text"],"properties":{"text":{"type":"string"},"algorithm":{"enum":["md5","sha1","sha256","sha384","sha512"],"type":"string","default":"sha256"}},"additionalProperties":false},"output_schema":null,"annotations":null,"source":"probe","observed_at":"2026-09-20T12:09:57.501Z"},{"name":"hex.encode","title":"hex.encode","description":"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","$schema":"http://json-schema.org/draft-07/schema#","properties":{"hex":{"type":"string"},"text":{"type":"string"}},"additionalProperties":false},"output_schema":null,"annotations":null,"source":"probe","observed_at":"2026-09-20T12:09:57.501Z"},{"name":"json.format","title":"json.format","description":"Validate and pretty-print JSON with a configurable indent level. [data · v1.0.0 · deterministic: true · permissions: none]","input_schema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["json"],"properties":{"json":{"type":"string","minLength":1},"indent":{"type":"integer","default":2,"maximum":8,"minimum":0}},"additionalProperties":false},"output_schema":null,"annotations":null,"source":"probe","observed_at":"2026-09-20T12:09:57.501Z"},{"name":"json.minify","title":"json.minify","description":"Validate JSON and strip all insignificant whitespace. [data · v1.0.0 · deterministic: true · permissions: none]","input_schema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["json"],"properties":{"json":{"type":"string","minLength":1}},"additionalProperties":false},"output_schema":null,"annotations":null,"source":"probe","observed_at":"2026-09-20T12:09:57.501Z"},{"name":"json.validate","title":"json.validate","description":"Validate JSON and report the parse error position if invalid. [data · v1.0.0 · deterministic: true · permissions: none]","input_schema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["json"],"properties":{"json":{"type":"string","minLength":1}},"additionalProperties":false},"output_schema":null,"annotations":null,"source":"probe","observed_at":"2026-09-20T12:09:57.501Z"},{"name":"jwt.decode","title":"jwt.decode","description":"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","$schema":"http://json-schema.org/draft-07/schema#","required":["token"],"properties":{"token":{"type":"string","minLength":10}},"additionalProperties":false},"output_schema":null,"annotations":null,"source":"probe","observed_at":"2026-09-20T12:09:57.501Z"},{"name":"random.string","title":"random.string","description":"Generate a cryptographically random alphanumeric string. [security · v1.0.0 · deterministic: false · permissions: none]","input_schema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"length":{"type":"integer","default":32,"maximum":512,"minimum":8}},"additionalProperties":false},"output_schema":null,"annotations":null,"source":"probe","observed_at":"2026-09-20T12:09:57.501Z"},{"name":"regex.test","title":"regex.test","description":"Test a regular expression against text: match result plus all capture groups. [dev · v1.0.0 · deterministic: true · permissions: none]","input_schema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["pattern","text"],"properties":{"text":{"type":"string"},"flags":{"type":"string","default":"","maxLength":8},"pattern":{"type":"string","minLength":1}},"additionalProperties":false},"output_schema":null,"annotations":null,"source":"probe","observed_at":"2026-09-20T12:09:57.501Z"},{"name":"slug.generate","title":"slug.generate","description":"Convert text to a URL-safe kebab-case slug. [dev · v1.0.0 · deterministic: true · permissions: none]","input_schema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["text"],"properties":{"text":{"type":"string","minLength":1}},"additionalProperties":false},"output_schema":null,"annotations":null,"source":"probe","observed_at":"2026-09-20T12:09:57.501Z"},{"name":"timestamp.convert","title":"timestamp.convert","description":"Convert Unix seconds/milliseconds to ISO 8601 (UTC) and back. [dev · v1.0.0 · deterministic: true · permissions: none]","input_schema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"iso":{"type":"string"},"value":{"type":["string","number"]}},"additionalProperties":false},"output_schema":null,"annotations":null,"source":"probe","observed_at":"2026-09-20T12:09:57.501Z"},{"name":"url.decode","title":"url.decode","description":"Decode percent-encoded text. [network · v1.0.0 · deterministic: true · permissions: none]","input_schema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["text"],"properties":{"text":{"type":"string"}},"additionalProperties":false},"output_schema":null,"annotations":null,"source":"probe","observed_at":"2026-09-20T12:09:57.501Z"},{"name":"url.encode","title":"url.encode","description":"Percent-encode text (component encoding). [network · v1.0.0 · deterministic: true · permissions: none]","input_schema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["text"],"properties":{"text":{"type":"string"}},"additionalProperties":false},"output_schema":null,"annotations":null,"source":"probe","observed_at":"2026-09-20T12:09:57.501Z"},{"name":"uuid.v4","title":"uuid.v4","description":"Generate random UUID v4 values. [security · v1.0.0 · deterministic: false · permissions: none]","input_schema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"count":{"type":"integer","default":1,"maximum":100,"minimum":1}},"additionalProperties":false},"output_schema":null,"annotations":null,"source":"probe","observed_at":"2026-09-20T12:09:57.501Z"}],"next_cursor":null,"next_actions":[{"action":"get_connection","description":"Connection block to call these tools","href":"/v1/servers/com.formatho%2Fruntime/connection?target=mcpServers","arguments":{"name":"com.formatho/runtime","target":"mcpServers"}},{"action":"get_server","description":"Full descriptor with trust and connectability","href":"/v1/servers/com.formatho%2Fruntime","arguments":{"name":"com.formatho/runtime"}}]}