Koskamo

razi.pro Razi Dev Utilities MCP

Provides developer utilities over MCP including Base64 encode/decode, JWT decoding, JSON formatting, and percentage calculations. Part of a broader suite of 28 tools available via scoped endpoints like /api/mcp/dev.

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.

razi.pro Razi Dev Utilities MCP logo, by razi.proCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-07Published by razi.pro
You need:No API key, no signup: anonymous callers are rate limited, and a free key raises the limit.
MCP endpoint (Streamable HTTP)
https://www.razi.pro/api/mcp/dev
Vendor documentation

What its tools do

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

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

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Decode JSON Web Tokens (JWTs)
  • Encode and decode Base64 strings
  • Format JSON data for readability
  • Calculate percentages

Source and maintenance

Community listingRegistry 1.0.0
Maintenance checked

Protocol and capabilities

Server
razi-dev-utilities 2.1.1
MCP protocol negotiated in check
2025-06-18
Tools
5 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {}
}

Tools

5 advertised

encode_base64
Advertised by the server during the last successful anonymous check.

Encode UTF-8 text as standard Base64 (padded, A-Z a-z 0-9 + /), for embedding binary-unsafe content in JSON, data URIs, HTTP headers or Basic auth. Returns JSON { encoded }. The output uses the standard alphabet, so it is NOT URL-safe: '+' and '/' must still be percent-escaped before they go in a query string or path segment, and this tool does not do that. It is an encoding, not encryption — anyone can reverse it with decode_base64. Runs locally, no size limit beyond the request body.

encode_base64 input schema
{
  "type": "object",
  "required": [
    "text"
  ],
  "properties": {
    "text": {
      "type": "string",
      "description": "The plain text to encode, interpreted as UTF-8. Must be a string; raw binary cannot be passed through this parameter."
    }
  }
}
decode_base64
Advertised by the server during the last successful anonymous check.

Decode a Base64 string back to UTF-8 text. Returns JSON { decoded }. Input is verified by re-encoding, so anything that is not genuine Base64 is rejected with an error instead of returning plausible garbage; binary payloads that are not valid UTF-8 will also fail. It handles Base64 and nothing else: a string of %20-style percent escapes is not Base64 and will be rejected rather than unescaped. For a JWT use decode_jwt, which splits the three segments and handles their base64url padding for you.

decode_base64 input schema
{
  "type": "object",
  "required": [
    "encoded"
  ],
  "properties": {
    "encoded": {
      "type": "string",
      "description": "Standard Base64 text. Surrounding whitespace and missing '=' padding are tolerated; the URL-safe alphabet (- and _) is not."
    }
  }
}
decode_jwt
Advertised by the server during the last successful anonymous check.

Decode a JWT's header and payload for inspection. Returns JSON { header, payload, signatureVerified, note, expiresAt, isExpired } — structured objects, not a rendered table. The signature is NEVER verified: that needs the issuer's key, which this service does not have, so signatureVerified is always false and the claims must be treated as untrusted, attacker-controllable input. Expiry is computed from the `exp` claim and is null when the token has none. Use decode_base64 for a bare Base64 string; this tool additionally splits the three segments and handles base64url padding.

decode_jwt input schema
{
  "type": "object",
  "required": [
    "token"
  ],
  "properties": {
    "token": {
      "type": "string",
      "description": "The full JWT: three base64url segments separated by dots (header.payload.signature). Surrounding whitespace is trimmed; a 'Bearer ' prefix is not stripped and will fail. Anything without exactly three segments is rejected."
    }
  }
}
format_json
Advertised by the server during the last successful anonymous check.

Validate and re-print a JSON string. Returns JSON { valid, formatted, minified } — the indented form and the whitespace-free form as plain strings, with no syntax highlighting or colour. Invalid JSON is rejected with the parser's own error message rather than returned as valid:false, so a successful call is proof the input parses. Round-tripping through the parser normalises the document: key order is kept but comments, trailing commas and duplicate keys are lost, and large integers lose precision.

format_json input schema
{
  "type": "object",
  "required": [
    "json"
  ],
  "properties": {
    "json": {
      "type": "string",
      "description": "The JSON document as a string. Must be strict JSON — comments and trailing commas are parse errors."
    },
    "indent": {
      "type": "number",
      "description": "Spaces per indent level in `formatted`, 0 to 10. Default 2; a value outside that range or a non-number silently falls back to 2. Use 0 for newlines with no indentation, or read `minified` for no whitespace at all."
    }
  }
}
calculate_percentage
Advertised by the server during the last successful anonymous check.

Run one of four percentage calculations on two numbers. Returns JSON { operation, result } (plus unit: 'percent' for the 'change' operation). The meaning of value1 and value2 depends on the operation, so read their descriptions before calling. Exact arithmetic, no model involved, no rounding applied. Ratios and general expressions are not supported.

calculate_percentage input schema
{
  "type": "object",
  "required": [
    "operation",
    "value1",
    "value2"
  ],
  "properties": {
    "value1": {
      "type": "number",
      "description": "For 'of', the percentage itself (25 means 25%). For 'increase' and 'decrease', the base amount being adjusted. For 'change', the original value. Must be a finite number."
    },
    "value2": {
      "type": "number",
      "description": "For 'of', the amount the percentage is taken from. For 'increase' and 'decrease', the percentage to apply (10 means 10%). For 'change', the new value. Must be a finite number."
    },
    "operation": {
      "enum": [
        "of",
        "increase",
        "decrease",
        "change"
      ],
      "type": "string",
      "description": "Which calculation to run. 'of' = value1 percent OF value2. 'increase' = value1 raised BY value2 percent. 'decrease' = value1 reduced BY value2 percent. 'change' = the percentage change going FROM value1 TO value2, which errors when value1 is 0. Required; any other value is rejected."
    }
  }
}

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
493 ms
95th percentile latency
493 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 493 ms · metadata changed · 5 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 razi-dev-utilities-mcp https://www.razi.pro/api/mcp/dev

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 razi-dev-utilities-mcp --url https://www.razi.pro/api/mcp/dev

Cursor

Merge this server into .cursor/mcp.json in your project, then enable razi-dev-utilities-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "razi-dev-utilities-mcp": {
      "url": "https://www.razi.pro/api/mcp/dev"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "razi-dev-utilities-mcp": {
      "type": "streamableHttp",
      "url": "https://www.razi.pro/api/mcp/dev",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start razi-dev-utilities-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "razi-dev-utilities-mcp": {
      "type": "http",
      "url": "https://www.razi.pro/api/mcp/dev"
    }
  }
}

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 razi-dev-utilities-mcp https://www.razi.pro/api/mcp/dev

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://www.razi.pro/api/mcp/dev

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "razi-dev-utilities-mcp": {
      "serverUrl": "https://www.razi.pro/api/mcp/dev"
    }
  }
}

Let your agent find its tools

Find servers like razi.pro Razi Dev Utilities MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.