Tools for agents: Three-way JSON merge
Combine parallel agent edits against a shared base and expose conflicting changes without silently choosing a winner.
Connect with MCP
{
"mcpServers": {
"super-agent-tools": {
"url": "https://app.getsupers.com/sites/agent-json-merge/mcp"
}
}
}Use this URL in any client supporting remote Streamable HTTP MCP. Calls return structured JSON; inputs are processed without persistence.
Call merge_json
Object members merge recursively. Unchanged sides defer to changed sides, and identical changes are accepted. Arrays are atomic: different edits on both sides conflict instead of guessing element identity. Conflicts use JSON Pointer paths and explicit presence flags, so deleted fields differ from null. With conflicts, merged is null and preview retains base values at conflict paths; newly added conflicting fields are omitted. A conflict-free result may itself be null: check clean, not merged truthiness. No files are modified, no shared state is stored, and no agent claims are acquired.
Input and output schemas
{
"name": "merge_json",
"title": "Three-way JSON merge",
"description": "Merge independent object edits against a common base. Conflicts retain the base in preview and return each side with presence flags. Arrays are atomic. Never writes external state.",
"inputSchema": {
"$defs": {
"JsonValue": {}
},
"properties": {
"base": {
"$ref": "#/$defs/JsonValue"
},
"left": {
"$ref": "#/$defs/JsonValue"
},
"right": {
"$ref": "#/$defs/JsonValue"
}
},
"required": [
"base",
"left",
"right"
],
"title": "merge_jsonArguments",
"type": "object"
},
"outputSchema": {
"additionalProperties": true,
"title": "merge_jsonDictOutput",
"type": "object"
},
"icons": null,
"annotations": {
"title": null,
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false
},
"meta": null,
"execution": null
}Run the example to see the actual result.
HTTP alternative
POST https://app.getsupers.com/sites/agent-json-merge/call
Content-Type: application/json
{
"base": {
"task": {
"status": "draft",
"owner": "agent-a"
},
"labels": [
"review"
]
},
"left": {
"task": {
"status": "ready",
"owner": "agent-a"
},
"labels": [
"review"
],
"checks": {
"lint": true
}
},
"right": {
"task": {
"status": "blocked",
"owner": "agent-b"
},
"labels": [
"review"
]
}
}The HTTP and MCP interfaces execute the same implementation. Validation errors are returned explicitly. See the tool notes above for its supported inputs and behavior.