DiffMint by Harlo

Diff two texts by line, word or char: unified diff, HTML redline, patch apply, similarity.

Should I use this

Quality & Safety

B
Description quality
80%
Schema completeness
88%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (2)

  • LOWTool 'apply_patch' description lacks action verbin apply_patch
  • LOWTool 'text_similarity' description lacks action verbin text_similarity

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~583Tokens (tool definitions)
~969 BTypical response size
Minimal attention impact (0.46% 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": {
    "diffmint": {
      "url": "https://diffmint.mike-tusa.workers.dev/mcp"
    }
  }
}

Remote endpoints

https://diffmint.mike-tusa.workers.dev/mcpstreamable-http

What it can do

Tool inventory

Tools (3)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢diff_text(a, b, mode, ignore_case, ignore_whitespace, ...)

Compare text a with text b by lines (default), words or chars. Returns ops (equal/insert/delete), a unified diff (lines mode), optional escaped HTML redline, stats and similarity. Deterministic diff (Myers algorithm via jsdiff), not an AI or semantic comparison. Limits per side: lines mode 64 KB and 1,000 lines, words mode 8 KB, chars mode 4 KB. If the texts need more than 250 inserted plus deleted units, the API returns 422 too_different instead of a partial diff. Patches up to 64 KB apply to text up to 64 KB. No 3-way merge, no binary files. Stateless: text is not stored or logged; no URL fetching.

Input Schema

{
  "type": "object",
  "properties": {
    "a": {
      "type": "string",
      "description": "Original text."
    },
    "b": {
      "type": "string",
      "description": "Changed text."
    },
    "mode": {
      "type": "string",
      "enum": [
        "lines",
        "words",
        "chars"
      ]
    },
    "ignore_case": {
      "type": "boolean"
    },
    "ignore_whitespace": {
      "type": "boolean",
      "description": "lines mode only"
    },
    "context": {
      "type": "integer",
      "minimum": 0,
      "maximum": 20
    },
    "formats": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "ops",
          "unified",
          "html"
        ]
      }
    },
    "label_a": {
      "type": "string"
    },
    "label_b": {
      "type": "string"
    }
  },
  "required": [
    "a",
    "b"
  ]
}
🟢apply_patch(text, patch, fuzz)

Apply a single-file unified diff (patch) to text and return the patched text, or applied:false if a hunk does not match. Optional fuzz 0-2.

Input Schema

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string"
    },
    "patch": {
      "type": "string",
      "description": "Unified diff with @@ hunks."
    },
    "fuzz": {
      "type": "integer",
      "minimum": 0,
      "maximum": 2
    }
  },
  "required": [
    "text",
    "patch"
  ]
}
🟢text_similarity(a, b, mode, ignore_case)

Similarity ratio 0-1 between two texts (2 x unchanged chars / total chars) on chars (default), words or lines granularity, plus change stats.

Input Schema

{
  "type": "object",
  "properties": {
    "a": {
      "type": "string",
      "description": "Original text."
    },
    "b": {
      "type": "string",
      "description": "Changed text."
    },
    "mode": {
      "type": "string",
      "enum": [
        "lines",
        "words",
        "chars"
      ]
    },
    "ignore_case": {
      "type": "boolean"
    }
  },
  "required": [
    "a",
    "b"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded3 tools