Modular Finance Dataflow

get_sub_holdings

TOOLGet sub-holdingsscope: dataflow:ownership.read · read-only
Tool description, as exposed to the agent
Returns the holdings reported under a single parent owner. Use this when a row from get_owner_list has has_sub_holdings: true and you want to see its sub-managers or individual fund positions. The same tool is used recursively: each returned row is itself an owner that may have its own sub-holdings (indicated by has_sub_holdings), so an agent can keep drilling down level by level. Pass the same company_id and mode you used in the parent call, plus the owner_id of the parent whose children you want. Rows carry the same fields as get_owner_list, including owner_parent_id / owner_parent_name (the level above each row), management_type, management_style, and cost_basis. This is also the one ownership tool that can filter ON those classifications: management_type (active, passive, quantitative, unknown) and management_style select which sub-holdings are returned, leaving each row's own shares and capital untouched - so "the active funds under this manager" is one call, not a fetch-and-guess. The aggregating tools spell the same idea differently: get_owner_list, get_owner_portfolio and the two change tools take underlying_management_type, which re-aggregates each row to one sleeve instead of selecting rows. The sub-holdings can span more than one page (default limit 25, max 100 per page); when next_cursor is present in the response, pass it back as cursor on the next call to retrieve the next page until next_cursor is absent. Successful calls may consume Dataflow credits per owner row actually returned; nested stock breakdowns do not add units, and an empty result costs zero credits.

Parameters

ParameterTypeDescription
company_idintegerrequiredSame company_id used in the parent get_owner_list or get_sub_holdings call.
owner_idintegerrequiredThe owner_id of the parent owner whose sub-holdings you want.
mode'beneficial' | 'manager'optionalMust match the mode used to discover this owner. Market convention differs by market: for UK (GB) companies the standard perspective is 'manager', for Nordic companies (SE, NO, DK, FI, IS) it is 'beneficial'. Defaults to your organisation's configured perspective ('beneficial' unless configured otherwise).default "beneficial"
adjust_treasurybooleanoptionalDenominator behind every capital and votes fraction in the response. false computes them on total issued shares, including any treasury shares the company holds itself, which is the Nordic standard. true computes them on shares outstanding, excluding treasury shares, which is the UK standard and makes the same holding read slightly higher. Defaults to your organisation's configured basis (unadjusted unless configured otherwise). get_shares_outstanding reports both share counts whatever you pass here.default false
limitintegeroptionalMaximum number of sub-holdings per page. Hard cap 100. For full enumeration set limit=100 and page via cursor.default 25 · min 1 · max 100
cursorstringoptionalOpaque pagination token returned as next_cursor by a prior call. Omit on the first call; pass back verbatim to retrieve the next page until next_cursor is absent. Must accompany identical company_id, owner_id, mode, limit, and include_stock_holdings values.max length 512
management_typestring[]optionalOptional filter: return only sub-holdings whose relationship to this parent carries one of these classifications. It selects rows and nothing more - each returned row's shares, capital and votes are its own, exactly what they would be unfiltered. Values are OR-ed, so ["active", "quantitative"] returns both. 'unknown' selects relationships nobody has classified yet, which is also why the three known types need not add up to the unfiltered total. Paging and credit cost follow the matches: limit counts matching rows rather than padding a page with non-matching ones, and next_cursor walks the filtered sequence.max items 4
management_stylestring[]optionalOptional filter on the finer style label that refines management_type (e.g. 'growth', 'quality', 'index', 'thematic', 'no-style'). Same row-selecting semantics as management_type; giving both requires a row to match both. The style vocabulary is curated rather than fixed, so an unrecognised value yields an empty result rather than an error - read the management_style values off an unfiltered call first.max items 32
include_stock_holdingsbooleanoptionaldefault true
currencystringoptionalOptional ISO 4217 currency code (e.g. 'GBP', 'USD', 'SEK') to convert cost_basis into. Omit it and each cost_basis is reported in the currency that share class trades in, which is the currency directly comparable to the share price; cost_basis_currency names it either way. Pass a code only when you are comparing owners' costs across markets.

Billing

Pricing keys: sub_holdings.beneficial, sub_holdings.manager. Successful calls consume Dataflow credits per your contract. See Credits & pricing.