ko-mcp
Ce que fait ce MCP
Provides SEC filings, institutional holdings, insider and congressional trades, stock data, Treasury yields, rates, crypto ETF exposure, and macro indicators.
Outils
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['member'], 'properties': {'page': {'type': 'integer', 'default': 1, 'minimum': 1}, 'limit': {'type': 'integer', 'default': 50, 'maximum': 100, 'minimum': 1}, 'member': {'type': 'string', 'description': "Member slug (e.g. 'nancy-pelosi', 'dan-crenshaw'). Use get_congress_trades or search to find exact slugs."}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['member', 'rows', 'paging', 'plan_limit'], 'properties': {'rows': {'type': 'array', 'items': {'type': 'object', 'required': ['member_name', 'chamber', 'ticker', 'asset_description', 'transaction_type', 'transaction_date', 'disclosure_date', 'amount_range', 'owner'], 'properties': {'owner': {'$ref': '#/properties/rows/items/properties/member_name'}, 'ticker': {'$ref': '#/properties/rows/items/properties/member_name'}, 'chamber': {'$ref': '#/properties/rows/items/properties/member_name'}, 'member_name': {'type': ['string', 'null']}, 'amount_range': {'type': ['string', 'null'], 'description': 'The disclosed dollar RANGE (STOCK Act bands), not an exact amount'}, 'disclosure_date': {'$ref': '#/properties/rows/items/properties/member_name'}, 'transaction_date': {'$ref': '#/properties/rows/items/properties/member_name'}, 'transaction_type': {'$ref': '#/properties/rows/items/properties/member_name'}, 'asset_description': {'$ref': '#/properties/rows/items/properties/member_name'}}, 'additionalProperties': False}}, 'member': {'type': 'string'}, 'paging': {'type': 'object', 'required': ['page', 'per_page', 'returned', 'total_count', 'has_more', 'next_page', 'continuation', 'plan_row_cap', 'truncated_by_plan'], 'properties': {'page': {'type': 'integer'}, 'has_more': {'type': ['boolean', 'null'], 'description': 'null = a full page came back and more MAY exist'}, 'per_page': {'type': 'integer'}, 'returned': {'type': 'integer'}, 'next_page': {'anyOf': [{'$ref': '#/properties/paging/properties/total_count/anyOf/0'}, {'type': 'null'}], 'description': 'Next page THIS caller can open; null when there is none (or sign-in is required)'}, 'total_count': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'description': 'Total rows matching the request, when ko.io reported it'}, 'continuation': {'type': ['string', 'null'], 'description': 'SIGNIN_REQUIRED = page>1 needs a (free) ko.io API key'}, 'plan_row_cap': {'anyOf': [{'$ref': '#/properties/paging/properties/total_count/anyOf/0'}, {'type': 'null'}], 'description': "Row cap the caller's plan applied to this page, if any"}, 'truncated_by_plan': {'type': 'boolean', 'description': "True when the plan's row cap withheld rows from this page"}}, 'description': 'Paging state reconciled from ko.io meta.total_count and meta.softwall', 'additionalProperties': False}, 'plan_limit': {'anyOf': [{'type': 'object', 'required': ['policy_version', 'window_start', 'window_end', 'effective_period', 'date_basis', 'row_cap', 'truncated', 'continuation'], 'properties': {'row_cap': {'anyOf': [{'$ref': '#/properties/paging/properties/total_count/anyOf/0'}, {'type': 'null'}]}, 'truncated': {'type': ['boolean', 'null']}, 'date_basis': {'$ref': '#/properties/rows/items/properties/member_name'}, 'window_end': {'$ref': '#/properties/rows/items/properties/member_name'}, 'continuation': {'$ref': '#/properties/rows/items/properties/member_name'}, 'window_start': {'$ref': '#/properties/rows/items/properties/member_name'}, 'policy_version': {'$ref': '#/properties/rows/items/properties/member_name'}, 'effective_period': {'$ref': '#/properties/rows/items/properties/member_name'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'The Free/keyless plan limits ko.io applied to this answer (null for paid callers)'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'page': {'type': 'integer', 'default': 1, 'minimum': 1, 'description': 'Page number for pagination (default 1)'}, 'sort': {'enum': ['volume', 'trades', 'recent'], 'type': 'string', 'default': 'volume', 'description': 'Sort order — volume (most traded value), trades (most trades), recent (latest first)'}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1, 'description': 'Trades per page, 1-50 (default 20)'}, 'search': {'type': 'string', 'maxLength': 200, 'description': "Full or partial member name, e.g. 'Pelosi' or 'Dan Crenshaw'"}, 'ticker': {'type': 'string', 'maxLength': 200, 'description': 'Stock ticker symbol to filter by, e.g. NVDA or AAPL'}, 'chamber': {'enum': ['house', 'senate', 'all'], 'type': 'string', 'default': 'all', 'description': 'Congressional chamber: house, senate, or all (default all)'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['filters', 'rows', 'paging', 'plan_limit'], 'properties': {'rows': {'type': 'array', 'items': {'type': 'object', 'required': ['member_name', 'chamber', 'ticker', 'asset_description', 'transaction_type', 'transaction_date', 'disclosure_date', 'amount_range', 'owner'], 'properties': {'owner': {'$ref': '#/properties/filters/properties/chamber'}, 'ticker': {'$ref': '#/properties/filters/properties/chamber'}, 'chamber': {'$ref': '#/properties/filters/properties/chamber'}, 'member_name': {'$ref': '#/properties/filters/properties/chamber'}, 'amount_range': {'type': ['string', 'null'], 'description': 'The disclosed dollar RANGE (STOCK Act bands), not an exact amount'}, 'disclosure_date': {'$ref': '#/properties/filters/properties/chamber'}, 'transaction_date': {'$ref': '#/properties/filters/properties/chamber'}, 'transaction_type': {'$ref': '#/properties/filters/properties/chamber'}, 'asset_description': {'$ref': '#/properties/filters/properties/chamber'}}, 'additionalProperties': False}}, 'paging': {'type': 'object', 'required': ['page', 'per_page', 'returned', 'total_count', 'has_more', 'next_page', 'continuation', 'plan_row_cap', 'truncated_by_plan'], 'properties': {'page': {'type': 'integer'}, 'has_more': {'type': ['boolean', 'null'], 'description': 'null = a full page came back and more MAY exist'}, 'per_page': {'type': 'integer'}, 'returned': {'type': 'integer'}, 'next_page': {'anyOf': [{'$ref': '#/properties/paging/properties/total_count/anyOf/0'}, {'type': 'null'}], 'description': 'Next page THIS caller can open; null when there is none (or sign-in is required)'}, 'total_count': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'description': 'Total rows matching the request, when ko.io reported it'}, 'continuation': {'type': ['string', 'null'], 'description': 'SIGNIN_REQUIRED = page>1 needs a (free) ko.io API key'}, 'plan_row_cap': {'anyOf': [{'$ref': '#/properties/paging/properties/total_count/anyOf/0'}, {'type': 'null'}], 'description': "Row cap the caller's plan applied to this page, if any"}, 'truncated_by_plan': {'type': 'boolean', 'description': "True when the plan's row cap withheld rows from this page"}}, 'description': 'Paging state reconciled from ko.io meta.total_count and meta.softwall', 'additionalProperties': False}, 'filters': {'type': 'object', 'required': ['chamber', 'ticker', 'search', 'sort'], 'properties': {'sort': {'$ref': '#/properties/filters/properties/chamber'}, 'search': {'$ref': '#/properties/filters/properties/chamber'}, 'ticker': {'$ref': '#/properties/filters/properties/chamber'}, 'chamber': {'type': ['string', 'null']}}, 'additionalProperties': False}, 'plan_limit': {'anyOf': [{'type': 'object', 'required': ['policy_version', 'window_start', 'window_end', 'effective_period', 'date_basis', 'row_cap', 'truncated', 'continuation'], 'properties': {'row_cap': {'anyOf': [{'$ref': '#/properties/paging/properties/total_count/anyOf/0'}, {'type': 'null'}]}, 'truncated': {'type': ['boolean', 'null']}, 'date_basis': {'$ref': '#/properties/filters/properties/chamber'}, 'window_end': {'$ref': '#/properties/filters/properties/chamber'}, 'continuation': {'$ref': '#/properties/filters/properties/chamber'}, 'window_start': {'$ref': '#/properties/filters/properties/chamber'}, 'policy_version': {'$ref': '#/properties/filters/properties/chamber'}, 'effective_period': {'$ref': '#/properties/filters/properties/chamber'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'The Free/keyless plan limits ko.io applied to this answer (null for paid callers)'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['complex', 'products'], 'properties': {'complex': {'type': 'object', 'required': ['total_usd', 'qoq_change', 'products'], 'properties': {'products': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}, 'total_usd': {'anyOf': [{'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?([eE][-+]?\\d+)?$'}, {'type': 'null'}], 'description': 'Exact decimal string as served by ko.io (not rounded); null = unknown'}, 'qoq_change': {'$ref': '#/properties/complex/properties/total_usd'}}, 'additionalProperties': False}, 'products': {'type': 'array', 'items': {'type': 'object', 'required': ['product_ticker', 'product_name', 'sponsor', 'holders', 'total_usd', 'prev_usd', 'qoq_change'], 'properties': {'holders': {'$ref': '#/properties/complex/properties/products'}, 'sponsor': {'$ref': '#/properties/products/items/properties/product_ticker'}, 'prev_usd': {'$ref': '#/properties/complex/properties/total_usd'}, 'total_usd': {'$ref': '#/properties/complex/properties/total_usd'}, 'qoq_change': {'$ref': '#/properties/complex/properties/total_usd'}, 'product_name': {'$ref': '#/properties/products/items/properties/product_ticker'}, 'product_ticker': {'type': ['string', 'null']}}, 'additionalProperties': False}}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['institution'], 'properties': {'institution': {'type': 'string', 'maxLength': 200, 'description': "Institution CIK number (e.g. '1512857' for Brevan Howard) or name (e.g. 'BlackRock')."}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['requested', 'cik', 'institution', 'positions', 'plan_limit'], 'properties': {'cik': {'type': ['string', 'null']}, 'positions': {'type': 'array', 'items': {'type': 'object', 'required': ['product_ticker', 'product_name', 'shares_held', 'usd_value', 'qoq_value_change', 'action'], 'properties': {'action': {'$ref': '#/properties/cik'}, 'usd_value': {'$ref': '#/properties/institution/anyOf/0/properties/total_usd'}, 'shares_held': {'$ref': '#/properties/institution/anyOf/0/properties/total_usd'}, 'product_name': {'$ref': '#/properties/cik'}, 'product_ticker': {'$ref': '#/properties/cik'}, 'qoq_value_change': {'$ref': '#/properties/institution/anyOf/0/properties/total_usd'}}, 'additionalProperties': False}}, 'requested': {'type': 'string'}, 'plan_limit': {'anyOf': [{'type': 'object', 'required': ['policy_version', 'window_start', 'window_end', 'effective_period', 'date_basis', 'row_cap', 'truncated', 'continuation'], 'properties': {'row_cap': {'$ref': '#/properties/institution/anyOf/0/properties/rank'}, 'truncated': {'type': ['boolean', 'null']}, 'date_basis': {'$ref': '#/properties/cik'}, 'window_end': {'$ref': '#/properties/cik'}, 'continuation': {'$ref': '#/properties/cik'}, 'window_start': {'$ref': '#/properties/cik'}, 'policy_version': {'$ref': '#/properties/cik'}, 'effective_period': {'$ref': '#/properties/cik'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'The Free/keyless plan limits ko.io applied to this answer (null for paid callers)'}, 'institution': {'anyOf': [{'type': 'object', 'required': ['name', 'latest_quarter', 'total_usd', 'qoq_change', 'rank', 'total_holders', 'portfolio_weight_pct'], 'properties': {'name': {'$ref': '#/properties/cik'}, 'rank': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}, 'total_usd': {'anyOf': [{'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?([eE][-+]?\\d+)?$'}, {'type': 'null'}], 'description': 'Exact decimal string as served by ko.io (not rounded); null = unknown'}, 'qoq_change': {'$ref': '#/properties/institution/anyOf/0/properties/total_usd'}, 'total_holders': {'$ref': '#/properties/institution/anyOf/0/properties/rank'}, 'latest_quarter': {'$ref': '#/properties/cik'}, 'portfolio_weight_pct': {'$ref': '#/properties/institution/anyOf/0/properties/total_usd'}}, 'additionalProperties': False}, {'type': 'null'}]}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'page': {'type': 'integer', 'default': 1, 'minimum': 1, 'description': 'Page number'}, 'limit': {'type': 'integer', 'default': 50, 'maximum': 200, 'minimum': 1, 'description': 'Results per page'}, 'product': {'type': 'string', 'maxLength': 200, 'description': "Filter to holders of a specific spot crypto ETF ticker, e.g. 'IBIT', 'FBTC', 'GBTC'."}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['product', 'total_holders', 'rows', 'paging', 'plan_limit'], 'properties': {'rows': {'type': 'array', 'items': {'type': 'object', 'required': ['rank', 'cik', 'name', 'total_usd', 'prev_usd', 'qoq_value_change', 'product_count', 'products'], 'properties': {'cik': {'$ref': '#/properties/product'}, 'name': {'$ref': '#/properties/product'}, 'rank': {'$ref': '#/properties/total_holders'}, 'prev_usd': {'$ref': '#/properties/rows/items/properties/total_usd'}, 'products': {'type': 'array', 'items': {'type': 'string'}}, 'total_usd': {'anyOf': [{'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?([eE][-+]?\\d+)?$'}, {'type': 'null'}], 'description': 'Exact decimal string as served by ko.io (not rounded); null = unknown'}, 'product_count': {'$ref': '#/properties/total_holders'}, 'qoq_value_change': {'$ref': '#/properties/rows/items/properties/total_usd'}}, 'additionalProperties': False}}, 'paging': {'type': 'object', 'required': ['page', 'per_page', 'returned', 'total_count', 'has_more', 'next_page', 'continuation', 'plan_row_cap', 'truncated_by_plan'], 'properties': {'page': {'type': 'integer'}, 'has_more': {'type': ['boolean', 'null'], 'description': 'null = a full page came back and more MAY exist'}, 'per_page': {'type': 'integer'}, 'returned': {'type': 'integer'}, 'next_page': {'anyOf': [{'$ref': '#/properties/total_holders/anyOf/0'}, {'type': 'null'}], 'description': 'Next page THIS caller can open; null when there is none (or sign-in is required)'}, 'total_count': {'anyOf': [{'$ref': '#/properties/total_holders/anyOf/0'}, {'type': 'null'}], 'description': 'Total rows matching the request, when ko.io reported it'}, 'continuation': {'type': ['string', 'null'], 'description': 'SIGNIN_REQUIRED = page>1 needs a (free) ko.io API key'}, 'plan_row_cap': {'anyOf': [{'$ref': '#/properties/total_holders/anyOf/0'}, {'type': 'null'}], 'description': "Row cap the caller's plan applied to this page, if any"}, 'truncated_by_plan': {'type': 'boolean', 'description': "True when the plan's row cap withheld rows from this page"}}, 'description': 'Paging state reconciled from ko.io meta.total_count and meta.softwall', 'additionalProperties': False}, 'product': {'type': ['string', 'null']}, 'plan_limit': {'anyOf': [{'type': 'object', 'required': ['policy_version', 'window_start', 'window_end', 'effective_period', 'date_basis', 'row_cap', 'truncated', 'continuation'], 'properties': {'row_cap': {'$ref': '#/properties/total_holders'}, 'truncated': {'type': ['boolean', 'null']}, 'date_basis': {'$ref': '#/properties/product'}, 'window_end': {'$ref': '#/properties/product'}, 'continuation': {'$ref': '#/properties/product'}, 'window_start': {'$ref': '#/properties/product'}, 'policy_version': {'$ref': '#/properties/product'}, 'effective_period': {'$ref': '#/properties/product'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'The Free/keyless plan limits ko.io applied to this answer (null for paid callers)'}, 'total_holders': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'days': {'type': 'integer', 'default': 365, 'maximum': 3650, 'minimum': 1, 'description': 'Number of days of history (default 365)'}, 'page': {'type': 'integer', 'default': 1, 'minimum': 1, 'description': 'Page number (default 1)'}, 'limit': {'type': 'integer', 'default': 100, 'maximum': 500, 'minimum': 1, 'description': 'Rows per page, 1-500 (default 100). A long `days` window can hold more rows than one page; the answer says when the page is full and names the next one.'}, 'category': {'enum': ['cpi', 'unemployment', 'nfp', 'ppi', 'jolts', 'all'], 'type': 'string', 'default': 'all', 'description': 'Category (case-insensitive): cpi/inflation, ppi, nfp/payrolls, unemployment, jolts, or all'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['category', 'rows', 'paging'], 'properties': {'rows': {'type': 'array', 'items': {'type': 'object', 'required': ['date', 'series_id', 'series_name', 'value', 'category'], 'properties': {'date': {'type': ['string', 'null']}, 'value': {'anyOf': [{'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?([eE][-+]?\\d+)?$'}, {'type': 'null'}], 'description': 'Exact decimal string as served by ko.io (not rounded); null = unknown'}, 'category': {'$ref': '#/properties/rows/items/properties/date'}, 'series_id': {'$ref': '#/properties/rows/items/properties/date'}, 'series_name': {'$ref': '#/properties/rows/items/properties/date'}}, 'additionalProperties': False}}, 'paging': {'type': 'object', 'required': ['page', 'per_page', 'returned', 'total_count', 'has_more', 'next_page', 'continuation', 'plan_row_cap', 'truncated_by_plan'], 'properties': {'page': {'type': 'integer'}, 'has_more': {'type': ['boolean', 'null'], 'description': 'null = a full page came back and more MAY exist'}, 'per_page': {'type': 'integer'}, 'returned': {'type': 'integer'}, 'next_page': {'anyOf': [{'$ref': '#/properties/paging/properties/total_count/anyOf/0'}, {'type': 'null'}], 'description': 'Next page THIS caller can open; null when there is none (or sign-in is required)'}, 'total_count': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'description': 'Total rows matching the request, when ko.io reported it'}, 'continuation': {'type': ['string', 'null'], 'description': 'SIGNIN_REQUIRED = page>1 needs a (free) ko.io API key'}, 'plan_row_cap': {'anyOf': [{'$ref': '#/properties/paging/properties/total_count/anyOf/0'}, {'type': 'null'}], 'description': "Row cap the caller's plan applied to this page, if any"}, 'truncated_by_plan': {'type': 'boolean', 'description': "True when the plan's row cap withheld rows from this page"}}, 'description': 'Paging state reconciled from ko.io meta.total_count and meta.softwall', 'additionalProperties': False}, 'category': {'type': 'string'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'days': {'type': 'integer', 'default': 30, 'maximum': 3650, 'minimum': 1, 'description': 'Number of days of history (default 30)'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['unit', 'rows'], 'properties': {'rows': {'type': 'array', 'items': {'type': 'object', 'required': ['date', 'fed_funds_rate', 'sofr', 'prime_rate', 'treasury_3m', 'treasury_2y', 'treasury_10y', 'treasury_30y'], 'properties': {'date': {'type': ['string', 'null']}, 'sofr': {'$ref': '#/properties/rows/items/properties/fed_funds_rate'}, 'prime_rate': {'$ref': '#/properties/rows/items/properties/fed_funds_rate'}, 'treasury_2y': {'$ref': '#/properties/rows/items/properties/fed_funds_rate'}, 'treasury_3m': {'$ref': '#/properties/rows/items/properties/fed_funds_rate'}, 'treasury_10y': {'$ref': '#/properties/rows/items/properties/fed_funds_rate'}, 'treasury_30y': {'$ref': '#/properties/rows/items/properties/fed_funds_rate'}, 'fed_funds_rate': {'anyOf': [{'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?([eE][-+]?\\d+)?$'}, {'type': 'null'}], 'description': 'Exact decimal string as served by ko.io (not rounded); null = unknown'}}, 'additionalProperties': False}}, 'unit': {'type': 'string', 'const': 'percent'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'days': {'type': 'integer', 'default': 365, 'maximum': 3650, 'minimum': 1, 'description': 'Number of days of history (default 365)'}, 'page': {'type': 'integer', 'default': 1, 'minimum': 1, 'description': 'Page number (default 1)'}, 'limit': {'type': 'integer', 'default': 100, 'maximum': 500, 'minimum': 1, 'description': 'Rows per page, 1-500 (default 100). A long `days` window can hold more rows than one page; the answer says when the page is full and names the next one.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['rows', 'paging'], 'properties': {'rows': {'type': 'array', 'items': {'type': 'object', 'required': ['date', 'series', 'value'], 'properties': {'date': {'type': ['string', 'null']}, 'value': {'anyOf': [{'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?([eE][-+]?\\d+)?$'}, {'type': 'null'}], 'description': 'Exact decimal string as served by ko.io (not rounded); null = unknown'}, 'series': {'$ref': '#/properties/rows/items/properties/date'}}, 'additionalProperties': False}}, 'paging': {'type': 'object', 'required': ['page', 'per_page', 'returned', 'total_count', 'has_more', 'next_page', 'continuation', 'plan_row_cap', 'truncated_by_plan'], 'properties': {'page': {'type': 'integer'}, 'has_more': {'type': ['boolean', 'null'], 'description': 'null = a full page came back and more MAY exist'}, 'per_page': {'type': 'integer'}, 'returned': {'type': 'integer'}, 'next_page': {'anyOf': [{'$ref': '#/properties/paging/properties/total_count/anyOf/0'}, {'type': 'null'}], 'description': 'Next page THIS caller can open; null when there is none (or sign-in is required)'}, 'total_count': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'description': 'Total rows matching the request, when ko.io reported it'}, 'continuation': {'type': ['string', 'null'], 'description': 'SIGNIN_REQUIRED = page>1 needs a (free) ko.io API key'}, 'plan_row_cap': {'anyOf': [{'$ref': '#/properties/paging/properties/total_count/anyOf/0'}, {'type': 'null'}], 'description': "Row cap the caller's plan applied to this page, if any"}, 'truncated_by_plan': {'type': 'boolean', 'description': "True when the plan's row cap withheld rows from this page"}}, 'description': 'Paging state reconciled from ko.io meta.total_count and meta.softwall', 'additionalProperties': False}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 200, 'minimum': 1, 'description': 'Max notices to return'}, 'ticker': {'type': 'string', 'maxLength': 200, 'description': "Filter by stock ticker (e.g. 'AAPL')"}, 'insider_cik': {'type': 'string', 'maxLength': 200, 'description': "Filter by insider's CIK number"}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['filters', 'rows', 'paging', 'plan_limit'], 'properties': {'rows': {'type': 'array', 'items': {'type': 'object', 'required': ['accession_no', 'filed_date', 'issuer_ticker', 'issuer_name', 'issuer_cik', 'seller_name', 'relationship', 'securities_class', 'units_to_sell', 'aggregate_market_value', 'approx_sale_date', 'broker_name', 'has_10b5_1_plan'], 'properties': {'filed_date': {'$ref': '#/properties/filters/properties/ticker'}, 'issuer_cik': {'$ref': '#/properties/filters/properties/ticker'}, 'broker_name': {'$ref': '#/properties/filters/properties/ticker'}, 'issuer_name': {'$ref': '#/properties/filters/properties/ticker'}, 'seller_name': {'$ref': '#/properties/filters/properties/ticker'}, 'accession_no': {'$ref': '#/properties/filters/properties/ticker'}, 'relationship': {'$ref': '#/properties/filters/properties/ticker'}, 'issuer_ticker': {'$ref': '#/properties/filters/properties/ticker'}, 'units_to_sell': {'anyOf': [{'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?([eE][-+]?\\d+)?$'}, {'type': 'null'}], 'description': 'Units the filer NOTIFIED an intent to sell -- not a completed sale'}, 'has_10b5_1_plan': {'type': ['boolean', 'null']}, 'approx_sale_date': {'$ref': '#/properties/filters/properties/ticker'}, 'securities_class': {'$ref': '#/properties/filters/properties/ticker'}, 'aggregate_market_value': {'anyOf': [{'$ref': '#/properties/rows/items/properties/units_to_sell/anyOf/0'}, {'type': 'null'}], 'description': 'Exact decimal string as served by ko.io (not rounded); null = unknown'}}, 'additionalProperties': False}}, 'paging': {'type': 'object', 'required': ['page', 'per_page', 'returned', 'total_count', 'has_more', 'next_page', 'continuation', 'plan_row_cap', 'truncated_by_plan'], 'properties': {'page': {'type': 'integer'}, 'has_more': {'type': ['boolean', 'null'], 'description': 'null = a full page came back and more MAY exist'}, 'per_page': {'type': 'integer'}, 'returned': {'type': 'integer'}, 'next_page': {'anyOf': [{'$ref': '#/properties/paging/properties/total_count/anyOf/0'}, {'type': 'null'}], 'description': 'Next page THIS caller can open; null when there is none (or sign-in is required)'}, 'total_count': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'description': 'Total rows matching the request, when ko.io reported it'}, 'continuation': {'type': ['string', 'null'], 'description': 'SIGNIN_REQUIRED = page>1 needs a (free) ko.io API key'}, 'plan_row_cap': {'anyOf': [{'$ref': '#/properties/paging/properties/total_count/anyOf/0'}, {'type': 'null'}], 'description': "Row cap the caller's plan applied to this page, if any"}, 'truncated_by_plan': {'type': 'boolean', 'description': "True when the plan's row cap withheld rows from this page"}}, 'description': 'Paging state reconciled from ko.io meta.total_count and meta.softwall', 'additionalProperties': False}, 'filters': {'type': 'object', 'required': ['ticker', 'insider_cik'], 'properties': {'ticker': {'type': ['string', 'null']}, 'insider_cik': {'$ref': '#/properties/filters/properties/ticker'}}, 'additionalProperties': False}, 'plan_limit': {'anyOf': [{'type': 'object', 'required': ['policy_version', 'window_start', 'window_end', 'effective_period', 'date_basis', 'row_cap', 'truncated', 'continuation'], 'properties': {'row_cap': {'anyOf': [{'$ref': '#/properties/paging/properties/total_count/anyOf/0'}, {'type': 'null'}]}, 'truncated': {'type': ['boolean', 'null']}, 'date_basis': {'$ref': '#/properties/filters/properties/ticker'}, 'window_end': {'$ref': '#/properties/filters/properties/ticker'}, 'continuation': {'$ref': '#/properties/filters/properties/ticker'}, 'window_start': {'$ref': '#/properties/filters/properties/ticker'}, 'policy_version': {'$ref': '#/properties/filters/properties/ticker'}, 'effective_period': {'$ref': '#/properties/filters/properties/ticker'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'The Free/keyless plan limits ko.io applied to this answer (null for paid callers)'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ticker'], 'properties': {'days': {'type': 'integer', 'default': 90, 'maximum': 1825, 'minimum': 1, 'description': 'Days of settlement-date history (default 90; Free/keyless access allows up to 92)'}, 'page': {'type': 'integer', 'default': 1, 'minimum': 1, 'description': 'Page number (default 1)'}, 'limit': {'type': 'integer', 'default': 100, 'maximum': 500, 'minimum': 1, 'description': 'Rows per page, 1-500 (default 100). A long `days` window can hold more rows than one page; the answer says when the page is full and names the next one.'}, 'ticker': {'type': 'string', 'maxLength': 200, 'description': "Stock ticker symbol (e.g. 'GME', 'TSLA')"}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ticker', 'measure', 'rows', 'paging', 'plan_limit'], 'properties': {'rows': {'type': 'array', 'items': {'type': 'object', 'required': ['settlement_date', 'ticker', 'quantity', 'price'], 'properties': {'price': {'anyOf': [{'$ref': '#/properties/rows/items/properties/quantity/anyOf/0'}, {'type': 'null'}], 'description': 'Exact decimal string as served by ko.io (not rounded); null = unknown'}, 'ticker': {'$ref': '#/properties/rows/items/properties/settlement_date'}, 'quantity': {'anyOf': [{'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?([eE][-+]?\\d+)?$'}, {'type': 'null'}], 'description': 'Outstanding fails-to-deliver balance (shares) on that settlement date'}, 'settlement_date': {'type': ['string', 'null']}}, 'additionalProperties': False}}, 'paging': {'type': 'object', 'required': ['page', 'per_page', 'returned', 'total_count', 'has_more', 'next_page', 'continuation', 'plan_row_cap', 'truncated_by_plan'], 'properties': {'page': {'type': 'integer'}, 'has_more': {'type': ['boolean', 'null'], 'description': 'null = a full page came back and more MAY exist'}, 'per_page': {'type': 'integer'}, 'returned': {'type': 'integer'}, 'next_page': {'anyOf': [{'$ref': '#/properties/paging/properties/total_count/anyOf/0'}, {'type': 'null'}], 'description': 'Next page THIS caller can open; null when there is none (or sign-in is required)'}, 'total_count': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'description': 'Total rows matching the request, when ko.io reported it'}, 'continuation': {'type': ['string', 'null'], 'description': 'SIGNIN_REQUIRED = page>1 needs a (free) ko.io API key'}, 'plan_row_cap': {'anyOf': [{'$ref': '#/properties/paging/properties/total_count/anyOf/0'}, {'type': 'null'}], 'description': "Row cap the caller's plan applied to this page, if any"}, 'truncated_by_plan': {'type': 'boolean', 'description': "True when the plan's row cap withheld rows from this page"}}, 'description': 'Paging state reconciled from ko.io meta.total_count and meta.softwall', 'additionalProperties': False}, 'ticker': {'type': 'string'}, 'measure': {'type': 'string', 'const': 'outstanding_fail_balance', 'description': 'Each quantity is the balance of fails outstanding on that settlement date -- not new fails that day; never sum across dates'}, 'plan_limit': {'anyOf': [{'type': 'object', 'required': ['policy_version', 'window_start', 'window_end', 'effective_period', 'date_basis', 'row_cap', 'truncated', 'continuation'], 'properties': {'row_cap': {'anyOf': [{'$ref': '#/properties/paging/properties/total_count/anyOf/0'}, {'type': 'null'}]}, 'truncated': {'type': ['boolean', 'null']}, 'date_basis': {'$ref': '#/properties/rows/items/properties/settlement_date'}, 'window_end': {'$ref': '#/properties/rows/items/properties/settlement_date'}, 'continuation': {'$ref': '#/properties/rows/items/properties/settlement_date'}, 'window_start': {'$ref': '#/properties/rows/items/properties/settlement_date'}, 'policy_version': {'$ref': '#/properties/rows/items/properties/settlement_date'}, 'effective_period': {'$ref': '#/properties/rows/items/properties/settlement_date'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'The Free/keyless plan limits ko.io applied to this answer (null for paid callers)'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ticker'], 'properties': {'page': {'type': 'integer', 'default': 1, 'minimum': 1, 'description': 'Page number'}, 'limit': {'type': 'integer', 'default': 50, 'maximum': 200, 'minimum': 1, 'description': 'Rows per page, 1-200'}, 'period': {'enum': ['1Q', '2Q', '1Y', 'ALL'], 'type': 'string', 'default': '1Q', 'description': 'Trade-date window for the per-day view: 1Q = trailing 90 days (default, allowed on every plan); 2Q / 1Y / ALL require Pro. Ignored when executive_cik is given (that view returns the full history your plan allows).'}, 'ticker': {'type': 'string', 'maxLength': 200, 'description': "Stock ticker symbol (e.g. 'AAPL')"}, 'executive_cik': {'type': 'string', 'description': "Insider's SEC CIK (from a previous answer's person_cik, or list_insider_traders). When given, returns that insider's individual Form 4 transaction lines in this company, newest first."}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ticker', 'grain', 'executive_cik', 'period', 'rows', 'paging', 'plan_limit'], 'properties': {'rows': {'type': 'array', 'items': {'type': 'object', 'required': ['trade_date', 'person_cik', 'person_name', 'shares_owned_after'], 'properties': {'price': {'$ref': '#/properties/rows/items/properties/shares', 'description': 'Exact decimal string as served by ko.io (not rounded); null = unknown'}, 'value': {'$ref': '#/properties/rows/items/properties/shares', 'description': 'Exact decimal string as served by ko.io (not rounded); null = unknown'}, 'shares': {'anyOf': [{'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?([eE][-+]?\\d+)?$'}, {'type': 'null'}], 'description': 'Exact decimal string as served by ko.io (not rounded); null = unknown'}, 'person_cik': {'$ref': '#/properties/executive_cik'}, 'trade_date': {'$ref': '#/properties/executive_cik'}, 'code_p_or_s': {'type': 'boolean', 'description': 'true for SEC codes P (purchase) and S (sale) -- open market OR private; the code does not distinguish'}, 'form4_lines': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}, 'person_name': {'$ref': '#/properties/executive_cik'}, 'code_meaning': {'$ref': '#/properties/executive_cik'}, 'ps_buy_lines': {'$ref': '#/properties/rows/items/properties/form4_lines', 'description': 'Code P lines that day (open market or private purchases)'}, 'is_derivative': {'type': 'boolean'}, 'officer_title': {'$ref': '#/properties/executive_cik'}, 'ps_sell_lines': {'$ref': '#/properties/rows/items/properties/form4_lines', 'description': 'Code S lines that day (open market or private sales)'}, 'ps_value_sold': {'$ref': '#/properties/rows/items/properties/shares', 'description': 'Dollar total of PRICED code S lines only'}, 'ps_shares_sold': {'$ref': '#/properties/rows/items/properties/shares', 'description': 'Exact decimal string as served by ko.io (not rounded); null = unknown'}, 'security_title': {'$ref': '#/properties/executive_cik'}, 'last_filed_date': {'$ref': '#/properties/executive_cik'}, 'ps_value_bought': {'$ref': '#/properties/rows/items/properties/shares', 'description': 'Dollar total of PRICED code P lines only'}, 'first_filed_date': {'$ref': '#/properties/executive_cik'}, 'ps_shares_bought': {'$ref': '#/properties/rows/items/properties/shares', 'description': 'null = unknown (a line had no share count)'}, 'transaction_code': {'$ref': '#/properties/executive_cik'}, 'acquired_disposed': {'anyOf': [{'enum': ['A', 'D'], 'type': 'string'}, {'type': 'null'}]}, 'transaction_codes': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'description': 'Distinct SEC Form 4 codes aggregated into this day (e.g. ["F","M","S"]); null = not reported by ko.io'}, 'all_value_acquired': {'$ref': '#/properties/rows/items/properties/shares', 'description': 'Exact decimal string as served by ko.io (not rounded); null = unknown'}, 'all_value_disposed': {'$ref': '#/properties/rows/items/properties/shares', 'description': 'Exact decimal string as served by ko.io (not rounded); null = unknown'}, 'shares_owned_after': {'$ref': '#/properties/rows/items/properties/shares'}, 'all_shares_acquired': {'$ref': '#/properties/rows/items/properties/shares', 'description': 'Exact decimal string as served by ko.io (not rounded); null = unknown'}, 'all_shares_disposed': {'$ref': '#/properties/rows/items/properties/shares', 'description': 'Exact decimal string as served by ko.io (not rounded); null = unknown'}, 'ps_buy_unpriced_lines': {'$ref': '#/properties/rows/items/properties/form4_lines', 'description': 'Code P lines with no dollar value; > 0 means ps_value_bought is partial'}, 'ps_sell_unpriced_lines': {'$ref': '#/properties/rows/items/properties/form4_lines', 'description': 'Code S lines with no dollar value; > 0 means ps_value_sold is partial'}, 'ps_value_sold_complete': {'type': ['boolean', 'null']}, 'ps_value_bought_complete': {'type': ['boolean', 'null'], 'description': 'false = some code P lines unpriced; null = not reported'}, 'transaction_code_breakdown': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'required': ['code', 'code_meaning', 'acquired_disposed', 'is_derivative', 'lines', 'shares', 'value'], 'properties': {'code': {'$ref': '#/properties/executive_cik'}, 'lines': {'$ref': '#/properties/rows/items/properties/form4_lines'}, 'value': {'$ref': '#/properties/rows/items/properties/shares'}, 'shares': {'$ref': '#/properties/rows/items/properties/shares'}, 'code_meaning': {'type': 'string'}, 'is_derivative': {'type': 'boolean'}, 'acquired_disposed': {'enum': ['A', 'D'], 'type': 'string'}}, 'additionalProperties': False}}, {'type': 'null'}], 'description': 'Per code x acquired/disposed x table: line count, shares, value (null = unknown, not partial)'}}, 'additionalProperties': False}}, 'grain': {'enum': ['insider_trade_date', 'form4_transaction_line'], 'type': 'string', 'description': "insider_trade_date = one row per insider per day, aggregating that day's Form 4 lines; form4_transaction_line = one row per line"}, 'paging': {'type': 'object', 'required': ['page', 'per_page', 'returned', 'total_count', 'has_more', 'next_page', 'continuation', 'plan_row_cap', 'truncated_by_plan'], 'properties': {'page': {'type': 'integer'}, 'has_more': {'type': ['boolean', 'null'], 'description': 'null = a full page came back and more MAY exist'}, 'per_page': {'type': 'integer'}, 'returned': {'type': 'integer'}, 'next_page': {'anyOf': [{'$ref': '#/properties/rows/items/properties/form4_lines/anyOf/0'}, {'type': 'null'}], 'description': 'Next page THIS caller can open; null when there is none (or sign-in is required)'}, 'total_count': {'anyOf': [{'$ref': '#/properties/rows/items/properties/form4_lines/anyOf/0'}, {'type': 'null'}], 'description': 'Total rows matching the request, when ko.io reported it'}, 'continuation': {'type': ['string', 'null'], 'description': 'SIGNIN_REQUIRED = page>1 needs a (free) ko.io API key'}, 'plan_row_cap': {'anyOf': [{'$ref': '#/properties/rows/items/properties/form4_lines/anyOf/0'}, {'type': 'null'}], 'description': "Row cap the caller's plan applied to this page, if any"}, 'truncated_by_plan': {'type': 'boolean', 'description': "True when the plan's row cap withheld rows from this page"}}, 'description': 'Paging state reconciled from ko.io meta.total_count and meta.softwall', 'additionalProperties': False}, 'period': {'$ref': '#/properties/executive_cik'}, 'ticker': {'type': 'string'}, 'plan_limit': {'anyOf': [{'type': 'object', 'required': ['policy_version', 'window_start', 'window_end', 'effective_period', 'date_basis', 'row_cap', 'truncated', 'continuation'], 'properties': {'row_cap': {'$ref': '#/properties/rows/items/properties/form4_lines'}, 'truncated': {'type': ['boolean', 'null']}, 'date_basis': {'$ref': '#/properties/executive_cik'}, 'window_end': {'$ref': '#/properties/executive_cik'}, 'continuation': {'$ref': '#/properties/executive_cik'}, 'window_start': {'$ref': '#/properties/executive_cik'}, 'policy_version': {'$ref': '#/properties/executive_cik'}, 'effective_period': {'$ref': '#/properties/executive_cik'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'The Free/keyless plan limits ko.io applied to this answer (null for paid callers)'}, 'executive_cik': {'type': ['string', 'null']}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['institution'], 'properties': {'page': {'type': 'integer', 'default': 1, 'minimum': 1, 'description': 'Page number'}, 'limit': {'type': 'integer', 'default': 50, 'maximum': 100, 'minimum': 1, 'description': 'Results per page'}, 'entity': {'enum': ['family', 'filer'], 'type': 'string', 'default': 'family', 'description': "family (default): consolidate every 13F filer in the manager family; filer: only the requested CIK's own filing."}, 'ticker': {'type': 'string', 'maxLength': 20, 'description': "Only this security (e.g. 'GOOG'). Returns the security grain: GOOG is Class C only, not the Alphabet issuer total."}, 'institution': {'type': 'string', 'maxLength': 200, 'description': "Institution CIK number (e.g. '1067983'), slug (e.g. 'berkshire-hathaway'), or name (e.g. 'Berkshire Hathaway') — names are resolved automatically."}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['requested', 'requested_cik', 'resolved_cik', 'entity_grain', 'family', 'security_grain', 'ticker_filter', 'position_basis', 'view', 'quarters', 'quarter_date', 'rows', 'paging', 'plan_limit'], 'properties': {'rows': {'type': 'array', 'items': {'type': 'object', 'required': ['cik', 'ticker', 'issuer', 'quarter_date', 'shares_held', 'holding_value', 'portfolio_weight_pct', 'action', 'share_change', 'security_grain', 'tickers', 'share_classes', 'equity_shares', 'call_shares', 'put_shares', 'has_option_legs', 'reported_by_members'], 'properties': {'cik': {'$ref': '#/properties/family/anyOf/0/properties/slug'}, 'action': {'$ref': '#/properties/family/anyOf/0/properties/slug'}, 'issuer': {'$ref': '#/properties/family/anyOf/0/properties/slug'}, 'ticker': {'$ref': '#/properties/family/anyOf/0/properties/slug'}, 'tickers': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Share-class tickers summed into this row (one entry at security grain)'}, 'put_shares': {'$ref': '#/properties/rows/items/properties/shares_held'}, 'call_shares': {'$ref': '#/properties/rows/items/properties/shares_held'}, 'shares_held': {'anyOf': [{'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?([eE][-+]?\\d+)?$'}, {'type': 'null'}], 'description': 'Exact decimal string as served by ko.io (not rounded); null = unknown'}, 'quarter_date': {'$ref': '#/properties/family/anyOf/0/properties/slug'}, 'share_change': {'$ref': '#/properties/rows/items/properties/shares_held'}, 'equity_shares': {'$ref': '#/properties/rows/items/properties/shares_held'}, 'holding_value': {'$ref': '#/properties/rows/items/properties/shares_held'}, 'share_classes': {'type': 'array', 'items': {'type': 'object', 'required': ['ticker', 'shares_held', 'holding_value'], 'properties': {'ticker': {'$ref': '#/properties/family/anyOf/0/properties/slug'}, 'shares_held': {'$ref': '#/properties/rows/items/properties/shares_held'}, 'holding_value': {'$ref': '#/properties/rows/items/properties/shares_held'}}, 'additionalProperties': False}, 'description': 'Per-class breakdown of an issuer-grain row; empty at security grain'}, 'security_grain': {'enum': ['security', 'issuer'], 'type': 'string'}, 'has_option_legs': {'type': ['boolean', 'null']}, 'reported_by_members': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}, 'portfolio_weight_pct': {'$ref': '#/properties/rows/items/properties/shares_held'}}, 'additionalProperties': False}}, 'view': {'enum': ['snapshot', 'history'], 'type': 'string', 'description': "snapshot = one quarter's holdings; history = one position across quarters (family + ticker), one row per quarter, newest first"}, 'family': {'anyOf': [{'type': 'object', 'required': ['slug', 'name', 'canonical_cik'], 'properties': {'name': {'$ref': '#/properties/family/anyOf/0/properties/slug'}, 'slug': {'type': ['string', 'null']}, 'canonical_cik': {'$ref': '#/properties/family/anyOf/0/properties/slug'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'The manager family, when the answer is at family grain and ko.io named it'}, 'paging': {'type': 'object', 'required': ['page', 'per_page', 'returned', 'total_count', 'has_more', 'next_page', 'continuation', 'plan_row_cap', 'truncated_by_plan'], 'properties': {'page': {'type': 'integer'}, 'has_more': {'type': ['boolean', 'null'], 'description': 'null = a full page came back and more MAY exist'}, 'per_page': {'type': 'integer'}, 'returned': {'type': 'integer'}, 'next_page': {'anyOf': [{'$ref': '#/properties/rows/items/properties/reported_by_members/anyOf/0'}, {'type': 'null'}], 'description': 'Next page THIS caller can open; null when there is none (or sign-in is required)'}, 'total_count': {'anyOf': [{'$ref': '#/properties/rows/items/properties/reported_by_members/anyOf/0'}, {'type': 'null'}], 'description': 'Total rows matching the request, when ko.io reported it'}, 'continuation': {'type': ['string', 'null'], 'description': 'SIGNIN_REQUIRED = page>1 needs a (free) ko.io API key'}, 'plan_row_cap': {'anyOf': [{'$ref': '#/properties/rows/items/properties/reported_by_members/anyOf/0'}, {'type': 'null'}], 'description': "Row cap the caller's plan applied to this page, if any"}, 'truncated_by_plan': {'type': 'boolean', 'description': "True when the plan's row cap withheld rows from this page"}}, 'description': 'Paging state reconciled from ko.io meta.total_count and meta.softwall', 'additionalProperties': False}, 'quarters': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Distinct quarter-ends present in rows, newest first'}, 'requested': {'type': 'string', 'description': 'The institution identifier the caller passed'}, 'plan_limit': {'anyOf': [{'type': 'object', 'required': ['policy_version', 'window_start', 'window_end', 'effective_period', 'date_basis', 'row_cap', 'truncated', 'continuation'], 'properties': {'row_cap': {'$ref': '#/properties/rows/items/properties/reported_by_members'}, 'truncated': {'type': ['boolean', 'null']}, 'date_basis': {'$ref': '#/properties/family/anyOf/0/properties/slug'}, 'window_end': {'$ref': '#/properties/family/anyOf/0/properties/slug'}, 'continuation': {'$ref': '#/properties/family/anyOf/0/properties/slug'}, 'window_start': {'$ref': '#/properties/family/anyOf/0/properties/slug'}, 'policy_version': {'$ref': '#/properties/family/anyOf/0/properties/slug'}, 'effective_period': {'$ref': '#/properties/family/anyOf/0/properties/slug'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'The Free/keyless plan limits ko.io applied to this answer (null for paid callers)'}, 'entity_grain': {'enum': ['filer', 'family', 'unknown'], 'type': 'string', 'description': "filer = one 13F filer's own filing; family = consolidated across a manager family's filers"}, 'quarter_date': {'type': ['string', 'null'], 'description': "The snapshot's quarter; null for a history (each row carries its own quarter_date)"}, 'resolved_cik': {'type': ['string', 'null'], 'description': "The CIK ko.io answered for (the family's canonical CIK at family grain)"}, 'requested_cik': {'type': ['string', 'null'], 'description': 'The CIK/slug the request was made for'}, 'ticker_filter': {'$ref': '#/properties/family/anyOf/0/properties/slug'}, 'position_basis': {'type': ['string', 'null'], 'description': 'What shares_held/holding_value count, when ko.io stated it (e.g. 13f_reported_all_legs)'}, 'security_grain': {'enum': ['security', 'issuer', 'mixed'], 'type': 'string', 'description': 'security = one row per security/share class; issuer = share classes of one issuer merged; mixed = portfolio with some merged rows'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ticker'], 'properties': {'ticker': {'type': 'string', 'maxLength': 200, 'description': 'Stock ticker symbol'}, 'quarters': {'type': 'integer', 'maximum': 40, 'minimum': 1, 'description': 'Number of quarters to return. Omit for the plan default (Pro: 8 = 2 years; Free/keyless: the latest quarter only). An explicit value above what your plan allows returns a plan-limit error.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ticker', 'quarters_requested', 'quarters_returned', 'latest', 'trend', 'plan_note', 'plan_limit'], 'properties': {'trend': {'type': 'array', 'items': {'type': 'object', 'required': ['quarter', 'institutions_increased', 'institutions_decreased', 'institutions_new', 'institutions_exited', 'net_shares', 'net_value'], 'properties': {'changes': {'$ref': '#/properties/latest/anyOf/0/properties/changes'}, 'quarter': {'$ref': '#/properties/latest/anyOf/0/properties/quarter'}, 'net_value': {'$ref': '#/properties/latest/anyOf/0/properties/net_value'}, 'net_shares': {'$ref': '#/properties/latest/anyOf/0/properties/net_shares'}, 'null_reason': {'$ref': '#/properties/latest/anyOf/0/properties/null_reason'}, 'comparability': {'$ref': '#/properties/latest/anyOf/0/properties/comparability'}, 'institutions_new': {'$ref': '#/properties/latest/anyOf/0/properties/institutions_increased'}, 'institutions_exited': {'$ref': '#/properties/latest/anyOf/0/properties/institutions_increased'}, 'institutions_decreased': {'$ref': '#/properties/latest/anyOf/0/properties/institutions_increased'}, 'institutions_increased': {'$ref': '#/properties/latest/anyOf/0/properties/institutions_increased'}}, 'additionalProperties': False}}, 'latest': {'anyOf': [{'type': 'object', 'required': ['quarter', 'institutions_increased', 'institutions_decreased', 'institutions_new', 'institutions_exited', 'net_shares', 'net_value', 'institutions_total', 'shares_added', 'shares_removed', 'value_added', 'value_removed'], 'properties': {'changes': {'anyOf': [{'type': 'object', 'required': ['basis', 'new', 'added', 'trimmed', 'exited', 'unchanged', 'no_baseline', 'holders', 'shares_added', 'shares_removed', 'net_shares', 'value_added', 'value_removed', 'net_value'], 'properties': {'new': {'$ref': '#/properties/latest/anyOf/0/properties/institutions_increased'}, 'added': {'$ref': '#/properties/latest/anyOf/0/properties/institutions_increased'}, 'basis': {'type': ['string', 'null'], 'description': '"equity_filer_baseline"'}, 'exited': {'$ref': '#/properties/latest/anyOf/0/properties/institutions_increased'}, 'holders': {'$ref': '#/properties/latest/anyOf/0/properties/institutions_increased'}, 'trimmed': {'$ref': '#/properties/latest/anyOf/0/properties/institutions_increased'}, 'net_value': {'$ref': '#/properties/latest/anyOf/0/properties/changes/anyOf/0/properties/split_factor'}, 'unchanged': {'$ref': '#/properties/latest/anyOf/0/properties/institutions_increased'}, 'net_shares': {'$ref': '#/properties/latest/anyOf/0/properties/changes/anyOf/0/properties/split_factor'}, 'no_baseline': {'anyOf': [{'$ref': '#/properties/quarters_requested/anyOf/0'}, {'type': 'null'}], 'description': 'Filers with no usable prior-quarter baseline: not classified as new/added/...'}, 'null_reason': {'$ref': '#/properties/latest/anyOf/0/properties/null_reason'}, 'value_added': {'$ref': '#/properties/latest/anyOf/0/properties/changes/anyOf/0/properties/split_factor'}, 'shares_added': {'$ref': '#/properties/latest/anyOf/0/properties/changes/anyOf/0/properties/split_factor'}, 'split_factor': {'type': ['number', 'null'], 'description': "split_adjusted only: last quarter's shares were multiplied by this factor before classifying (e.g. 10 = 10-for-1); null otherwise"}, 'comparability': {'$ref': '#/properties/latest/anyOf/0/properties/comparability'}, 'value_removed': {'$ref': '#/properties/latest/anyOf/0/properties/changes/anyOf/0/properties/split_factor'}, 'shares_removed': {'$ref': '#/properties/latest/anyOf/0/properties/changes/anyOf/0/properties/split_factor'}, 'price_corrected': {'type': ['boolean', 'null'], 'description': "true when values use the holders' median implied price instead of a quarter-end close that was off by > 50%"}, 'comparability_reason': {'$ref': '#/properties/latest/anyOf/0/properties/quarter', 'description': "ko.io's prose for the comparability state; null when comparable"}, 'flow_excluded_filers': {'$ref': '#/properties/latest/anyOf/0/properties/institutions_increased', 'description': 'Classified filers left out of share/value flows (implausible row); still counted as holders'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'equity_filer_baseline: common stock only (option legs excluded); one holder per filer CIK; only filers with a usable prior-quarter baseline are classified. Same names/values as ko.io REST `changes`. A null share/value flow means UNKNOWN (withheld), never zero. null = ko.io could not compute `changes` for this quarter; absent when ko.io did not send it.'}, 'quarter': {'type': ['string', 'null']}, 'net_value': {'anyOf': [{'$ref': '#/properties/latest/anyOf/0/properties/net_shares/anyOf/0'}, {'type': 'null'}], 'description': 'null = unknown (withheld, see null_reason), never zero'}, 'net_shares': {'anyOf': [{'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?([eE][-+]?\\d+)?$'}, {'type': 'null'}], 'description': 'null = unknown (withheld, see null_reason), never zero'}, 'null_reason': {'$ref': '#/properties/latest/anyOf/0/properties/quarter', 'description': 'Why the share/value flows are null (e.g. share_ratio_not_a_split_factor, price_conflict_insufficient_samples, value_above_sanity_cap, not_recomputable); null when they are not'}, 'value_added': {'$ref': '#/properties/latest/anyOf/0/properties/shares_added'}, 'shares_added': {'anyOf': [{'$ref': '#/properties/latest/anyOf/0/properties/net_shares/anyOf/0'}, {'type': 'null'}], 'description': 'Exact decimal string as served by ko.io (not rounded); null = unknown'}, 'comparability': {'$ref': '#/properties/latest/anyOf/0/properties/quarter', 'description': "comparable | split_adjusted (last quarter's shares x split_factor before classifying) | not_comparable (share and value flows withheld -> null) | first_reported (no 13F filer held it last quarter: no prior-quarter baseline, every holder is new) | unknown (flows could not be recomputed -> null)"}, 'value_removed': {'$ref': '#/properties/latest/anyOf/0/properties/shares_added'}, 'shares_removed': {'$ref': '#/properties/latest/anyOf/0/properties/shares_added'}, 'institutions_new': {'$ref': '#/properties/latest/anyOf/0/properties/institutions_increased'}, 'institutions_total': {'$ref': '#/properties/latest/anyOf/0/properties/institutions_increased'}, 'institutions_exited': {'$ref': '#/properties/latest/anyOf/0/properties/institutions_increased'}, 'institutions_decreased': {'$ref': '#/properties/latest/anyOf/0/properties/institutions_increased'}, 'institutions_increased': {'anyOf': [{'$ref': '#/properties/quarters_requested/anyOf/0'}, {'type': 'null'}]}}, 'additionalProperties': False}, {'type': 'null'}]}, 'ticker': {'type': 'string'}, 'plan_note': {'type': ['string', 'null'], 'description': 'Set when the plan limited how many quarters were returned'}, 'plan_limit': {'anyOf': [{'type': 'object', 'required': ['policy_version', 'window_start', 'window_end', 'effective_period', 'date_basis', 'row_cap', 'truncated', 'continuation'], 'properties': {'row_cap': {'$ref': '#/properties/latest/anyOf/0/properties/institutions_increased'}, 'truncated': {'type': ['boolean', 'null']}, 'date_basis': {'$ref': '#/properties/latest/anyOf/0/properties/quarter'}, 'window_end': {'$ref': '#/properties/latest/anyOf/0/properties/quarter'}, 'continuation': {'$ref': '#/properties/latest/anyOf/0/properties/quarter'}, 'window_start': {'$ref': '#/properties/latest/anyOf/0/properties/quarter'}, 'policy_version': {'$ref': '#/properties/latest/anyOf/0/properties/quarter'}, 'effective_period': {'$ref': '#/properties/latest/anyOf/0/properties/quarter'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'The Free/keyless plan limits ko.io applied to this answer (null for paid callers)'}, 'quarters_returned': {'type': 'integer'}, 'quarters_requested': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'description': 'null = the plan default was used'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ticker'], 'properties': {'limit': {'type': 'integer', 'default': 8, 'maximum': 20, 'minimum': 1, 'description': 'Number of periods to return (default 8)'}, 'ticker': {'type': 'string', 'maxLength': 200, 'description': "Stock ticker symbol (e.g. 'AAPL', 'MSFT')"}, 'period_type': {'enum': ['quarterly', 'annual'], 'type': 'string', 'default': 'quarterly', 'description': 'Period type — quarterly (10-Q) or annual (10-K)'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ticker', 'period_type', 'periods', 'plan_note', 'plan_limit'], 'properties': {'ticker': {'type': 'string'}, 'periods': {'type': 'array', 'items': {'type': 'object', 'required': ['period_end', 'revenue', 'net_income', 'eps_basic', 'eps_diluted', 'gross_profit', 'operating_income', 'operating_cashflow', 'long_term_debt', 'short_term_debt', 'stockholders_equity'], 'properties': {'revenue': {'anyOf': [{'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?([eE][-+]?\\d+)?$'}, {'type': 'null'}], 'description': 'Exact decimal string as served by ko.io (not rounded); null = unknown'}, 'eps_basic': {'$ref': '#/properties/periods/items/properties/revenue'}, 'net_income': {'$ref': '#/properties/periods/items/properties/revenue'}, 'period_end': {'type': ['string', 'null']}, 'eps_diluted': {'$ref': '#/properties/periods/items/properties/revenue'}, 'gross_profit': {'$ref': '#/properties/periods/items/properties/revenue'}, 'long_term_debt': {'$ref': '#/properties/periods/items/properties/revenue'}, 'short_term_debt': {'$ref': '#/properties/periods/items/properties/revenue'}, 'operating_income': {'$ref': '#/properties/periods/items/properties/revenue'}, 'operating_cashflow': {'$ref': '#/properties/periods/items/properties/revenue'}, 'stockholders_equity': {'$ref': '#/properties/periods/items/properties/revenue'}}, 'additionalProperties': False}}, 'plan_note': {'type': ['string', 'null'], 'description': "Set when the caller's plan limited which periods were returned"}, 'plan_limit': {'anyOf': [{'type': 'object', 'required': ['policy_version', 'window_start', 'window_end', 'effective_period', 'date_basis', 'row_cap', 'truncated', 'continuation'], 'properties': {'row_cap': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}, 'truncated': {'type': ['boolean', 'null']}, 'date_basis': {'$ref': '#/properties/periods/items/properties/period_end'}, 'window_end': {'$ref': '#/properties/periods/items/properties/period_end'}, 'continuation': {'$ref': '#/properties/periods/items/properties/period_end'}, 'window_start': {'$ref': '#/properties/periods/items/properties/period_end'}, 'policy_version': {'$ref': '#/properties/periods/items/properties/period_end'}, 'effective_period': {'$ref': '#/properties/periods/items/properties/period_end'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'The Free/keyless plan limits ko.io applied to this answer (null for paid callers)'}, 'period_type': {'enum': ['quarterly', 'annual'], 'type': 'string'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ticker'], 'properties': {'page': {'type': 'integer', 'default': 1, 'minimum': 1, 'description': 'Page number'}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1, 'description': 'Results per page'}, 'ticker': {'type': 'string', 'maxLength': 200, 'description': "Stock ticker symbol (e.g. 'NVDA')"}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ticker', 'quarter_date', 'position_basis', 'position_basis_note', 'entity_grain', 'requested_cik', 'family', 'total_institutions', 'rows', 'paging', 'plan_limit'], 'properties': {'rows': {'type': 'array', 'items': {'type': 'object', 'required': ['rank', 'cik', 'name', 'shares_held', 'holding_value', 'portfolio_weight_pct', 'share_change', 'action', 'equity_shares', 'call_shares', 'put_shares', 'has_option_legs', 'family', 'reported_by_members'], 'properties': {'cik': {'$ref': '#/properties/quarter_date'}, 'name': {'$ref': '#/properties/quarter_date'}, 'rank': {'type': 'integer'}, 'flags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'e.g. NO_BASELINE (no prior-quarter 13F in ko.io), DEALER (market maker / dealer desk)'}, 'action': {'$ref': '#/properties/quarter_date'}, 'family': {'anyOf': [{'type': 'object', 'required': ['slug', 'name', 'canonical_cik'], 'properties': {'name': {'$ref': '#/properties/quarter_date'}, 'slug': {'$ref': '#/properties/quarter_date'}, 'canonical_cik': {'$ref': '#/properties/quarter_date'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'The manager family this holder belongs to, when ko.io attributes it'}, 'put_shares': {'$ref': '#/properties/rows/items/properties/shares_held'}, 'call_shares': {'$ref': '#/properties/rows/items/properties/shares_held'}, 'shares_held': {'anyOf': [{'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?([eE][-+]?\\d+)?$'}, {'type': 'null'}], 'description': 'Exact decimal string as served by ko.io (not rounded); null = unknown'}, 'share_change': {'$ref': '#/properties/rows/items/properties/shares_held'}, 'equity_action': {'$ref': '#/properties/quarter_date', 'description': 'NEW | ADDED | TRIMMED | EXITED | UNCHANGED on the equity_filer_baseline basis; null = not classified'}, 'equity_shares': {'$ref': '#/properties/rows/items/properties/shares_held'}, 'holding_value': {'$ref': '#/properties/rows/items/properties/shares_held'}, 'has_option_legs': {'type': ['boolean', 'null']}, 'equity_share_change': {'$ref': '#/properties/rows/items/properties/shares_held', 'description': 'Common-share change on the equity_filer_baseline basis (split-restated); null = no usable prior-quarter baseline (unknown, never zero). Absent when ko.io did not send it'}, 'reported_by_members': {'$ref': '#/properties/total_institutions'}, 'portfolio_weight_pct': {'$ref': '#/properties/rows/items/properties/shares_held'}}, 'additionalProperties': False}}, 'family': {'anyOf': [{'type': 'object', 'required': ['slug', 'name', 'canonical_cik'], 'properties': {'name': {'$ref': '#/properties/quarter_date'}, 'slug': {'$ref': '#/properties/quarter_date'}, 'canonical_cik': {'$ref': '#/properties/quarter_date'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'paging': {'type': 'object', 'required': ['page', 'per_page', 'returned', 'total_count', 'has_more', 'next_page', 'continuation', 'plan_row_cap', 'truncated_by_plan'], 'properties': {'page': {'type': 'integer'}, 'has_more': {'type': ['boolean', 'null'], 'description': 'null = a full page came back and more MAY exist'}, 'per_page': {'type': 'integer'}, 'returned': {'type': 'integer'}, 'next_page': {'anyOf': [{'$ref': '#/properties/total_institutions/anyOf/0'}, {'type': 'null'}], 'description': 'Next page THIS caller can open; null when there is none (or sign-in is required)'}, 'total_count': {'anyOf': [{'$ref': '#/properties/total_institutions/anyOf/0'}, {'type': 'null'}], 'description': 'Total rows matching the request, when ko.io reported it'}, 'continuation': {'type': ['string', 'null'], 'description': 'SIGNIN_REQUIRED = page>1 needs a (free) ko.io API key'}, 'plan_row_cap': {'anyOf': [{'$ref': '#/properties/total_institutions/anyOf/0'}, {'type': 'null'}], 'description': "Row cap the caller's plan applied to this page, if any"}, 'truncated_by_plan': {'type': 'boolean', 'description': "True when the plan's row cap withheld rows from this page"}}, 'description': 'Paging state reconciled from ko.io meta.total_count and meta.softwall', 'additionalProperties': False}, 'ticker': {'type': 'string'}, 'plan_limit': {'anyOf': [{'type': 'object', 'required': ['policy_version', 'window_start', 'window_end', 'effective_period', 'date_basis', 'row_cap', 'truncated', 'continuation'], 'properties': {'row_cap': {'$ref': '#/properties/total_institutions'}, 'truncated': {'type': ['boolean', 'null']}, 'date_basis': {'$ref': '#/properties/quarter_date'}, 'window_end': {'$ref': '#/properties/quarter_date'}, 'continuation': {'$ref': '#/properties/quarter_date'}, 'window_start': {'$ref': '#/properties/quarter_date'}, 'policy_version': {'$ref': '#/properties/quarter_date'}, 'effective_period': {'$ref': '#/properties/quarter_date'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'The Free/keyless plan limits ko.io applied to this answer (null for paid callers)'}, 'entity_grain': {'anyOf': [{'enum': ['filer', 'family'], 'type': 'string'}, {'type': 'null'}], 'description': 'filer = each row is one 13F filer CIK (not consolidated into manager families); null = ko.io did not state it'}, 'quarter_date': {'type': ['string', 'null']}, 'requested_cik': {'$ref': '#/properties/quarter_date'}, 'position_basis': {'$ref': '#/properties/quarter_date'}, 'total_institutions': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}, 'position_basis_note': {'$ref': '#/properties/quarter_date'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ticker'], 'properties': {'limit': {'type': 'integer', 'default': 500, 'maximum': 3000, 'minimum': 1, 'description': 'Max rows of the daily series to return when series=true.'}, 'period': {'enum': ['1y', '3y', '5y', '10y'], 'type': 'string', 'default': '1y', 'description': 'Look-back window'}, 'series': {'type': 'boolean', 'default': False, 'description': 'If true, return the full daily OHLC series (up to `limit` rows) instead of just a summary.'}, 'ticker': {'type': 'string', 'maxLength': 200, 'description': 'Stock ticker symbol'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ticker', 'period', 'days_requested', 'rows_returned', 'latest', 'period_start', 'total_return_pct', 'period_high_close', 'period_low_close', 'rows', 'plan_limit'], 'properties': {'rows': {'type': 'array', 'items': {'type': 'object', 'required': ['date', 'open', 'high', 'low', 'close', 'volume'], 'properties': {'low': {'$ref': '#/properties/latest/anyOf/0/properties/close'}, 'date': {'$ref': '#/properties/latest/anyOf/0/properties/date'}, 'high': {'$ref': '#/properties/latest/anyOf/0/properties/close'}, 'open': {'$ref': '#/properties/latest/anyOf/0/properties/close'}, 'close': {'$ref': '#/properties/latest/anyOf/0/properties/close'}, 'volume': {'$ref': '#/properties/latest/anyOf/0/properties/close'}}, 'additionalProperties': False}, 'description': 'The rows rendered: the full series (series=true, up to limit) or the latest 10'}, 'latest': {'anyOf': [{'type': 'object', 'required': ['date', 'close'], 'properties': {'date': {'type': ['string', 'null']}, 'close': {'anyOf': [{'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?([eE][-+]?\\d+)?$'}, {'type': 'null'}], 'description': 'Exact decimal string as served by ko.io (not rounded); null = unknown'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'period': {'type': 'string'}, 'ticker': {'type': 'string'}, 'plan_limit': {'anyOf': [{'type': 'object', 'required': ['policy_version', 'window_start', 'window_end', 'effective_period', 'date_basis', 'row_cap', 'truncated', 'continuation'], 'properties': {'row_cap': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}, 'truncated': {'type': ['boolean', 'null']}, 'date_basis': {'$ref': '#/properties/latest/anyOf/0/properties/date'}, 'window_end': {'$ref': '#/properties/latest/anyOf/0/properties/date'}, 'continuation': {'$ref': '#/properties/latest/anyOf/0/properties/date'}, 'window_start': {'$ref': '#/properties/latest/anyOf/0/properties/date'}, 'policy_version': {'$ref': '#/properties/latest/anyOf/0/properties/date'}, 'effective_period': {'$ref': '#/properties/latest/anyOf/0/properties/date'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'The Free/keyless plan limits ko.io applied to this answer (null for paid callers)'}, 'period_start': {'anyOf': [{'type': 'object', 'required': ['date', 'close'], 'properties': {'date': {'$ref': '#/properties/latest/anyOf/0/properties/date'}, 'close': {'$ref': '#/properties/latest/anyOf/0/properties/close'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'rows_returned': {'type': 'integer'}, 'days_requested': {'type': 'integer'}, 'period_low_close': {'$ref': '#/properties/latest/anyOf/0/properties/close'}, 'total_return_pct': {'anyOf': [{'$ref': '#/properties/latest/anyOf/0/properties/close/anyOf/0'}, {'type': 'null'}], 'description': '(latest close - period-start close) / period-start close x 100, from the returned rows'}, 'period_high_close': {'$ref': '#/properties/latest/anyOf/0/properties/close'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ticker'], 'properties': {'ticker': {'type': 'string', 'maxLength': 200, 'description': "Stock ticker symbol (e.g. 'AAPL', 'NVDA', 'MSFT')"}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['ticker', 'stock', 'position_basis', 'top_holders'], 'properties': {'stock': {'type': 'object', 'required': ['sector', 'industry', 'market_cap', 'current_price', 'price_date', 'previous_close', 'fifty_two_week_high', 'fifty_two_week_low', 'pe_ratio', 'eps', 'beta', 'dividend_yield_pct', 'profit_margins', 'avg_volume'], 'properties': {'eps': {'$ref': '#/properties/stock/properties/market_cap'}, 'beta': {'$ref': '#/properties/stock/properties/market_cap'}, 'sector': {'type': ['string', 'null']}, 'industry': {'$ref': '#/properties/stock/properties/sector'}, 'pe_ratio': {'$ref': '#/properties/stock/properties/market_cap'}, 'avg_volume': {'$ref': '#/properties/stock/properties/market_cap'}, 'market_cap': {'anyOf': [{'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?([eE][-+]?\\d+)?$'}, {'type': 'null'}], 'description': 'Exact decimal string as served by ko.io (not rounded); null = unknown'}, 'price_date': {'$ref': '#/properties/stock/properties/sector'}, 'current_price': {'$ref': '#/properties/stock/properties/market_cap'}, 'previous_close': {'$ref': '#/properties/stock/properties/market_cap'}, 'profit_margins': {'$ref': '#/properties/stock/properties/market_cap'}, 'dividend_yield_pct': {'$ref': '#/properties/stock/properties/market_cap'}, 'fifty_two_week_low': {'$ref': '#/properties/stock/properties/market_cap'}, 'fifty_two_week_high': {'$ref': '#/properties/stock/properties/market_cap'}}, 'additionalProperties': False}, 'ticker': {'type': 'string'}, 'top_holders': {'type': 'array', 'items': {'type': 'object', 'required': ['cik', 'name', 'shares_held', 'holding_value', 'portfolio_weight_pct', 'equity_shares', 'call_shares', 'put_shares', 'has_option_legs'], 'properties': {'cik': {'$ref': '#/properties/stock/properties/sector'}, 'name': {'$ref': '#/properties/stock/properties/sector'}, 'put_shares': {'$ref': '#/properties/stock/properties/market_cap'}, 'call_shares': {'$ref': '#/properties/stock/properties/market_cap'}, 'shares_held': {'$ref': '#/properties/stock/properties/market_cap'}, 'equity_shares': {'$ref': '#/properties/stock/properties/market_cap'}, 'holding_value': {'$ref': '#/properties/stock/properties/market_cap'}, 'has_option_legs': {'type': ['boolean', 'null']}, 'portfolio_weight_pct': {'$ref': '#/properties/stock/properties/market_cap'}}, 'additionalProperties': False}}, 'position_basis': {'$ref': '#/properties/stock/properties/sector'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'days': {'type': 'integer', 'default': 30, 'maximum': 3650, 'minimum': 1, 'description': 'Days of daily history to return, 1-3650 (default 30 = last month)'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['unit', 'rows'], 'properties': {'rows': {'type': 'array', 'items': {'type': 'object', 'required': ['date', 'm1', 'm3', 'm6', 'y1', 'y2', 'y5', 'y10', 'y30'], 'properties': {'m1': {'anyOf': [{'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?([eE][-+]?\\d+)?$'}, {'type': 'null'}], 'description': 'Exact decimal string as served by ko.io (not rounded); null = unknown'}, 'm3': {'$ref': '#/properties/rows/items/properties/m1'}, 'm6': {'$ref': '#/properties/rows/items/properties/m1'}, 'y1': {'$ref': '#/properties/rows/items/properties/m1'}, 'y2': {'$ref': '#/properties/rows/items/properties/m1'}, 'y5': {'$ref': '#/properties/rows/items/properties/m1'}, 'y10': {'$ref': '#/properties/rows/items/properties/m1'}, 'y30': {'$ref': '#/properties/rows/items/properties/m1'}, 'date': {'type': ['string', 'null']}}, 'additionalProperties': False}}, 'unit': {'type': 'string', 'const': 'percent'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'page': {'type': 'integer', 'default': 1, 'minimum': 1}, 'role': {'enum': ['ceo', 'executive', 'all'], 'type': 'string', 'default': 'all', 'description': 'Filter by role (case-insensitive): CEO, executive/officer, or all'}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1}, 'search': {'type': 'string', 'maxLength': 200, 'description': 'Search by name or ticker'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['search', 'role', 'grain', 'rows', 'paging', 'plan_limit'], 'properties': {'role': {'type': 'string'}, 'rows': {'type': 'array', 'items': {'type': 'object', 'required': ['ticker', 'company_name', 'person_cik', 'person_name', 'officer_title', 'trade_date', 'form4_lines', 'ps_value_bought', 'ps_value_sold', 'all_value_acquired', 'all_value_disposed', 'shares_owned_after'], 'properties': {'ticker': {'$ref': '#/properties/search'}, 'person_cik': {'$ref': '#/properties/search'}, 'trade_date': {'$ref': '#/properties/search'}, 'form4_lines': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}, 'person_name': {'$ref': '#/properties/search'}, 'company_name': {'$ref': '#/properties/search'}, 'officer_title': {'$ref': '#/properties/search'}, 'ps_value_sold': {'anyOf': [{'$ref': '#/properties/rows/items/properties/ps_value_bought/anyOf/0'}, {'type': 'null'}], 'description': 'Code S lines (open-market or private sale), priced lines only'}, 'ps_value_bought': {'anyOf': [{'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?([eE][-+]?\\d+)?$'}, {'type': 'null'}], 'description': 'Code P lines (open-market or private purchase), priced lines only'}, 'all_value_acquired': {'anyOf': [{'$ref': '#/properties/rows/items/properties/ps_value_bought/anyOf/0'}, {'type': 'null'}], 'description': 'Exact decimal string as served by ko.io (not rounded); null = unknown'}, 'all_value_disposed': {'$ref': '#/properties/rows/items/properties/all_value_acquired'}, 'shares_owned_after': {'$ref': '#/properties/rows/items/properties/all_value_acquired'}}, 'additionalProperties': False}}, 'grain': {'type': 'string', 'const': 'insider_trade_date'}, 'paging': {'type': 'object', 'required': ['page', 'per_page', 'returned', 'total_count', 'has_more', 'next_page', 'continuation', 'plan_row_cap', 'truncated_by_plan'], 'properties': {'page': {'type': 'integer'}, 'has_more': {'type': ['boolean', 'null'], 'description': 'null = a full page came back and more MAY exist'}, 'per_page': {'type': 'integer'}, 'returned': {'type': 'integer'}, 'next_page': {'anyOf': [{'$ref': '#/properties/rows/items/properties/form4_lines/anyOf/0'}, {'type': 'null'}], 'description': 'Next page THIS caller can open; null when there is none (or sign-in is required)'}, 'total_count': {'anyOf': [{'$ref': '#/properties/rows/items/properties/form4_lines/anyOf/0'}, {'type': 'null'}], 'description': 'Total rows matching the request, when ko.io reported it'}, 'continuation': {'type': ['string', 'null'], 'description': 'SIGNIN_REQUIRED = page>1 needs a (free) ko.io API key'}, 'plan_row_cap': {'anyOf': [{'$ref': '#/properties/rows/items/properties/form4_lines/anyOf/0'}, {'type': 'null'}], 'description': "Row cap the caller's plan applied to this page, if any"}, 'truncated_by_plan': {'type': 'boolean', 'description': "True when the plan's row cap withheld rows from this page"}}, 'description': 'Paging state reconciled from ko.io meta.total_count and meta.softwall', 'additionalProperties': False}, 'search': {'type': ['string', 'null']}, 'plan_limit': {'anyOf': [{'type': 'object', 'required': ['policy_version', 'window_start', 'window_end', 'effective_period', 'date_basis', 'row_cap', 'truncated', 'continuation'], 'properties': {'row_cap': {'$ref': '#/properties/rows/items/properties/form4_lines'}, 'truncated': {'type': ['boolean', 'null']}, 'date_basis': {'$ref': '#/properties/search'}, 'window_end': {'$ref': '#/properties/search'}, 'continuation': {'$ref': '#/properties/search'}, 'window_start': {'$ref': '#/properties/search'}, 'policy_version': {'$ref': '#/properties/search'}, 'effective_period': {'$ref': '#/properties/search'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'The Free/keyless plan limits ko.io applied to this answer (null for paid callers)'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'page': {'type': 'integer', 'default': 1, 'minimum': 1, 'description': 'Page number'}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1, 'description': 'Results per page'}, 'search': {'type': 'string', 'maxLength': 200, 'description': "Search by institution name, CIK, or manager name (e.g. 'Klarman' -> Baupost)"}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['search', 'rows', 'paging', 'plan_limit'], 'properties': {'rows': {'type': 'array', 'items': {'type': 'object', 'required': ['cik', 'name', 'slug', 'rank', 'category', 'portfolio_value', 'stock_count'], 'properties': {'cik': {'$ref': '#/properties/search'}, 'name': {'$ref': '#/properties/search'}, 'rank': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}, 'slug': {'$ref': '#/properties/search'}, 'category': {'$ref': '#/properties/search'}, 'stock_count': {'$ref': '#/properties/rows/items/properties/rank'}, 'portfolio_value': {'anyOf': [{'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?([eE][-+]?\\d+)?$'}, {'type': 'null'}], 'description': 'Exact decimal string as served by ko.io (not rounded); null = unknown'}}, 'additionalProperties': False}}, 'paging': {'type': 'object', 'required': ['page', 'per_page', 'returned', 'total_count', 'has_more', 'next_page', 'continuation', 'plan_row_cap', 'truncated_by_plan'], 'properties': {'page': {'type': 'integer'}, 'has_more': {'type': ['boolean', 'null'], 'description': 'null = a full page came back and more MAY exist'}, 'per_page': {'type': 'integer'}, 'returned': {'type': 'integer'}, 'next_page': {'anyOf': [{'$ref': '#/properties/rows/items/properties/rank/anyOf/0'}, {'type': 'null'}], 'description': 'Next page THIS caller can open; null when there is none (or sign-in is required)'}, 'total_count': {'anyOf': [{'$ref': '#/properties/rows/items/properties/rank/anyOf/0'}, {'type': 'null'}], 'description': 'Total rows matching the request, when ko.io reported it'}, 'continuation': {'type': ['string', 'null'], 'description': 'SIGNIN_REQUIRED = page>1 needs a (free) ko.io API key'}, 'plan_row_cap': {'anyOf': [{'$ref': '#/properties/rows/items/properties/rank/anyOf/0'}, {'type': 'null'}], 'description': "Row cap the caller's plan applied to this page, if any"}, 'truncated_by_plan': {'type': 'boolean', 'description': "True when the plan's row cap withheld rows from this page"}}, 'description': 'Paging state reconciled from ko.io meta.total_count and meta.softwall', 'additionalProperties': False}, 'search': {'type': ['string', 'null']}, 'plan_limit': {'anyOf': [{'type': 'object', 'required': ['policy_version', 'window_start', 'window_end', 'effective_period', 'date_basis', 'row_cap', 'truncated', 'continuation'], 'properties': {'row_cap': {'$ref': '#/properties/rows/items/properties/rank'}, 'truncated': {'type': ['boolean', 'null']}, 'date_basis': {'$ref': '#/properties/search'}, 'window_end': {'$ref': '#/properties/search'}, 'continuation': {'$ref': '#/properties/search'}, 'window_start': {'$ref': '#/properties/search'}, 'policy_version': {'$ref': '#/properties/search'}, 'effective_period': {'$ref': '#/properties/search'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'The Free/keyless plan limits ko.io applied to this answer (null for paid callers)'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'default': 5, 'maximum': 10, 'minimum': 1, 'description': 'Max results per category'}, 'query': {'type': 'string', 'maxLength': 200, 'minLength': 2, 'description': 'Search query — company name, ticker, person name, or institution name (min 2 characters)'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query', 'institutions', 'stocks', 'insiders', 'congress'], 'properties': {'query': {'type': 'string'}, 'stocks': {'type': 'array', 'items': {'type': 'object', 'required': ['ticker', 'name', 'sector', 'industry', 'market_cap'], 'properties': {'name': {'$ref': '#/properties/institutions/items/properties/cik'}, 'sector': {'$ref': '#/properties/institutions/items/properties/cik'}, 'ticker': {'$ref': '#/properties/institutions/items/properties/cik'}, 'industry': {'$ref': '#/properties/institutions/items/properties/cik'}, 'market_cap': {'$ref': '#/properties/institutions/items/properties/aum'}}, 'additionalProperties': False}}, 'congress': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'type'], 'properties': {'name': {'$ref': '#/properties/institutions/items/properties/cik'}, 'type': {'$ref': '#/properties/institutions/items/properties/cik'}}, 'additionalProperties': False}}, 'insiders': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'ticker', 'type'], 'properties': {'name': {'$ref': '#/properties/institutions/items/properties/cik'}, 'type': {'$ref': '#/properties/institutions/items/properties/cik'}, 'ticker': {'$ref': '#/properties/institutions/items/properties/cik'}}, 'additionalProperties': False}}, 'institutions': {'type': 'array', 'items': {'type': 'object', 'required': ['cik', 'name', 'slug', 'category', 'aum', 'rank', 'matched_person'], 'properties': {'aum': {'anyOf': [{'type': 'string', 'pattern': '^-?\\d+(\\.\\d+)?([eE][-+]?\\d+)?$'}, {'type': 'null'}], 'description': 'Exact decimal string as served by ko.io (not rounded); null = unknown'}, 'cik': {'type': ['string', 'null']}, 'name': {'$ref': '#/properties/institutions/items/properties/cik'}, 'rank': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}, 'slug': {'$ref': '#/properties/institutions/items/properties/cik'}, 'category': {'$ref': '#/properties/institutions/items/properties/cik'}, 'matched_person': {'anyOf': [{'type': 'object', 'required': ['name', 'role'], 'properties': {'name': {'$ref': '#/properties/institutions/items/properties/cik'}, 'role': {'$ref': '#/properties/institutions/items/properties/cik'}}, 'additionalProperties': False}, {'type': 'null'}]}}, 'additionalProperties': False}}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['cik', 'accession_no'], 'properties': {'cik': {'type': 'string', 'maxLength': 200, 'description': 'Company CIK number'}, 'file': {'type': 'string', 'maxLength': 200, 'description': 'File name within the filing (from sec_get_filing_index). Omit for the primary document.'}, 'accession_no': {'type': 'string', 'maxLength': 200, 'description': "Accession number, e.g. '0000320193-23-000106'"}, 'include_excerpt': {'type': 'boolean', 'default': True, 'description': 'Include a text excerpt (first ~6000 chars) in the response'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['cik', 'accession_no', 'file', 'link', 'excerpt'], 'properties': {'cik': {'type': 'string'}, 'file': {'type': ['string', 'null']}, 'link': {'type': 'object', 'required': ['url', 'signed', 'expires_at'], 'properties': {'url': {'type': 'string'}, 'signed': {'type': 'boolean', 'description': 'true = ko.io-signed, expiring link a browser can open; false = needs a paid API key'}, 'expires_at': {'$ref': '#/properties/file'}}, 'additionalProperties': False}, 'excerpt': {'type': 'object', 'required': ['status', 'text', 'chars_total', 'truncated'], 'properties': {'text': {'$ref': '#/properties/file'}, 'status': {'enum': ['ok', 'unavailable', 'not_requested'], 'type': 'string'}, 'truncated': {'type': ['boolean', 'null']}, 'chars_total': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}}, 'additionalProperties': False}, 'accession_no': {'type': 'string'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['cik', 'accession_no'], 'properties': {'cik': {'type': 'string', 'maxLength': 200, 'description': 'Company CIK number'}, 'accession_no': {'type': 'string', 'maxLength': 200, 'description': "Accession number, e.g. '0000320193-23-000106'"}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['cik', 'accession', 'files'], 'properties': {'cik': {'type': ['string', 'null']}, 'files': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'type', 'size_bytes', 'last_modified'], 'properties': {'name': {'$ref': '#/properties/cik'}, 'type': {'$ref': '#/properties/cik'}, 'size_bytes': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}, 'last_modified': {'$ref': '#/properties/cik'}}, 'additionalProperties': False}}, 'accession': {'$ref': '#/properties/cik'}}, 'additionalProperties': False}
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['cik'], 'properties': {'to': {'type': 'string', 'maxLength': 200, 'description': 'Latest filing date, ISO YYYY-MM-DD'}, 'cik': {'type': 'string', 'maxLength': 200, 'description': "Company CIK number (e.g. '320193' for Apple)"}, 'from': {'type': 'string', 'maxLength': 200, 'description': 'Earliest filing date, ISO YYYY-MM-DD'}, 'limit': {'type': 'integer', 'default': 50, 'maximum': 200, 'minimum': 1, 'description': 'Max filings to return'}, 'form_type': {'type': 'string', 'maxLength': 200, 'description': "Exact SEC form filter, e.g. '10-K', '13F-HR', '8-K'"}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['cik', 'filters', 'rows'], 'properties': {'cik': {'type': 'string'}, 'rows': {'type': 'array', 'items': {'type': 'object', 'required': ['filing_date', 'form', 'accession', 'primary_document', 'description'], 'properties': {'form': {'$ref': '#/properties/filters/properties/form_type'}, 'accession': {'$ref': '#/properties/filters/properties/form_type'}, 'description': {'$ref': '#/properties/filters/properties/form_type'}, 'filing_date': {'$ref': '#/properties/filters/properties/form_type'}, 'primary_document': {'$ref': '#/properties/filters/properties/form_type'}}, 'additionalProperties': False}}, 'filters': {'type': 'object', 'required': ['form_type', 'from', 'to'], 'properties': {'to': {'$ref': '#/properties/filters/properties/form_type'}, 'from': {'$ref': '#/properties/filters/properties/form_type'}, 'form_type': {'type': ['string', 'null']}}, 'additionalProperties': False}}, 'additionalProperties': False}
Modifications récentes des outils
Serveurs MCP similaires
Valuein — SEC EDGAR Fundamentals & Smart-Money Data
Provides point-in-time SEC EDGAR fundamentals, filings, ownership signals, financial analysis, valuation models, research reports…
equibles
Provides equity and market research tools covering SEC filings, company financials, portfolios, prices, options, macroeconomic da…
EventTrader Research (read-only)
Offers read-only research on funds, event markets, order books, arena markets, crypto pools, backtests, and related financial ana…
World Monitor
Delivers live geopolitical, conflict, country-risk, market, energy, climate, aviation, supply-chain, and macroeconomic intelligen…
Slacking.biz — SEC Financial Data + US Economics + Demographics + FX
Provides financial, economic, demographic, foreign-exchange, regulatory, and company research data from public sources.
TipRanks
Provides market research and investment data covering stocks, ETFs, commodities, crypto, forex, analyst ratings, news, earnings, …
welcome
Provides market data and educational investment research for stocks, ETFs, and crypto, including fundamentals, prices, macro indi…
Currencyformat
Formats localized numbers and currencies and also provides routed access to structured financial, market, government, and researc…