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.
https://www.razi.pro/api/mcp/devWhat its tools do
5 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Not annotated (5)
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
- 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
{
"tools": {}
}Tools
5 advertised
encode_base64
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.
{
"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
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.
{
"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
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.
{
"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
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.
{
"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
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.
{
"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
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
- 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.
Claude Code
claude mcp add --transport http razi-dev-utilities-mcp https://www.razi.pro/api/mcp/devCodex
codex mcp add razi-dev-utilities-mcp --url https://www.razi.pro/api/mcp/devCursor
{
"mcpServers": {
"razi-dev-utilities-mcp": {
"url": "https://www.razi.pro/api/mcp/dev"
}
}
}Cline
{
"mcpServers": {
"razi-dev-utilities-mcp": {
"type": "streamableHttp",
"url": "https://www.razi.pro/api/mcp/dev",
"disabled": false
}
}
}VS Code
{
"servers": {
"razi-dev-utilities-mcp": {
"type": "http",
"url": "https://www.razi.pro/api/mcp/dev"
}
}
}Gemini CLI
gemini mcp add --transport http razi-dev-utilities-mcp https://www.razi.pro/api/mcp/devClaude Desktop
https://www.razi.pro/api/mcp/devWindsurf
{
"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.