match_criteria / source_rows over one call per line item.
Authentication and enablement
Configured tool: upload/bind the CSV on the agent. No OAuth.Inputs
file_name— which bound CSV.match_criteria—[{column, values}]. Values in one criterion are OR; multiple criteria are AND for exact matching only — underllm, every value fans out as an independent semantic search (column names are ignored) and criteria are never ANDed. Columns by header, letter (A), or number (1).return_columns— comma-separated names, or*(default).matching_strategy—exact(fast) orllm(embeddings).source_rows— for LLM matching on concatenated keys; pass per-row{column, value}pairs instead of hand-concatenating.filter_criteria— LLM matching only.[{column, values}]exact-match row filters applied before semantic ranking: excluded rows can never be returned as a match or candidate. Use this — not a secondmatch_criteriaentry — to constrain LLM matches by a column value, e.g.[{"column": "CustomerType", "values": ["Ship-To"]}]. Columns must be CSV header names.- Repeated lookup values need a unique row column. LLM matching syncs the CSV into the matching service one product per distinct identity, and that identity defaults to the lookup column’s value. When many rows share it (a payment-method code such as
AUTODRAFTrepeated once per vendor), only one of them survives the sync and afilter_criteriaon any other row fails with “no products found”. Set Unique Row Column (unique_key) when configuring matching for the CSV — anidor similar per-row header — so every row is synced and filterable. Leaving it blank keeps the old behaviour.
- Repeated lookup values need a unique row column. LLM matching syncs the CSV into the matching service one product per distinct identity, and that identity defaults to the lookup column’s value. When many rows share it (a payment-method code such as
use_learned_rules— LLM matching only; admin-bound toggle, off by default. Appends the agent’s approved learned rules (from user corrections and feedback,csv_lookup_matchoperation type — or all rules when the agent has inject rules in all LLM calls on) to the matching prompt. Rules are appended to the prompt, never replace it, and a rules-fetch failure degrades to matching without rules. Requires the matching service to supportadditional_instructions; older service versions ignore it.case_sensitive— exact match only; default false.
Output
Matched rows (andadditional_candidates for LLM). The full CSV is not embedded — for a “pick any row” review UI, use review_form with a CSV option source.
Limits and side effects
- LLM matching is slower/costlier; use
exactwhen values are canonical. - Read-only against the bound CSV.
Expected errors
- Unknown
file_name, empty criteria (except LLM +source_rows), CSV still indexing. filter_criteriawithmatching_strategy: exact(add anothermatch_criteriaentry instead), or afilter_criteriacolumn that is not a header of the CSV.