MAD Synapse · Utils

Exact local utils: QR, hashing/encoding, JSON Schema, cron, markdown, diff, units, JWT, random.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
97%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~3,798Tokens (tool definitions)
~2.7 KBTypical response size
Significant attention impact (2.97% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "synapse-util": {
      "url": "https://agent.maddegen.art/hub/mcp/util"
    }
  }
}

Remote endpoints

https://agent.maddegen.art/hub/mcp/utilstreamable-http

What it can do

Tool inventory

Tools (10)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢qr_code(text, format, size, margin, error_correction, ...)

Make a QR code for any text, URL, Solana Pay / wallet address or Wi-Fi login — as a PNG (base64 data URL) or SVG, with size, margin, colours and error correction. Rendered on our server. For Wi-Fi pass wifi_ssid + wifi_password; for Solana Pay pass a solana: URI as text. Price: free. Errors: returns isError with a message for invalid input or an upstream failure (not charged).

Input Schema

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "x-raw": true,
      "description": "Text or URL to encode (ignored when wifi_ssid is set)."
    },
    "format": {
      "type": "string",
      "enum": [
        "png",
        "svg"
      ],
      "default": "png",
      "description": "PNG (base64 data URL) or SVG markup. One of \"png\", \"svg\". Default \"png\"."
    },
    "size": {
      "type": "integer",
      "minimum": 64,
      "maximum": 2048,
      "default": 512,
      "description": "Image width/height in pixels. Range 64-2048. Default 512."
    },
    "margin": {
      "type": "integer",
      "minimum": 0,
      "maximum": 16,
      "default": 2,
      "description": "Quiet-zone width in modules. Range 0-16. Default 2."
    },
    "error_correction": {
      "type": "string",
      "enum": [
        "L",
        "M",
        "Q",
        "H"
      ],
      "default": "M",
      "description": "Error-correction level: L 7%, M 15%, Q 25%, H 30%. One of \"L\", \"M\", \"Q\", \"H\". Default \"M\"."
    },
    "dark": {
      "type": "string",
      "pattern": "^#[0-9a-fA-F]{6}$",
      "default": "#000000",
      "description": "Foreground colour as #rrggbb. Default \"#000000\"."
    },
    "light": {
      "type": "string",
      "pattern": "^#[0-9a-fA-F]{6}$",
      "default": "#ffffff",
      "description": "Background colour as #rrggbb. Default \"#ffffff\"."
    },
    "wifi_ssid": {
      "type": "string",
      "description": "Wi-Fi network name; makes a join-network QR instead of text."
    },
    "wifi_password": {
      "type": "string",
      "description": "Wi-Fi password (with wifi_ssid; omit for open networks)."
    }
  },
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "format": {
      "type": [
        "string",
        "null"
      ]
    },
    "encoded": {
      "type": [
        "string",
        "null"
      ]
    },
    "svg": {
      "type": [
        "string",
        "null"
      ]
    }
  }
}
🟢hash_encode(input, input_encoding, hashes, hmac_key)

Hash data (SHA-256/512, SHA3, Keccak-256, BLAKE2, MD5, SHA-1, RIPEMD-160, HMAC) and convert between utf8, hex, base64, base64url and base58 — exact, in one call. Useful for signatures, content addressing, EVM selectors (keccak of a function signature), and decoding blobs agents are handed. Input can itself be hex/base64/base58. Price: free. Errors: returns isError with a message for invalid input or an upstream failure (not charged).

Input Schema

{
  "type": "object",
  "properties": {
    "input": {
      "type": "string",
      "x-raw": true,
      "description": "Data to hash or re-encode."
    },
    "input_encoding": {
      "type": "string",
      "enum": [
        "utf8",
        "hex",
        "base64",
        "base58"
      ],
      "default": "utf8",
      "description": "How the input string is encoded. One of \"utf8\", \"hex\", \"base64\", \"base58\". Default \"utf8\"."
    },
    "hashes": {
      "type": "array",
      "maxItems": 12,
      "items": {
        "type": "string"
      },
      "default": [
        "sha256",
        "keccak256"
      ],
      "description": "sha256, sha512, sha3-256, sha3-512, keccak256, blake2b512, blake2s256, md5, sha1, ripemd160. 0-12 items. Default [\"sha256\",\"keccak256\"]."
    },
    "hmac_key": {
      "type": "string",
      "description": "if set, HMAC instead of plain hash (utf8 key)"
    }
  },
  "required": [
    "input"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "bytes": {
      "type": [
        "number",
        "null"
      ]
    },
    "hashes": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "keccak256": {
          "type": [
            "string",
            "null"
          ]
        },
        "sha256": {
          "type": [
            "string",
            "null"
          ]
        },
        "evm_selector": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "encodings": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "utf8": {
          "type": [
            "string",
            "null"
          ]
        },
        "hex": {
          "type": [
            "string",
            "null"
          ]
        },
        "base64": {
          "type": [
            "string",
            "null"
          ]
        },
        "base64url": {
          "type": [
            "string",
            "null"
          ]
        },
        "base58": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    }
  }
}
🟢json_schema_validate(data, schema, parse_strings)

Validate JSON data against a JSON Schema (draft-07/2019-09/2020-12, formats like email/uri/date-time) and get every error with its exact path — check tool I/O before acting on it. Ajv, strict about types, all errors reported. Pass data and schema as JSON values (or JSON strings). Price: free. Errors: returns isError with a message for invalid input or an upstream failure (not charged).

Input Schema

{
  "type": "object",
  "properties": {
    "data": {
      "description": "any JSON value (or a JSON string with parse_strings=true)"
    },
    "schema": {
      "type": "object",
      "description": "The JSON Schema to validate against."
    },
    "parse_strings": {
      "type": "boolean",
      "default": false,
      "description": "true = if data is a string, parse it as JSON first. Default false."
    }
  },
  "required": [
    "data",
    "schema"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "valid": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "error_count": {
      "type": [
        "number",
        "null"
      ]
    },
    "errors": {
      "type": "array",
      "items": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "path": {
            "type": [
              "string",
              "null"
            ]
          },
          "message": {
            "type": [
              "string",
              "null"
            ]
          },
          "keyword": {
            "type": [
              "string",
              "null"
            ]
          },
          "params": {
            "type": [
              "object",
              "null"
            ]
          }
        }
      }
    }
  }
}
🟢cron_explain(expression, tz, count)

Explain a cron expression in plain English and list its next N run times in any time zone — catch a schedule mistake before it fires at 3 am. Supports 5-field and 6-field (seconds) cron, ranges, steps, L/W/#, and nicknames (@daily, @hourly…). Price: free. Errors: returns isError with a message for invalid input or an upstream failure (not charged).

Input Schema

{
  "type": "object",
  "properties": {
    "expression": {
      "type": "string",
      "description": "Cron expression, 5 fields (or 6 with seconds), e.g. \"*/15 9-17 * * 1-5\"."
    },
    "tz": {
      "type": "string",
      "default": "UTC",
      "description": "IANA time zone for the next-run times. Default \"UTC\"."
    },
    "count": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 5,
      "description": "How many upcoming run times to list. Range 1-50. Default 5."
    }
  },
  "required": [
    "expression"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "valid": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "expression": {
      "type": [
        "string",
        "null"
      ]
    },
    "meaning": {
      "type": [
        "string",
        "null"
      ]
    },
    "tz": {
      "type": [
        "string",
        "null"
      ]
    },
    "next_runs": {
      "type": "array",
      "items": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "utc": {
            "type": [
              "string",
              "null"
            ]
          },
          "local": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      }
    }
  }
}
🟢markdown_convert(input, to)

Convert Markdown to clean HTML (GitHub-flavoured: tables, task lists, fenced code) or HTML back to Markdown. marked for md→html, Turndown for html→md. Scripts/styles are dropped on html→md. Price: free. Errors: returns isError with a message for invalid input or an upstream failure (not charged).

Input Schema

{
  "type": "object",
  "properties": {
    "input": {
      "type": "string",
      "x-raw": true,
      "description": "Markdown or HTML to convert."
    },
    "to": {
      "type": "string",
      "enum": [
        "html",
        "markdown"
      ],
      "default": "html",
      "description": "Target format. One of \"html\", \"markdown\". Default \"html\"."
    }
  },
  "required": [
    "input"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "to": {
      "type": [
        "string",
        "null"
      ]
    },
    "output": {
      "type": [
        "string",
        "null"
      ]
    }
  }
}
🟢text_diff(a, b, mode, context)

Diff two texts: unified diff (patch format), a line/word-level change list, and similarity % — compare versions of a doc, config or code. jsdiff. mode=lines gives a unified patch; mode=words gives word-level changes for prose. Price: free. Errors: returns isError with a message for invalid input or an upstream failure (not charged).

Input Schema

{
  "type": "object",
  "properties": {
    "a": {
      "type": "string",
      "x-raw": true,
      "description": "Original text."
    },
    "b": {
      "type": "string",
      "x-raw": true,
      "description": "Changed text."
    },
    "mode": {
      "type": "string",
      "enum": [
        "lines",
        "words"
      ],
      "default": "lines",
      "description": "Diff granularity. One of \"lines\", \"words\". Default \"lines\"."
    },
    "context": {
      "type": "integer",
      "minimum": 0,
      "maximum": 20,
      "default": 3,
      "description": "Unchanged lines of context around each change in the patch. Range 0-20. Default 3."
    }
  },
  "required": [
    "a",
    "b"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "identical": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "similarity_pct": {
      "type": [
        "number",
        "null"
      ]
    },
    "chars_added": {
      "type": [
        "number",
        "null"
      ]
    },
    "chars_removed": {
      "type": [
        "number",
        "null"
      ]
    },
    "unified": {
      "type": [
        "string",
        "null"
      ]
    },
    "changes": {
      "type": "array",
      "items": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "op": {
            "type": [
              "string",
              "null"
            ]
          },
          "text": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      }
    }
  }
}
🟢unit_convert(value, from, to)

Convert between units of length, mass, volume, temperature, speed, area, time, data size, energy, power, pressure, frequency and more — or list every unit a value converts to. Exact conversion tables (convert-units). Use abbreviations: m, km, mi, ft, kg, lb, oz, l, gal, C, F, K, km/h, mph, knot, B, KB, MB, GB (binary, 1 GB = 1024 MB), J, kWh, W, Pa, bar, psi, Hz… Price: free. Errors: returns isError with a message for invalid input or an upstream failure (not charged).

Input Schema

{
  "type": "object",
  "properties": {
    "value": {
      "type": "number",
      "description": "Number to convert."
    },
    "from": {
      "type": "string",
      "description": "Source unit, e.g. \"mi\", \"kg\", \"degF\", \"GB\"."
    },
    "to": {
      "type": "string",
      "description": "omit to get every compatible unit"
    }
  },
  "required": [
    "value",
    "from"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "value": {
      "type": [
        "number",
        "null"
      ]
    },
    "from": {
      "type": [
        "string",
        "null"
      ]
    },
    "to": {
      "type": [
        "string",
        "null"
      ]
    },
    "result": {
      "type": [
        "number",
        "null"
      ]
    }
  }
}
🟢jwt_decode(token, secret)

Decode a JSON Web Token's header and claims, show issued/expiry times in plain dates and whether it has expired — optionally verify an HS256/384/512 signature with a secret. Decoding does not need the key. Never paste production secrets into third-party tools you do not trust; verification here is local and nothing is stored or logged. Price: free. Errors: returns isError with a message for invalid input or an upstream failure (not charged).

Input Schema

{
  "type": "object",
  "properties": {
    "token": {
      "type": "string",
      "description": "The JWT (three base64url parts). The signature is not verified."
    },
    "secret": {
      "type": "string",
      "description": "optional HMAC secret to verify HS* signatures"
    }
  },
  "required": [
    "token"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "header": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "alg": {
          "type": [
            "string",
            "null"
          ]
        },
        "typ": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "payload": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "sub": {
          "type": [
            "string",
            "null"
          ]
        },
        "iat": {
          "type": [
            "number",
            "null"
          ]
        },
        "exp": {
          "type": [
            "number",
            "null"
          ]
        }
      }
    },
    "issued_at": {
      "type": [
        "string",
        "null"
      ]
    },
    "not_before": {},
    "expires_at": {
      "type": [
        "string",
        "null"
      ]
    },
    "expired": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "seconds_left": {
      "type": [
        "number",
        "null"
      ]
    },
    "signature": {
      "type": [
        "string",
        "null"
      ]
    },
    "alg_none_warning": {}
  }
}
🟢random_gen(kind, count, length, min, max, ...)

Cryptographically secure randomness: UUID v4/v7, passwords, API-key-style tokens, integers in a range, dice, coin flips, or a fair shuffle / pick from a list. Node's CSPRNG. Output is generated fresh per call and never stored or logged. Price: free. Errors: returns isError with a message for invalid input or an upstream failure (not charged).

Input Schema

{
  "type": "object",
  "properties": {
    "kind": {
      "type": "string",
      "enum": [
        "uuid4",
        "uuid7",
        "password",
        "token",
        "int",
        "shuffle",
        "pick",
        "coin",
        "dice"
      ],
      "default": "uuid4",
      "description": "What to generate. One of \"uuid4\", \"uuid7\", \"password\", \"token\", \"int\", \"shuffle\", \"pick\", \"coin\", \"dice\". Default \"uuid4\"."
    },
    "count": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 1,
      "description": "How many values to generate. Range 1-100. Default 1."
    },
    "length": {
      "type": "integer",
      "minimum": 4,
      "maximum": 256,
      "default": 20,
      "description": "Length for passwords and tokens. Range 4-256. Default 20."
    },
    "min": {
      "type": "integer",
      "default": 1,
      "description": "Lowest integer (kind=int or dice sides). Default 1."
    },
    "max": {
      "type": "integer",
      "default": 100,
      "description": "Highest integer (kind=int). Default 100."
    },
    "items": {
      "type": "array",
      "maxItems": 1000,
      "items": {
        "type": "string"
      },
      "description": "List to shuffle or pick from (kind=shuffle or pick). 0-1000 items."
    },
    "symbols": {
      "type": "boolean",
      "default": true,
      "description": "Include symbols in passwords. Default true."
    }
  },
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "kind": {
      "type": [
        "string",
        "null"
      ]
    },
    "result": {
      "type": "array",
      "items": {
        "type": [
          "string",
          "null"
        ]
      }
    }
  }
}
🟢text_stats(text, extract)

Count characters, words, sentences, lines and paragraphs, estimate LLM tokens, reading time and readability (Flesch), and pull out every URL, email, @handle, #tag, number and crypto address. Token count is an estimate (~4 characters per token for English; code and non-Latin scripts differ). Extraction uses strict patterns; EVM addresses are checksum-validated. Price: free. Errors: returns isError with a message for invalid input or an upstream failure (not charged).

Input Schema

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "x-raw": true,
      "description": "Text (or a URL when extract=true) to analyse."
    },
    "extract": {
      "type": "boolean",
      "default": true,
      "description": "true = if text is a URL, fetch the page and analyse its readable text. Default true."
    }
  },
  "required": [
    "text"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "characters": {
      "type": [
        "number",
        "null"
      ]
    },
    "characters_no_spaces": {
      "type": [
        "number",
        "null"
      ]
    },
    "words": {
      "type": [
        "number",
        "null"
      ]
    },
    "sentences": {
      "type": [
        "number",
        "null"
      ]
    },
    "lines": {
      "type": [
        "number",
        "null"
      ]
    },
    "paragraphs": {
      "type": [
        "number",
        "null"
      ]
    },
    "estimated_tokens": {
      "type": [
        "number",
        "null"
      ]
    },
    "reading_minutes": {
      "type": [
        "number",
        "null"
      ]
    },
    "flesch_reading_ease": {
      "type": [
        "number",
        "null"
      ]
    },
    "readability": {
      "type": [
        "string",
        "null"
      ]
    },
    "extracted": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "urls": {
          "type": "array",
          "items": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "emails": {
          "type": "array",
          "items": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "handles": {
          "type": "array",
          "items": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "hashtags": {
          "type": "array",
          "items": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "numbers": {
          "type": "array"
        },
        "evm_addresses": {
          "type": "array"
        },
        "solana_addresses": {
          "type": "array"
        }
      }
    }
  }
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded10 tools