Koskamo

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.

Formatho Runtime MCP logo, by FormathoVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-07Operated by Formatho
MCP endpoint (Streamable HTTP)
https://mcp.formatho.com/mcp
Vendor documentation

What its tools do

26 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

26 of 26 have a description · 0 of 26 declare behavior hints · 0 of 25 with parameters document them all

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

Vendor evidenceRegistry 0.3.0

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
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Formatho Runtime — deterministic, permission-free developer, security and EVM tools. All tools are pure functions: no network, no filesystem, no secrets. Registry: 26 tools (v0.3.0).

Tools

26 advertised

json.format — json.format
Advertised by the server during the last successful anonymous check.

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

json.format 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
}
json.minify — json.minify
Advertised by the server during the last successful anonymous check.

Validate JSON and strip all insignificant whitespace. [data · v1.0.0 · deterministic: true · permissions: none]

json.minify input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "json"
  ],
  "properties": {
    "json": {
      "type": "string",
      "minLength": 1
    }
  },
  "additionalProperties": false
}
json.validate — json.validate
Advertised by the server during the last successful anonymous check.

Validate JSON and report the parse error position if invalid. [data · v1.0.0 · deterministic: true · permissions: none]

json.validate input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "json"
  ],
  "properties": {
    "json": {
      "type": "string",
      "minLength": 1
    }
  },
  "additionalProperties": false
}
base64.encode — base64.encode
Advertised by the server during the last successful anonymous check.

Base64-encode text (standard alphabet). [data · v1.0.0 · deterministic: true · permissions: none]

base64.encode input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "text"
  ],
  "properties": {
    "text": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
base64.decode — base64.decode
Advertised by the server during the last successful anonymous check.

Base64-decode to text. [data · v1.0.0 · deterministic: true · permissions: none]

base64.decode input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "base64"
  ],
  "properties": {
    "base64": {
      "type": "string",
      "minLength": 1
    }
  },
  "additionalProperties": false
}
url.encode — url.encode
Advertised by the server during the last successful anonymous check.

Percent-encode text (component encoding). [network · v1.0.0 · deterministic: true · permissions: none]

url.encode input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "text"
  ],
  "properties": {
    "text": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
url.decode — url.decode
Advertised by the server during the last successful anonymous check.

Decode percent-encoded text. [network · v1.0.0 · deterministic: true · permissions: none]

url.decode input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "text"
  ],
  "properties": {
    "text": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
slug.generate — slug.generate
Advertised by the server during the last successful anonymous check.

Convert text to a URL-safe kebab-case slug. [dev · v1.0.0 · deterministic: true · permissions: none]

slug.generate input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "text"
  ],
  "properties": {
    "text": {
      "type": "string",
      "minLength": 1
    }
  },
  "additionalProperties": false
}
hash.text — hash.text
Advertised by the server during the last successful anonymous check.

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]

hash.text 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
}
uuid.v4 — uuid.v4
Advertised by the server during the last successful anonymous check.

Generate random UUID v4 values. [security · v1.0.0 · deterministic: false · permissions: none]

uuid.v4 input schema
{
  "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
Advertised by the server during the last successful anonymous check.

Generate a cryptographically random alphanumeric string. [security · v1.0.0 · deterministic: false · permissions: none]

random.string input schema
{
  "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
Advertised by the server during the last successful anonymous check.

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]

jwt.decode input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "token"
  ],
  "properties": {
    "token": {
      "type": "string",
      "minLength": 10
    }
  },
  "additionalProperties": false
}
evm.keccak256 — evm.keccak256
Advertised by the server during the last successful anonymous check.

Keccak-256 (Ethereum flavor, NOT NIST SHA3-256) of arbitrary hex or text. [web3 · v1.0.0 · deterministic: true · permissions: none]

evm.keccak256 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
}
evm.function_selector — evm.function_selector
Advertised by the server during the last successful anonymous check.

Compute the 4-byte function selector from a canonical signature, with reverse lookup against common signatures. [web3 · v1.0.0 · deterministic: true · permissions: none]

evm.function_selector 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
}
evm.create2_address — evm.create2_address
Advertised by the server during the last successful anonymous check.

Compute the deterministic CREATE2 address: keccak256(0xff ‖ factory ‖ salt ‖ initCodeHash)[12:]. [web3 · v1.0.0 · deterministic: true · permissions: none]

evm.create2_address 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
}
evm.storage_slot — evm.storage_slot
Advertised by the server during the last successful anonymous check.

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]

evm.storage_slot 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
}
evm.decode_calldata — evm.decode_calldata
Advertised by the server during the last successful anonymous check.

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]

evm.decode_calldata 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
}
evm.v4_hook_permissions — evm.v4_hook_permissions
Advertised by the server during the last successful anonymous check.

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]

evm.v4_hook_permissions 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
}
erc4626.math — erc4626.math
Advertised by the server during the last successful anonymous check.

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]

erc4626.math 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
}
timestamp.convert — timestamp.convert
Advertised by the server during the last successful anonymous check.

Convert Unix seconds/milliseconds to ISO 8601 (UTC) and back. [dev · v1.0.0 · deterministic: true · permissions: none]

timestamp.convert input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "iso": {
      "type": "string"
    },
    "value": {
      "type": [
        "string",
        "number"
      ]
    }
  },
  "additionalProperties": false
}
regex.test — regex.test
Advertised by the server during the last successful anonymous check.

Test a regular expression against text: match result plus all capture groups. [dev · v1.0.0 · deterministic: true · permissions: none]

regex.test 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
}
case.convert — case.convert
Advertised by the server during the last successful anonymous check.

Convert an identifier between camelCase, snake_case, kebab-case, CONSTANT_CASE, and Title Case. [dev · v1.0.0 · deterministic: true · permissions: none]

case.convert 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
}
hex.encode — hex.encode
Advertised by the server during the last successful anonymous check.

Encode text to hex, or decode hex (with or without 0x) to text. [data · v1.0.0 · deterministic: true · permissions: none]

hex.encode input schema
{
  "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
Advertised by the server during the last successful anonymous check.

EIP-55 checksum an Ethereum address, or verify a checksummed one. [web3 · v1.0.0 · deterministic: true · permissions: none]

evm.checksum_address 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
}
evm.unit_convert — evm.unit_convert
Advertised by the server during the last successful anonymous check.

Convert EVM amounts between wei, gwei, and ether with exact BigInt math. [web3 · v1.0.0 · deterministic: true · permissions: none]

evm.unit_convert 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
}
formatho.registry — formatho.registry
Advertised by the server during the last successful anonymous check.

List every registered Formatho tool with version, category, deterministic flag, permissions, and Formatho Verified status. [meta · v1.0.0 · deterministic: true · permissions: none]

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

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

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.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http formatho-runtime-mcp https://mcp.formatho.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add formatho-runtime-mcp --url https://mcp.formatho.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable formatho-runtime-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "formatho-runtime-mcp": {
      "url": "https://mcp.formatho.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "formatho-runtime-mcp": {
      "type": "streamableHttp",
      "url": "https://mcp.formatho.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start formatho-runtime-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "formatho-runtime-mcp": {
      "type": "http",
      "url": "https://mcp.formatho.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http formatho-runtime-mcp https://mcp.formatho.com/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://mcp.formatho.com/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "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.

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.

Claim this listing