{"id":124884,"recorded_at":"2026-10-26T14:40:25.395869Z","observed_at":"2026-10-26T14:40:25.395786Z","subject_kind":"source_record","subject":"x402_bazaar:https://x402-agent-tools.nerolabs.workers.dev/data/join","kind":"listing","method":"baseline/1","body":{"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."},"body_sha256":"0b6ba1c5849d74cf5b7d83bec9ce6aa42e352d35f88d6fa441153efed6f3d665","prev_id":null,"leaf":"0x5be8a6e68b19af6bfcfd714bbbd21a08216cb816dd5b042f60bd6e163a82ca91","leaf_text":"{\"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\"}","day":{"day":"2026-10-26","leaves":296695,"root":"0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8","chained":"0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a","anchor_chain":"eip155:5042002","anchor_tx":"0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae","anchor_block":69251483},"proof":["0x5be8cb0235baf56dfc10935d7b53bb299b96edbfaf3b888abcccc7f55947b89a","0x563eaa0f8f7eb22f6a059987bee0a403739e510a3ba897a1dbafa8d2ee628c5f","0x9f962069ee2f629d6d61912b82b32f89e76cb69631f6a4506d3118caf7d51d52","0xe24980023ec7c730b3390443102c12cf3db3d16a058ebe6332a4679ff4536f99","0xb94add64fe82506190eaf905a63ffa1bf45a84a75b96ead34e4938f6e4965aea","0x56523b2296c169389f73f90fb393cd89e55610f631d5e21138df274f3ed532ae","0x6f9c3bfa5e5e4aa4c3ee2b381fc36f29b23627868dab629db4aa7a48d6ad073e","0x1f19abd6caf12fea6f4d2135b8d1b25890abf644fbb9bf0bacd8c5092e7f14d6","0x41a051d5bacaf7bf5130da516c041256d5e5f4c98da082f91371fb195ddc476b","0x40244d998919fa159853bd32a8bd17a3271b1b32a2e2d09a3d03acd280652311","0x37fa4d73456b07df68aa870df84ffd5c60272595484ae0f1ec31434e6c19eb44","0xc4c7772b121e7eab8b40f10646f850453150d76d672e4926bf2534db20273157","0xc8abb13c711b67d9f1ef145286ed450a0f5566f054a4b290ea3d711873bcbe20","0x5cdeb4648502e0633d01cc4f3379d48cccb9d4f528565b2868eb93db0df9e829","0x7726154b91b2ad65b13849ef6cb6443b1f0ff113a3089c9bd5f2bcfc16be099d","0x47b89901b0f07938a6b9a66ddf35683903f79d756a7c7763665fd632758b08d0","0x9a83be955a206deb65b995adfd92c58fa31c95fbbf926bd199d300e70b08b26d","0x20704208aa6923d6b2450ef74ede87a6e0265d46447926038fe9506e9e154b2d","0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a"]}