Formatho Runtime MCP
Formatho Runtime is a self-hosted MCP server providing AI agents with controlled, permissioned, and audit-logged access to a catalog of developer, security, and EVM tools. It ensures zero data egress by running in the user's VPC or on-premise, while also offering a hosted tier. The server exposes tools for Web3 analysis, security auditing, data format validation, and developer utilities.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://mcp.formatho.com/mcpWhat its tools do
26 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Not annotated (26)
json.formatjson.minifyjson.validatebase64.encodebase64.decodeurl.encodeurl.decodeslug.generatehash.textuuid.v4random.stringjwt.decodeevm.keccak256evm.function_selectorevm.create2_addressevm.storage_slotevm.decode_calldataevm.v4_hook_permissionserc4626.mathtimestamp.convertregex.testcase.converthex.encodeevm.checksum_addressevm.unit_convertformatho.registry
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Passed Official MCP Registry namespace is tied to formatho.com ·
- Passed Endpoint is on the registry namespace domain ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Decode raw Ethereum calldata and transactions
- Analyze security reports and test for prompt injection
- Validate and convert data formats like JSON, YAML, and XML
- Calculate EVM addresses and storage slots
Source and maintenance
Protocol and capabilities
- Server
- formatho-runtime 0.3.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 26 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
26 advertised
json.format — json.format
Validate and pretty-print JSON with a configurable indent level. [data · v1.0.0 · deterministic: true · permissions: none]
{
"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
}json.minify — json.minify
Validate JSON and strip all insignificant whitespace. [data · v1.0.0 · deterministic: true · permissions: none]
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"json"
],
"properties": {
"json": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
}json.validate — json.validate
Validate JSON and report the parse error position if invalid. [data · v1.0.0 · deterministic: true · permissions: none]
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"json"
],
"properties": {
"json": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
}base64.encode — base64.encode
Base64-encode text (standard alphabet). [data · v1.0.0 · deterministic: true · permissions: none]
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"text"
],
"properties": {
"text": {
"type": "string"
}
},
"additionalProperties": false
}base64.decode — base64.decode
Base64-decode to text. [data · v1.0.0 · deterministic: true · permissions: none]
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"base64"
],
"properties": {
"base64": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
}url.encode — url.encode
Percent-encode text (component encoding). [network · v1.0.0 · deterministic: true · permissions: none]
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"text"
],
"properties": {
"text": {
"type": "string"
}
},
"additionalProperties": false
}url.decode — url.decode
Decode percent-encoded text. [network · v1.0.0 · deterministic: true · permissions: none]
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"text"
],
"properties": {
"text": {
"type": "string"
}
},
"additionalProperties": false
}slug.generate — slug.generate
Convert text to a URL-safe kebab-case slug. [dev · v1.0.0 · deterministic: true · permissions: none]
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"minLength": 1
}
},
"additionalProperties": false
}hash.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]
{
"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
}uuid.v4 — uuid.v4
Generate random UUID v4 values. [security · v1.0.0 · deterministic: false · permissions: none]
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"count": {
"type": "integer",
"default": 1,
"maximum": 100,
"minimum": 1
}
},
"additionalProperties": false
}random.string — random.string
Generate a cryptographically random alphanumeric string. [security · v1.0.0 · deterministic: false · permissions: none]
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"length": {
"type": "integer",
"default": 32,
"maximum": 512,
"minimum": 8
}
},
"additionalProperties": false
}jwt.decode — 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]
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"token"
],
"properties": {
"token": {
"type": "string",
"minLength": 10
}
},
"additionalProperties": false
}evm.keccak256 — evm.keccak256
Keccak-256 (Ethereum flavor, NOT NIST SHA3-256) of arbitrary hex or text. [web3 · v1.0.0 · deterministic: true · permissions: none]
{
"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
}evm.function_selector — 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]
{
"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
}evm.create2_address — evm.create2_address
Compute the deterministic CREATE2 address: keccak256(0xff ‖ factory ‖ salt ‖ initCodeHash)[12:]. [web3 · v1.0.0 · deterministic: true · permissions: none]
{
"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
}evm.storage_slot — 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]
{
"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
}evm.decode_calldata — 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]
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"calldata"
],
"properties": {
"calldata": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]+$"
}
},
"additionalProperties": false
}evm.v4_hook_permissions — 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]
{
"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
}erc4626.math — 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]
{
"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
}timestamp.convert — timestamp.convert
Convert Unix seconds/milliseconds to ISO 8601 (UTC) and back. [dev · v1.0.0 · deterministic: true · permissions: none]
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"iso": {
"type": "string"
},
"value": {
"type": [
"string",
"number"
]
}
},
"additionalProperties": false
}regex.test — regex.test
Test a regular expression against text: match result plus all capture groups. [dev · v1.0.0 · deterministic: true · permissions: none]
{
"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
}case.convert — case.convert
Convert an identifier between camelCase, snake_case, kebab-case, CONSTANT_CASE, and Title Case. [dev · v1.0.0 · deterministic: true · permissions: none]
{
"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
}hex.encode — hex.encode
Encode text to hex, or decode hex (with or without 0x) to text. [data · v1.0.0 · deterministic: true · permissions: none]
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"hex": {
"type": "string"
},
"text": {
"type": "string"
}
},
"additionalProperties": false
}evm.checksum_address — evm.checksum_address
EIP-55 checksum an Ethereum address, or verify a checksummed one. [web3 · v1.0.0 · deterministic: true · permissions: none]
{
"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
}evm.unit_convert — evm.unit_convert
Convert EVM amounts between wei, gwei, and ether with exact BigInt math. [web3 · v1.0.0 · deterministic: true · permissions: none]
{
"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
}formatho.registry — 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",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 572 ms
- 95th percentile latency
- 572 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 572 ms · metadata changed · 26 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http formatho-runtime-mcp https://mcp.formatho.com/mcpCodex
codex mcp add formatho-runtime-mcp --url https://mcp.formatho.com/mcpCursor
{
"mcpServers": {
"formatho-runtime-mcp": {
"url": "https://mcp.formatho.com/mcp"
}
}
}Cline
{
"mcpServers": {
"formatho-runtime-mcp": {
"type": "streamableHttp",
"url": "https://mcp.formatho.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"formatho-runtime-mcp": {
"type": "http",
"url": "https://mcp.formatho.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http formatho-runtime-mcp https://mcp.formatho.com/mcpClaude Desktop
https://mcp.formatho.com/mcpWindsurf
{
"mcpServers": {
"formatho-runtime-mcp": {
"serverUrl": "https://mcp.formatho.com/mcp"
}
}
}Let your agent find its tools
Find servers like Formatho Runtime MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other developer tools servers
Do you run Formatho Runtime MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.