Stockfacts
Server Details
US stock market data for AI agents: SEC filings, financials, insider trades, 13F, options, macro.
- Status
- Healthy
- Uptime
- 9.9% over 44 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 14 tools
Most tools target distinct resources and actions, and descriptions carefully distinguish overlapping ownership tools (get_institution by filer, get_stock_13f_holders by stock, get_major_holders for 5%+ via 13D/13G, get_superinvestor_activity for quarterly moves). The cluster of 13F/ownership tools and insider tools (get_insider_trades vs get_insider_lists vs get_form144_notices) could still cause some hesitation, but boundaries are spelled out.
Strong, predictable get_<noun> pattern throughout (get_stock, get_insider_trades, get_politician_trades, get_ownership_filings, etc.). Minor deviations are list_superinvestors and the bare search, which are reasonable variations rather than inconsistencies.
14 tools is well within the sweet spot and each maps to a distinct resource or workflow (coverage, insiders, Form 144, 13F, 13D/13G, politicians, superinvestors, search). No redundant or filler tools evident from the surface.
The surface covers the ownership/filings domain broadly: insider trades, proposed sales, 13F holders, 13D/13G, politician trades, superinvestor activity, entity resolution via search, and a coverage tool. Minor gaps like Form 3/5 initial holdings or a direct single-filing lookup are the only notable omissions.
Available Tools
14 toolsget_data_coverageData coverage and freshnessARead-onlyIdempotentInspect
What data Livermore has and how fresh it is: the Form 4 filing-date range, the 13F quarters loaded (with the number of filers), the latest complete 13F quarter, the number of curated superinvestors, the Schedule 13D, 13G and Form 144 filing-date ranges, the filing-date range of politicians' trade reports (the congress field: reports by members of the U.S. Congress), the last successful data updates (ISO 8601 UTC), the update schedule and the usage limits of this server. Call it to check whether a date or quarter is covered.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| f13 | Yes | |
| form4 | Yes | |
| limits | Yes | |
| sources | Yes | |
| website | Yes | |
| congress | Yes | |
| docs_url | Yes | |
| ownership | Yes | |
| llms_txt_url | Yes | |
| superinvestors | Yes | |
| update_schedule | Yes | |
| last_successful_update | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld=false, so the safety profile is covered. The description goes further by disclosing what the response contains (last successful updates, update schedule, server usage limits), which is genuine behavioral context an agent needs, though it says nothing about response size or rate limits on the call itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense enumeration sentence followed by a short usage imperative — front-loaded and functional, though the field list is long and could be trimmed since an output schema exists. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless read-only inventory tool with an output schema, the description fully covers scope (which datasets), freshness semantics (ISO 8601 UTC update timestamps), and the decision it supports. Nothing needed to invoke it correctly is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so there is no parameter semantics to miss; baseline 4 applies. The description correctly signals this is a no-argument inventory call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb+resource: returns the server's data coverage and freshness, enumerated by dataset (Form 4, 13F quarters, 13D/13G/144, congress trades). This is clearly distinct from the sibling fetch tools like get_insider_trades or get_stock_13f_holders, which return records rather than coverage metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The closing sentence is an explicit call-to-action: 'Call it to check whether a date or quarter is covered.' This gives clear when-to-use context (validate coverage before querying), but names no alternative tool or when-not-to-use condition, so it stops short of the top band.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_form144_noticesForm 144 notices of proposed salesARead-onlyIdempotentInspect
Form 144 notices of proposed sales of restricted or control stock by insiders (officers, directors, large holders), newest first, like livermore.club/en/ownership/144. A notice is a plan to sell, not a completed sale. Notices replaced by a Form 144/A are left out. Filter by ticker (one company's whole history), seller_cik, query (seller or company name, or a ticker) and filing dates. Without ticker or seller_cik the query is market-wide and limited to 365 days of filings (default: the last 30 days), and notices whose market value is clearly misreported are left out, as on the website; with ticker or seller_cik they are listed with value_outlier true. A notice is flagged when the price per share its market value implies is far above the company's reference prices from Form 4 trades and 13F holdings around the planned sale date; values that are too low are not flagged. Each row has the company, the seller and their relationships to it, shares_to_sell, market_value_usd, shares_outstanding, approx_sale_date, plan_adoption_date (a Rule 10b5-1 plan, when given), the broker, and links to livermore.club and the SEC filing. Coverage: XML notices since 2023 (required since 2023-04-13); call get_data_coverage for the loaded date range. At most 200 rows per call; use page for more.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Latest filing date, YYYY-MM-DD, inclusive. | |
| from | No | Earliest filing date, YYYY-MM-DD (US Eastern). | |
| page | No | Page number starting at 1; each page has `limit` rows. Check has_more. | |
| limit | No | Maximum rows to return (1-200, default 25). | |
| query | No | Seller or company name contains this text, or a ticker for that company's notices (like the search box on livermore.club/en/ownership/144). | |
| ticker | No | Only notices for this company (all share classes; Form 144 has no CUSIP), whole history. | |
| seller_cik | No | Only notices by this seller, whole history. Sellers use the same CIK as their Form 4 filings. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| note | Yes | |
| page | Yes | |
| rows | Yes | |
| limit | Yes | |
| scope | Yes | |
| stock | Yes | |
| seller | Yes | |
| filters | Yes | |
| has_more | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent safety, but the description adds substantial behavior: value_outlier suppression and flagging logic, which notices are excluded (superseded by Form 144/A), the 200-row pagination cap, and the XML coverage start date. This is far beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: purpose first, then exclusion rules, then flagging rationale, then filter behavior, then row shape and limits. It is long, but nearly every clause carries operational information; only the intermediate flagging-mechanism detail could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, the description needn't enumerate return values, yet it does helpfully list row fields, plus pagination, coverage caveats, and filtering edge cases. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description meaningfully augments it – 'whole history' semantics for ticker/seller_cik, the query matching seller or company name, and the market-wide 365-day/default-30-day behavior tied to date params. These add semantics the schema does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (Form 144 notices of proposed sales of restricted/control stock by insiders) with a clear scope and ordering ('newest first'). It also distinguishes the concept semantically from completed trades ('a notice is a plan to sell, not a completed sale') which separates it from siblings like get_insider_trades.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly describes when to use ticker vs seller_cik vs query vs bare date filtering, and what happens in each case (whole history vs market-wide, 365-day cap, default 30 days). It also routes to get_data_coverage for the loaded range, naming an alternative for coverage questions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_insider_listsInsider trading screensARead-onlyIdempotentInspect
Ready-made insider trading screens, the same lists as livermore.club/en/insiders: cluster-buys (companies where 3 or more different insiders bought on the open market in the last 30 days, ranked by total value; returned in companies), ceo-cfo-buys (CEO or CFO open-market purchases of $25,000 or more in 30 days, newest first), top-buys-week and top-buys-month (largest open-market purchases filed in the last 7 or 30 days), top-sells-week and top-sells-month (largest open-market sales). Windows count back from now by SEC filing time. Non-derivative transactions only; rows flagged as price outliers, duplicate filings (the same trade reported again in a later filing) and issuers without a ticker are excluded. Trade rows have the same fields as get_insider_trades. Amounts in USD. At most 200 rows.
| Name | Required | Description | Default |
|---|---|---|---|
| list | Yes | cluster-buys, ceo-cfo-buys, top-buys-week, top-buys-month, top-sells-week or top-sells-month. | |
| limit | No | Maximum rows to return (1-200, default 25). |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| list | Yes | |
| title | Yes | |
| trades | Yes | |
| companies | Yes | |
| definition | Yes | |
| window_days | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive), but the description adds substantial behavioral context: non-derivative transactions only, exclusion of outlier rows, duplicate filings and issuers without tickers, SEC filing-time windows, USD amounts, and a 200-row cap. This is well beyond what the structured annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded: it opens with the overall purpose, then defines each list, then covers exclusions, shared fields, currency, and row limits. Every sentence carries specific information, and none appears to be filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only screen-listing tool with a full output schema and strong annotations, the description provides everything needed: list semantics, filtering rules, data currency, row limit, and field compatibility with get_insider_trades. Return-value details are appropriately left to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters, making the baseline 3. The description meaningfully adds to the `list` parameter by defining each enum value's exact criteria and ranking, though it adds little beyond the schema for `limit` aside from restating the 200-row maximum.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (insider trading screens) and enumerates all six ready-made lists with their ranking criteria. It also distinguishes itself from the sibling get_insider_trades by stating that trade rows share the same fields, so an agent can tell it apart without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly explains what each screen represents and when those lists are useful, e.g., cluster-buys means 3+ insiders bought in 30 days. However, it does not explicitly state when to prefer this tool over get_insider_trades or other siblings, nor does it name exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_insider_tradesInsider trades (Form 4)ARead-onlyIdempotentInspect
Insider transactions from SEC Form 4 filings (coverage starts July 2021; updated daily). One row per filing and transaction type: same-day lots are combined, avg_price_usd is value-weighted, value_usd is the USD total, shares_owned_after is the holding after the last lot, ownership_change_pct is the change in the insider's holding in percent (null = new position or not computable). Filter by ticker, insider_cik, filing-date range, codes, the primary insider's role and minimum value. Without ticker or insider_cik the query is market-wide and limited to 30 days of filings (default: last 7 days). Codes: P = open-market or private purchase, S = sale, A = grant or award, D = disposition to the issuer, F = shares withheld for taxes, G = gift, M = option exercise under a company plan, X = in-the-money exercise, C = conversion, W = inheritance, J = other. Default codes P and S. Dates are YYYY-MM-DD; filed_at is ISO 8601 UTC and filed_date its US Eastern date; backfilled filings may only have the date (filed_at at midnight Eastern). price_outlier is true when the reported price or value is not reliable (a typo, a wrong unit or a foreign company's home-market shares priced in local currency instead of US dollars); avg_price_usd and value_usd are then as filed, and the site leaves these rows out of rankings and totals. carried_from is set on rows that a Form 4/A carried over from the original filing: an amendment that restates only some lines leaves the original's other transactions standing, so they are listed under the amendment's accession (amendment true), with the original's accession in carried_from and the original's filed_at and sec_url; it is null otherwise. rule_10b5_1 is null for filings before 2023. Each row links to livermore.club (url) and the SEC filing that reports the transaction (sec_url). At most 200 rows per call; use page for more.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Latest SEC filing date, YYYY-MM-DD, inclusive. | |
| from | No | Earliest SEC filing date, YYYY-MM-DD (US Eastern). | |
| page | No | Page number starting at 1; each page has `limit` rows. Check has_more. | |
| sort | No | filed = newest filing first (default); trade_date = most recent trade date first; value = largest USD value first (rows flagged as price outliers or duplicate filings are left out). | filed |
| codes | No | Form 4 transaction codes to include, e.g. ["P"] for purchases only, or "all". Default ["P","S"] (open-market purchases and sales). | |
| limit | No | Maximum rows to return (1-200, default 25). | |
| roles | No | Keep rows whose primary reporting owner has any of these roles: ceo, cfo, director, officer, owner10 (10% owner). Empty = any role. | |
| ticker | No | Only this company's filings (all share classes of the issuer), e.g. AAPL or BRK.B. | |
| insider_cik | No | Only filings on which this insider (reporting owner) appears, across all companies. Get the CIK from search. | |
| min_value_usd | No | Minimum transaction value in USD (rows without a price are then excluded). |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| note | Yes | |
| page | Yes | |
| rows | Yes | |
| limit | Yes | |
| scope | Yes | |
| stock | Yes | |
| filters | Yes | |
| insider | Yes | |
| has_more | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a safe, idempotent read, so the bar is lower, yet the description adds substantial behavioral context: daily updates, 200-row cap with pagination via page, price_outlier rows excluded from rankings/totals, carried_from semantics for Form 4/A amendments, and rule_10b5_1 null before 2023. These are non-obvious traits an agent could not infer from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and a dense but largely waste-free paragraph; nearly every sentence carries field semantics or a constraint. It would be more scannable with structure, and the back-half semantics (carried_from, price_outlier) could be tightened, but there is little filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return shapes, yet it still covers row granularity, aggregation rules, date formats, null conditions, and pagination limits. For a 10-parameter tool with zero required params, this is fully sufficient to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so a baseline of 3 applies, but the description goes further by enumerating the meaning of each transaction code (P, S, A, D, F, G, M, X, C, W, J) and restating the default codes P and S, which the schema only lists as values. It also clarifies that 'without ticker or insider_cik' triggers a 30-day market-wide limit, adding conditional meaning to those params.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Insider transactions from SEC Form 4 filings') and immediately scopes it with coverage start and update cadence. It is easily separable from siblings like get_insider_lists and get_superinvestor_activity, which cover different data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage context: 'Filter by ticker, insider_cik, filing-date range, codes, the primary insider's role and minimum value,' and explains that omitting ticker/insider_cik yields a market-wide query capped at 30 days, defaulting to the last 7. However, it never names or routes to an alternative sibling tool, so it falls short of explicit when-to-use-vs-alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_institution13F institution and its holdingsARead-onlyIdempotentInspect
One 13F filer (an institution or a curated superinvestor) by SEC CIK: names (and the superinvestor's manager and style), the quarters it filed (newest 12, with quarters_total: number of positions, portfolio value in USD, filing time, amendments), and its holdings for one quarter (default: the latest it filed) with shares, market value in USD at quarter end, pct_of_portfolio (percent) and the change versus the previous calendar quarter (new/added/reduced/unchanged, share_change_pct in percent). When a stock split between the two quarters, previous_shares is converted to this quarter's shares before comparing (split_factor = new shares per old share) and a change within 0.5% counts as unchanged; a split that changed the CUSIP is shown as one row under the new CUSIP. Also returns the 10 largest positions sold out that quarter and the 10 largest option positions (put/call market value), each with its total count. Portfolio value counts long positions and excludes options. If the institution did not file the previous quarter, changes and sold-out positions are not reported. Securities without a ticker (bonds, some ETFs and foreign shares) have url null. At most 200 holdings per call; use page.
| Name | Required | Description | Default |
|---|---|---|---|
| cik | Yes | SEC CIK of the 13F filer, e.g. 0001067983 (Berkshire Hathaway). Get it from search. | |
| page | No | Page number starting at 1; each page has `limit` rows. Check has_more. | |
| sort | No | value = largest market value first (default); shares; change = largest share increase first; pct = largest share of the portfolio first. | value |
| limit | No | Maximum rows to return (1-200, default 25). | |
| quarter | No | Quarter to show, e.g. 2026-q2. Default: the latest quarter this institution filed. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| note | Yes | |
| period | Yes | |
| options | Yes | |
| quarter | Yes | |
| summary | Yes | |
| holdings | Yes | |
| quarters | Yes | |
| sold_out | Yes | |
| institution | Yes | |
| quarters_total | Yes | |
| previous_quarter | Yes | |
| changes_available | Yes | |
| previous_quarter_filed | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/non-destructive, and the description adds substantial non-obvious behavior: split handling with split_factor and CUSIP changes, the 0.5% unchanged threshold, a 200-holding cap requiring pagination, exclusion of options from portfolio value, null url for tickerless securities, and suppression of changes when the prior quarter was not filed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose and defaults are front-loaded, and every clause carries real information rather than repetition. It is dense to the point of reading as one long block, which slightly hurts scannability, but there is no filler to cut.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool this complex, the description covers the edge cases an agent must know before calling: pagination limits, split adjustments, missing-prior-quarter behavior, and option/sold-out reporting. Return fields are also covered by the output schema, so nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning about how parameters interact: the quarter parameter's default (latest filed) is tied to the change/sold-out logic, and the page hint is linked to the 200-holding cap. This slightly exceeds what the schema alone conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: retrieving one 13F filer (institution or curated superinvestor) by SEC CIK, plus its filing quarters and holdings. The scope is narrow and unambiguous enough that an agent can distinguish it from siblings like get_stock_13f_holders (the inverse direction) without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never says when to use this tool versus get_stock_13f_holders, get_superinvestor_activity, or search; the only routing hint ('Get it from search') lives in the schema, not the description. Usage is inferable from the resource name alone, but no explicit conditions or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_major_holdersCurrent 5% holders of a stock (13D/13G)ARead-onlyIdempotentInspect
The current holders of 5% or more of a stock according to their latest Schedule 13D or 13G filing, largest first, like the Major holders tab on livermore.club. Each holder has pct_of_class (percent of the share class, 7.5 = 7.5%) and shares from its latest filing, the change against the previous filing of the same position (previous_pct_of_class, pct_of_class_change in percentage points; new_position is true for a first filing), the form (13D, 13G, 13D/A, 13G/A), filing and event dates, when the position was first filed and how many filings it has, and links to the holder's livermore.club page (institutions and insiders) and the SEC filing. In a group filing each member reports the shares it counts as its own, so the figure is the largest single stake, not a sum. Share classes (GOOG, GOOGL) are split by the CUSIP in the filing. Limits: holders stop filing after a company is acquired or delisted, and holders whose latest filing is an older SC 13D or SC 13G (before 2024-12-18) have no percent and are not counted. Structured 13D/13G filings (voluntary since 2023-12-18, required since 2024-12-18) carry the percent, shares and event date; older SC 13D and SC 13G filings (since 2021) list only the filer, the company and the date (legacy true). Call get_data_coverage for the loaded date range.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows to return (1-200, default 25). | |
| ticker | Yes | Stock ticker, e.g. AAPL or BRK.B (share classes use a dot; BRK-B also works). |
Output Schema
| Name | Required | Description |
|---|---|---|
| cik | Yes | |
| url | Yes | |
| name | Yes | |
| note | Yes | |
| ticker | Yes | |
| holders | Yes | |
| holders_total | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds substantial non-obvious behavior: group filings report the largest single stake rather than a sum, share classes are split by CUSIP, legacy SC 13D/13G filings lack percent and are excluded, and holders stop filing after acquisition/delisting. This is exactly the kind of caveat an agent cannot infer from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the field inventory are front-loaded, and every clause carries real information (field semantics, filing-form caveats, limits). It is dense and close to a wall of text, which slightly hurts scannability, but little is expendable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Though an output schema exists (so return values need not be explained), the description goes further by documenting field semantics and legacy/group-filing edge cases, leaving an agent fully equipped to interpret results and avoid misreading the figures.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (ticker, limit) are already documented in the schema and the description adds no further parameter detail. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (current holders of 5%+ of a stock via Schedule 13D/13G filings), ordering (largest first), and anchors it to a known reference (the Major holders tab on livermore.club). An agent can distinguish it from get_stock_13f_holders or get_ownership_filings, which cover different filing regimes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied through the described data scope and the pointed 'Call get_data_coverage for the loaded date range' note, but it never explicitly says when to prefer this over sibling tools like get_ownership_filings or get_stock_13f_holders. No when-not or alternative-selection guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ownership_filingsSchedule 13D and 13G filingsARead-onlyIdempotentInspect
Schedule 13D and 13G filings by holders of more than 5% of a company, newest first, like livermore.club/en/ownership. 13D is filed by holders who may seek to influence the company (activists), 13G by passive holders; /A marks an amendment. Filter by form, ticker (one stock's whole history), filer_cik (an institution's or person's filings, including those it is named in), query (filer or company name, or a ticker) and filing dates. Without ticker or filer_cik the query is market-wide and limited to 365 days of filings (default: the last 30 days); note says when the range was narrowed. Each row has the company (issuer_cik, issuer_name, ticker), the filer (filer_cik, filer_name, the superinvestor name when it is one, reporting_persons in a group filing), pct_of_class and shares, the change against the previous filing of the same position (previous_pct_of_class, pct_of_class_change in percentage points, new_position), below_5_pct (an exit or a drop below the threshold), the event date, and links to livermore.club (filer_url, stock_url) and the SEC filing. Structured 13D/13G filings (voluntary since 2023-12-18, required since 2024-12-18) carry the percent, shares and event date; older SC 13D and SC 13G filings (since 2021) list only the filer, the company and the date (legacy true). Call get_data_coverage for the loaded date range. At most 200 rows per call; use page for more.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Latest filing date, YYYY-MM-DD, inclusive. | |
| form | No | 13D (holders who may seek to influence the company) or 13G (passive holders). Default: both. | |
| from | No | Earliest filing date, YYYY-MM-DD (US Eastern). | |
| page | No | Page number starting at 1; each page has `limit` rows. Check has_more. | |
| limit | No | Maximum rows to return (1-200, default 25). | |
| query | No | Filer or company name contains this text, or a ticker for that company's filings (like the search box on livermore.club/en/ownership). | |
| ticker | No | Only filings for this stock (the company's filings for this share class), whole history. | |
| filer_cik | No | Only filings this filer submitted or is named in as a reporting person, whole history. Get the CIK from search (institutions and insiders). |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| note | Yes | |
| page | Yes | |
| rows | Yes | |
| filer | Yes | |
| limit | Yes | |
| scope | Yes | |
| stock | Yes | |
| filters | Yes | |
| has_more | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent safety, and the description goes further: the 200-row cap and paging requirement, the note signal when the date range is narrowed, and the legacy/structured data split (percent/shares only available post-2023-12-18, legacy rows carry filer/company/date only). That is exactly the operational context an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then filters, then defaults, then row shape and data caveats — a logical progression. It is long and repeats the form definitions already in the schema, but nearly every clause carries information useful for calling the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-param, zero-required, read-only search tool with pagination and heterogeneous data vintages, the description covers filtering modes, defaults, pagination limits, and data-quality caveats. With an output schema present, the row-field enumeration is a bonus rather than a gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema: filer_cik includes filings where the entity is merely *named* as a reporting person, ticker returns the stock's whole history, and query can match a ticker as well as a name. The restated 13D/13G definitions duplicate the schema wording.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (Schedule 13D/13G filings by >5% holders), scope (newest first, market-wide vs. single-entity), and anchors to a concrete analog (livermore.club/en/ownership). It is clearly separable from siblings like get_stock_13f_holders or get_superinvestor_activity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains when the query is market-wide and how it is then capped to 365 days (default 30), and routes the agent to get_data_coverage for the loaded range. However, it never explicitly says when to prefer this tool over get_major_holders or get_stock_13f_holders.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_politicianPolitician (member of the U.S. Congress)ARead-onlyIdempotentInspect
One politician (a member of the U.S. Congress: House or Senate), by bioguide ID or name: party, chamber, state, district, in office or former, terms served with start and end dates; a profile with the official photo_url, position (e.g. U.S. Representative for California's 11th district), district code (CA-11), birthday and age, official website, social accounts and Wikipedia as URLs, leadership roles (Speaker, whips, caucus chairs; current first) and, for politicians in office, current committee and subcommittee seats with titles (chair, ranking_member and so on); trade statistics since 2020 for the chosen assets (listed securities by default: trades, buys, sells, estimated volume in USD, median filing delay in days, late trades and the reports that contain them), unlisted_trades (trades in bonds, private holdings and other assets, whatever asset is), the number of reports and how many are paper or scanned, the latest filing date, and the 5 tickers the politician traded most in the chosen assets, with livermore.club links. Use get_politician_trades with the bioguide ID for the trades. Profiles, committees and photos come from the unitedstates project (public domain), refreshed daily. Data: House and Senate periodic transaction reports (PTRs) filed since 2020-01-01, from the U.S. House Clerk and the Senate Office of Public Records (eFD), updated daily. Only listed securities are included by default: stocks (including ADRs), ETFs and options, the assets with an exchange ticker. Politicians also report Treasury bills and notes, municipal and corporate bonds, private companies, private funds, crypto and other assets; pass asset=other for those or asset=all for everything. Amounts are the statutory ranges members of Congress report, not exact values: amount_min_usd to amount_max_usd, where a null amount_max_usd is an 'Over $X' range; estimated volumes add up range midpoints (an 'Over $X' range counts as X), so treat them as rough sizes. Trades replaced by an amendment and duplicates reported again in a later filing are left out. Paper and scanned reports are listed on politician pages but their trades are not read.
| Name | Required | Description | Default |
|---|---|---|---|
| asset | No | Which assets to include: listed (default) = listed securities, that is stocks including ADRs, ETFs and options; stock = listed stocks and ETFs without options; option = options; other = Treasury bills and notes, municipal and corporate bonds, private companies, private funds, crypto and other assets; all = everything. The statistics and top tickers cover these assets. | listed |
| politician | Yes | A bioguide ID (e.g. P000197) or a name (e.g. Pelosi, Nancy Pelosi, Bernie Sanders). A name that matches several politicians returns an error listing them. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| note | Yes | |
| asset | Yes | The assets that stats and top_tickers cover. |
| stats | Yes | |
| profile | Yes | |
| politician | Yes | |
| top_tickers | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent safety; the description adds data provenance, daily refresh, statutory amount ranges, treatment of amendments/duplicates, and paper/scanned reports not being read. These are substantive behavioral constraints beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense block with semicolon-delimited clauses, front-loading identity and fields but running very long. Most content is relevant for this complex tool, though some output detail is redundant with the output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain returns, yet it goes beyond by covering data sources, refresh cadence, asset defaults, amount interpretation, and report limitations. Combined with annotations and 100% schema coverage, an agent has everything needed to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters fully documented including the asset enum. The description restates the default and asset meanings but adds no parameter-level syntax or meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource and scope precisely—one U.S. Congress member, by bioguide ID or name—and enumerates profile fields and trade statistics. It explicitly distinguishes this from get_politician_trades, so an agent can select it without inspecting siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the alternative tool and the selector: use get_politician_trades with the bioguide ID for trades. It also defines asset parameter choices and default, giving context for when to fetch other asset classes. The alternative routing is explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_politician_tradesPolitician trades (U.S. Congress: House and Senate)ARead-onlyIdempotentInspect
Trades in stocks, ETFs, options and, on request, other assets reported by politicians (members of the U.S. Congress: House and Senate), one row per trade, newest report first by default. Filter by politician (bioguide ID or name), ticker, asset (listed by default, or stock, option, other, all), chamber, party, type (buy, sell, exchange), report filing dates (filed_from, filed_to) and trade dates (traded_from, traded_to). Each row has the politician (politician_bioguide, politician_name, party, chamber, state), the asset and reported ticker, asset_class, type (purchase, sale_full, sale_partial, sale or exchange), owner (self, spouse, joint or child), traded_date and filed_date, delay_days (days from the trade to its first report; null when the reported trade date is after the filing date, a typo flagged by trade_date_error), late (reported more than 45 days after the trade), the amount range, the official source_url, and livermore.club links for the politician and the stock (stock_url is null when the asset is not a listed company). totals summarize all trades matching the filters, not just this page. Data: House and Senate periodic transaction reports (PTRs) filed since 2020-01-01, from the U.S. House Clerk and the Senate Office of Public Records (eFD), updated daily. Only listed securities are included by default: stocks (including ADRs), ETFs and options, the assets with an exchange ticker. Politicians also report Treasury bills and notes, municipal and corporate bonds, private companies, private funds, crypto and other assets; pass asset=other for those or asset=all for everything. Amounts are the statutory ranges members of Congress report, not exact values: amount_min_usd to amount_max_usd, where a null amount_max_usd is an 'Over $X' range; estimated volumes add up range midpoints (an 'Over $X' range counts as X), so treat them as rough sizes. Trades replaced by an amendment and duplicates reported again in a later filing are left out. Paper and scanned reports are listed on politician pages but their trades are not read. At most 200 rows per call; use page for more.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number starting at 1; each page has `limit` rows. Check has_more. | |
| sort | No | filed = newest report first (default); traded = most recent trade first; amount = largest amount range first. | filed |
| type | No | buy (purchases), sell (full, partial or unspecified sales) or exchange. | |
| asset | No | Which assets to include: listed (default) = listed securities, that is stocks including ADRs, ETFs and options; stock = listed stocks and ETFs without options; option = options; other = Treasury bills and notes, municipal and corporate bonds, private companies, private funds, crypto and other assets; all = everything. | listed |
| limit | No | Maximum rows to return (1-200, default 25). | |
| party | No | democrat, republican or independent (the politician's latest party). | |
| ticker | No | Only trades in this company (all its share classes, options and former tickers), e.g. MSFT. A ticker that is not a listed company (many ETFs and funds) matches the ticker as reported. | |
| chamber | No | house or senate. | |
| filed_to | No | Latest filing date of the report, YYYY-MM-DD, inclusive. | |
| traded_to | No | Latest trade date, YYYY-MM-DD, inclusive. | |
| filed_from | No | Earliest filing date of the report, YYYY-MM-DD. | |
| politician | No | Only this politician (a member of the U.S. Congress): a bioguide ID (e.g. P000197) or a name (e.g. Pelosi, Nancy Pelosi, Bernie Sanders). A name that matches several politicians returns an error listing them. | |
| traded_from | No | Earliest trade date, YYYY-MM-DD. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| note | Yes | |
| page | Yes | |
| rows | Yes | |
| limit | Yes | |
| stock | Yes | |
| ticker | Yes | The ticker filter when it is not a listed company and is matched as reported. |
| totals | Yes | |
| filters | Yes | |
| has_more | Yes | |
| politician | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), yet the description adds substantial behavioral context: daily updates, 2020-01-01 coverage floor, exclusion of amended and duplicate trades, unreadable paper filings, null semantics for delay_days and amount_max_usd, and the 200-row-per-call cap with paging. This is far beyond what the annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and much of the content earns its place (asset filtering rules, amendment exclusions), but it is a single dense paragraph that also enumerates output fields. Because an output schema exists, that field-by-field return listing is largely redundant and inflates the length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (13 params, multi-source disclosure data), the description covers data provenance, coverage dates, update cadence, deduplication/amendment handling, amount-range caveats, pagination, and default asset scope. An agent has everything needed to call it correctly; return-value detail is further backed by the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented; the description mostly restates the same filters (asset classes, type values, date ranges). It adds minor value by clarifying that totals span all matching trades and that ticker matching behaves differently for non-listed tickers, but the baseline of 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Trades... reported by politicians') with precise scope: U.S. Congress House and Senate, one row per trade. It distinguishes this from corporate-insider data by explicitly naming the data source (PTRs from the House Clerk and Senate eFD), letting an agent tell it apart from get_insider_trades without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context: default returns only listed securities, and it routes the agent to asset=other or asset=all for bonds, crypto, private holdings, etc. It also notes paper/scanned reports have no readable trades. It doesn't explicitly name a sibling alternative (e.g., get_insider_trades vs this), so routing is inferred rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stockStock overviewARead-onlyIdempotentInspect
Overview of one US-listed stock: company facts (SEC name, CIK, exchange, SIC industry, other share classes), open-market insider activity in the last 90 days (Form 4 codes P and S, non-derivative: number of filings and total USD), institutional ownership from 13F for the latest complete quarter (number of holders, total shares and market value in USD, and the previous quarter for comparison), and the curated superinvestors holding it (shares, market value, pct_of_portfolio = percent of that superinvestor's 13F portfolio). A quarter is complete once its 45-day filing deadline has passed and the data is loaded; in_progress_quarter is a newer quarter still being filed. Share classes (GOOG/GOOGL, BRK.A/BRK.B) are separate tickers because 13F reports each class separately. A ticker that is no longer on the SEC's list (active false; delisted true when the company has no listed common stock left, with the Form 25 delisting date in delisted_on when known) keeps its page, and its 13F figures are for its last quarter with a full set of 13F holders (f13.note). Use get_insider_trades and get_stock_13f_holders for the full lists.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker, e.g. AAPL or BRK.B (share classes use a dot; BRK-B also works). |
Output Schema
| Name | Required | Description |
|---|---|---|
| cik | Yes | |
| f13 | Yes | |
| sic | Yes | |
| url | Yes | |
| name | Yes | |
| active | Yes | false when the ticker is no longer on the SEC's list of tickers. |
| ticker | Yes | |
| delisted | Yes | true when the ticker is inactive and the company has no active common-stock ticker left (delisted or acquired). An inactive ticker whose company still trades under another ticker (a ticker change) is not delisted. |
| exchange | Yes | |
| industry | Yes | |
| delisted_on | Yes | Delisting date (YYYY-MM-DD) of a delisted stock: the SEC filing date of the Form 25 that removed its common stock from the exchange. null when the stock is not delisted or no Form 25 was found (for example a company that kept trading over the counter). |
| holders_url | Yes | |
| insiders_url | Yes | |
| superinvestors | Yes | |
| sec_filings_url | Yes | |
| insider_activity | Yes | |
| other_share_classes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description goes well beyond by disclosing data-freshness semantics (a quarter is complete only after the 45-day filing deadline; in_progress_quarter is still being filed), delisting behavior (active=false, delisted_on Form 25 date, last full 13F quarter), and why share classes are separate tickers. This is exactly the kind of state caveat an agent cannot infer from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the alternative-tool routing are front-loaded, and every clause carries substantive information rather than filler. The main cost is readability: the opening sentence is a single long chain of parentheticals, which makes scanning harder than it needs to be, but the density is largely justified by the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present the description need not explain return shapes, and it correctly spends its budget on the things structured fields cannot carry: quarterly completeness/timing, in-progress vs complete quarters, delisting edge cases, and share-class handling. An agent has everything needed to call this correctly and interpret freshness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the singular ticker parameter is fully documented in the schema, so the baseline is 3. The description adds real meaning beyond that by explaining that share classes (GOOG/GOOGL, BRK.A/BRK.B) are distinct tickers because 13F files each class separately, and by describing what happens when the ticker is delisted — useful semantics for interpreting the single input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ("Overview of one US-listed stock") and then enumerates the exact content blocks returned: SEC company facts, Form 4 P/S insider activity, 13F institutional ownership, and curated superinvestors. It explicitly names siblings (get_insider_trades, get_stock_13f_holders) as the source for the full lists, so an agent can separate this summary tool from them without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States when to route elsewhere: use get_insider_trades and get_stock_13f_holders for the full lists, implying this tool returns only aggregates. It also implicitly frames itself as a single-ticker overview. It does not, however, address other plausible alternatives such as get_institution or get_data_coverage, so the exclusions are incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stock_13f_holders13F institutional holders of a stockARead-onlyIdempotentInspect
Institutions that reported holding a stock in their 13F-HR filings for one calendar quarter (default: the latest complete quarter, or for a ticker that is no longer listed its last quarter with a full set of 13F holders; 13F is filed up to 45 days after quarter end and covers long positions in US-listed securities only). Each row: institution, shares, market value in USD at quarter end as reported, pct_of_portfolio (percent of that institution's 13F portfolio), and the change versus the previous calendar quarter (action new/added/reduced/unchanged/sold_out, share_change, share_change_pct in percent). When the stock split between the two quarters, previous_shares is converted to this quarter's shares before comparing (split_factor = new shares per old share; the filed count is previous_shares / split_factor) and a change within 0.5% counts as unchanged; the previous totals are as filed. Institutions that held the stock last quarter and filed this quarter without it are listed after the holders as sold_out; institutions that held it last quarter but have not filed this quarter yet are listed at the very end as not_filed (not a sale, shares and value null). Totals (holders, shares, value_usd) cover all holders, not just this page. Multiple CUSIPs of the same ticker are combined. changes_available is false (and the change fields are null) when the previous quarter cannot be compared; note explains incomplete or still-filing quarters. At most 200 rows per call; use page.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number starting at 1; each page has `limit` rows. Check has_more. | |
| sort | No | value = largest market value first (default); shares = most shares; change = largest share increase first. Sold-out holders are always listed last. | value |
| limit | No | Maximum rows to return (1-200, default 25). | |
| ticker | Yes | Stock ticker, e.g. AAPL or BRK.B (share classes use a dot; BRK-B also works). | |
| quarter | No | Quarter to show, e.g. 2026-q2. Default: the latest complete quarter; for a ticker that is no longer listed, its last quarter with a full set of 13F holders. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| name | Yes | |
| note | Yes | |
| page | Yes | |
| rows | Yes | |
| sort | Yes | |
| limit | Yes | |
| period | Yes | |
| shares | Yes | |
| ticker | Yes | |
| holders | Yes | |
| quarter | Yes | |
| has_more | Yes | |
| previous | Yes | |
| value_usd | Yes | |
| split_factor | Yes | Stock split between previous_quarter and quarter: new shares per old share (10 = 10-for-1 split, 0.1 = 1-for-10 reverse split); null when there was none. |
| previous_quarter | Yes | |
| changes_available | Yes | |
| in_progress_quarter | Yes | |
| latest_complete_quarter | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only/idempotent/non-destructive, and the description adds substantial behavior beyond them: split-adjusted prior-share comparison with a 0.5% unchanged threshold, sold_out vs not_filed trailing rows, nulled change fields when changes_available is false, and totals that cover all holders rather than the page.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, but the single dense paragraph dedicates much of its length to enumerating row fields and change semantics that the output schema already covers. The genuinely non-obvious domain logic (splits, sold_out/not_filed) earns its place; the field-by-field recap does not.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a complex financial domain, full annotation coverage, and an output schema, the description supplies exactly the logic an agent cannot infer: quarter completeness, filing lag, split normalization, and how non-holder rows are ordered. Nothing needed to interpret a call correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters (page, limit, sort, ticker, quarter) are already documented in the schema itself. The description reinforces the quarter default and the 200-row page cap but adds little semantic detail beyond what the schema already carries.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (institutions reporting holdings in 13F-HR filings) and a specific scope (one calendar quarter, long US-listed positions), with defaults spelled out. It is clearly distinguishable from siblings like get_insider_trades, get_institution, and get_superinvestor_activity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the default quarter, the fallback for delisted tickers, and the 45-day filing lag, which tells the agent when results are meaningful. It never explicitly routes to a sibling (e.g., 'for a specific institution use get_institution'), so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_superinvestor_activitySuperinvestor quarterly buys and sellsARead-onlyIdempotentInspect
What the curated superinvestors bought and sold in one quarter according to 13F, compared with the previous calendar quarter (default: the latest complete quarter). Without superinvestor_cik: most_bought (stocks the most superinvestors opened or added to), most_sold (reduced or sold out) and per-superinvestor counts of new/added/reduced/sold-out positions. With superinvestor_cik: that superinvestor's individual moves grouped by action, largest positions first (shares_change_pct in percent for added and reduced). Only superinvestors that filed both quarters are compared; added and reduced are decided by share count, not value, and when a stock split between the two quarters the previous share count is converted first (split_factor). Securities are merged by ticker (CUSIP when there is none). 13F is filed up to 45 days after quarter end.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum rows per list (1-50, default 25). | |
| quarter | No | Quarter to compare with the previous calendar quarter, e.g. 2026-q2. Default: the latest complete quarter that can be compared. | |
| superinvestor_cik | No | Show this superinvestor's individual moves instead of the cross-superinvestor summary. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| period | Yes | |
| quarter | Yes | |
| most_sold | Yes | |
| most_bought | Yes | |
| superinvestor | Yes | |
| by_superinvestor | Yes | |
| previous_quarter | Yes | |
| superinvestors_compared | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations, which only cover the read-only/idempotent safety profile. It discloses subtle methodological rules: only superinvestors filing both quarters are compared, added/reduced is decided by share count not value, split adjustments via split_factor, ticker/CUSIP merging, and the 45-day 13F filing lag. This is exactly the kind of non-obvious behavior an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded, leading with the core purpose before detailing edge cases. The long run-on sentences pack a lot of caveats, but each sentence carries substantive information rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, the description need not explain return values, and it covers the remaining gaps: modes, defaults, and the accounting/matching methodology. An agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it explains that quarter compares against the previous calendar quarter and what the superinvestor_cik switch actually changes (grouping by action, largest first, shares_change_pct in percent). This exceeds what the schema alone conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('what curated superinvestors bought and sold in one quarter according to 13F') and delineates two distinct output modes based on superinvestor_cik. This is precise enough to distinguish it from siblings like get_stock_13f_holders or list_superinvestors without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly explains the conditional branching: omit superinvestor_cik for the cross-investor summary, provide it for individual moves. It also clarifies the default quarter behavior. It does not name a specific alternative tool for looking up a CIK, but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_superinvestorsCurated superinvestorsARead-onlyIdempotentInspect
The curated list of superinvestors (well-known long-term investors such as Warren Buffett's Berkshire Hathaway, Bill Ackman's Pershing Square, Li Lu's Himalaya Capital) with their latest 13F quarter: portfolio value in USD (long positions, excluding options), number of positions, filing date, and the 3 largest holdings with pct_of_portfolio (percent). Sorted by portfolio value. Names are in English with Chinese names in name_zh and manager_zh. source_cik is set when the latest quarter was filed under a predecessor CIK (pass it to get_institution to see that quarter). Use get_institution(cik) for full holdings and get_superinvestor_activity for what they bought and sold in a quarter.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| count | Yes | |
| superinvestors | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so safety is covered. The description adds meaningful behavior beyond annotations: sorting by portfolio value, exclusion of options, Chinese name fields, and the predecessor CIK behavior. It does not contradict annotations, and the added context enriches the agent's understanding without relying on the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but each sentence earns its place: main purpose, data fields, sorting, naming, predecessor CIK, and alternatives. It is front-loaded with the primary function and avoids redundancy. Slightly long but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and an output schema present, the description covers all essential call-time information: what data is returned, sorting, edge case of source_cik, and pointers to sibling tools. It does not mention pagination or rate limits, but those are less critical given the tool's simplicity and the output schema's coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. There is nothing for the description to add beyond what the schema provides (which is empty). The description appropriately explains the data structure instead, which is not parameter-related. No issues.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'list the curated list of superinvestors' with detailed data fields (portfolio value, positions, filing date, top holdings). It clearly distinguishes from siblings by mentioning get_institution and get_superinvestor_activity for different needs, so an agent can tell it apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly directs when to use alternatives: 'Use get_institution(cik) for full holdings and get_superinvestor_activity for what they bought and sold in a quarter.' Also explains the source_cik caveat, leaving no ambiguity about when to use this tool versus siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSearch stocks, institutions, insiders and politiciansARead-onlyIdempotentInspect
Find US stocks, 13F institutions (including the curated superinvestors, matched by fund or manager name, e.g. 'Buffett' or 'Pershing', and large asset managers matched by their common name, e.g. 'Fidelity' finds FMR LLC and 'Capital Group' its three 13F filers), corporate insiders (Form 4 reporting persons) and politicians (members of the U.S. Congress: House and Senate members who served in 2019 or later, by name, nickname, last name or bioguide ID; current members first) by ticker or name. Returns up to limit matches per group, best match first, with the identifier the other tools take: ticker for get_stock, get_insider_trades, get_stock_13f_holders, get_major_holders and the other stock filters; institution cik for get_institution and get_ownership_filings(filer_cik); insider cik for get_insider_trades(insider_cik) and get_form144_notices(seller_cik); politician bioguide for get_politician and get_politician_trades(politician). Names are SEC names in English (insiders appear as 'Cook Timothy D'); superinvestors and those asset managers also match their Chinese names. Tickers match exactly or by prefix; a CIK (e.g. 1067983) or a 9-character CUSIP (e.g. 037833100) matches exactly; names need at least 2 characters. Stocks carry the company in name; detail is the manager for superinvestors ('13F filer' for other institutions) and the latest title and company for insiders. Politicians have party (D, R, I), chamber (house or senate), state, district (House seats; 0 is at-large) and in_office. Every item has its livermore.club url.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum matches per group (1-20, default 5). | |
| query | Yes | Ticker, company, fund, manager, person or politician name, CIK or CUSIP. |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | |
| stocks | Yes | |
| insiders | Yes | |
| politicians | Yes | |
| institutions | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only/idempotent/non-destructive profile, and the description adds substantial behavior beyond that: per-group result cap, best-match-first ordering, politicians sorted current-members-first, matching semantics (exact/prefix ticker, exact CIK/CUSIP, 2-char minimum for names), and the meaning of the `detail` field per group.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the opening clause and every subsequent sentence carries non-redundant information. It is dense and somewhat run-on with nested parentheticals, which slightly taxes readability, but there is little wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, the description appropriately focuses on input interpretation and cross-tool routing while still noting the per-item `detail` and `url` fields. For a resolver feeding eight-plus siblings, this is complete enough for an agent to call it correctly and consume its output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it interprets `query` by spelling out how tickers, CIKs, CUSIPs and names are matched, and clarifies that names are SEC English names with Chinese-name matching for superinvestors/asset managers. `limit` is explained as a per-group cap, adding nuance beyond the schema's 'maximum matches per group'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (find) and enumerates the exact resources searched (US stocks, 13F institutions/superinvestors, corporate insiders, politicians) with the disambiguating detail that it searches by ticker or name. It goes further by naming which sibling each returned identifier feeds (ticker→get_stock, institution cik→get_institution, etc.), so an agent can instantly tell it apart from the retrieval siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes its role clear as a resolver that yields the identifiers the other tools consume, giving strong context for when to reach for it first. It names the downstream siblings explicitly, but it does not state any exclusion or 'when not to use' condition (e.g. when to skip search and call a sibling directly).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
get_politician2 fields changed- added
Output schema / properties / profileAdded value: +{ + "additionalProperties": false, + "properties": { + "age": { + "description": "Age today (US Eastern), for politicians in office only: the source has no date of death, so it is null for former members.", + "type": [ + "number", + "null" + ] + }, + "birthday": { + "type": [ + "string", + "null" + ] + }, + "committees": { + "items": { + "additionalProperties": false, + "properties": { + "chamber": { + "description": "house, senate or joint.", + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "side": { + "type": [ + "string", + "null" + ] + }, + "subcommittees": { + "items": { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "side": { + "type": [ + "string", + "null" + ] + }, + "title": { + "anyOf": [ + { + "enum": [ + "chair", + "vice_chair", + "ranking_member", + "ex_officio", + "co_chair", + "other" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "description": "chair, vice_chair, ranking_member, ex_officio, co_chair or other (the source's wording is in title_raw); null for a regular member." + }, + "title_raw": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id", + "name", + "side", + "title", + "title_raw" + ], + "type": "object" + }, + "type": "array" + }, + "title": { + "anyOf": [ + { + "enum": [ + "chair", + "vice_chair", + "ranking_member", + "ex_officio", + "co_chair", + "other" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "description": "chair, vice_chair, ranking_member, ex_officio, co_chair or other (the source's wording is in title_raw); null for a regular member." + }, + "title_raw": { + "type": [ + "string", + "null" + ] + }, + "url": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id", + "name", + "side", + "title", + "title_raw", + "chamber", + "url", + "subcommittees" + ], + "type": "object" + }, + "type": "array" + }, + "district": { + "description": "House seat code of the latest term, e.g. CA-11; AK-AL for an at-large seat, DC-AL for a delegate; null for senators.", + "type": [ + "string", + "null" + ] + }, + "leadership": { + "items": { + "additionalProperties": false, + "properties": { + "chamber": { + "type": "string" + }, + "current": { + "type": "boolean" + }, + "end": { + "description": "The end date, or null when the source gives none (the role is held).", + "type": [ + "string", + "null" + ] + }, + "start": { + "type": "string" + }, + "title": { + "type": "string" + } + }, + "required": [ + "title", + "chamber", + "start", + "end", + "current" + ], + "type": "object" + }, + "type": "array" + }, + "photo_url": { + "description": "Official portrait, 360x450 WebP, public domain; null when there is no photo.", + "type": [ + "string", + "null" + ] + }, + "position": { + "description": "The seat in English, e.g. U.S. Representative for California's 11th district.", + "type": "string" + }, + "social": { + "additionalProperties": false, + "properties": { + "facebook": { + "type": [ + "string", + "null" + ] + }, + "instagram": { + "type": [ + "string", + "null" + ] + }, + "mastodon": { + "type": [ + "string", + "null" + ] + }, + "x": { + "type": [ + "string", + "null" + ] + }, + "youtube": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "x", + "facebook", + "youtube", + "instagram", + "mastodon" + ], + "type": "object" + }, + "website": { + "description": "Official website; politicians in office only.", + "type": [ + "string", + "null" + ] + }, + "wikipedia_url": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "photo_url", + "position", + "district", + "birthday", + "age", + "website", + "social", + "wikipedia_url", + "leadership", + "committees" + ], + "type": "object" +} - changed
Output schema / requiredPrevious value: -[ - "politician", - "asset", - "stats", - "top_tickers", - "note", - "url" -]New value: +[ + "politician", + "profile", + "asset", + "stats", + "top_tickers", + "note", + "url" +]
5 tool updates
- Removed
get_congress_member - Removed
get_congress_trades - Added
get_politician - Added
get_politician_trades - Changed
search4 fields changed- changed
Input schema / properties / query / descriptionPrevious value: -"Ticker, company, fund, manager, person or member of Congress name, CIK or CUSIP."New value: +"Ticker, company, fund, manager, person or politician name, CIK or CUSIP." - removed
Output schema / properties / membersRemoved value: -{ - "items": { - "additionalProperties": false, - "properties": { - "bioguide": { - "type": "string" - }, - "chamber": { - "enum": [ - "house", - "senate" - ], - "type": "string" - }, - "district": { - "type": [ - "number", - "null" - ] - }, - "in_office": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "party": { - "type": [ - "string", - "null" - ] - }, - "state": { - "type": "string" - }, - "url": { - "type": "string" - } - }, - "required": [ - "bioguide", - "name", - "party", - "chamber", - "state", - "district", - "in_office", - "url" - ], - "type": "object" - }, - "type": "array" -} - added
Output schema / properties / politiciansAdded value: +{ + "items": { + "additionalProperties": false, + "properties": { + "bioguide": { + "type": "string" + }, + "chamber": { + "enum": [ + "house", + "senate" + ], + "type": "string" + }, + "district": { + "type": [ + "number", + "null" + ] + }, + "in_office": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "party": { + "type": [ + "string", + "null" + ] + }, + "state": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "bioguide", + "name", + "party", + "chamber", + "state", + "district", + "in_office", + "url" + ], + "type": "object" + }, + "type": "array" +} - changed
Output schema / requiredPrevious value: -[ - "query", - "stocks", - "institutions", - "insiders", - "members" -]New value: +[ + "query", + "stocks", + "institutions", + "insiders", + "politicians" +]
2 tool updates
- Changed
get_congress_member5 fields changed- added
Input schema / properties / assetAdded value: +{ + "default": "listed", + "description": "Which assets to include: listed (default) = listed securities, that is stocks including ADRs, ETFs and options; stock = listed stocks and ETFs without options; option = options; other = Treasury bills and notes, municipal and corporate bonds, private companies, private funds, crypto and other assets; all = everything. The statistics and top tickers cover these assets.", + "enum": [ + "listed", + "stock", + "option", + "other", + "all" + ], + "type": "string" +} - added
Output schema / properties / assetAdded value: +{ + "description": "The assets that stats and top_tickers cover.", + "enum": [ + "listed", + "stock", + "option", + "other", + "all" + ], + "type": "string" +} - added
Output schema / properties / stats / properties / unlisted_tradesAdded value: +{ + "description": "Trades in bonds, private holdings and other assets that are not listed securities, whatever asset is.", + "type": "number" +} - changed
Output schema / properties / stats / requiredPrevious value: -[ - "trades", - "buys", - "sells", - "estimated_volume_usd", - "median_delay_days", - "late_trades", - "late_filings", - "filings", - "paper_filings", - "latest_filed_date" -]New value: +[ + "trades", + "buys", + "sells", + "estimated_volume_usd", + "median_delay_days", + "late_trades", + "late_filings", + "unlisted_trades", + "filings", + "paper_filings", + "latest_filed_date" +] - changed
Output schema / requiredPrevious value: -[ - "member", - "stats", - "top_tickers", - "note", - "url" -]New value: +[ + "member", + "asset", + "stats", + "top_tickers", + "note", + "url" +]
- Changed
get_congress_trades3 fields changed- added
Input schema / properties / assetAdded value: +{ + "default": "listed", + "description": "Which assets to include: listed (default) = listed securities, that is stocks including ADRs, ETFs and options; stock = listed stocks and ETFs without options; option = options; other = Treasury bills and notes, municipal and corporate bonds, private companies, private funds, crypto and other assets; all = everything.", + "enum": [ + "listed", + "stock", + "option", + "other", + "all" + ], + "type": "string" +} - added
Output schema / properties / filters / properties / assetAdded value: +{ + "enum": [ + "listed", + "stock", + "option", + "other", + "all" + ], + "type": "string" +} - changed
Output schema / properties / filters / requiredPrevious value: -[ - "chamber", - "party", - "type", - "filed_from", - "filed_to", - "traded_from", - "traded_to", - "sort" -]New value: +[ + "asset", + "chamber", + "party", + "type", + "filed_from", + "filed_to", + "traded_from", + "traded_to", + "sort" +]
7 tool updates
- Added
get_congress_member - Added
get_congress_trades - Changed
get_data_coverage6 fields changed- added
Output schema / properties / congressAdded value: +{ + "additionalProperties": false, + "properties": { + "earliest_filed_date": { + "type": [ + "string", + "null" + ] + }, + "latest_filed_date": { + "type": [ + "string", + "null" + ] + }, + "note": { + "type": "string" + } + }, + "required": [ + "earliest_filed_date", + "latest_filed_date", + "note" + ], + "type": "object" +} - added
Output schema / properties / last_successful_update / properties / congressAdded value: +{ + "type": [ + "string", + "null" + ] +} - changed
Output schema / properties / last_successful_update / requiredPrevious value: -[ - "sec_filings", - "tickers", - "cusip_mapping" -]New value: +[ + "sec_filings", + "tickers", + "cusip_mapping", + "congress" +] - removed
Output schema / properties / not_yet_availableRemoved value: -{ - "items": { - "type": "string" - }, - "type": "array" -} - added
Output schema / properties / ownershipAdded value: +{ + "additionalProperties": false, + "properties": { + "form144": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "earliest_filed_date": { + "type": "string" + }, + "latest_filed_at": { + "type": "string" + }, + "latest_filed_date": { + "type": "string" + } + }, + "required": [ + "earliest_filed_date", + "latest_filed_at", + "latest_filed_date" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "note": { + "type": "string" + }, + "schedule_13d": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "earliest_filed_date": { + "type": "string" + }, + "latest_filed_at": { + "type": "string" + }, + "latest_filed_date": { + "type": "string" + } + }, + "required": [ + "earliest_filed_date", + "latest_filed_at", + "latest_filed_date" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "schedule_13g": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "earliest_filed_date": { + "type": "string" + }, + "latest_filed_at": { + "type": "string" + }, + "latest_filed_date": { + "type": "string" + } + }, + "required": [ + "earliest_filed_date", + "latest_filed_at", + "latest_filed_date" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "schedule_13d", + "schedule_13g", + "form144", + "note" + ], + "type": "object" +} - changed
Output schema / requiredPrevious value: -[ - "website", - "sources", - "form4", - "f13", - "superinvestors", - "last_successful_update", - "update_schedule", - "not_yet_available", - "limits", - "docs_url", - "llms_txt_url" -]New value: +[ + "website", + "sources", + "form4", + "f13", + "superinvestors", + "ownership", + "congress", + "last_successful_update", + "update_schedule", + "limits", + "docs_url", + "llms_txt_url" +]
- Added
get_form144_notices - Added
get_major_holders - Added
get_ownership_filings - Changed
search3 fields changed- changed
Input schema / properties / query / descriptionPrevious value: -"Ticker, company, fund, manager or person name."New value: +"Ticker, company, fund, manager, person or member of Congress name, CIK or CUSIP." - added
Output schema / properties / membersAdded value: +{ + "items": { + "additionalProperties": false, + "properties": { + "bioguide": { + "type": "string" + }, + "chamber": { + "enum": [ + "house", + "senate" + ], + "type": "string" + }, + "district": { + "type": [ + "number", + "null" + ] + }, + "in_office": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "party": { + "type": [ + "string", + "null" + ] + }, + "state": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "bioguide", + "name", + "party", + "chamber", + "state", + "district", + "in_office", + "url" + ], + "type": "object" + }, + "type": "array" +} - changed
Output schema / requiredPrevious value: -[ - "query", - "stocks", - "institutions", - "insiders" -]New value: +[ + "query", + "stocks", + "institutions", + "insiders", + "members" +]
9 tool updates
- First observed
get_data_coverage - First observed
get_insider_lists - First observed
get_insider_trades - First observed
get_institution - First observed
get_stock - First observed
get_stock_13f_holders - First observed
get_superinvestor_activity - First observed
list_superinvestors - First observed
search
Related MCP Connectors
Stock market data for AI agents: real-time quotes, financials, options, SEC filings and news.
SEC EDGAR financials, insider trading, and economic data for AI agents. US GAAP + IFRS.
SEC filing intelligence for AI agents. Financials, screening, peer comparison for 5,000+ companies.
Normalized SEC EDGAR data for AI agents: XBRL financials, 10-K risk diffs, Form 4 insider trades.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceWall Street data feed for AI agents, providing access to 100M+ source-traced SEC records, institutional holdings, insider trades, congress trading, and more via MCP tools.MIT
- AlicenseNot gradedqualityCmaintenanceProvides AI agents with clean, normalized access to financial data including company fundamentals, insider trades, SEC filings, macro series from FRED, real-time quotes, and ETF holdings.MIT
- AlicenseAqualityAmaintenancePre-computed financial market intelligence for AI agents. Stocks, crypto, and ETFs.996 npm5MIT
- AlicenseNot gradedqualityBmaintenanceProvides US stock market data for AI agents, including intraday and daily bars, SEC fundamentals, filings, and insider data, with pay-per-query via USDC on Base.1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.