{"name":"io.github.razikallayi/razi-dev","slug":"razikallayi-razi-dev","title":"Razi Dev Utilities","description":"Developer utilities over MCP: Base64 encode and decode, decode JWTs, format JSON, do percentages.","url":"https://mcp.market/server/razikallayi-razi-dev","rating":null,"grade":"C","score":64,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":8,"stars":null,"forks":null,"downloads_week":null,"last_push_at":null,"license":null},"uptime":{"percent":100,"checks":2,"ok":2,"last_checked_at":"2026-09-20T00:30:55.264Z","last_ok_at":"2026-09-20T00:30:55.264Z","latency_ms":178},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/razikallayi/razikallayi.com","website":"https://www.razi.pro/developer","version":"1.0.0","remotes":[{"type":"streamable-http","url":"https://www.razi.pro/api/mcp/dev","headers":[{"description":"Optional. 'Bearer rz_...' raises rate limits and attributes usage.","isSecret":true,"name":"Authorization"}]}],"packages":[],"tools":[{"name":"calculate_percentage","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"operation":{"type":"string","enum":["of","increase","decrease","change"],"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."},"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."}},"required":["operation","value1","value2"]}},{"name":"decode_base64","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"encoded":{"type":"string","description":"Standard Base64 text. Surrounding whitespace and missing '=' padding are tolerated; the URL-safe alphabet (- and _) is not."}},"required":["encoded"]}},{"name":"decode_jwt","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","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."}},"required":["token"]}},{"name":"encode_base64","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","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."}},"required":["text"]}},{"name":"format_json","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","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."}},"required":["json"]}}],"scan":{"score":64,"grade":"C","scanned_at":"2026-09-20T00:24:31.111Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T00:24:31.136Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 550ms"]},"poisoning":{"score":15,"max":15,"notes":["5 tool descriptions checked"]},"auth":{"score":8,"max":15,"notes":["API key sent as a header"]},"maintenance":{"score":3,"max":15,"notes":["repository not readable: repo not found"]},"identity":{"score":2,"max":10,"notes":["no repository or website to verify"]}},"findings":[],"inputs":{"probes":[{"url":"https://www.razi.pro/api/mcp/dev","reachable":true,"authRequired":false,"latencyMs":550,"serverInfo":{"name":"razi-dev-utilities","version":"2.1.1"}}],"packages":[],"repo":{"found":false,"owner":"razikallayi","repo":"razikallayi.com","error":"repo not found"},"icon":{"url":"https://www.razi.pro/icon.svg?icon.2lxapmye_crw0.svg","source":"site"},"presence":{"stars":null,"forks":null,"downloadsWeek":null,"license":null,"lastPushAt":null,"score":8}}}},"grade_history":[],"reviews":[]}