{"uid":"cap_tYUCM1s_e7h_Z8Ptr2jSn","slug":"u2a-holdings-diff-61cf94cb","name":"U2A Holdings Diff","description":"Compare any two portfolio or SEC-style holdings datasets (up to 1000 rows each) by CUSIP, ticker, ISIN, or internal identifier. Return opened, closed, increased, decreased, and field-level changed positions with totals and weight changes.","url":"https://www.u2a.com.au/api/mcp/holdings-diff?utm_source=zero.xyz","method":"POST","headers":{},"bodySchema":{"type":"object","properties":{"keys":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Field name(s) that identify a row in both datasets, e.g. [\"cusip\"] or [\"ticker\",\"putCall\"]."},"newRecords":{"type":"array","items":{"type":"object"},"maxItems":1000,"description":"Holdings at the later date, same field names as oldRecords (max 1000)."},"oldRecords":{"type":"array","items":{"type":"object"},"maxItems":1000,"description":"Holdings at the earlier date (one object per position; max 1000)."},"valueField":{"type":"string","description":"Field containing the position market value."},"compareFields":{"type":"array","items":{"type":"string"},"description":"Fields to compare for changes. Default: every field present in both datasets except the keys."},"quantityField":{"type":"string","description":"Field containing the position quantity or share count."},"includeRecords":{"type":"boolean","default":true,"description":"Include the new source row (new_record) on each position. Old rows are never echoed back. Set false for the smallest response."},"aggregateDuplicates":{"type":"boolean","default":false,"description":"Sum quantity and value for rows sharing a key (e.g. 13F rows split by sub-manager) instead of rejecting duplicates."},"caseInsensitiveKeys":{"type":"boolean","default":false,"description":"Treat \"abc\" and \"ABC\" as the same key."}}},"responseSchema":null,"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.01","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.01/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.01","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.01","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_GQwxM73YIb7VyE-3rXnWz","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.01","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Compares two portfolio or SEC-style holdings datasets and returns opened, closed, increased, decreased, and field-level changed positions identified by CUSIP, ticker, ISIN, or internal ID.","exampleAgentPrompt":"Compare my old and new holdings files — use CUSIP and ticker as the keys, quantity in the 'shares' field, value in the 'market_value' field — and tell me which positions were opened, closed, increased, or decreased, and flag any other field-level changes.","exampleUseCases":[{"title":"Monthly fund holdings change report","prompt":"I have last month's and this month's mutual fund holdings snapshots — both as lists of position objects with CUSIP and ticker. Use those as keys, compare the 'shares' quantity field and 'nav_value' value field, and tell me every position that was opened, closed, increased, or decreased between the two dates."},{"title":"13F filing comparison for hedge fund tracking","prompt":"I've got two 13F holdings datasets — one from Q1 and one from Q2 — and I want to know exactly what changed: which positions are new, which were fully exited, which grew or shrank, and any other field-level differences. Match records by CUSIP."},{"title":"Daily portfolio drift detection","prompt":"Run a diff on yesterday's and today's portfolio records using ISIN as the key, with 'quantity' as the share count field and 'mkt_value' as the value field, and also compare the 'sector' and 'rating' fields so I can see if any metadata changed alongside the position sizes."}],"resultDescription":"Returns a structured diff object categorizing each position as opened (in new but not old), closed (in old but not new), increased (quantity/value grew), decreased (quantity/value shrank), or changed (field-level differences in specified compareFields), with before/after values for each affected record.","failureModes":["Missing required 'keys' field returns a validation error","newRecords or oldRecords exceeding 2000 items each may be rejected","Unrecognized or absent key fields in records produce unmatched rows","Non-existent valueField or quantityField names result in null comparisons or errors","Malformed record objects (non-array or missing properties) cause parsing failures"],"whenToPreferThis":"Use this endpoint when you need a structured, field-level diff of two holdings or portfolio datasets identified by financial identifiers like CUSIP, ticker, or ISIN — especially when you need to categorize changes as opened, closed, increased, or decreased. Prefer it over generic record-diff tools when dealing with SEC-style or fund portfolio data formats, or when you need quantity and market-value aware comparison alongside field-level change detection.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-10-12T18:31:17.159Z","isFirstParty":false,"canonicalSlug":"u2a-holdings-diff-61cf94cb"}