Diff two texts by line, word or char: unified diff, HTML redline, patch apply, similarity.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional. 'Bearer <key>' for higher limits. Works without a key.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
Unified diff with @@ hunks.
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.
| Argument | Type | Description |
|---|---|---|
| fuzz | integer | |
| text* | string | |
| patch* | string | Unified diff with @@ hunks. |
{
"type": "object",
"required": [
"text",
"patch"
],
"properties": {
"fuzz": {
"type": "integer",
"maximum": 2,
"minimum": 0
},
"text": {
"type": "string"
},
"patch": {
"type": "string",
"description": "Unified diff with @@ hunks."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| a* | string | Original text. |
| b* | string | Changed text. |
| mode | string | |
| context | integer | |
| formats | array | |
| label_a | string | |
| label_b | string | |
| ignore_case | boolean | |
| ignore_whitespace | boolean | lines mode only |
{
"type": "object",
"required": [
"a",
"b"
],
"properties": {
"a": {
"type": "string",
"description": "Original text."
},
"b": {
"type": "string",
"description": "Changed text."
},
"mode": {
"enum": [
"lines",
"words",
"chars"
],
"type": "string"
},
"context": {
"type": "integer",
"maximum": 20,
"minimum": 0
},
"formats": {
"type": "array",
"items": {
"enum": [
"ops",
"unified",
"html"
],
"type": "string"
}
},
"label_a": {
"type": "string"
},
"label_b": {
"type": "string"
},
"ignore_case": {
"type": "boolean"
},
"ignore_whitespace": {
"type": "boolean",
"description": "lines mode only"
}
}
}Similarity ratio 0-1 between two texts (2 x unchanged chars / total chars) on chars (default), words or lines granularity, plus change stats.
| Argument | Type | Description |
|---|---|---|
| a* | string | Original text. |
| b* | string | Changed text. |
| mode | string | |
| ignore_case | boolean |
{
"type": "object",
"required": [
"a",
"b"
],
"properties": {
"a": {
"type": "string",
"description": "Original text."
},
"b": {
"type": "string",
"description": "Changed text."
},
"mode": {
"enum": [
"lines",
"words",
"chars"
],
"type": "string"
},
"ignore_case": {
"type": "boolean"
}
}
}