Tools for agents: One-to-one keyed record join

Pair JSON records by exact string IDs with duplicate-key validation and explicit unmatched rows.

Connect with MCP

{
  "mcpServers": {
    "super-agent-tools": {
      "url": "https://app.getsupers.com/sites/agent-record-join/mcp"
    }
  }
}
Streamable HTTP · No API key · Stateless

Use this URL in any client supporting remote Streamable HTTP MCP. Calls return structured JSON; inputs are processed without persistence.

Call join_records_by_key

Keys name top-level fields, not JSON Pointer paths. Every row must contain its specified key as a string; numbers, null and missing keys fail explicitly. Empty string key values are allowed. Matching is case-sensitive and preserves whitespace, Unicode and leading zeros without normalization or coercion. Duplicate key values on either side fail the entire call with both row indices, even if those keys would be unmatched. Matched pairs retain separate left/right objects so colliding field names never overwrite data. Matched and left_only follow left input order; right_only follows right input order. All indices are zero-based positions in the respective original arrays. Empty arrays are allowed. This is a one-to-one full reconciliation, not a many-to-many SQL join, fuzzy matcher or mutation of the input records.

Input and output schemas
{
  "name": "join_records_by_key",
  "title": "One-to-one keyed record join",
  "description": "Pair records by exact string key values; return matched pairs and both unmatched sets. Reject missing, non-string or duplicate keys before producing any result.",
  "inputSchema": {
    "$defs": {
      "JsonValue": {}
    },
    "properties": {
      "left": {
        "items": {
          "additionalProperties": {
            "$ref": "#/$defs/JsonValue"
          },
          "type": "object"
        },
        "title": "Left",
        "type": "array"
      },
      "right": {
        "items": {
          "additionalProperties": {
            "$ref": "#/$defs/JsonValue"
          },
          "type": "object"
        },
        "title": "Right",
        "type": "array"
      },
      "left_key": {
        "title": "Left Key",
        "type": "string"
      },
      "right_key": {
        "title": "Right Key",
        "type": "string"
      }
    },
    "required": [
      "left",
      "right",
      "left_key",
      "right_key"
    ],
    "title": "join_records_by_keyArguments",
    "type": "object"
  },
  "outputSchema": {
    "additionalProperties": true,
    "title": "join_records_by_keyDictOutput",
    "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-record-join/call
Content-Type: application/json

{
  "left": [
    {
      "id": "a",
      "task": "build"
    },
    {
      "id": "b",
      "task": "review"
    }
  ],
  "right": [
    {
      "task_id": "b",
      "status": "done"
    },
    {
      "task_id": "c",
      "status": "queued"
    }
  ],
  "left_key": "id",
  "right_key": "task_id"
}

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.