Razi Dev Utilities
Server Details
Developer utilities over MCP: Base64 encode and decode, decode JWTs, format JSON, do percentages.
- Status
- Healthy
- Uptime
- 100.0% over 21 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 5 tools
Each tool targets a distinct operation: percentage math, base64 decoding, JWT decoding, base64 encoding, and JSON formatting. The only potentially confusing pair (decode_base64 vs decode_jwt) is explicitly disambiguated by descriptions that clarify bare Base64 vs multi-segment JWT handling.
All five tool names follow a consistent verb_noun pattern: calculate_percentage, decode_base64, decode_jwt, encode_base64, format_json. The verbs are specific and pair naturally with their objects, making the naming predictable and uniform.
Five tools is a well-scoped size for a focused dev-utilities server. Each tool covers a distinct common need without redundancy or bloat, and the count fits comfortably in the ideal 3–15 range.
The core utility workflows are covered: base64 encode/decode forms a complete round-trip, JWT inspection is fully handled, JSON validation and formatting serves its purpose, and the percentage calculator offers four common operations. Minor gaps exist, such as no URL-safe base64 variant or JWT encoding, but these are reasonable omissions given the tool descriptions explicitly acknowledge those limitations.
Available Tools
5 toolscalculate_percentageAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| value1 | Yes | 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 | Yes | 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 | Yes | 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly states the return format (JSON { operation, result }), the extra 'unit' field for 'change', that arithmetic is exact with no rounding, and that it involves no model. It also mentions the limitation on ratios. While it does not discuss error handling beyond the schema's note on 'change' when value1=0, the key behavioral traits are transparently disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with zero fluff. The primary purpose is front-loaded, the return format is given immediately, and the operational nuances are compressed into two final sentences. Every sentence earns its place, making it highly efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with four operations and no output schema, the description covers the essential context: it states the return structure, the special 'unit' for 'change', the exactness of arithmetic, and the limitation on ratios. It also points to the schema for parameter semantics. The only minor gap is that it doesn't mention potential edge cases (e.g., division by zero in 'of' when value2=0), but the schema covers the 'change' error case, so overall it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds a valuable hint that value1/value2 semantics depend on the operation and advises reading their descriptions, but it does not add substantive meaning beyond the schema. The schema already provides per-operation explanations for each parameter, so the description's contribution is minimal but helpful.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states exactly what the tool does: 'Run one of four percentage calculations on two numbers.' It names the resource (percentage calculations), the verb (run), and the scope (four operations). It also distinguishes from siblings, which are all encoding/decoding/formatting tools, so there is no ambiguity. The return format is mentioned upfront, making the purpose even clearer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives practical usage guidance: it notes that value1/value2 meanings depend on the operation and instructs the agent to read their descriptions before calling. It also explicitly states what is NOT supported ('Ratios and general expressions are not supported'), which helps avoid misuse. Since no sibling tool does similar work, explicit alternatives are not needed, but a more direct 'use this when you need percentage calculations' would strengthen the guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decode_base64AInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| encoded | Yes | Standard Base64 text. Surrounding whitespace and missing '=' padding are tolerated; the URL-safe alphabet (- and _) is not. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It discloses the return shape, the re-encoding validation behavior, the UTF-8 constraint, and the rejection of non-Base64 input. This is thorough and prevents false expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences with no wasted words. The main purpose is front-loaded, followed by validation behavior, then exclusion and alternative routing. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a simple one-parameter utility. It explains the return format, failure modes for invalid input and binary data, and how to choose an alternative tool. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents the only parameter in detail, including whitespace tolerance, padding behavior, and URL-safe alphabet exclusion. The description reinforces this but adds little new parameter-level meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Decode a Base64 string back to UTF-8 text') and clearly differentiates itself from the sibling decode_jwt. An agent can immediately tell this tool is for raw Base64 decoding, not JWT handling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'For a JWT use decode_jwt' and warns that percent-escape strings are not Base64 and will be rejected. This gives the agent both positive and negative usage guidance and names the alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decode_jwtAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and delivers: it discloses that signatures are NEVER verified, signatureVerified is always false, claims must be treated as untrusted attacker-controlled input, expiry is derived from exp and null when absent, and output is structured JSON objects rather than a table. This goes well beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and return shape, then covers critical security caveats and alternatives. Every sentence adds necessary information; no fluff or repetition of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description fully documents the return object fields and their semantics. It also covers failure-prone edge cases (Bearer prefix, segment count), security implications, and the sibling tool route, making it complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and already describes the token format well. The description adds extra meaning by explaining that it handles base64url padding, splits segments, and contrasting with decode_base64, providing context the schema alone does not convey. Slight deduction because most parameter-level detail is already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Decode a JWT's header and payload for inspection.' It clearly differentiates itself from decode_base64 by noting it splits the three segments and handles base64url padding, so an agent can distinguish it from its sibling without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the alternative tool decode_base64 and states the condition for choosing it ('for a bare Base64 string'), contrasting with this tool's additional JWT-specific behavior. It also gives practical usage constraints such as the Bearer prefix not being stripped and the three-segment requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
encode_base64AInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The plain text to encode, interpreted as UTF-8. Must be a string; raw binary cannot be passed through this parameter. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden and meets it thoroughly: it states the return shape ('Returns JSON { encoded }'), alphabet and padding, the URL-safety caveat, local execution, no size limit beyond the request body, and that it is reversible rather than encryption. This is far beyond what the schema alone provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence carries distinct information: use cases, return format, URL-safety caveat, non-encryption, and operational limits. The main action is front-loaded before caveats, and there is no repetitive or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter utility, the definition covers purpose, use cases, output format, caveats, and operational constraints, enough for an agent to invoke it correctly even without an output schema. The sibling list is small and the description already differentiates from decode_base64, making the context complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description confirms the input is UTF-8 text and notes raw binary cannot be passed, but that information already exists in the schema's parameter description; it adds no new semantic detail beyond contextualizing the encoding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Encode UTF-8 text as standard Base64,' specifying the exact alphabet and padding. This clearly distinguishes it from sibling tools such as decode_base64 (reverse operation) and decode_jwt, leaving no ambiguity about the tool's function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly names use cases ('embedding binary-unsafe content in JSON, data URIs, HTTP headers or Basic auth') and explicit when-not-to-use conditions: the output is not URL-safe, '+' and '/' must be percent-escaped, and the tool does not do that. It also clarifies it is not encryption and points to decode_base64 as the reverse operation, giving an agent clear selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
format_jsonAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| json | Yes | The JSON document as a string. Must be strict JSON — comments and trailing commas are parse errors. | |
| indent | No | 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so thoroughly. It discloses the exact return shape, that invalid JSON is rejected with a parser error rather than returning valid:false, and that round-tripping normalizes the document (losing comments, trailing commas, duplicate keys, and precision on large integers). This is exceptional behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the purpose, then efficiently covers output format, error handling, and normalization in three concise sentences. Every clause adds value; there is no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with no output schema, the description fully explains the return object, error behavior, and side effects (normalization). Nothing an agent needs to correctly call and interpret the tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters, so the schema already documents their meaning. The description adds no new parameter-specific detail; it focuses on output and behavior. Baseline of 3 is appropriate when schema covers everything.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Validate and re-print') and resource ('a JSON string'), and specifies the output structure. It clearly distinguishes itself from the sibling tools (calculate_percentage, decode_base64, etc.) by focusing on JSON formatting and validation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies the tool is for validating and formatting JSON strings, and the mention of normalization and error behavior sets expectations. However, it doesn't explicitly name alternative tools or state when not to use it; given the siblings are unrelated, this is a minor gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
- First observed
calculate_percentage - First observed
decode_base64 - First observed
decode_jwt - First observed
encode_base64 - First observed
format_json
Related MCP Connectors
238+ dev tools via MCP: JSON, QR, PDF, DNS, hash, UUID, code review, JWT, SSL, WHOIS, and more
65+ free in-browser developer tools (JSON, Base64, JWT, hash, regex…) callable over MCP.
49 developer tools via MCP: DNS, WHOIS, IP lookup, JWT, hashing, QR, and more.
22 developer utilities: base64, hashes, JWT, JSON tools, unit conversion. Free, keyless.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables AI clients to use developer utilities like JSON formatting, JWT decoding, UUID generation, and more via MCP.1269 npm2MIT
- AlicenseNot gradedqualityBmaintenanceA unified developer toolbox MCP server providing utilities for base64, JWT, timestamps, UUID, JSON formatting, hashing, URL handling, case conversion, color conversion, number bases, string operations, and regex.13 npmMIT
- AlicenseAqualityDmaintenanceZero-auth MCP server with everyday developer utilities: base64, UUID, hash, JWT decode, cron, timestamps, JSON, regex.1733 npm4MIT
- AlicenseAqualityCmaintenanceProvides deterministic developer utilities as MCP tools, including UUID/password generation, hashing, encoding, JWT decoding, cron scheduling, regex execution, and text analysis. Runs entirely locally with no network calls, telemetry, or API keys.2040 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.