All Toolsvothlab

MCP Server

New

Call every Vothlab tool directly from Claude, Cursor, or any MCP-compatible LLM client — no copy-pasting into a browser tab.

What is MCP?

The Model Context Protocol is an open standard that lets LLM clients — Claude Desktop, Claude Code, Cursor, and others — call external tools during a conversation. The Vothlab MCP server exposes 16 of our developer tools (encoding, hashing, generation, format conversion, regex, diff) as MCP tools, so an LLM can call hash_generate oruuid_generate mid-conversation instead of you switching tabs. All tools are free and deterministic — no LLM calls happen inside the server itself, no data is retained.

Install & Connect

Point any client that supports remote (Streamable HTTP) MCP servers straight at the hosted endpoint — nothing to install.

claude-code
claude mcp add --transport http vothlab https://mcp.vothlab.com

Or add it manually to your client's MCP config (Claude Desktop, Cursor, etc.):

mcp.json
{
  "mcpServers": {
    "vothlab": {
      "url": "https://mcp.vothlab.com"
    }
  }
}

Quick Example

Once connected, just ask your LLM client naturally — e.g. “generate a UUID and hash it with SHA-256”. Under the hood, the client sends a JSON-RPC tools/call request like this:

request
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "hash_generate",
    "arguments": {
      "input": "vothlab",
      "algorithm": "sha256"
    }
  }
}
response
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "0ae85bf797ef2a640186a5c056aac0e57143ff368414f71b297441e4f2da6f3c"
      }
    ],
    "isError": false
  }
}

Full API Reference — 16 Tools

Encode & Decode

base64_encode

Encode UTF-8 text to Base64.

Parameters

ParamTypeDefaultDescription
input*stringText to encode

Request

tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "base64_encode",
    "arguments": {
      "input": "hello world"
    }
  }
}

Response

result
aGVsbG8gd29ybGQ=

base64_decode

Decode a Base64 string to UTF-8 text.

Parameters

ParamTypeDefaultDescription
input*stringBase64 string to decode

Request

tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "base64_decode",
    "arguments": {
      "input": "aGVsbG8gd29ybGQ="
    }
  }
}

Response

result
hello world

url_encode

URL-encode a string (percent-encoding).

Parameters

ParamTypeDefaultDescription
input*stringText to encode

Request

tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "url_encode",
    "arguments": {
      "input": "a b/c"
    }
  }
}

Response

result
a%20b%2Fc

url_decode

URL-decode a percent-encoded string.

Parameters

ParamTypeDefaultDescription
input*stringPercent-encoded text to decode

Request

tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "url_decode",
    "arguments": {
      "input": "a%20b%2Fc"
    }
  }
}

Response

result
a b/c

jwt_decode

Decode a JWT's header, payload, and expiry. Does NOT verify the signature.

Parameters

ParamTypeDefaultDescription
token*stringThe JWT to decode

Request

tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "jwt_decode",
    "arguments": {
      "token": "eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0In0.sig"
    }
  }
}

Response

result
{
  "header": { "alg": "HS256" },
  "payload": { "sub": "1234" },
  "expiresAt": null,
  "issuedAt": null
}

Generate

hash_generate

Generate a cryptographic hash of the given text.

Parameters

ParamTypeDefaultDescription
input*stringText to hash
algorithmenumsha256md5 | sha1 | sha256 | sha384 | sha512

Request

tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "hash_generate",
    "arguments": {
      "input": "hello",
      "algorithm": "sha256"
    }
  }
}

Response

result
2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b982

uuid_generate

Generate one or more random UUIDs (v4).

Parameters

ParamTypeDefaultDescription
countinteger1How many UUIDs to generate (1–1000)
uppercasebooleanfalseReturn uppercase UUIDs

Request

tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "uuid_generate",
    "arguments": {
      "count": 2
    }
  }
}

Response

result
c4fb1c02-6005-412f-9763-c1692566311d
ef797f7b-c205-4f68-80f7-67a6d3bfd57e

password_generate

Generate a strong random password with configurable character sets.

Parameters

ParamTypeDefaultDescription
lengthinteger16Password length (4–256)
uppercasebooleantrueInclude A–Z
lowercasebooleantrueInclude a–z
numbersbooleantrueInclude 0–9
symbolsbooleantrueInclude !@#$%^&* etc.
excludeAmbiguousbooleanfalseExclude 0, O, l, 1, I

Request

tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "password_generate",
    "arguments": {
      "length": 20
    }
  }
}

Response

result
xQ8!kLp2$mZr9@wTv3Nb

Convert

yaml_to_json

Convert YAML to JSON.

Parameters

ParamTypeDefaultDescription
yaml*stringYAML source

Request

tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "yaml_to_json",
    "arguments": {
      "yaml": "a: 1\nb:\n  - x\n  - y"
    }
  }
}

Response

result
{
  "a": 1,
  "b": ["x", "y"]
}

json_to_yaml

Convert JSON to YAML.

Parameters

ParamTypeDefaultDescription
json*stringJSON source

Request

tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "json_to_yaml",
    "arguments": {
      "json": "{\"a\":1,\"b\":[\"x\",\"y\"]}"
    }
  }
}

Response

result
a: 1
b:
  - x
  - y

json_to_csv

Convert a JSON array of flat objects to CSV.

Parameters

ParamTypeDefaultDescription
json*stringJSON array of flat objects

Request

tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "json_to_csv",
    "arguments": {
      "json": "[{\"a\":1,\"b\":\"x\"},{\"a\":2,\"b\":\"y,z\"}]"
    }
  }
}

Response

result
a,b
1,x
2,"y,z"

csv_to_json

Convert CSV (with header row) to a JSON array of objects.

Parameters

ParamTypeDefaultDescription
csv*stringCSV source, first row is the header

Request

tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "csv_to_json",
    "arguments": {
      "csv": "a,b\n1,x\n2,\"y,z\""
    }
  }
}

Response

result
[
  { "a": "1", "b": "x" },
  { "a": "2", "b": "y,z" }
]

timestamp_convert

Convert between Unix epoch (seconds or ms) and a human-readable date, or get the current time.

Parameters

ParamTypeDefaultDescription
inputstringEpoch or parseable date string. Omit for "now".

Request

tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "timestamp_convert",
    "arguments": {
      "input": "1700000000"
    }
  }
}

Response

result
{
  "iso": "2023-11-14T22:13:20.000Z",
  "utc": "Tue, 14 Nov 2023 22:13:20 GMT",
  "epochSeconds": 1700000000,
  "epochMillis": 1700000000000
}

color_convert

Convert a color between HEX, RGB, and HSL.

Parameters

ParamTypeDefaultDescription
color*stringHEX (#rrggbb), rgb(r,g,b), or hsl(h,s%,l%)

Request

tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "color_convert",
    "arguments": {
      "color": "#6366f1"
    }
  }
}

Response

result
{
  "hex": "#6366f1",
  "rgb": "rgb(99, 102, 241)",
  "hsl": "hsl(239, 84%, 67%)"
}

Text & Regex

regex_test

Test a regular expression against text and return all matches with capture groups and indices.

Parameters

ParamTypeDefaultDescription
pattern*stringRegex pattern, without slashes
flagsstringgRegex flags, e.g. 'gi'
input*stringText to test against

Request

tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "regex_test",
    "arguments": {
      "pattern": "(\\w+)@(\\w+)",
      "input": "a@b c@d"
    }
  }
}

Response

result
{
  "matchCount": 2,
  "matches": [
    { "match": "a@b", "index": 0, "groups": ["a", "b"] },
    { "match": "c@d", "index": 4, "groups": ["c", "d"] }
  ]
}

text_diff

Compute a diff between two texts, line- or word-based.

Parameters

ParamTypeDefaultDescription
before*stringOriginal text
after*stringModified text
modeenumlineline | word

Request

tools/call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "text_diff",
    "arguments": {
      "before": "hello world",
      "after": "hello there"
    }
  }
}

Response

result
- hello world
+ hello there

This is the free tier — deterministic tools, no external API calls, no data retention. Premium AI-powered tools (natural-language → regex/SQL, debug assistant) are planned behind an API key on the same MCP endpoint.