addrbookFor publishers
← The evidence ledger

Evidence row 124884

Observed , by baseline/1.

Kind
listing
About
source_record x402_bazaar:https://x402-agent-tools.nerolabs.workers.dev/data/join
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
0b6ba1c5849d74cf5b7d83bec9ce6aa42e352d35f88d6fa441153efed6f3d665
Leaf
0x5be8a6e68b19af6bfcfd714bbbd21a08216cb816dd5b042f60bd6e163a82ca91

What was observed

{
  "endpoints": [
    [
      "x402",
      "https://x402-agent-tools.nerolabs.workers.dev/data/join"
    ]
  ],
  "name": "Nero Labs Agent Tools",
  "owner_address": "0xa969a3127dcc74b2989a4b4e45ae61b81093164a",
  "raw": {
    "accepts": [
      {
        "amount": "4000",
        "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
        "extra": {
          "name": "USD Coin",
          "version": "2"
        },
        "maxTimeoutSeconds": 120,
        "network": "eip155:8453",
        "payTo": "0xA969a3127DcC74B2989a4b4e45Ae61B81093164A",
        "scheme": "exact"
      }
    ],
    "description": "Joins two lists of JSON rows on one or more key fields, like a VLOOKUP or SQL join: inner, left, right, full or anti. Keys match exactly, or normalized (case, spacing and number-as-text differences ignored). Returns joined rows plus match counts and unmatched rows. Up to 500 rows a side. $0.002 per left row sent (right rows free), $0.002 minimum. Same engine as nerolabs/dataset-join-merge.",
    "extensions": {
      "bazaar": {
        "info": {
          "input": {
            "body": {
              "joinType": "left",
              "keyMatching": "normalized",
              "leftKeyFields": [
                "domain"
              ],
              "leftRows": [
                {
                  "company": "Acme Ltd",
                  "domain": "acme.com"
                },
                {
                  "company": "Bolt Co",
                  "domain": "bolt.io"
                }
              ],
              "rightKeyFields": [
                "website"
              ],
              "rightRows": [
                {
                  "employees": 40,
                  "website": " ACME.com"
                }
              ]
            },
            "bodyType": "json",
            "method": "POST",
            "type": "http"
          },
          "output": {
            "example": {
              "_example_note": "Real output, trimmed: long lists cut to their first items and long text shortened.",
              "rows": [
                {
                  "_joinStatus": "matched",
                  "_matchCount": 1,
                  "company": "Acme Ltd",
                  "domain": "acme.com",
                  "employees": 40
                },
                {
                  "_joinStatus": "left_only",
                  "_matchCount": 0,
                  "company": "Bolt Co",
                  "domain": "bolt.io"
                }
              ],
              "summary": {
                "counts": {
                  "leftRowsMatched": 1,
                  "leftRowsUnmatched": 1,
                  "matchedRows": 1,
                  "passthroughRows": 1,
                  "rightRowsMatched": 1,
                  "rightRowsUnmatched": 0
                },
                "joinType": "left",
                "keyMatching": "normalized",
                "leftKeyFields": [
                  "domain"
                ],
                "leftMatchRate": 0.5,
                "leftRecordCount": 2,
                "multipleMatches": "all",
                "outputRowCount": 2,
                "rightKeyFields": [
                  "website"
                ],
                "rightMatchRate": 1,
                "rightRecordCount": 1,
                "warnings": []
              }
            },
            "type": "json"
          }
        },
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "properties": {
            "input": {
              "additionalProperties": false,
              "properties": {
                "body": {
                  "additionalProperties": false,
                  "properties": {
                    "includeJoinInfo": {
                      "description": "On by default: every row gets _joinStatus (\"matched\", \"left_only\", \"right_only\") and _matchCount. Set false for rows with only your own fields.",
                      "type": "boolean"
                    },
                    "joinType": {
                      "description": "Which rows to keep. left (default): every left row, enriched where a match exists. inner: matched rows only. right: every right row. full: everything from both sides. leftAnti: left rows with no match on the right. rightAnti: right rows with no match on the left. union: stack both lists, no key needed.",
                      "enum": [
                        "left",
                        "inner",
                        "right",
                        "full",
                        "leftAnti",
                        "rightAnti",
                        "union"
                      ],
                      "type": "string"
                    },
                    "keyMatching": {
                      "description": "normalized (default): case-insensitive, trimmed, repeated spaces collapsed, 123 matches \"123\". exact: values must be identical.",
                      "enum": [
                        "normalized",
                        "exact"
                      ],
                      "type": "string"
                    },
                    "leftKeyFields": {
                      "description": "The field name(s) on the left rows to match on, for example [\"email\"], or [\"firstName\",\"lastName\"] for a composite key. Required for every joinType except union.",
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "leftRows": {
                      "description": "The LEFT table: the main rows you want to keep or enrich. Each row is a JSON object; keys may differ between rows.",
                      "items": {
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "multipleMatches": {
                      "description": "When one key matches several right rows. all (default): one output row per matching pair, like SQL. first: only the first matching right row, like VLOOKUP, so each left row appears once.",
                      "enum": [
                        "all",
                        "first"
                      ],
                      "type": "string"
                    },
                    "onFieldConflict": {
                      "description": "When a right field has the same name as a left field. prefixRight (default): keep both, the right one renamed with rightFieldPrefix. keepLeft: ignore the right value. keepRight: overwrite the left value.",
                      "enum": [
                        "prefixRight",
                        "keepLeft",
                        "keepRight"
                      ],
                      "type": "string"
                    },
                    "rightFieldPrefix": {
                      "description": "Prefix for conflicting right fields when onFieldConflict is prefixRight. Default \"right_\", so price becomes right_price.",
                      "type": "string"
                    },
                    "rightFields": {
                      "description": "Only copy these fields from the matching right row, like choosing VLOOKUP return columns. Leave out to copy every right field.",
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "rightKeyFields": {
                      "description": "The matching field name(s) on the right rows, in the same order as leftKeyFields, for example [\"contact_email\"]. Leave out when the right rows use the same names as the left.",
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "rightRows": {
                      "description": "The RIGHT table: the lookup rows to pull matching fields from. Each row is a JSON object.",
                      "items": {
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "leftRows",
                    "rightRows"
                  ],
                  "type": "object"
                },
                "bodyType": {
                  "enum": [
                    "json",
                    "form-data",
                    "text"
                  ],
                  "type": "string"
                },
                "method": {
                  "enum": [
                    "POST"
                  ],
                  "type": "string"
                },
                "type": {
                  "const": "http",
                  "type": "string"
                }
              },
              "required": [
                "type",
                "method",
                "bodyType",
                "body"
              ],
              "type": "object"
            },
            "output": {
              "properties": {
                "example": {
                  "properties": {
                    "_example_note": {
                      "type": "string"
                    },
                    "rows": {
                      "items": {
                        "properties": {
                          "_joinStatus": {
                            "type": "string"
                          },
                          "_matchCount": {
                            "type": "number"
                          },
                          "company": {
                            "type": "string"
                          },
                          "domain": {
                            "type": "string"
                          },
                          "employees": {
                            "type": "number"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "summary": {
                      "properties": {
                        "counts": {
                          "properties": {
                            "leftRowsMatched": {
                              "type": "number"
                            },
                            "leftRowsUnmatched": {
                              "type": "number"
                            },
                            "matchedRows": {
                              "type": "number"
                            },
                            "passthroughRows": {
                              "type": "number"
                            },
                            "rightRowsMatched": {
                              "type": "number"
                            },
                            "rightRowsUnmatched": {
                              "type": "number"
                            }
                          },
                          "type": "object"
                        },
                        "joinType": {
                          "type": "string"
                        },
                        "keyMatching": {
                          "type": "string"
                        },
                        "leftKeyFields": {
                          "items": {
                            "type": "string"
                          },
                          "type": "array"
                        },
                        "leftMatchRate": {
                          "type": "number"
                        },
                        "leftRecordCount": {
                          "type": "number"
                        },
                        "multipleMatches": {
                          "type": "string"
                        },
                        "outputRowCount": {
                          "type": "number"
                        },
                        "rightKeyFields": {
                          "items": {
                            "type": "string"
                          },
                          "type": "array"
                        },
                        "rightMatchRate": {
                          "type": "number"
                        },
                        "rightRecordCount": {
                          "type": "number"
                        },
                        "warnings": {
                          "type": "array"
                        }
                      },
                      "type": "object"
                    }
                  },
                  "type": "object"
                },
                "type": {
                  "type": "string"
                }
              },
              "required": [
                "type"
              ],
              "type": "object"
            }
          },
          "required": [
            "input"
          ],
          "type": "object"
        }
      }
    },
    "iconUrl": "https://res.cloudinary.com/bdb-prod/image/upload/c_fill,ar_1:1,w_256,h_256,f_auto,q_auto/v1792616069/bazaar-icons/0a5b056fde952fc0.png",
    "lastUpdated": "2026-10-21T21:20:09.555Z",
    "quality": {
      "l30DaysTotalCalls": 3,
      "l30DaysUniquePayers": 2,
      "lastCalledAt": "2026-10-21T21:20:08.903Z"
    },
    "resource": "https://x402-agent-tools.nerolabs.workers.dev/data/join",
    "serviceName": "Nero Labs Agent Tools",
    "tags": [
      "data",
      "join",
      "merge",
      "vlookup",
      "json"
    ],
    "type": "http",
    "x402Version": 2
  },
  "source": "x402_bazaar",
  "summary": "Joins two lists of JSON rows on one or more key fields, like a VLOOKUP or SQL join: inner, left, right, full or anti. Keys match exactly, or normalized (case, spacing and number-as-text differences ignored). Returns joined rows plus match counts and unmatched rows. Up to 500 rows a side. $0.002 per left row sent (right rows free), $0.002 minimum. Same engine as nerolabs/dataset-join-merge."
}

What the leaf hashes

{"body":"0b6ba1c5849d74cf5b7d83bec9ce6aa42e352d35f88d6fa441153efed6f3d665","id":124884,"kind":"listing","method":"baseline/1","observed_us":1793025625395786,"prev":null,"subject":"x402_bazaar:https://x402-agent-tools.nerolabs.workers.dev/data/join","subject_kind":"source_record"}

Proof

Its day has not closed yet. A day closes ten minutes after midnight UTC; the proof appears here then.

How to check it · This row as JSON