Equibles
Server Details
SEC filings, company financials, holdings, earnings calls, stock prices, options and macro data.
- Status
- Healthy
- Uptime
- 98.8% over 77 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- daniel3303/stock-market-mcp-server
- GitHub Stars
- 7
- Server Listing
- Equibles
TDQS
Scored across 136 tools
The set has extensive overlapping clusters, especially around ownership/13F, short interest/volume, insider activity, earnings-call analytics, and portfolio actions. Individual descriptions often cross-reference alternatives, but with 136 tools an agent still faces many same-domain choices where boundaries are not obvious from names alone.
Tool names consistently use PascalCase VerbNoun patterns such as GetShortInterest, ListFilings, SearchInstitutions, AddPortfolioLot, and ClosePortfolioLot. Minor singular/plural differences (GetWebDataFeed vs ListWebDataFeeds) do not break the predictable convention.
A 136-tool surface is far beyond a practical well-scoped toolset, even for a broad financial-data platform. The breadth creates selection burden and makes overlap management the dominant design problem.
Coverage is unusually broad: filings, financials, ownership, funds, insiders, macro, options, earnings calls, portfolios, IPOs, debt, buybacks, and government contracts are all represented. There are minor gaps such as a clear basic company/security profile lookup, but core workflows and CRUD lifecycles are largely covered.
Available Tools
136 toolsAddPortfolioLotAdd Portfolio LotAInspect
Record a user-confirmed purchase or sale in the caller's portfolio. Never infer or guess the instrument, quantity, price or date. For stock, pass ticker; a listing on another exchange is its MIC:TICKER symbol (e.g. XPAR:AIR, as ScreenStocks returns it). For an option, pass both its underlying ticker and verified OCC symbol; unknown or expired contracts are rejected. quantity is signed: positive for long shares/contracts, negative for short stock or written options. costPerUnit is always the positive per-share price or option premium, never the per-contract total, in the currency the listing trades in and in major units (London prices in pounds, not pence). Identical retries within the duplicate window return the existing lot instead of adding another.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Optional. A short note from the user about this lot, up to 256 characters. | |
| fxRate | No | Optional. The broker's exchange rate on the trade, as units of the portfolio's currency per 1 unit of the stock's trading currency (e.g. 0.92 for EUR per USD). Only when the user states it; omit to convert at the official rate on the trade date. | |
| ticker | Yes | Stock ticker, or MIC:TICKER for a listing on another exchange, e.g. XPAR:AIR. For an option, the UNDERLYING U.S. ticker, e.g. AAPL. | |
| quantity | Yes | Signed size: shares for a stock, contracts for an option. Negative for a short sale or a written option. | |
| portfolio | Yes | The portfolio to add to, by name. | |
| costPerUnit | Yes | Price per share, always positive: paid for a long, received for a short. For an option, the premium per share (a $3.20 contract is 3.20, not 320). In the currency the stock trades in, in major units: London prices in pounds, not pence. | |
| acquiredDate | Yes | The trade date, as yyyy-MM-dd. Cannot be in the future. | |
| optionContract | No | Optional. The OCC option symbol, e.g. O:AAPL260724C00110000. Provide it to record an option contract; omit it for shares. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (readOnly=false, destructive=false, openWorld=false); the description adds real behavioral detail beyond that: unknown or expired option contracts are rejected, and identical retries inside the duplicate window return the existing lot instead of creating another. That idempotency disclosure materially changes how an agent should retry.
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 action and the no-guessing rule are front-loaded, and nearly every sentence carries a distinct rule (symbol format, signed quantity, price convention, currency units, idempotency). It is a dense single block, however, so the option/stock and currency rules are harder to scan than they need to be.
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-parameter mutation tool with no output schema and no parent annotations beyond safety hints, the description covers validation behavior, currency handling, and duplicate-window semantics well. It does not describe permissions/authorization or what the successful response contains beyond the duplicate-retry case.
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 cross-cutting meaning the schema states only piecewise: quantity is signed (negative for short/written), costPerUnit is always the positive per-share/per-contract premium and never the per-contract total, and prices are in the listing's currency in major units (pounds not pence).
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 opens with a specific verb+resource+scope: 'Record a user-confirmed purchase or sale in the caller's portfolio.' It also implicitly separates itself from UpdatePortfolioLot/ClosePortfolioLot by framing the action as recording a new buy/sell rather than amending or closing an existing lot.
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 gives strong precondition guidance ('Never infer or guess the instrument, quantity, price or date') and per-instrument guidance (ticker for stock, underlying ticker + verified OCC symbol for options). It stops short of naming alternatives for correcting or removing an existing lot (UpdatePortfolioLot / RemovePortfolioLot).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ClosePortfolioLotClose Portfolio LotAInspect
Record that the USER sold (or covered, or let expire) all or part of a lot, at a price and on a date. The lot moves out of the open positions and its realized profit is kept. Ask the user for the closing price and date; never guess them from a market quote.
Closing PART of a lot splits it: the closed part keeps the original cost basis and the rest stays open on that same basis, so a later sale is still priced against what was actually paid.
An option that expired worthless closes at a price of 0. An option that was exercised or assigned closes here too, and the resulting shares are a separate AddPortfolioLot.
| Name | Required | Description | Default |
|---|---|---|---|
| lotId | Yes | The lot id shown by GetMyPortfolio, e.g. a1b2c3d4. | |
| quantity | No | Optional. How much of the lot to close, as a positive size. Omit to close all of it. | |
| closeDate | Yes | The closing date, as yyyy-MM-dd. Cannot be in the future or before the lot was acquired. | |
| portfolio | Yes | The portfolio holding the lot, by name. | |
| closePrice | Yes | Price per share received (or paid, to cover a short). Zero for an option that expired worthless. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false (mutation) and destructiveHint=false (not destructive). The description adds valuable context: 'The lot moves out of the open positions and its realized profit is kept.' It explains partial close splitting behavior and how options work. This goes beyond annotations and provides necessary behavioral disclosure.
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 well-structured: first paragraph states the primary action with a critical user instruction, second explains partial close behavior, third handles options edge cases. Every sentence adds value, no redundancy, and key information is front-loaded.
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 (partial close, options handling) and the absence of an output schema, the description covers the recording action, user interaction requirement, splitting behavior, and connection to AddPortfolioLot. A brief note on the expected response (e.g., confirmation or updated portfolio) would make it fully complete, but the current level is strong.
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 baseline is 3. The description adds meaning: clarifies that quantity is optional (omit to close all), closeDate cannot be future or before acquisition, and closePrice is per share received/paid (zero for expired worthless). This adds value beyond the schema's own descriptions, especially for the zero-price case and the partial close behavior.
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 clearly identifies the verb 'Record that the USER sold (or covered, or let expire)' and the resource 'all or part of a lot'. It distinguishes from siblings by noting that options exercised/assigned require a separate AddPortfolioLot for resulting shares, and implies a difference from RemovePortfolioLot by focusing on recording a sale with price and date.
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 provides explicit guidance: 'Ask the user for the closing price and date; never guess them from a market quote.' It explains how to handle options (expired worthless at price 0, exercised/assigned leads to AddPortfolioLot). While it does not explicitly list when not to use this tool versus RemovePortfolioLot or UpdatePortfolioLot, the context and examples are clear enough for correct usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
CompareFinancialFactCompare Financials Across CompaniesARead-onlyInspect
Compare one financial concept across several companies for the same fiscal period — peer comparison. Returns one row per ticker with the latest-restated value; tickers with no data for the period are listed separately. Fiscal year/period follow each company's OWN fiscal calendar (e.g. NVDA's fiscal 2025 ended January 2025), so peer rows can cover very different calendar months — check the Period End column.
| Name | Required | Description | Default |
|---|---|---|---|
| concept | Yes | Concept alias, e.g. 'revenue', 'net-income', 'eps-diluted'. Call with an unknown value to list supported aliases. | |
| tickers | Yes | Ticker symbols to compare (max 25); a listing on another exchange is MIC:TICKER (XPAR:AIR). | |
| fiscalYear | Yes | Fiscal year, e.g. 2023 | |
| fiscalPeriod | No | Fiscal period: 'FY' (default) or 'Q1'..'Q4' | FY |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, non-destructive safety profile, but the description adds genuinely non-obvious behavior: one row per ticker with the latest-restated value, tickers lacking data listed separately, and the critical caveat that each company's own fiscal calendar governs year/period so peer rows may span different calendar months. The Period End warning is exactly the kind of context 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?
Front-loads the core action and scope in the first clause, then layers return-shape and the fiscal-calendar caveat in descending priority. Every sentence carries distinct information with no 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 no output schema, the description carries the return-value burden and does so: it describes row granularity, the latest-restated semantics, missing-ticker handling, and the Period End column to inspect. Combined with the fiscal-calendar caveat, an agent has enough to call and interpret the tool 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 interpretation meaning: fiscalYear/fiscalPeriod are resolved against each company's own fiscal calendar (NVDA example), which changes how an agent should set and read those parameters. It stops short of adding per-parameter syntax beyond the schema.
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: compare one financial concept across several companies for the same fiscal period, and labels the use case (peer comparison). This clearly separates it from the single-company GetFinancialFact sibling by scope (several tickers vs one) without needing to open 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?
'Peer comparison' implies when the tool is appropriate, and the multiple-tickers framing suggests its context versus single-fact tools. However, it never explicitly names GetFinancialFact as the alternative or states when NOT to use this tool, leaving routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
CompareInstitutionPortfoliosPortfolio Overlap Between InstitutionsARead-onlyInspect
Compare two institutions' 13F portfolios on their latest common report date. Returns Jaccard and dollar-weighted overlap, portfolio totals, and shared or unique positions. Published values normally use report-date closing prices, may fall back to filer values, and can be zero when unavailable. Resolve filer names with SearchInstitutions. For mutual-fund or ETF NPORT portfolios, use GetFundProfile.
| Name | Required | Description | Default |
|---|---|---|---|
| maxResults | No | Maximum number of stocks to return (default: 30, clamped to 1-500) | |
| reportDate | No | Quarter-end 13F report date in YYYY-MM-DD format (defaults to the latest common quarter; an off-quarter date snaps to the nearest common report on or before it) | |
| institutionName1 | Yes | First institution name or CIK (a unique partial resolves; ambiguous partials return candidate CIKs) | |
| institutionName2 | Yes | Second institution name or CIK (a unique partial resolves; ambiguous partials return candidate CIKs) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the readOnlyHint annotation by disclosing operational nuances: published values normally use report-date closing prices, may fall back to filer values, and can be zero when unavailable. This is material behavioral context that an agent needs to interpret results correctly.
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?
Four sentences, each carrying distinct value: what the tool does, what it returns, how to interpret data caveats, and which sibling to use instead. The most important information is front-loaded and there is no filler or repetition of schema content.
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?
Despite having no output schema and minimal annotations, the description covers purpose, return values, data caveats, name resolution, and the key alternative tool. For a read-only comparison tool with four well-documented parameters, this is sufficient for an agent to select and 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 schema already fully documents all four parameters. The description adds some context about the 'latest common report date' and the fact that inputs are institution names, but it does not materially enrich parameter understanding beyond the schema. Baseline 3 is appropriate.
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 starts with a strong verb and resource: 'Compare two institutions' 13F portfolios' and specifies the exact output: Jaccard and dollar-weighted overlap, portfolio totals, and shared or unique positions. It also distinguishes itself from GetFundProfile for NPORT portfolios, making it clear what the tool is not for.
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 explicitly says to use SearchInstitutions for resolving filer names and to use GetFundProfile for mutual-fund or ETF NPORT portfolios instead. This gives clear routing guidance and tells the agent when this tool is appropriate versus when an alternative should be chosen.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
CreateMyPortfolioCreate My PortfolioAInspect
Create a new, empty portfolio in the USER's own Equibles account, then add holdings to it with AddPortfolioLot. Ask the user before creating one, since it is their account. Names are unique within an account, and re-creating a name that already exists is rejected rather than merged. Totals are reported in the portfolio's currency; each holding stays in the currency its listing trades in.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | A short name for the portfolio, e.g. Main or Retirement. | |
| currency | No | Optional. ISO code the totals are reported in: USD (default), EUR, GBP, CHF, DKK, NOK, SEK, CNY or HKD. Use the user's home currency. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and destructiveHint=false, so the mutation and safety profile is already known. The description adds genuinely new behavior: names are unique per account, duplicate names are rejected rather than merged, and totals are reported in the portfolio currency while holdings remain in their listing currency. It stops short of describing failure modes or response shape.
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?
Three tight sentences, front-loaded with the core action and workflow next step. The closing currency sentence overlaps somewhat with the schema's own parameter description, so it is slightly less efficient than it could be, but nothing is padding.
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 only two parameters, full schema coverage, and no output schema, the description supplies everything an agent needs to decide and call correctly: purpose, workflow handoff, confirmation requirement, and uniqueness constraint. Only the response/error behavior is left implicit.
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% and the schema already documents both name and currency, including the ISO-code list and default. The description's currency sentence largely restates the reporting semantics that the schema parameter description already carries, so the baseline 3 applies.
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 ('Create a new, empty portfolio') and scopes it to the user's own account, which cleanly separates it from siblings like GetMyPortfolio and DeleteMyPortfolio. It also names the follow-up tool AddPortfolioLot, so the agent understands its place in a workflow.
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 says what to do next ('add holdings to it with AddPortfolioLot') and adds an operational guardrail ('Ask the user before creating one, since it is their account'). That is a clear when-to-use plus a precondition, which is more than most definitions provide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
DeleteMyPortfolioDelete My PortfolioADestructiveInspect
Permanently delete one of the USER's own portfolios and every lot in it, open and closed. This cannot be undone and it destroys the recorded cost basis and realized-profit history. ALWAYS confirm with the user first, naming the portfolio and how many lots it holds. Call GetMyPortfolio if you do not already know.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The exact name of the portfolio to delete. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the destructiveHint=true annotation by detailing exactly what is destroyed: 'every lot in it, open and closed', and what is lost: 'recorded cost basis and realized-profit history'. It emphasizes irreversibility. No contradiction with 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?
Three concise sentences, each substantive. First sentence states action and scope, second explains consequences and irreversibility, third provides safety guidance. No wasted words.
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 has only one parameter, no output schema, and annotations are present, the description fully covers purpose, usage guidelines, behavioral transparency, and parameter context. The agent can confidently select and invoke this tool correctly after reading the description.
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 single parameter 'name' has 100% schema description coverage, stating it requires 'The exact name of the portfolio to delete'. The description adds only contextual emphasis (confirming the name) but no new semantic details beyond the schema. Baseline 3 is appropriate.
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 clearly states the verb 'permanently delete one of the USER's own portfolios and every lot in it', specifying the resource (portfolio) and scope (including lots). It distinguishes this tool from sibling tools like RemovePortfolioLot or AddPortfolioLot by mentioning deletion of the entire portfolio.
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 explicitly instructs the agent to 'ALWAYS confirm with the user first, naming the portfolio and how many lots it holds' and to call GetMyPortfolio if the number of lots is unknown. This provides clear contextual guidance on when and how to use the tool safely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetAllHoldersAll Holders of a StockARead-onlyInspect
Get every disclosed holder of a stock or ETF listing in one table: 13F institutions, Schedule 13D and 13G filers, insiders (Forms 3, 4, 5) and registered funds (N-PORT). The default view shows one row per holder from its freshest filing, with its other filings and the 13D/G, insider and fund disclosures its 13F report contains nested under it, matched by CIK and SEC reporting links, never by name. Shares are restated onto today's split basis, change is against the same holder's previous filing in the same source, and % Out is of shares outstanding. Funds are never summed: their shares sit inside their advisers' 13F reports. view=all lists every row flat, stale ones included; view=ultimate groups the summed holders under their ultimate parent and lists each parent's members with the link that put them there. Use GetOwnershipSummary for the totals.
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | default (one row per holder, others nested), all (every row flat, stale included) or ultimate (summed holders grouped by ultimate parent, members listed beneath) | default |
| offset | No | Number of ranked rows to skip before returning results (default: 0) | |
| source | No | Source to list: all (default), 13f, 13dg (13D and 13G), 13d, 13g, insider, fund or nonus (non-US disclosures a deployment adds). A single source lists its rows flat, stale ones flagged. | all |
| ticker | Yes | Listed security ticker (e.g., NVDA, VOO) | |
| maxResults | No | Maximum number of rows (holders, or parents for view=ultimate) to return (default: 25, clamped to 1-500) | |
| holderTypes | No | Holder types to keep, as an array of tokens: adv, era, ia, bank, ins, bd, fund, plan, nonus, hc, unk (insiders and holders without a deciding record read unk), e.g. ["bank"]. Types come from regulatory records, never names. Omit for all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover only the safety profile (readOnly, non-destructive, closed-world), and the description adds substantial behavior beyond that: holders are matched by CIK and SEC reporting links never by name, shares are restated onto today's split basis, change is versus the same holder's previous filing in the same source, % Out is of shares outstanding, and funds are never summed because their shares sit inside adviser 13F reports. These are non-obvious correctness rules an agent could not infer.
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 dense with substance; almost every clause carries a rule or a distinction. There is mild duplication with the schema on view/source definitions and the prose runs long as a single block, but it is not padded.
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 output schema and six parameters over a complex ownership domain, the description still conveys the shape of the result (one row per holder, nested filings, restated shares, change basis, % Out), the view/source modes, and the routing to GetOwnershipSummary for totals. Nothing essential for correct invocation 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 real semantics on top of the schema text — how the default view nests other filings and contained 13D/G, insider and fund disclosures, that view=all includes stale rows, and that view=ultimate lists each parent's members with the linking evidence. It does not add anything for offset/maxResults beyond the schema.
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 and enumerates exactly what 'holders' means (13F institutions, 13D/G filers, Forms 3/4/5 insiders, N-PORT funds), which is far more precise than the title alone. It only partially disambiguates from the crowded sibling set — GetOwnershipSummary is named, but GetTopHolders, GetHolderMix, GetBeneficialOwnership and GetFundsHoldingStock are not addressed.
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 for use and one explicit alternative ('Use GetOwnershipSummary for the totals'), plus in-line guidance on which view/source to pick. It stops short of stating when-not-to-use this versus the other holder-oriented siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetAnalystEstimatesAnalyst Consensus EstimatesARead-onlyInspect
Read analyst consensus forecasts for a company, including revenue, EPS, product, segment and operating metrics. Prefers consensus the company publishes itself through its investor-relations sources and falls back to a compiled consensus; every answer states which kind answered. Returns original units, accounting basis, mean/median/range/count labels, snapshot history and publication dates. Coverage varies by issuer. This reads stored verified data and never scrapes on demand.
| Name | Required | Description | Default |
|---|---|---|---|
| asOf | No | ISO-8601 UTC cutoff for a snapshot verified at or before this instant. | |
| limit | No | Maximum observations, default 25, range 1–100. | |
| metric | No | Exact source metric label; omit to read all metrics. | |
| offset | No | Zero-based observation offset, default 0, maximum 100000. | |
| period | No | Exact source forecast-period label; omit for all periods. | |
| ticker | Yes | Stock ticker symbol (e.g., SAP), or MIC:TICKER (e.g., XETR:SAP) for a listing outside the US. | |
| dimensions | No | Exact source dimension label; omit for all products and segments. | |
| snapshotId | No | Snapshot identifier from a previous response; omit for latest verified capture. | |
| snapshotOffset | No | Zero-based snapshot history offset; history is returned in pages of 10. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/destructive/openWorld annotations by disclosing provenance behavior (prefers IR consensus, falls back to compiled, and states which kind answered each time), that coverage varies by issuer, that output carries units/accounting basis/statistical labels, and that it reads stored verified data and never scrapes on demand.
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?
Four sentences, each earning its place, with the core read purpose front-loaded and provenance/return caveats following. Slightly dense but 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?
With no output schema, the description helpfully characterizes the return shape (units, accounting basis, mean/median/range/count labels, snapshot history, publication dates) and the coverage caveat. Only the absence of alternative-tool guidance keeps it from full completeness.
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 the schema already documents all nine parameters, including asOf, snapshotId, and the snapshot/metric/period/dimension labels. The description adds no syntax or defaults beyond that, so the baseline of 3 applies.
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 ('Read') and resource ('analyst consensus forecasts for a company') with the exact metric families covered (revenue, EPS, product, segment, operating). This clearly distinguishes it from estimation-adjacent siblings like GetGuidance, GetValuationMultiples, and GetCompanyKpis.
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 explains the internal preference logic (IR-published consensus over a compiled fallback), which implies when it's useful, but it gives no explicit when-to-use/when-not or comparison against competing siblings such as GetGuidance or GetFinancialFact. Usage is implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetAtmProgramsAt-the-Market Offering ProgramsARead-onlyInspect
Get a company's at-the-market (ATM) equity offering programs — original agreement date and stated precision, latest amendment, money and/or share capacity, cumulative sales, remaining availability with per-figure as-of dates, expiry, derived exhausted/expired status, and source filings. Bare table figures are normalized only from an exact grounded filing scale header. ATM programs have no tagged XBRL equivalent, so figures come from verified extractions of the company's own 10-K, 10-Q and 8-K filings; only filings from roughly the last 13 months are scanned, so an empty result means no program was captured there — not proof the company runs no ATM program. Nothing is estimated.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker symbol (e.g., AAPL, MSFT). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation openWorldHint=false implies the tool returns complete results, while the description explicitly states that only the last ~13 months of filings are scanned and an empty result is not proof of absence. This is a direct contradiction, so per rubric transparency is 1. Despite extensive additional detail about normalization and estimation, the contradiction makes the description unreliable.
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 long but every sentence adds value: return field list, normalization caveat, source/coverage limitation, and estimation disclaimer. It's front-loaded with the core purpose and logically structured, with no wasted words.
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 complex financial data tool with no output schema and minimal parameter schema, the description is exceptionally complete. It lists all output components, explains the source filings (10-K, 10-Q, 8-K), the time-window limitation, and the confidence level. The only minor gap is explicit response format, but it's not necessary given the field enumeration.
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 only parameter, ticker, is fully described in the schema with examples and 100% coverage. The description doesn't add parameter-level detail, but none is needed for this self-evident parameter. Baseline 3 is appropriate.
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 clearly states 'Get a company's at-the-market (ATM) equity offering programs' and enumerates specific returned fields (agreement date, capacity, sales, availability, status, source filings). This is a specific verb+resource statement that distinguishes it from sibling tools like GetBuybackPrograms by focusing on ATM offerings.
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 provides clear usage context, explaining the 13-month filing scan window and warning that an empty result does not prove the company runs no ATM program. It also explains the data source and XBRL limitation, helping an agent interpret results appropriately. However, it doesn't explicitly name alternative tools or state when-not-to-use, but the caveats are sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetAverageTrueRangeAverage True Range (ATR)ARead-onlyInspect
Average True Range (ATR) for a stock. Wilder's volatility measure built from the True Range (max of high-low, |high-prev_close|, |low-prev_close|) and smoothed recursively. Higher ATR means wider daily moves; commonly used for position sizing and stop placement. ATR is denominated in the stock's price units (USD for a US listing, the listing's own quote unit otherwise). The smoothing is warmed up on price history fetched before startDate, so values do not depend on the requested range's left edge.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Smoothing window (default: 14) | |
| ticker | Yes | Stock ticker symbol (e.g., AAPL, MSFT). Class shares use a dash (BRK-B); the dot form (BRK.B) is also accepted. A listing on another exchange is MIC:TICKER (XPAR:AIR). | |
| endDate | No | End date in YYYY-MM-DD format (defaults to latest available) | |
| startDate | No | Start date in YYYY-MM-DD format (defaults to 6 months ago) | |
| maxResults | No | Maximum number of records to return (default: 60, max: 500); the newest rows are kept and listed newest first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds genuinely non-obvious behavior: results are denominated in the listing's quote unit, and smoothing is warmed up on pre-startDate history so values are independent of the requested range's left edge.
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-loads the definition, then interpretation, then units, then a subtle warm-up caveat. Dense but each sentence earns its place; the parenthetical formula is slightly verbose for a definition field but still informative.
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 single-indicator read tool with a fully-documented schema and no output schema, the description covers computation, interpretation, unit denomination, and warm-up semantics. It omits what the returned records look like (a date-ordered ATR series) and pagination/range limits, but those are largely implied by maxResults and the date params.
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 the schema already documents ticker formats, date defaults, period, and maxResults ordering. The description's warm-up note implicitly clarifies startDate behavior, but adds no new parameter-level syntax beyond the schema baseline.
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 (ATR computation for a stock), gives the underlying formula and Wilder smoothing, and is clearly distinguishable from sibling technical-indicator tools like GetBollingerBands and GetStochasticOscillator.
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 supplies implied usage context ('commonly used for position sizing and stop placement'), which helps an agent decide relevance, but it never states when to prefer this over siblings or what conditions select it. No explicit alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetBeneficialOwnershipStock 13D and 13G FilersARead-onlyInspect
Get the Schedule 13D and 13G beneficial-ownership record of a stock or ETF listing: each filer's latest 13D or 13G, its event date, the block's shares (restated onto today's split basis) and percent of class, the change since the filer's previous 13D or 13G, and every reporting person on the cover pages with their own amount, percent and sole or shared voting and dispositive power. Reporting persons on one filing each claim the same block, so never add them together. Largest block first.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | Number of filers to skip before returning results (default: 0) | |
| ticker | Yes | Listed security ticker (e.g., NVDA, BRK-B) | |
| maxResults | No | Maximum number of filers to return (default: 20, clamped to 1-500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, destructiveHint=false, so safety is covered. The description adds real behavioral value beyond that: shares are restated onto today's split basis, the change is computed against the filer's previous 13D/13G, results are ordered largest block first, and reporting persons on one filing must not be summed. Pagination behavior for offset/maxResults is left to 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 purpose is front-loaded in the opening clause and the trailing sentences carry high-value caveats rather than filler. The field enumeration is dense but every clause names a returned attribute, so little could be cut without losing information.
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?
There is no output schema, so the description correctly carries the return-value burden and does so thoroughly – listing the per-filer fields and the cover-page reporting-person fields. The only gaps are pagination/result-count behavior, which the schema already covers, and no explicit note on empty results when a ticker has no 13D/13G filings.
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% – ticker, offset, and maxResults are each documented in the schema, including the 1-500 clamp and default. The description adds no parameter syntax, format, or edge-case meaning beyond what the schema already provides, so the baseline 3 applies.
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 (Schedule 13D/13G beneficial-ownership records for a stock or ETF listing) and enumerates the exact payload: filer, event date, split-adjusted block, percent of class, change since prior filing, and cover-page reporting persons. This clearly separates it from sibling 13F/insider tools such as GetInsiderOwnership, GetInstitutionalOwnershipHistory, and GetTopHolders.
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 is implied rather than stated: an agent can infer you call it with a ticker to see 13D/13G filers, and the 'never add them together' rule is genuinely useful interpretation guidance. However, no sibling alternative is named and no when-not condition is given, so the agent must still decide on its own between this and the various other ownership tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetBollingerBandsBollinger BandsBRead-onlyInspect
Bollinger Bands for a stock. A middle band (simple moving average of close) with upper and lower bands set a number of standard deviations above and below it. Bands widen when volatility rises and contract when it falls; price touching the upper/lower band is a common overbought/oversold cue. Includes %B ((close-lower)/(upper-lower)) and bandwidth ((upper-lower)/middle) columns. The moving-average window is warmed up on price history fetched before startDate, so values do not depend on the requested range's left edge.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Moving-average window (default: 20) | |
| stdDev | No | Standard deviations for the upper/lower bands (default: 2) | |
| ticker | Yes | Stock ticker symbol (e.g., AAPL, MSFT). Class shares use a dash (BRK-B); the dot form (BRK.B) is also accepted. A listing on another exchange is MIC:TICKER (XPAR:AIR). | |
| endDate | No | End date in YYYY-MM-DD format (defaults to latest available) | |
| startDate | No | Start date in YYYY-MM-DD format (defaults to 6 months ago) | |
| maxResults | No | Maximum number of records to return (default: 60, max: 500); the newest rows are kept and listed newest first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the bar is lower. The description still adds genuinely useful behavior: the warm-up on price history fetched before startDate means values are stable regardless of the requested range's left edge, plus the exact output columns (%B, bandwidth). That is real context beyond the 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?
Reasonably front-loaded, but a full sentence is spent on general indicator education (bands widen when volatility rises, touching bands is an overbought/oversold cue) that does not help an agent select or call the tool. The warm-up note is the only sentence that clearly earns its place.
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 output schema, the description correctly compensates by naming the returned columns (%B, bandwidth, bands). All six parameters are documented in the schema, and the warm-up caveat removes a subtle correctness pitfall. Only the absence of routing guidance against siblings keeps it from a 5.
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 period, stdDev, ticker, dates and maxResults, making 3 the baseline. The description clarifies the derived columns and the date-warmup semantics, but adds nothing about period/stdDev syntax or date formatting beyond what the schema states.
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 (Bollinger Bands for a stock) and even defines the computation (SMA of close plus upper/lower bands at N standard deviations). An agent knows exactly what it gets. However, it never distinguishes itself from the sibling technical indicators (GetAverageTrueRange, GetStochasticOscillator, GetOnBalanceVolume), so it stops short of a 5.
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 explains what the indicator means but never says when to reach for it versus the other technical-indicator siblings or GetStockPrices. The overbought/oversold remark is interpretive background, not routing guidance, and there are no prerequisites or exclusions stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetBuybackProgramsShare Repurchase ProgramsARead-onlyInspect
Get a company's share-repurchase (buyback) picture: tracked repurchase programs (announcement date, authorized total, remaining availability, expiry, source filings), the latest program-authorization figures, and the repurchase history — cash spent, shares repurchased, and average price per fiscal year and recent quarters. Figures come from the company's own XBRL facts plus verified extractions of filings' narrative text; nothing is estimated, and figures a company stopped restating carry an explicit staleness label. For the dilution mirror-image — at-the-market (ATM) equity offering programs — use GetAtmPrograms.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker symbol (e.g., AAPL, MSFT). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description aligns with these. It adds valuable context beyond the annotations: data sources (XBRL facts + verified filing extractions), the 'nothing is estimated' guarantee, and explicit staleness labeling for non-restated figures.
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?
Three sentences are used, and each earns its place: the first enumerates outputs, the second explains data provenance and staleness, and the third names the alternative tool. It is somewhat dense, but appropriately so for a complex data retrieval 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?
Even without an output schema, the description thoroughly covers what the agent will receive: program details, authorization figures, history fields (cash spent, shares, average price), and data provenance. The staleness label and explicit sibling reference complete the picture for a single-ticker read-only tool.
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?
There is only one parameter, ticker, and the input schema already describes it clearly ('Stock ticker symbol (e.g., AAPL, MSFT)'), giving 100% schema coverage. The description does not add specific parameter-level semantics, but none are needed given the schema's completeness.
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 uses a specific verb ('Get') and clearly identifies the resource: a company's share-repurchase picture, including tracked programs, authorization figures, and repurchase history. It explicitly differentiates from the sibling GetAtmPrograms by naming the at-the-market mirror image.
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 final sentence explicitly directs the agent to GetAtmPrograms when ATM equity offerings are the focus, providing a clear alternative. It also gives context that figures come from XBRL facts and document extractions, helping the agent judge when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetCftcPositioningCFTC Futures Positioning (COT)ARead-onlyInspect
Get Commitments of Traders (COT) positioning data for a specific futures contract. Shows commercial and non-commercial positions over time. Values are contract counts from the legacy futures-only COT report (positions as of each Tuesday, published Friday). Use SearchCftcMarkets to find available market codes.
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | No | End date in YYYY-MM-DD format (defaults to latest available) | |
| startDate | No | Start date in YYYY-MM-DD format (defaults to 1 year ago) | |
| marketCode | Yes | CFTC market code, common contract name, or standard futures symbol (e.g., 067651, WTI, ES, Gold futures) | |
| maxResults | No | Maximum number of reports to return (default: 52, max: 500). When the range holds more reports the newest are kept; rows are always listed oldest to newest. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and non-destructive behavior. The description adds valuable context about the data source (legacy futures-only COT report), the reporting schedule (as of Tuesday, published Friday), and that values are contract counts, enhancing expectations 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 concise, three sentences, with the purpose front-loaded in the first sentence. Every sentence adds value—purpose, data characteristics, and a pointer to a related tool—with no unnecessary words.
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 absence of an output schema, the description conveys the essential output characteristics (positions over time, contract counts, futures-only report). It could more explicitly describe the response format or number of reports returned, but the provided context is largely sufficient for a capable agent.
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 schema descriptions cover all four parameters with 100% coverage, so the description adds little beyond the structured data. It does suggest using SearchCftcMarkets to obtain marketCode values, which is a minor useful hint, but this aligns with the baseline 3.
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 clearly states the tool retrieves COT positioning data for a specific futures contract and explains it shows commercial and non-commercial positions over time. It does not explicitly differentiate from the sibling GetLatestCftcData, but the purpose is specific and unambiguous.
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?
Provides clear context for when to use this tool (historical COT positions for a specific contract) and explicitly directs users to SearchCftcMarkets for finding market codes. No exclusions are stated, but the intended use case is evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetCompanyKpisCompany KPIsARead-onlyInspect
Get company-stated operational and non-GAAP KPIs extracted from written 8-K earnings releases and 10-K/10-Q MD&A, with period, filing date, source quote and exactly comparable year-over-year change. Omit metric for each series' latest reading; pass a company metric label for its full history. Values retain the company's stated scale. Earnings-call transcripts are not figure sources. A disclosed GAAP-to-non-GAAP reconciliation includes its stated bridge.
| Name | Required | Description | Default |
|---|---|---|---|
| metric | No | Optional metric name to expand into its full history (e.g., 'subscribers', 'Adjusted EBITDA'). Matches the company's own metric labels case-insensitively; when the name matches several metrics the tool lists those candidates. Omit for the overview of every metric's latest reading. | |
| ticker | Yes | Stock ticker symbol (e.g., AAPL, MSFT). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral detail: values retain the company's stated scale, GAAP-to-non-GAAP reconciliation includes its stated bridge, and transcripts are not sources. These details explain what the tool does and does not return beyond the schema, enriching the agent's mental model without contradicting 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 dense but efficient, with every sentence earning its place. It front-loads the core purpose, then details the parameter-dependent output, and ends with two important constraints (transcripts not sources, reconciliation bridge). There is zero fluff, and the structure leads with the most critical information for an agent deciding whether to use 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?
The tool has no output schema, so the description must explain the return format. It does: 'period, filing date, source quote and exactly comparable year-over-year change.' It also specifies the scale handling and reconciliation behavior. While it doesn't mention pagination or limits, the tool is a read-only lookup with only two parameters and the description covers the essential facets an agent needs 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% and the schema already describes the parameters, but the description goes further. It explains the metric parameter's behavior in detail: matching case-insensitively, listing candidates when multiple metrics match, and omitting for the latest reading. It also clarifies that values retain the company's stated scale, which is a semantic nuance not fully captured by the schema. This adds significant meaning beyond the structured fields.
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 states a specific verb ('Get'), a precise resource ('company-stated operational and non-GAAP KPIs extracted from written 8-K earnings releases and 10-K/10-Q MD&A'), and details the output fields (period, filing date, source quote, YoY change). It also distinguishes itself from related tools by explicitly limiting sources to written filings, not transcripts or other data types, so an agent can separate it from siblings like GetEarningsCallTranscript or GetNonGaapBridge.
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 gives clear context about when to use the tool (to get company-stated KPIs from written filings) and an explicit exclusion: 'Earnings-call transcripts are not figure sources.' It provides a 'when-not' but does not name specific alternative tools for transcript-based data, so it stops short of a full 5. The parameter usage guidance (omit metric for latest reading, pass metric for history) also informs when to call with or without the metric.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetCongressionalTradesCongressional Trades by StockARead-onlyInspect
Get congressional securities transactions for a specific ticker (newest first, last year by default). Shows which members of Congress reported a purchase or sale, with transaction and filing dates; amounts are disclosed ranges, not exact values, and Asset identifies the filed instrument (such as stock, option, or bond). Use GetMemberTrades for one member's transactions across all tickers.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | Number of matching trades to skip before returning rows (default: 0) | |
| ticker | Yes | Listed security ticker (e.g., AAPL, VOO, MSFT) | |
| endDate | No | End date in YYYY-MM-DD format (defaults to today) | |
| startDate | No | Start date in YYYY-MM-DD format (defaults to 1 year ago) | |
| maxResults | No | Maximum number of trades to return (default: 50, max: 500, newest first) | |
| transactionType | No | Filter by transaction type: Purchase or Sale; the synonyms Buy/Sell are accepted (defaults to all) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only, and the description adds several useful behavioral details: results are newest first, the default lookback is one year, transaction amounts are disclosed ranges rather than exact values, and Asset refers to the filed instrument type. These are exactly the kind of behavioral nuances that prevent misinterpretation beyond what 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?
Three sentences, no filler, with the core action and defaults front-loaded before the alternative routing. Every sentence earns its place.
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 there is no output schema, the description compensates well by describing what the response contains: members of Congress, transaction and filing dates, amount ranges, and the Asset field. Combined with thorough parameter schemas and a clear sibling pointer, nothing essential is missing for correct invocation and interpretation.
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 the baseline is 3 because the schema already documents all parameters clearly. The description adds little beyond what the schema states; it echoes 'specific ticker' and 'last year by default' but does not materially enhance understanding of offset, maxResults, or transactionType.
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 states a specific verb and resource: getting congressional securities transactions for a specific ticker. It also clearly differentiates from the sibling GetMemberTrades by scoping this tool to one ticker, so an agent can select it without inspecting 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 explicitly names GetMemberTrades as the alternative for one member's transactions across all tickers, giving a clear routing condition. This tells the agent when to use this tool versus that sibling, which is strong usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetCustomerConcentrationCustomer Concentration RiskARead-onlyInspect
Get a company's customer-concentration risk disclosure — statements like "one customer accounted for 31% of revenue": each disclosed figure's basis (revenue or receivables), customer count, percentage, and period, with the source filing. Untagged disclosures come from verified narrative extraction with a verbatim quote; issuers that tag ConcentrationRiskPercentage in structured XBRL (e.g. NVDA, AAPL) return those customer-specific dimensioned facts directly. A miss is never a statement of no risk. Pass maxFilings > 1 to also see earlier filings' disclosures (the concentration trend).
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker symbol (e.g., AAPL, MSFT). | |
| maxFilings | No | How many of the newest disclosing filings to return (default 1 — the latest; cap 10). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behavioral traits beyond the annotations: it explains the two data sources (XBRL-tagged vs narrative extraction with verbatim quotes), clarifies that a 'miss is never a statement of no risk,' and describes the trend functionality with maxFilings. This adds significant context that is not captured in the readOnlyHint or destructiveHint 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 concise at roughly 4 sentences, with no filler. It is front-loaded with the core purpose, then efficiently covers data sources, interpretation of results, and parameter guidance. Each sentence serves a distinct purpose without redundancy.
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?
Despite having no output schema, the description provides a comprehensive picture of what the tool returns: example of the disclosure, fields included (basis, customer count, percentage, period, source filing), and the difference between XBRL and narrative extraction. It also notes the important caveat about misses and the trend option. This is sufficient for an agent to understand and invoke the tool 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?
Both parameters have descriptions in the schema (100% coverage). The description adds value by explaining the use case for maxFilings (>1 shows concentration trend), which goes beyond the schema's description of 'how many of the newest disclosing filings to return.' This extra context helps the agent decide when to adjust the parameter.
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 clearly states the tool retrieves a company's customer-concentration risk disclosure, specifying the types of data returned (percentage, basis, customer count, period, source filing). It distinguishes from siblings like GetFinancialFact by focusing on this specific risk and mentioning examples (NVDA, AAPL) and the use of XBRL vs narrative extraction.
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 provides clear context for when to use the tool (to get customer concentration risk) and gives explicit guidance on the maxFilings parameter ('Pass maxFilings > 1 to also see earlier filings' disclosures'). However, it does not explicitly mention when not to use this tool or suggest alternative tools for related queries, such as GetFinancialFact for general financial data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetDebtInstrumentDebt Instrument DetailARead-onlyInspect
Get one durable debt instrument by its Equibles identifier. Returns current balances, linked filing observation, verified covenant bullets, exact source quotes, and governing or amending SEC documents. History, covenants, and documents are independently paged. Use GetDebtProfile first to obtain the instrument identifier.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker symbol (e.g., AAPL, MSFT), or MIC:TICKER (e.g., XPAR:AIR) for a listing outside the US. | |
| maxHistory | No | Maximum filing-history rows to return (default 10, max 10). | |
| instrumentId | Yes | Debt instrument identifier returned by GetDebtProfile. | |
| maxCovenants | No | Maximum covenant rows to return (default 10, max 10). | |
| maxDocuments | No | Maximum governing/update documents to return (default 10, max 10). | |
| historyOffset | No | Zero-based filing-history offset for paging. | |
| covenantOffset | No | Zero-based covenant offset for paging. | |
| documentOffset | No | Zero-based document offset for paging. | |
| evidenceOffset | No | Zero-based character offset into the exact evidence for these history and covenant pages. | |
| maxEvidenceCharacters | No | Maximum exact-evidence characters to return for these history and covenant pages (default 0, max 12000). Use a positive value to read evidence losslessly in character pages. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: it discloses the shape of the payload (balances, covenant bullets, exact quotes, SEC documents) and that history, covenants, and documents page independently, which tells the agent the response is multi-section and paginated.
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?
Three sentences, no filler. The identity/return summary is front-loaded, the paging caveat follows, and the prerequisite is stated last as an actionable next step. Every sentence carries distinct information.
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 10-parameter read tool with no output schema, the description supplies the missing pieces: what the response contains, that it is three independently paged sections, and how to obtain the required identifier. There is no output schema, so enumerating return content is the correct use of the description.
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 would be warranted on its own. The description earns above baseline by clarifying that the three collections are paged independently, which explains why there are separate offset/max pairs for history, covenants, and documents rather than a single paging control.
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 ('Get one durable debt instrument by its Equibles identifier') and enumerates the returned content. It clearly distinguishes itself from the sibling GetDebtProfile by positioning that tool as the identifier source rather than a substitute.
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 names the prerequisite flow ('Use GetDebtProfile first to obtain the instrument identifier' and that the id is 'returned by GetDebtProfile'), which is exactly the routing an agent needs. It stops short of stating when-not to use it or what to do if the identifier is unknown, so it is strong but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetDebtProfileCompany Debt ProfileARead-onlyInspect
Get a company's source-linked reported debt balances, total debt history, and identified notes, loans, and revolving credit facilities. The latest annual report establishes the baseline; subsequent interim reports and event disclosures update durable instrument records instead of creating a new instrument from a similar-looking row. Results summarize each instrument and provide its ID; use GetDebtInstrument for paged covenants, filing observations, exact evidence, and governing SEC exhibits. Unmatched observations are disclosed and excluded.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | Zero-based instrument offset for paging (default 0, max 100000). | |
| ticker | Yes | Stock ticker symbol (e.g., AAPL, MSFT), or MIC:TICKER (e.g., XPAR:AIR) for a listing outside the US. | |
| maxResults | No | Maximum instruments to return (default 25, max 25). | |
| evidenceOffset | No | Zero-based character offset into the selected company-reported totals' exact evidence. | |
| maxReportedTotals | No | Maximum company-reported totals to return (default 10, max 10). | |
| reportedTotalOffset | No | Zero-based company-reported-total offset for paging. | |
| maxEvidenceCharacters | No | Maximum exact-evidence characters to return for the selected company-reported totals (default 0, max 12000). Use a positive value to read evidence losslessly in character pages. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds genuine behavioral context beyond that: the annual-report baseline, that interim reports update durable instrument records rather than duplicating, and that unmatched observations are disclosed but excluded. It stops short of describing pagination/return-size behavior, so a 4 rather than 5.
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?
Three sentences, front-loaded with purpose, then data-update semantics, then sibling routing. Dense but every clause earns its place; minor density in the middle sentence keeps it from a 5.
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?
No output schema exists, but the description summarizes the return shape ('Results summarize each instrument and provide its ID'). Combined with full schema coverage and annotations covering safety, the definition is nearly complete; only explicit paging/evidence-reading guidance is left implicit.
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 all seven paging/evidence parameters are already documented in the schema. The description adds no parameter-level syntax or format detail; the 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 verb and resource ('Get a company's source-linked reported debt balances, total debt history, and identified notes, loans, and revolving credit facilities') and explicitly distinguishes itself from the sibling GetDebtInstrument. An agent can tell what this tool returns 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?
Names the alternative tool and the exact condition for using it: 'use GetDebtInstrument for paged covenants, filing observations, exact evidence, and governing SEC exhibits.' This is explicit when-to-use routing, not inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetDividendHistoryDividend HistoryARead-onlyInspect
Get the stored declared cash dividends of an exact stock or ETF listing, newest first. Each row gives the ex-dividend date and cash amount per share: in USD for a US listing, and in the listing's trading currency for a listing on another exchange (MIC:TICKER). Date filters apply to the ex-dividend date. Future ex-dates can appear after a dividend is declared. Each listing reports its own payments: a share class (BRK-A beside BRK-B) or a fund series sharing its trust's filer (SCHD beside FNDA) never inherits another listing's dividends.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | Number of newest matching records to skip for pagination (default: 0). | |
| ticker | Yes | Listed stock or ETF ticker (e.g., AAPL, BRK-A, SCHD); a listing on another exchange is MIC:TICKER (XPAR:AIR). | |
| endDate | No | Optional latest ex-dividend date in YYYY-MM-DD format. | |
| startDate | No | Optional earliest ex-dividend date in YYYY-MM-DD format. | |
| maxResults | No | Maximum number of records to return (default: 20, max: 500). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds substantial behavioral context beyond that: currency handling per exchange, that date filters bind to the ex-dividend date, that future ex-dates may appear post-declaration, and the non-inheritance rule across share classes and fund series. This is genuinely useful value, though it omits pagination/return-format notes.
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 action, then the return format, then the semantics and edge cases. Sentences are dense but each carries distinct information; the listing-isolation rule is verbose but earns its place by preventing a common misinterpretation.
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 output schema, the description carries the burden of describing returns and does so (ex-div date + cash amount per share, ordering, currency). Safety is covered by annotations. Only minor gaps remain around pagination behavior, which offset/maxResults in the schema partially address.
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. The description goes further by explaining that startDate/endDate filter on the ex-dividend date specifically and how the ticker format (MIC:TICKER) works, adding meaning beyond the schema's field descriptions.
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: 'Get the stored declared cash dividends of an exact stock or ETF listing, newest first.' The scope (declared cash dividends, exact listing, newest-first ordering) is precise enough that an agent can distinguish it from siblings like GetStockPrices or GetFundProfile 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?
It clarifies scope and edge cases (per-listing isolation, future ex-dates) but never explicitly says when to choose this tool over a sibling or names an alternative. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetEarningsBriefEarnings BriefARead-onlyInspect
Get the AI 'Earnings Brief' for a company's recent earnings calls — a verifier-approved TL;DR, bullish and bearish points, and verbatim pull-quotes, plus a deterministic narrative shift against the immediately older available approved brief. When available, it also shows company guidance issued at the call, how that range changed from management's prior update, and the reported quarter versus the operative company guidance that preceded it. This is company guidance, not analyst consensus; actual comparisons use filed GAAP XBRL facts, never estimates. The shift is derived from approved bullets and is not separately verifier-approved. Newest quarter first. Only calls with an approved brief appear, so quarters can be missing from the sequence.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of quarterly briefs to return, newest first (default 2, max 8; values outside 1-8 are clamped) | |
| ticker | Yes | Company ticker symbol (e.g., AAPL, MSFT), or MIC:TICKER (e.g., XPAR:AIR) for a listing outside the US. | |
| fiscalYear | No | Company fiscal year. Omit both period fields for newest briefs; year alone filters that fiscal year. | |
| fiscalQuarter | No | Company fiscal quarter, 1-4. Quarter alone filters that quarter across fiscal years; both fields select an exact period. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Well beyond the annotations, the description discloses provenance and caveats an agent must know: the brief is verifier-approved, the narrative shift is NOT separately verifier-approved, guidance is company guidance rather than analyst consensus, and comparisons use filed GAAP XBRL facts and never estimates. It also warns that quarters can be missing from the sequence when no approved brief exists.
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 what the tool returns, then caveats. Each sentence carries distinct information (content, guidance behavior, provenance limits), though the single dense paragraph packs a lot and could be split for scanability.
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 output schema and four parameters, the description fully covers what is returned, the trust level of each component, the comparison methodology, and the sparse-data caveat. An agent has everything needed to call it correctly and interpret the result.
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 already 100%, so the baseline is 3, but the description adds real meaning: 'Newest quarter first' corroborates ordering intent behind limit, and 'quarters can be missing from the sequence' explains why fiscalYear/fiscalQuarter filtering may return gaps. It adds context without restating field syntax.
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 verb and resource ('Get the AI Earnings Brief for a company's recent earnings calls') and enumerates the exact payload — verifier-approved TL;DR, bullish/bearish points, verbatim quotes and a derived narrative shift. That content profile makes it distinguishable from near-siblings like GetEarningsCallTranscript, GetEarningsCallToneAndThemes and GetGuidance without needing to name them.
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 is implied rather than stated: 'Only calls with an approved brief appear' and 'Newest quarter first' hint at when results will be sparse, but it never says when to prefer this over GetEarningsCallTranscript, GetEarningsCallToneAndThemes or GetGuidance. No explicit when/when-not or alternative routing is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetEarningsCallEventEarnings Call EventARead-onlyInspect
Get the earnings-call event for a company's fiscal quarter: one record grouping the call's audio, transcript, slide deck and 8-K earnings release. Returns the event id, title, call date, status, each artefact's status (available, pending, notPublished, failed, notAttempted, noCallHeld) with its reason and capture times, the transcript and release document ids, and approved guidance rows from the 8-K. Omit the fiscal period for the latest call; read the transcript with GetEarningsCallTranscript.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Company ticker symbol (e.g., AAPL, MSFT), or MIC:TICKER (e.g., XPAR:AIR) for a listing outside the US. | |
| fiscalYear | No | Company fiscal year. Omit both period fields for the latest call; year alone selects the latest call in that fiscal year. | |
| fiscalQuarter | No | Company fiscal quarter, 1-4. Quarter alone selects the latest matching quarter across fiscal years; provide both fields for an exact period. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safe read-only, closed-world profile, so the description's job is to add context beyond that, and it does: it enumerates the artefact status vocabulary (available, pending, notPublished, failed, notAttempted, noCallHeld) with reasons and capture times. It doesn't discuss pagination, auth requirements, or rate limits, but for a read tool that is a minor omission.
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 return contents, then usage notes; no filler sentences. The return-value enumeration is dense but earns its place because there is no output schema, and it is organized rather than rambling.
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 output schema, the description carries the return-value burden itself and does so thoroughly, covering identifiers, dates, statuses, document ids, and guidance rows. Combined with the parameter rules and the cross-reference to GetEarningsCallTranscript, an agent has everything needed to call and interpret this tool.
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% and the schema already explains ticker format, the year/quarter combination rules, and the omit-both-for-latest behavior. The description's 'Omit the fiscal period for the latest call' largely restates the schema, adding little new parameter meaning, so the baseline 3 applies.
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 ('Get the earnings-call event for a company's fiscal quarter') and immediately clarifies what the record is: one grouping of audio, transcript, slide deck and 8-K. It names the sibling it is not (GetEarningsCallTranscript), so an agent can separate it from the other GetEarningsCall* tools without opening a 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 concrete operating guidance ('Omit the fiscal period for the latest call') and routes the agent to the correct follow-up tool for transcripts. It stops short of stating explicit when-not-to-use conditions versus the other earnings-call siblings (Questions, Tone and Themes, Theme History), but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetEarningsCallQuestionsEarnings Call Analyst QuestionsARead-onlyInspect
Get the analyst questions asked in a call's Q&A, one entry per analyst turn at the microphone, follow-ups included: the analyst and firm, the full question text, who answered, the turn range to read the exchange with GetEarningsCallTranscript or GetInvestorEventTranscript, and audio offsets for calls transcribed from audio. Names appear only for trusted identity resolutions. Pass a ticker with an optional fiscal period, or an eventId.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | No | Company ticker symbol (e.g., AAPL, MSFT), or MIC:TICKER (e.g., XPAR:AIR) for a listing outside the US. Required unless eventId is given. | |
| eventId | No | Investor event id from ListInvestorEvents or GetEarningsCallEvent; reads any event's Q&A, conferences included. When given, ticker and fiscal period are ignored. | |
| fiscalYear | No | Company fiscal year. Omit both period fields for the latest call; year alone selects the latest call in that fiscal year. | |
| fiscalQuarter | No | Company fiscal quarter, 1-4. Quarter alone selects the latest matching quarter across fiscal years; provide both fields for an exact period. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/openWorldHint=false/destructiveHint=false, so safety is covered. The description adds genuinely new behavioral context: analyst names appear only for trusted identity resolutions, and audio offsets exist only for audio-transcribed calls. It omits pagination/volume behavior for a potentially long Q&A list.
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?
Two sentences, front-loaded with the tool's purpose and a compact enumeration of returned fields, then the invocation modes. Dense but every clause carries information; only minor trimming is possible.
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 output schema, the description carries the return-shape burden and does so by naming the fields (analyst, firm, question text, answerer, turn range, audio offsets) plus two caveats and the sibling interlock. It lacks any note on result volume or limits, which is the remaining 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 schema already documents ticker, eventId, fiscalYear and fiscalQuarter including their mutual-exclusion rules. The closing sentence restates the same ticker-or-eventId choice without adding syntax or format detail beyond the schema, which is the expected baseline at full coverage.
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 opens with a specific verb+resource ("Get the analyst questions asked in a call's Q&A") and narrows scope with granularity ("one entry per analyst turn at the microphone, follow-ups included"), which is exactly what separates it from GetEarningsCallTranscript. An agent can distinguish it from its transcript and tone siblings 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?
It gives the two input modes (ticker with optional fiscal period, or eventId) and explains how the returned turn range interlocks with GetEarningsCallTranscript/GetInvestorEventTranscript for reading the full exchange. It does not state when to prefer this over GetEarningsCallToneAndThemes or GetEarningsBrief, so it stops short of full when/when-not coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetEarningsCallThemeHistoryEarnings Call Theme HistoryARead-onlyInspect
Track how a company's earnings-call themes move quarter over quarter: a theme by fiscal-quarter table of mention counts and tone across its last scored calls, oldest first, with each theme's status on the latest call (new, recurring, dropped, or unknown where an unscored quarter sits between the calls compared). Themes are paired across calls by name or shared keywords. Verifier-approved reads only; GetEarningsCallToneAndThemes gives one call's scores and keywords.
| Name | Required | Description | Default |
|---|---|---|---|
| calls | No | Number of most recent scored fiscal quarters to compare (default 8, max 12; values outside 1-12 are clamped) | |
| ticker | Yes | Company ticker symbol (e.g., AAPL, MSFT), or MIC:TICKER (e.g., XPAR:AIR) for a listing outside the US. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish a safe read (readOnlyHint, destructiveHint=false), and the description adds genuinely useful behavior: the 'Verifier-approved reads only' coverage constraint, how themes are paired across calls (name or shared keywords), and the four-way status semantics including the 'unknown' case when an unscored quarter intervenes. This is behavioral detail well beyond the 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?
Dense but front-loaded: the table shape is described first, then pairing logic and status, then the sibling pointer. Every clause carries information, though the single long sentence plus fragment is on the heavy side.
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 multi-quarter comparison tool with no output schema, the description covers the return structure (mention counts, tone, per-theme latest status), the ordering, the pairing mechanism, and the data-quality constraint. Nothing essential to correct invocation or interpretation 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 schema already documents ticker and the calls count with its default and clamping. The description's phrasing about 'last scored calls' and 'oldest first' gives slight alignment but adds no format or syntax beyond the schema, so the baseline 3 is appropriate.
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 (track themes quarter over quarter) and precisely describes the output shape (fiscal-quarter table of mention counts and tone, oldest first, with latest status). It explicitly distinguishes itself from the sibling GetEarningsCallToneAndThemes, which covers a single call, so an agent can route 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 contrast with GetEarningsCallToneAndThemes ('gives one call's scores and keywords') implicitly tells the agent when to pick this multi-quarter tool instead. There is clear context, but no explicit when-not conditions or prerequisite statement beyond the 'Verifier-approved reads only' note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetEarningsCallToneAndThemesEarnings Call Tone and ThemesARead-onlyInspect
Get the AI-scored insights for a company's recent earnings calls — the management-tone read (a net tone score and a hedging score) and the call's key themes with their computed mention counts and per-theme tone. Newest call first. Verifier-approved — only scored and approved calls appear, so quarters can be missing from the sequence (a gap note flags non-consecutive quarters). Use it to gauge how confident or guarded management sounded and what they talked about most.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of scored calls to return, newest first (default 2, max 8; values outside 1-8 are clamped) | |
| ticker | Yes | Company ticker symbol (e.g., AAPL, MSFT), or MIC:TICKER (e.g., XPAR:AIR) for a listing outside the US. | |
| fiscalYear | No | Company fiscal year. Omit both period fields for newest results; year alone filters that fiscal year. | |
| fiscalQuarter | No | Company fiscal quarter, 1-4. Quarter alone filters that quarter across fiscal years; both fields select an exact period. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a safe read-only, closed-world operation, so the bar is low, and the description clears it by disclosing non-obvious behavior: only verifier-approved scored calls appear, so quarters can be missing and a gap note flags non-consecutive quarters, and results are ordered newest-first. It does not cover latency, coverage limits, or score ranges, which keeps it short of a 5.
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 paragraph that front-loads the payoff (what you get) before the availability caveat and the use case. Every clause carries information, though the return-value inventory and the caveat could be tightened slightly.
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 output schema, the description does the work of naming the returned fields (tone score, hedging score, themes with mention counts and per-theme tone) and the newest-first ordering. Missing only the semantics of the scores themselves (scale/units), a modest 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 description coverage is 100%, so the schema already documents ticker, fiscalYear, fiscalQuarter, and the limit clamp. The description only echoes 'recent'/'newest call first' and adds no syntax or format detail beyond the schema, so baseline 3 applies.
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 — AI-scored tone and themes for a company's earnings calls — and enumerates the concrete outputs (net tone score, hedging score, themes with mention counts and per-theme tone). This content profile cleanly separates it from nearby siblings like GetEarningsCallTranscript and GetEarningsCallEvent, which return raw material rather than scored insights.
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 a clear when-to-use: 'gauge how confident or guarded management sounded and what they talked about most.' It does not name alternatives or state exclusions (e.g., that raw quotes live in GetEarningsCallTranscript), so an agent must infer the boundaries from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetEarningsCallTranscriptEarnings Call TranscriptARead-onlyInspect
Get the speaker-labelled transcript of a company's earnings call for a fiscal quarter — every speaker turn in order, attributed to the real person (executive or sell-side analyst) with their role at the time. Identities appear only when the resolution is trusted (auto-resolved or human-reviewed); unverified voices show as a role label (e.g. Operator) or a neutral speaker number. Use GetEarningsCallEvent first to check a transcript exists.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of speaker turns to return (default 50, max 200; values outside 1-200 are clamped) | |
| offset | No | Number of leading speaker turns to skip, for paging through calls longer than the 200-turn cap (default 0) | |
| ticker | Yes | Company ticker symbol (e.g., AAPL, MSFT), or MIC:TICKER (e.g., XPAR:AIR) for a listing outside the US. | |
| fiscalYear | No | Company fiscal year. Omit both period fields for the latest call; year alone selects the latest call in that fiscal year. | |
| fiscalQuarter | No | Company fiscal quarter, 1-4. Quarter alone selects the latest matching quarter across fiscal years; provide both fields for an exact period. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds genuinely non-obvious behavior: identity resolution rules (trusted resolutions show real names; unverified voices degrade to a role label or neutral speaker number) and speaker-turn ordering. It omits any statement about pagination ceiling behavior on longer calls.
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?
Three sentences, front-loaded with what the tool returns and followed by the attribution caveat and the prerequisite. Dense but every sentence carries information; no padding.
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 output schema, the description properly explains what the return content looks like (ordered speaker turns with attribution). For a 5-parameter read tool with full schema coverage and safe annotations, this is close to complete, only missing explicit guidance on long-call pagination.
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 the schema already documents ticker format, limit clamping, offset paging, and the fiscal-year/quarter omission semantics. The description adds no parameter detail beyond what the schema provides, so the baseline 3 applies.
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 ('speaker-labelled transcript of a company's earnings call for a fiscal quarter') with added scope detail about ordering and attribution. This clearly distinguishes it from GetEarningsCallEvent, GetEarningsCallToneAndThemes, and GetInvestorEventTranscript.
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 routes the agent: 'Use GetEarningsCallEvent first to check a transcript exists.' That is a real prerequisite, not implied. It does not, however, state when to prefer this over GetInvestorEventTranscript, so it stops short of full alternative coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetEconomicCalendarEconomic Release CalendarARead-onlyInspect
Get the economic release calendar — scheduled (upcoming) and recent publication dates of US macro data releases, with the FRED series each release updates and an importance tier per release (High = the tier-1 scheduled market movers: CPI, PPI, Employment Situation, GDP, PCE, retail sales; Medium = other genuine scheduled prints; Low = daily rate/market levels like SOFR or VIX). FOMC meetings are NOT included — FRED's release feed has no real FOMC meeting dates; use the Federal Reserve's published meeting calendar for those. Defaults to the next 30 days. Use minImportance=high to see only the market movers, and GetEconomicIndicator to fetch a series' data after it prints.
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | No | End date in YYYY-MM-DD format (defaults to 30 days after the start date) | |
| startDate | No | Start date in YYYY-MM-DD format (defaults to today, UTC) | |
| maxResults | No | Maximum number of release dates to return (default: 100, max: 500, chronological) | |
| minImportance | No | Minimum importance tier to include: low, medium, or high (defaults to low = everything) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint=true annotation, the description adds rich behavioral context: it defines the importance tiers (High/Medium/Low) with specific examples, explains why FOMC meetings are excluded, and notes the default date range (next 30 days). These details help the agent understand the tool's limits and output semantics without needing to invoke it.
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 dense single paragraph but logically structured: it starts with the main purpose, then defines tiers, mentions exclusions, defaults, and usage tips. Every sentence adds value, but the density makes it slightly less scannable than bulleted sections; still, it is concise and well-organized.
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 there is no output schema, the description carries the burden of explaining behavior. It covers data coverage, tier filtering, exclusions, defaults, and related tools, which is sufficient for correct invocation. It doesn't describe the exact return format (e.g., array of objects with fields), but the calendar concept is straightforward enough that this is a minor 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% for all four parameters, so the baseline is 3. However, the description adds meaningful semantics: it defines the minImportance tier values (low/medium/high) and explains the default date behavior ('Defaults to the next 30 days'), clarifying startDate/endDate usage. It doesn't add much for maxResults beyond the schema's 'chronological' note.
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 opens with 'Get the economic release calendar — scheduled (upcoming) and recent publication dates of US macro data releases', which clearly states the verb, resource, and scope. It distinguishes itself from sibling tools by specifying US macro data and explicitly excluding FOMC meetings, setting it apart from GetMarketCalendar and GetEconomicIndicator.
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 provides explicit alternatives: 'FOMC meetings are NOT included ... use the Federal Reserve's published meeting calendar for those' and 'use GetEconomicIndicator to fetch a series' data after it prints.' It also gives usage advice with 'Use minImportance=high to see only the market movers' and states defaults, making when-to-use clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetEconomicIndicatorEconomic Indicator HistoryARead-onlyInspect
Get time series data for a FRED economic indicator. Returns historical observations for indicators like FEDFUNDS (fed funds rate), CPIAUCSL (CPI inflation), UNRATE (unemployment), GDP, T10Y2Y (yield spread), VIXCLS (VIX), SP500, MORTGAGE30US, M2SL (money supply), and more. Covers the curated ~40-series set Equibles tracks, not the full FRED catalog — use SearchEconomicIndicators to find available series.
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | No | End date in YYYY-MM-DD format (defaults to latest available) | |
| seriesId | Yes | FRED series ID or standard indicator name (e.g., FEDFUNDS, fed funds rate, core CPI, jobless claims) | |
| startDate | No | Start date in YYYY-MM-DD format (defaults to 1 year before the end date) | |
| maxResults | No | Maximum number of observations to return (default: 100, max: 500). When the range holds more, the newest maxResults are kept; rows are always listed in ascending date order. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is clear. The description adds useful behavioral context by emphasizing the tool only covers a curated set (not all of FRED) and returns historical observations. No contradictions with 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 three sentences and front-loaded with the primary purpose. Each sentence adds essential information: what it does, examples, and scope limitation with a pointer to SearchEconomicIndicators. 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?
Given the tool has 4 parameters, no output schema, and annotations, the description provides key context: historical observations, a curated series set, and where to search for more. However, it does not describe the return format or observation frequency, which would be helpful since there is no 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?
The input schema already documents all parameters with 100% coverage, so baseline is 3. The description adds value by listing concrete example series IDs (FEDFUNDS, CPIAUCSL, UNRATE, etc.) and noting that seriesId accepts standard indicator names in addition to FRED IDs, enriching the schema's description.
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?
Description uses a specific verb ('Get time series data') and identifies the unique resource (FRED economic indicators). It clearly distinguishes itself from siblings by noting this covers only a curated ~40-series set, not the full FRED catalog.
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?
Provides explicit context on when to use this tool: for historical time series of specific FRED indicators. It explicitly names SearchEconomicIndicators as the alternative to discover available series, and clarifies the curated scope, helping the agent choose correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetEtfHoldingsETF HoldingsARead-onlyInspect
Get an ETF's stored portfolio holdings from its latest SEC Form NPORT-P report, largest position first. Coverage is full, partial, or unknown when counts are missing or inconsistent. Use offset to continue through broad portfolios.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | Number of ranked holdings to skip (default 0). | |
| ticker | Yes | Exact exchange-traded ticker (for example SPY). | |
| maxResults | No | Maximum holdings to return (default 20, max 500). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and non-destructive behavior. The description adds useful behavioral context: data coverage nuances (full/partial/unknown when counts are missing) and the ordering convention. It does not describe potential errors or return format, but with annotations in place, this is a strong addition.
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?
Three sentences convey the core function, a data-quality caveat, and pagination guidance. Each sentence adds distinct information without redundancy. It is front-loaded with the main purpose, making it easy to parse quickly.
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 simple read-only query tool with pagination, the description covers the essential aspects: source (NPORT-P), ordering, coverage, and how to paginate. The lack of an output schema is mitigated by the fact that the tool's purpose is straightforward. A mention of return structure would be nice, but it is not critical given the simplicity.
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 all three parameters (ticker, offset, maxResults) are already documented. The description adds a note about offset for 'broad portfolios', but this largely mirrors the schema's 'Number of ranked holdings to skip'. Thus the description provides minimal extra value beyond the schema, warranting the baseline score of 3.
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 uses a specific verb ('Get') with a clear resource ('an ETF's stored portfolio holdings') and specifies the data source ('latest SEC Form NPORT-P report') and ordering ('largest position first'). This distinguishes it from sibling tools like GetEtfProfile (profile data) and GetTopHolders (likely stock-focused), even without naming them.
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 gives context about data coverage ('full, partial, or unknown') and pagination ('Use offset to continue through broad portfolios') but does not explicitly state when to use this tool versus alternatives. It neither names sibling tools nor provides exclusion criteria, leaving the selection logic to the agent's inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetEtfProfileETF Profile and PerformanceARead-onlyInspect
Get ETF settled performance, SEC assets, allocation and top holdings. For this same exact ETF ticker, use GetStockPrices or GetLatestClosingPrices for prices, GetLiveQuote for entitled intraday quotes, GetOptionExpirations/GetOptionChain/GetOptionContract for options, GetShortInterest for reported short interest and days to cover, GetShortVolume/GetOffExchangeVolume/GetFailsToDeliver for trading and settlement data, GetTopHolders/GetInstitutionalOwnershipHistory/GetTopInstitutionalBuyersSellers for 13F institutional exposure, GetFundsHoldingStock for funds owning the ETF, GetDividendHistory for its own declared distributions, and GetCongressionalTrades for congressional trades. These are shared stock-and-ETF tools; GetEtfHoldings instead returns investments inside the ETF. ListFilings/SearchDocuments select the SEC registrant and may include sibling funds, not just this ETF series. Issuer-trained short-interest forecasts and squeeze scores are not ETF analytics.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Exact exchange-traded ticker (for example SPY, VOO, or IVV). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, non-destructive, closed-world, so safety is covered. The description adds value beyond them by naming negative scope ('Issuer-trained short-interest forecasts and squeeze scores are not ETF analytics') and by flagging the sibling-fund caveat for the SEC registrant tools.
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 first sentence and every clause is functional, but the middle routing sentence is a long run-on enumerating many siblings that is dense to parse. Efficient overall with no filler, though structure could be tighter.
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 single-ticker, closed-world read tool with no output schema, the definition covers purpose, scope, sibling routing, and negative boundaries. Nothing an agent needs to call it 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?
Only one parameter with 100% schema description coverage, so the schema fully documents 'ticker' (including SPY/VOO/IVV examples). The description reinforces 'this same exact ETF ticker' but adds no format or syntax detail beyond the schema, which is the expected baseline 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 ('Get ETF settled performance, SEC assets, allocation and top holdings') and explicitly differentiates from the closest sibling: 'GetEtfHoldings instead returns investments inside the ETF.' An agent can distinguish the two 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?
Explicitly routes the agent to alternatives by data need (GetStockPrices/GetLatestClosingPrices for prices, GetLiveQuote for intraday, option tools, short interest, 13F exposure, dividends, congressional trades). It also warns which tools return the wrong entity scope (ListFilings/SearchDocuments may include sibling funds).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetEuropeanDirectorTransactionsEuropean Director TransactionsARead-onlyInspect
Get the director and related-person (PDMR) transactions a regulator published for one listing outside the US, written MIC:TICKER (e.g. XSTO:VOLV-B). Coverage today is Sweden's Finansinspektionen register, matched by the issuer's LEI or the security's ISIN, so rows can include the issuer's other instruments. Each row gives the transaction date, the person and role, a related person where reported, the transaction type, the instrument and ISIN, volume, price and currency, and the source status including amendments. Only captured publication days are covered, and the register is not a complete insider-ownership record. For US Form 4 filings use GetInsiderTransactions.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | Rows to skip for paging (default 0). | |
| ticker | Yes | Listing symbol MIC:TICKER, e.g. XSTO:VOLV-B; a provider suffix such as VOLV-B.ST also works. A bare ticker names a US listing and is answered with the company's listings outside the US to ask with. | |
| maxResults | No | Maximum transactions, newest first (default 20, max 100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld=false/destructive=false, and the description adds substantial context beyond them: coverage is limited to Sweden's register, matching is by LEI or ISIN so rows may include other instruments, only captured publication days exist, and the register is not a complete insider-ownership record. These caveats materially affect how the agent should interpret results.
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 and identifier format are front-loaded, and the routing hint is saved for last, which reads well. It is dense and slightly long, but nearly every clause carries informational weight for interpreting coverage or results.
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?
Although there is no output schema, the description enumerates the returned fields (date, person/role, related person, type, instrument/ISIN, volume, price, currency, source status including amendments) and states the coverage limits. Nothing an agent needs to call or interpret this tool 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 the schema already documents all three parameters. The description restates the MIC:TICKER format and the bare-ticker fallback, which mirrors the schema's own ticker description, so it adds little beyond structured data. Baseline 3 is appropriate.
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: fetch director/PDMR transactions published by a regulator for one non-US listing, with the exact identifier format (MIC:TICKER). It explicitly distinguishes itself from the US counterpart GetInsiderTransactions, so an agent can route correctly 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?
Gives explicit when-to-use context (non-US listing, coverage in Sweden's Finansinspektionen register) and a named alternative for the US case ('For US Form 4 filings use GetInsiderTransactions'). The boundary between the two tools is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetEuropeanFundHoldingsEuropean Fund HoldingsARead-onlyInspect
Get the European investment funds reporting a position in one listing outside the US, written MIC:TICKER (e.g. XSTO:VOLV-B), matched by that security's ISIN. Coverage today is Swedish UCITS quarterly portfolios published by Finansinspektionen with about a two-month delay; special funds are excluded. Each row gives the fund, its manager, the reported quantity, the market value in SEK and the position's weight in the fund's assets, which is not a share of the company. Not comprehensive European ownership and not merged with SEC filings. For US registered funds use GetFundsHoldingStock.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | Rows to skip for paging (default 0). | |
| ticker | Yes | Listing symbol MIC:TICKER, e.g. XSTO:VOLV-B; a provider suffix such as VOLV-B.ST also works. A bare ticker names a US listing and is answered with the company's listings outside the US to ask with. | |
| periodEnd | No | Quarter end in YYYY-MM-DD (e.g. 2026-06-30); omit for the newest captured quarter. | |
| maxResults | No | Maximum fund positions, largest value first (default 20, max 100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, non-destructive), but the description adds substantial context beyond them: coverage scope, publication lag, excluded fund types, and the critical caveat that the reported weight is not a share of the company. This prevents misreading of the returned numbers.
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?
Four dense sentences that are front-loaded with the core action and input format, followed by scope caveats and the sibling pointer. Every sentence carries information, though the block is on the heavier side.
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 output schema, the description compensates by enumerating the returned row fields (fund, manager, quantity, SEK market value, weight) and defining what each means. An agent has everything needed to call and interpret the tool 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 schema already documents offset, maxResults, periodEnd and the ticker format. The description still adds value by clarifying the MIC:TICKER convention and the fallback behavior for a bare ticker, though most of the ticker semantics are also present in the schema.
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 (European fund positions in a given listing) and immediately distinguishes itself from GetFundsHoldingStock for US-registered funds and from SEC-filing data. An agent can identify this tool's domain 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 names the alternative route ('For US registered funds use GetFundsHoldingStock'), states the required input format MIC:TICKER, and sets expectations about coverage and exclusions (Swedish UCITS only, special funds excluded, ~2-month delay). This is when-to-use and when-not in one place.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetEuropeanShortPositionsEuropean Short PositionsARead-onlyInspect
Get the net short positions disclosed to European regulators for one listing outside the US, written MIC:TICKER (e.g. XPAR:UBI, XAMS:ASML), matched by that security's ISIN, or the issuer's LEI for issuer-level sources: individual holder disclosures from registers such as France's AMF, the Netherlands' AFM and the Spanish, German, Belgian, Irish, Polish, Finnish and Danish registers, plus published aggregates such as Norway's and Sweden's. Values are percentage points of issued share capital. Each register is listed separately and never summed; these are dated disclosures, not total short interest, current holdings or short volume, and a register without a row is not a zero position. Registers checked without a match, not captured yet or out of date are named at the end. For US listings use GetShortInterest.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Listing symbol MIC:TICKER, e.g. XPAR:UBI; a provider suffix such as UBI.PA also works. A bare ticker names a US listing and is answered with the company's listings outside the US to ask with. | |
| maxResults | No | Maximum rows per register, newest first (default 20, max 100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive), and the description adds substantial semantics the annotations cannot: registers are never summed, values are percentage points of issued share capital, these are dated disclosures rather than live positions, and unmatched/stale registers are named at the end. It also pre-empts the 'no row = zero' misreading, which is exactly the kind of trap this tool needs to disclose.
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?
A single dense paragraph, but it is front-loaded with the identifier format and scope before moving to caveats, and every clause carries distinct meaning. It is long, though a few clauses (the full register list) could be trimmed without loss.
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 output schema, the description carries the burden of describing returns and does so: percentage points of issued share capital, one row per register, and unmatched registers named at the end. Nothing needed to call or interpret the tool 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% and both parameters are self-documented, so the description's MIC:TICKER examples and bare-ticker fallback largely restate the schema. Baseline 3 is appropriate since 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 ('net short positions disclosed to European regulators') plus a precise scope ('one listing outside the US'). It also explicitly separates itself from the US counterpart 'For US listings use GetShortInterest', so an agent can route 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 both when-to-use (non-US listing, registers by MIC:TICKER/ISIN/LEI) and when-not ('For US listings use GetShortInterest'), and contrasts against adjacent concepts the agent might otherwise confuse it with: total short interest, current holdings, short volume.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetExecutiveChangesExecutive and Board ChangesARead-onlyInspect
Get a company's executive and director changes — CEO/CFO/officer/board appointments, resignations, terminations, and retirements — as disclosed in its 8-K Item 5.02 filings, newest filing first. Each change carries the person's name, the role text exactly as filed, a separate normalized role classification, the action, the effective date when stated, the verbatim disclosure, and the source filing (form + link). Changes are extracted from the filings' narrative text and verified before publication. Coverage is still back-filling: the output names the oldest covered filing date, and an empty answer distinguishes 'covered filings disclose no changes' from 'filings not yet processed'.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | Optional action filter: Appointed, Resigned, Terminated, or Retired. | |
| offset | No | Number of matching changes to skip before returning rows (default 0). | |
| ticker | Yes | Stock ticker symbol (e.g., AAPL, MSFT). | |
| endDate | No | Optional newest filed date, YYYY-MM-DD. | |
| startDate | No | Optional oldest filed date, YYYY-MM-DD. | |
| maxResults | No | Maximum changes to return (default 25, cap 100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only and non-destructive behavior; the description goes beyond them by disclosing extraction from narrative text, verification before publication, reverse-chronological ordering, and the back-filling coverage caveat with explicit empty-result semantics. This adds real behavioral context without contradicting the 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?
Every sentence earns its place: scope, source, return fields, ordering, extraction/verification behavior, and the coverage/empty-result caveat. The most important scoping information is front-loaded before the detailed behaviors.
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 output schema, the description properly enumerates the returned fields: person name, raw and normalized role, action, effective date, verbatim disclosure, and filing source. Combined with full parameter documentation and safety annotations, nothing needed to invoke the tool 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?
All six parameters are fully documented in the input schema, so the description does not need to add parameter-level meaning. The prose adds useful output and coverage context but does not materially extend the semantics of ticker, date filters, action, offset, or maxResults.
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 precise verb and resource: getting a company's executive and director changes from 8-K Item 5.02 filings. The event types are enumerated, and the source filing basis distinguishes it clearly from siblings such as GetExecutiveCompensation.
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 the use case clear: an agent needing executive/board appointment, resignation, termination, or retirement events from a company's 8-K filings. It does not explicitly name alternative tools or exclusion conditions, but the source-specific scope gives clear selection context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetExecutiveCompensationExecutive CompensationARead-onlyInspect
Get a company's named-executive compensation as disclosed in its DEF 14A proxy statements' Summary Compensation Table — salary, bonus, stock and option awards, non-equity incentive, other compensation, and the company-reported total per executive per fiscal year, newest year first. Figures are exactly as the company disclosed them; Total is the filer's own figure, never a recomputation. Coverage is limited to US DEF 14A filers (foreign private issuers file 20-F and are not covered) and is still back-filling: the output states the newest proxy on file next to the newest imported year, so stale coverage is visible.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker symbol (e.g., AAPL, MSFT). | |
| maxYears | No | Optional cap on how many of the newest fiscal years to return (default 0 = all imported years). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only/destructive annotations, the description adds substantial transparency about data integrity: figures are exactly as disclosed, Total is the filer's own figure (never recomputed), and the tool states the newest proxy on file to surface stale coverage. This goes well beyond the 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 concise but information-dense, with three well-structured sentences. Each sentence adds value: output specification, data integrity caveat, and coverage limitations. No filler or redundancy.
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 output schema, the description fully explains the return content (salary, bonus, awards, etc., per executive per fiscal year, newest first). It also covers coverage limitations and data quality indicators, making it complete for a data retrieval tool.
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% (ticker and maxYears are both documented). The description adds some context about year ordering and the 'newest year first' behavior, which aligns with maxYears, but it does not significantly enhance the parameter meaning beyond the schema.
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 clearly states the tool retrieves named-executive compensation from DEF 14A proxy statements' Summary Compensation Table, listing components and per-executive/per-year granularity. It distinguishes itself from siblings like GetExecutiveChanges, which deals with changes rather than compensation.
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 provides important usage context by specifying coverage is limited to US DEF 14A filers and noting the data is back-filling, which guides when to use it. It also implies the tool is for compensation data, not other executive-related data, though it does not explicitly name alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetFailsToDeliverFails-to-Deliver DataARead-onlyInspect
Get fails-to-deliver (FTD) data for an exact listed stock or exchange-traded fund from the SEC's twice-monthly FTD files. Quantity is the aggregate net fail-to-deliver position OUTSTANDING on each settlement date — a balance, not that day's new fails, so never sum Quantity across dates. Price is the previous trading day's closing price (SEC file convention, not a settlement price) and Value = Quantity × Price. Within the covered window (the output names the earliest fully covered settlement date), dates absent from the table had no reported fails; earlier dates are only partially covered, so their absence is not evidence of no fails. The SEC publishes each half-month batch with roughly a two-week lag, so the newest rows trail today. High or persistent FTD balances may indicate naked short selling or settlement issues.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Exact stock or ETF ticker symbol (e.g., AAPL, GME, SPY) | |
| endDate | No | End date in YYYY-MM-DD format (defaults to latest available) | |
| startDate | No | Start date in YYYY-MM-DD format (defaults to 3 months ago) | |
| maxResults | No | Maximum number of records to return — keeps the most recent N settlement dates in the range, displayed oldest to newest (default: 90, max: 500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already mark this as read-only and non-destructive, and the description adds substantial non-obvious behavior: Quantity is an outstanding balance rather than new fails and must not be summed, Price follows the SEC prior-day close convention, coverage windows explain missing dates, and publication lag means newest rows trail today. This goes well beyond annotation signals.
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 first sentence front-loads the core purpose, and every subsequent sentence adds a distinct, necessary caveat or definition. Though lengthy, it is dense with useful information and contains no filler or redundancy.
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 output schema, the description compensates by explaining Quantity, Price, Value, date coverage, missing-date semantics, and data lag. It provides enough interpretive context for an agent to call the tool and correctly understand its results.
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 input schema has 100% description coverage for all four parameters, so the description does not need to restate them. It adds no new input-parameter meaning beyond the schema, and the baseline of 3 applies because the schema handles the burden.
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 states a specific verb and resource: retrieving fails-to-deliver data for an exact listed stock or ETF from the SEC's twice-monthly FTD files. It is clearly distinguishable from related short-selling tools like GetShortInterest or GetShortVolume because it anchors the data source and metric.
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 the intended use clear: analyzing SEC-reported FTD balances for a single ticker, with coverage and lag caveats. It does not explicitly name alternatives or say when not to use this tool, but the FTD-specific framing leaves little ambiguity about its niche.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetFdaAdvisoryCommitteeMeetingsFDA Advisory Committee CalendarARead-onlyInspect
Get scheduled FDA advisory-committee (AdComm) meetings, sourced from the FDA.gov advisory-committee calendar, each with a link to its FDA meeting page. Defaults to meetings in the next 90 days; pass a date range to look further ahead. This is a forward-looking calendar of announced meetings, not a historical archive — coverage starts in late 2025 — and entries are the FDA's own listings, not linked to stock tickers.
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | No | End date in YYYY-MM-DD format (defaults to 90 days after the start) | |
| startDate | No | Start date in YYYY-MM-DD format (defaults to today) | |
| maxResults | No | Maximum number of meetings to return (default: 60, soonest first) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context: it returns links to FDA meeting pages, defaults to a 90-day window, and has limited historical coverage starting late 2025. This exceeds the annotation information without contradicting it.
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 compact (three sentences) and front-loaded: the first sentence states the core function, the second clarifies defaults, and the third clarifies limitations and scope. No filler or redundant information.
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 simple read-only calendar tool with no output schema, the description covers the essentials: what is returned, the source, defaults, coverage limitations, and what it is not. It does not detail the exact output fields, but that is not critical given the simplicity and the provided link. It is complete enough for an agent to decide when and how to call it.
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 schema already fully describes all three parameters with defaults and formats (100% coverage). The description's mention of 'next 90 days' and 'date range' echoes the schema without adding new meaning. Thus the description adds no significant value for parameter understanding, though it is consistent with the schema.
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 clearly states the tool's purpose: retrieving scheduled FDA advisory-committee meetings from the FDA.gov calendar, each with a link to its meeting page. It also specifies the scope (forward-looking, not historical) and the coverage start date, which distinguishes it from other calendar tools in the sibling list like GetEconomicCalendar or GetMarketHolidayCalendar.
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 provides explicit usage context: it is for forward-looking FDA advisory-committee meetings, not a historical archive, and coverage starts in late 2025. It also notes entries are not linked to stock tickers, indicating it is not for market-impact analysis. While it does not name specific sibling tools, it clearly frames when this tool is appropriate and when it is not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetFinancialFactFinancial Concept LookupARead-onlyInspect
Get a single financial concept (e.g. revenue, net income, diluted EPS, total assets, operating cash flow) over time for a company, sourced from SEC Company Facts (structured XBRL), or from the issuer's regulatory filings for a listing outside the US. Returns a time series using the latest restated value unless asOriginallyReported is set: one row per fiscal period for flows, one row per as-of date for balances and share counts. Each row carries its actual period start/end; fiscal years/quarters follow the company's own fiscal calendar. Warns when the selected alias ends materially before the company's other structured facts, which can indicate an XBRL tag change. Dimensioned disclosures such as customer concentration are outside this consolidated-series tool. For a full statement use GetFinancialStatement; to compare peers use CompareFinancialFact.
| Name | Required | Description | Default |
|---|---|---|---|
| form | No | Optional SEC form filter, e.g. '10-K' or '10-Q' | |
| ticker | Yes | Stock ticker symbol (e.g., AAPL, MSFT); a listing on another exchange is MIC:TICKER (XPAR:AIR). | |
| toDate | No | Optional latest period-end date, YYYY-MM-DD | |
| concept | Yes | Concept alias, e.g. 'revenue', 'net-income', 'eps-diluted', 'total-assets', 'operating-cash-flow'. Call with an unknown value to list supported aliases. | |
| fromDate | No | Optional earliest period-end date, YYYY-MM-DD | |
| maxResults | No | Maximum periods to return, newest first (default 40, max 200) | |
| fiscalPeriod | No | Optional fiscal-period filter: 'FY' (annual only) or 'Q1'..'Q4'. Note that discrete Q4 rows exist only where the filer reported a discrete fourth quarter (most large filers stopped after ~2021). | |
| asOriginallyReported | No | When true, show the earliest canonical periodic filing instead of the latest restatement within that source priority. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a safe read (readOnlyHint=true, destructiveHint=false) and closed-world, so the description is free to add higher-value behavior: default restated-vs-as-reported semantics, row granularity per period type (flows vs balances), use of the company's own fiscal calendar, and a warning when an alias ends before other structured facts, hinting at an XBRL tag change.
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 action and scope, and every sentence carries distinct information (source, granularity, restatement default, warning, exclusions, alternatives). It is a single dense block rather than scannable segments, which slightly hurts structure but not economy.
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 read tool with no output schema, the description supplies what the schema cannot: the shape of the returned time series, row granularity, default restatement behavior, and the caveat around sparse/truncated series. Combined with full schema coverage and annotations, an agent has everything needed 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 coverage is 100%, so the schema already documents all 8 params and the baseline is 3. The description goes one step further by explaining the observable effect of asOriginallyReported ('latest restated value unless set') and how fiscalPeriod interacts with the filer's fiscal calendar, which is meaning the schema alone doesn't convey.
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 ('Get a single financial concept ... over time for a company') and immediately names the data source (SEC Company Facts XBRL, or non-US issuer filings). It draws a boundary against sibling tools by naming GetFinancialStatement and CompareFinancialFact and by excluding dimensioned disclosures like customer concentration.
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?
Explicit routing: 'For a full statement use GetFinancialStatement; to compare peers use CompareFinancialFact,' plus a stated out-of-scope case ('Dimensioned disclosures such as customer concentration are outside this consolidated-series tool'). Both when-to-use and when-not-to-use are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetFinancialStatementFinancial StatementsARead-onlyInspect
Get a company's income statement, balance sheet, or cash-flow statement for a given fiscal year and period, sourced from SEC Company Facts (structured XBRL), or from the issuer's regulatory filings for a listing outside the US. Returns the standard line items (e.g. revenue, net income, total assets, operating cash flow) with the latest-restated value for one exact statement period end. Quarterly flow rows are always discrete quarters: when the filer reports only cumulative year-to-date values in a currency, the quarter is derived by exact subtraction from the preceding cumulative period and marked Derived. Company-specific dimensional facts (e.g. product-segment revenue) are not included — use GetRevenueBreakdown for segment/geographic revenue, and GetFinancialFact or CompareFinancialFact for one line item across periods or across companies.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Fiscal year, e.g. 2023. Defaults to the year of the latest period with line items to show. | |
| period | No | Fiscal period: 'FY' (annual) or 'Q1'..'Q4'. Defaults to the latest period with line items to show. Most filers report no discrete Q4 income/cash-flow facts in XBRL (the fourth quarter is embedded in the full-year figure) — use 'FY' for annual figures. | |
| ticker | Yes | Stock ticker symbol (e.g., AAPL, MSFT, GME); a listing on another exchange is MIC:TICKER (XPAR:AIR). | |
| statement | No | Statement: 'income' (income statement), 'balance' (balance sheet), or 'cashflow' (cash-flow statement); the aliases 'is'/'p&l', 'bs' and 'cf' also work. Defaults to income. | income |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safe read profile (readOnlyHint=true, destructiveHint=false), and the description adds substantial context beyond that: data provenance (SEC Company Facts XBRL vs non-US issuer filings), latest-restated selection rule, exact-period-end semantics, discrete-quarter derivation with a 'Derived' marker, and which facts are out of scope.
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 operation and resource, then layered with provenance, derivation rules, and exclusions. It is a dense paragraph rather than scannable sentences, but each clause carries distinct value (source, return set, quarter derivation, sibling routing) with no 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 no output schema, the description still describes the return set (standard line items such as revenue, net income, total assets, operating cash flow) and the exact-period/latest-restated semantics. Combined with provenance and explicit exclusions, it covers everything an agent needs to call and interpret the tool 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 all four parameters are already documented in the schema, including the 'FY'/'Q1'..'Q4' semantics and default behaviors. The description reinforces rather than extends the parameter details, so the baseline 3 is appropriate.
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 precise verb ('Get') and resource class ('company's income statement, balance sheet, or cash-flow statement') scoped to fiscal year and period. It explicitly distinguishes itself from siblings by naming GetRevenueBreakdown, GetFinancialFact, and CompareFinancialFact and describing what each covers instead, so an agent can route correctly without opening schemas.
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?
Explicit when-not guidance: company-specific dimensional facts are excluded, and the description routes segment/geographic revenue to GetRevenueBreakdown and single-line-item/multi-period or cross-company lookups to GetFinancialFact or CompareFinancialFact. The 'FY for annual figures' hint further guides correct period selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetForm144ProposedSalesProposed Insider Sales (Form 144)ARead-onlyInspect
Get recent proposed insider sales for a stock from SEC Form 144 notices. Each Form 144 is an affiliate's declaration of intent to sell restricted or control securities, showing the seller, their relationship to the company, the number of shares and aggregate market value to be sold, the proposed sale as a share of the issuer's current shares outstanding, the approximate sale date, the broker, and the filer's remarks (including any stated 10b5-1 plan). Results are the most recent notices first and a note flags when more exist than were returned; use fromDate/toDate to scope a period (heavy 10b5-1 filers can flood the recency window with small daily notices). A proposal may never execute; a completed sale may later appear on Form 4 or 5 only when it is reportable there.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | Number of matching notices to skip before returning rows (default: 0) | |
| ticker | Yes | Company ticker symbol (e.g., AAPL, MSFT) | |
| toDate | No | Optional latest filing date to include, ISO format yyyy-MM-dd (e.g., 2025-12-31) | |
| fromDate | No | Optional earliest filing date to include, ISO format yyyy-MM-dd (e.g., 2025-01-01) | |
| maxResults | No | Maximum number of notices to return (default: 50, max: 500; values outside 1-500 are clamped) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only declare the tool read-only and non-destructive. The description adds valuable behavioral context: results are sorted with the most recent notices first, a note flags when more results exist than returned, heavy 10b5-1 filers can flood the recency window, and a Form 144 proposal may never execute. These details go well beyond the structured 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 dense but not padded; every sentence contributes value: purpose, returned fields, sort order, overflow behavior, date-scoping rationale, and legal caveats. It is front-loaded with the core capability and then fills in the nuances an agent would need to interpret results correctly.
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 that there is no output schema, the description compensates well by enumerating the key returned fields: seller, relationship, shares, aggregate market value, percent of shares outstanding, approximate sale date, broker, and remarks/10b5-1 plans. It also covers ordering, overflow, date filtering, and the caveat that proposals may never execute. Nothing essential for correct invocation or interpretation 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?
The input schema documents all 5 parameters with descriptions, so the baseline is 3. The description adds extra meaning by explaining why fromDate/toDate matter — heavy 10b5-1 filers can flood the recency window — and noting that an overflow flag appears when more results exist than were returned. This goes slightly beyond the schema's basic 'filter' language.
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 begins with 'Get recent proposed insider sales for a stock from SEC Form 144 notices,' a specific verb and resource. It makes clear these are declarations of intent, not completed trades, which distinguishes it from actual insider transaction tools like GetInsiderTransactions. The subsequent Form 4/5 note further reinforces the precise scope.
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 gives concrete guidance to use fromDate/toDate to scope the period because heavy 10b5-1 filers can flood the recency window with small notices. It also warns that a proposal may never execute and that completed sales may only show up on Form 4 or 5 when reportable, which helps agents know when not to over-interpret results. However, it does not explicitly name a sibling tool as the alternative for executed sales, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetFormDOfferingsExempt Offerings (Form D)ARead-onlyInspect
Get recent exempt securities offerings (private placements) for a company from SEC Form D notices. Each Form D reports a Regulation D offering, showing the issuer, the date of first sale, the total offering amount (a dollar figure or "Indefinite"), the amounts sold and remaining, the minimum investment, the number of investors, the claimed exemptions, whether the notice is an amendment (D/A), and its SEC accession number. Ongoing offerings are re-noticed through D/A amendments that RESTATE the same offering — group rows by first-sale date and offering amount and use only the latest notice of each chain, or capital raised will be counted several times over. Use this to track how a company is raising private capital alongside its public filings.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | Number of matching notices to skip before returning rows (default: 0) | |
| ticker | Yes | Company ticker symbol (e.g., AAPL, MSFT) | |
| toDate | No | Optional latest filing date to include, ISO format yyyy-MM-dd (e.g., 2024-12-31) | |
| fromDate | No | Optional earliest filing date to include, ISO format yyyy-MM-dd (e.g., 2024-01-01) | |
| maxResults | No | Maximum number of notices to return (default: 50, max: 500; values outside 1-500 are clamped) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a critical non-obvious behavior: D/A amendments restate the same offering, and warns the agent to group by first-sale date and offering amount and use only the latest notice to avoid double-counting. This goes well beyond the readOnlyHint/destructiveHint annotations and provides essential operational guidance.
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 front-loaded with the core purpose, then provides a useful field enumeration, then ends with a vital deduplication warning. Each sentence contributes meaning; the second sentence is slightly dense but earned because there is no output schema to document the fields.
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 lookup tool with no output schema, the description is complete: it explains what the data represents, lists the important data points, and warns about the duplicate-amendment trap. The schema covers parameter constraints, and annotations cover safety, so nothing essential is missing for correct invocation.
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 the schema fully documents ticker, offset, fromDate, toDate, and maxResults. The description does not add parameter-level detail beyond what the schema already provides, so the baseline of 3 is appropriate.
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 first sentence names a specific verb ('Get'), a specific resource (SEC Form D notices), and a specific subject (exempt securities offerings / private placements for a company). This clearly distinguishes it from sibling tools like GetForm144ProposedSales and ListFilings, and the final sentence reinforces its intended tracking use case.
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 gives an explicit use case: 'Use this to track how a company is raising private capital alongside its public filings.' It does not explicitly list alternative tools or exclusion conditions, but the context is clear enough for an agent to select this tool among the many finance-focused siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetFundNcenReportsFund Operations (Form N-CEN)ARead-onlyInspect
Get operational data for a registered investment company from its SEC Form N-CEN annual reports. Accepts an exchange-listed ticker or an exact fund identifier from SearchFunds, including a profile id, SEC series id, stored series ticker, or verified share-class alias. Each N-CEN shows the registrant's classification, Investment Company Act file number, reporting period, first/last-filing flags, latest service providers, and an exact filed-name provider history. N-CEN is filed at registrant level; this dataset currently ingests it through tracked issuer feeds, so a series inside an untracked multi-series trust can resolve correctly but still have no N-CEN report on record. Only registered funds file N-CEN; operating companies return no data.
| Name | Required | Description | Default |
|---|---|---|---|
| fund | Yes | Fund or ETF ticker, profile id, SEC series id, or verified share-class alias (e.g., MXF, IVV, S000004344, VOO) | |
| maxResults | No | Maximum number of annual reports to return (default: 10, max: 500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true and destructiveHint=false. The description adds valuable behavioral context: N-CEN is filed at registrant level, ingestion happens through tracked issuer feeds, and a series in an untracked multi-series trust may have no record. It also clarifies the 'operating companies return no data' boundary. No contradiction with annotations, and it enriches beyond the structured hints.
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, well-structured paragraph. It leads with the purpose, then details accepted inputs, the data returned, and important caveats about data availability and filing scope. Every sentence adds value without redundancy. It is appropriately sized for 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?
For a read-only tool with two parameters and no output schema, the description covers the essential usage context: accepted identifiers, report contents, data availability limitations, and filing eligibility. It does not explicitly describe the return format (e.g., list vs. single record) or pagination behavior for maxResults, but maxResults is self-explanatory and the listed fields imply a structured response. Minor gaps exist but are not critical.
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 input schema covers 100% of parameters with descriptions and examples. The description adds meaning by specifying that identifiers come from SearchFunds and detailing the accepted identifier types (profile id, SEC series id, stored series ticker, verified share-class alias). This goes slightly beyond the schema's generic 'Fund or ETF ticker' and clarifies the data source relationship.
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 states a specific verb and resource: 'Get operational data for a registered investment company from its SEC Form N-CEN annual reports.' It clearly distinguishes from sibling tools like GetFundProfile by focusing on N-CEN filings, and it enumerates the data fields returned. No ambiguity or tautology.
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 gives clear context: it accepts tickers or identifiers from SearchFunds, and notes that only registered funds file N-CEN, with operating companies returning no data. It implies when to use this tool, but does not explicitly name alternative tools or state when not to use it. The guidance is solid but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetFundProfileFund Profile and Top HoldingsARead-onlyInspect
Get a registered fund's profile and largest stored holdings from its latest SEC Form NPORT-P report. Accepts a profile ID, SEC series ID, stored ticker, or verified alias from SearchFunds. Returns registrant, series, assets, reported and stored holding counts, and the largest stored positions. Some multi-series trusts store only tracked-stock positions; reported counts and asset totals still describe the full filing. Use GetFundsHoldingStock for the inverse lookup.
| Name | Required | Description | Default |
|---|---|---|---|
| fund | Yes | Fund profile id, SEC series id, stored series ticker, or verified share-class alias from SearchFunds (e.g., 'ishares-russell-2000-etf-s000004344', 'S000004344', 'IWM', or 'VOO'). | |
| offset | No | Number of ranked holdings to skip before returning rows (default: 0) | |
| maxResults | No | Maximum number of holdings to return, largest first (default: 20, max: 500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral nuance: it notes that multi-series trusts may store only tracked-stock positions but that reported counts and asset totals still reflect the full filing. This explains potential data quirks without contradicting annotations, adding value beyond the 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?
The description is compact and front-loaded: it states the core purpose first, then details return values, then notes a data quirk, and finally points to the alternative. Every sentence serves a purpose, with no redundancy or 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 fund profile tool with three parameters and no output schema, the description provides a complete picture: what it returns (registrant, series, assets, holding counts, largest positions), the acceptable input formats, the underlying SEC form, and a relevant data caveat. Given the annotations and schema, nothing critical is missing for correct invocation.
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 each parameter (fund, offset, maxResults) already documented in detail, including examples for the fund identifier. The description adds no meaning beyond the schema; it only repeats the accepted identifier types and mentions pagination control indirectly. Baseline of 3 is appropriate because the schema carries the full semantic load.
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 states a specific verb and resource: 'Get a registered fund's profile and largest stored holdings from its latest SEC Form NPORT-P report.' It clearly distinguishes from siblings by naming the inverse tool, GetFundsHoldingStock, and specifying the input types accepted. The purpose is unambiguous and distinct.
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 explicitly says 'Use GetFundsHoldingStock for the inverse lookup,' providing a direct when-not condition and naming the alternative. It also implies when to use this tool by describing the return values and the source data, making the decision between this and related fund tools clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetFundsHoldingStockFunds Holding a StockARead-onlyInspect
Get the registered investment companies (mutual funds and ETFs) holding an exact stock or ETF listing, from SEC Form NPORT-P portfolio reports. The listed security's authoritative CUSIP (or, for a listing on another exchange written MIC:TICKER, its ISIN) is matched against the holding rows on each fund series' most recent report (series that stopped filing more than 18 months ago are excluded), so an exited position never shows as current. Returns the fund's registrant and series, the reporting period, the position size, its U.S.-dollar value, its share of the fund's net assets and the payoff profile (Long/Short), largest positions first. Report dates differ per fund series (each files on its own fiscal quarter), so values are as of each row's report date and cross-row totals mix as-of dates.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | Number of matching fund positions to skip before returning rows (default: 0) | |
| ticker | Yes | Listed security ticker (e.g., AAPL, VOO); a listing on another exchange is MIC:TICKER (XPAR:AIR). | |
| maxResults | No | Maximum number of fund positions to return, largest first (default: 20, clamped to 1-500) | |
| registrantOrSeries | No | Optional registrant or series name filter (case-insensitive contains, e.g. 'Vanguard') — reaches positions beyond the largest 500 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, non-openWorld), and the description adds substantial behavior: the matching key, the 18-month filing exclusion so exited positions don't appear current, largest-first ordering, and the caveat that report dates differ per series so cross-row totals mix as-of dates.
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 data source are front-loaded, and each subsequent clause earns its place (matching, exclusion, returned fields, date caveat). It is dense and long for a single paragraph, but nothing is redundant or padded.
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 output schema, the description carries the return burden and does so: registrant/series, reporting period, position size, dollar value, share of net assets, payoff profile, and ordering. Combined with the as-of-date caveat, an agent has everything needed to interpret results.
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 the schema already documents offset, ticker, maxResults and registrantOrSeries. The description adds only minor value (confirming largest-first ordering and the MIC:TICKER/ISIN matching form), so the baseline of 3 is appropriate.
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 — registered investment companies (mutual funds/ETFs) holding an exact stock/ETF listing — with the data source named (SEC Form NPORT-P). This clearly separates it from siblings like GetEtfHoldings (holdings OF a fund) and GetTopHolders (13F institutional holders), so an agent can pick it without opening a 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 for when it applies: an exact listed security, matched by authoritative CUSIP/ISIN against each fund series' most recent report. It does not, however, explicitly name alternatives or state exclusions (e.g. use GetTopHolders for 13F institutions), so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetGoingConcernStatusGoing-Concern Doubt StatusARead-onlyInspect
Get a company's going-concern doubt status: whether its latest examined SEC filing states substantial doubt about the company's ability to continue as a going concern, with the verbatim disclosure, the filing it came from, and the history of examined filings showing when doubt appeared, was alleviated, or cleared. Flags are extracted from each company's newest 10-K/10-Q narrative text and verified before publication; a filing without going-concern language counts as no doubt. Coverage starts when the extraction lane first examined the company — earlier filings are not analyzed, so absence from the history does not rule out prior doubt episodes.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker symbol (e.g., AAPL, MSFT). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description enriches the annotations substantially by disclosing the extraction methodology (from newest 10-K/10-Q narrative, verified before publication), the semantic of 'no doubt' when language is absent, and the coverage boundary. This goes well beyond the readOnlyHint and destructiveHint 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 packed into two dense sentences, front-loaded with the main purpose. The first sentence is long but every clause adds value—scope, output, and history. The second sentence clarifies coverage limitations. No wasted words, though slightly complex sentence structure prevents a perfect 5.
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?
Even without an output schema, the description fully explains what the agent will receive: verbatim disclosure, filing identifier, and history of doubt episodes. It also explains methodology and coverage limits, making it complete for a one-parameter read-only tool.
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 input schema covers ticker with a clear description (e.g., AAPL, MSFT), and schema coverage is 100%. The description does not add any parameter-specific semantics beyond the tool's overall purpose, so the baseline of 3 is appropriate.
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 states exactly what the tool does with a specific verb and resource: it retrieves a company's going-concern doubt status from its latest examined SEC filing, including verbatim disclosure, filing source, and history of doubt episodes. This clearly distinguishes it from sibling tools like GetFdaCatalysts or GetEarningsBrief.
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?
While no alternative tools are explicitly named, the narrow purpose makes the intended use obvious. The description adds important context about coverage limitations (examined filings only, with no analysis of earlier periods), which helps an agent know when the data may be incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetGovernmentContractsFederal Contracts by CompanyARead-onlyInspect
Get federal government contract awards (from USAspending.gov) won by a specific public company. Shows the award (action) date, recipient named by the government, awarding agency, total value (obligated dollars plus unexercised ceiling — not revenue received), outlays when reported, period-of-performance end date, and description. Coverage: only prime contract awards of $1M or more that resolve to a listed company are included, so sums understate total federal revenue. Useful for gauging a company's reliance on federal spending; use GetTopGovernmentContractors to rank companies market-wide.
| Name | Required | Description | Default |
|---|---|---|---|
| agency | No | Optional case-insensitive substring filter on the awarding agency (e.g., 'Defense') | |
| offset | No | Number of matching awards to skip before returning rows (default: 0) | |
| sortBy | No | Sort order: 'amount' (largest total value first, default) or 'date' (most recent award first) | amount |
| ticker | Yes | Stock ticker symbol (e.g., LMT, RTX, BA) | |
| endDate | No | End date in YYYY-MM-DD format (defaults to today) | |
| startDate | No | Start date in YYYY-MM-DD format, filtering on the award action date (defaults to 1 year ago) | |
| maxResults | No | Maximum number of awards to return (default: 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds substantial behavioral context beyond that: data source (USAspending.gov), coverage limitations (only prime awards of $1M+ resolving to a listed company), and the key caveat that reported total value is 'not revenue received.' It also notes that sums understate total federal revenue, which helps agents interpret results correctly. No contradiction with annotations is present.
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 appropriately sized for a tool with 7 parameters, packing source, scope, field semantics, coverage caveats, and an alternative into a compact paragraph. The main action is front-loaded in the first sentence, and later clauses are information-dense rather than padded. A slightly tighter organization could help, but it is not bloated.
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 moderate complexity, 7 parameters, and no output schema, the description covers everything an agent needs: what data is returned, source, coverage/exclusions, definition of key values, defaults context, and when to use a sibling tool. Pagination and date defaults are already in the schema, so the description complements rather than duplicates structured info. This is effectively complete for correct invocation and result interpretation.
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; the description adds additional meaning by clarifying that total value is 'obligated dollars plus unexercised ceiling — not revenue received,' which informs how sortBy='amount' and maxResults should be interpreted. It also expands on the meaning of output fields such as outlays and period-of-performance end date, enriching parameter context. The description does not repeat parameter names or formats, keeping value-add high.
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 opens with a specific verb and resource: 'Get federal government contract awards ... won by a specific public company.' It clearly differentiates from the sibling GetTopGovernmentContractors by noting the per-company scope versus market-wide ranking. The title and annotation reinforce the same purpose, and no ambiguity remains about what the tool does.
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 states the tool is 'useful for gauging a company's reliance on federal spending' and explicitly directs agents to 'use GetTopGovernmentContractors to rank companies market-wide.' This provides clear when-to-use guidance and names the alternative, so an agent can select between the two without opening schemas.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetGuidanceCompany GuidanceARead-onlyInspect
Get company guidance from written Item 2.02 earnings releases and earnings-call transcripts, newest release first, with range, unit, GAAP basis, fiscal period and source provenance. Closed target periods are marked ended. Revenue and diluted-EPS guidance includes the reported actual and verdict once comparable XBRL facts exist; non-GAAP guidance is never compared with GAAP actuals. Coverage notes distinguish unprocessed documents from sources that state no guidance.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker symbol (e.g., AAPL, MSFT), or MIC:TICKER (e.g., XPAR:AIR) for a listing outside the US. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (read-only, non-destructive, closed-world), so the description carries the rest and does so richly: closed target periods are marked 'ended', revenue/diluted-EPS guidance gets an actual-plus-verdict comparison once comparable XBRL facts exist, non-GAAP is never compared to GAAP actuals, and coverage notes distinguish unprocessed documents from sources with no guidance.
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?
Three sentences, front-loaded with the action and sources before the comparison/coverage caveats; no filler. It is dense but each clause carries information an agent needs.
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 output schema, the description usefully characterizes the return shape (ranges, units, basis, fiscal period, provenance, actuals and verdict, coverage notes). It stops short of error or no-coverage edge behavior beyond the coverage-notes hint, but is adequate for a single-parameter read tool.
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% with a single fully documented ticker parameter (including the MIC:TICKER non-US form), so the schema does the work. The description adds nothing about the parameter, making the baseline 3 correct.
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 ('Get company guidance') and pins down the two source types (Item 2.02 earnings releases, earnings-call transcripts) plus the ordering and the returned fields (range, unit, GAAP basis, fiscal period, provenance). This clearly separates it from siblings like GetEarningsBrief, GetEarningsCallTranscript, and GetNonGaapBridge.
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 for when the tool is the right one: it draws guidance only from earnings releases and call transcripts, newest first. It does not name an alternative tool or state exclusions, so the agent still has to infer routing against GetEarningsBrief/GetNonGaapBridge.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetHolderMix13F Holder MixARead-onlyInspect
Who holds a stock or ETF listing, by kind of 13F filer, quarter by quarter: each bucket's share of 13F common shares, its like-for-like change, and new and exited filers. Split by holder type (regulatory records, never names), measured style, turnover, horizon, 13F book size, client base, private funds or location. Also gives the active holders' like-for-like change, which leaves index-like books out. The fundtype dimension instead splits registered funds' Form NPORT-P positions by their Form N-CEN fund type (index funds, index ETFs, active ETFs, active funds, unclassified) as a share of shares outstanding; fund positions sit inside their advisers' 13F reports, so they are never added to 13F totals.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Listed security ticker (e.g., NVDA, VOO) | |
| dimension | No | How to split the holders: type (holder type, default), style, turnover, horizon, aum (13F book size), client (client base), pf (private funds), country (filer location), fundtype (registered funds by N-CEN fund type, from N-PORT, as a share of shares outstanding) | type |
| maxPeriods | No | Quarters to show, newest last (default 4, clamped to 1-12) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds genuine methodological context beyond that: data is regulatory and never names holders, the active-holder like-for-like change excludes index-like books, and fund positions are never added to 13F totals, all of which affect interpretation of results.
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 is front-loaded and every clause carries information, but the prose is dense with run-ons and repeats the dimension list (style, turnover, horizon, etc.) that the schema already enumerates, then returns to fundtype at length. For a three-parameter tool it is longer than necessary.
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 output schema and three fully documented parameters, the description is largely self-sufficient: it explains the returned metrics, the split dimensions, and the key accounting caveats for fund positions. Only the absence of cross-tool guidance keeps it from being fully complete.
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 the baseline is 3, but the description adds real meaning: it expands what each dimension split represents and clarifies the exception for fundtype (Form NPORT-P positions split by N-CEN fund type as a share of shares outstanding, not folded into 13F totals). That nuance goes beyond the enum listing in the schema.
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 concrete verb and resource ('Who holds a stock or ETF listing, by kind of 13F filer, quarter by quarter') and enumerates the specific outputs: share of 13F common shares, like-for-like change, and new/exited filers. It is clearly distinguishable in substance from siblings like GetTopHolders or GetInstitutionalOwnershipHistory, but it never names an alternative tool, so the differentiation is implicit rather than explicit.
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 is implied by the phrase 'Who holds a stock or ETF listing' and by the methodological notes, but there is no explicit when-to-use or when-not-to-use guidance, and no sibling such as GetTopHolders, GetAllHolders, or GetHolderTypeFlows is referenced. The agent must infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetHolderTargetsShareholder TargetsARead-onlyInspect
Shareholder targeting for a stock: the 13F filers of the newest closed quarter that hold its holder-overlap peers (operating companies whose active holders overlap most, funds excluded) but hold no class of the stock itself, ranked by the money they have in those peers. A stock with no overlap peers falls back to its sector's largest operating-company 13F holdings; a fund has no targets. Each target shows its 13F book, the peers' share of it, the peers it holds most of, its measured style and its holder type from regulatory records.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Rank by: 'peerValue' (default, dollars held in the peers) or 'peerWeight' (the peers' share of the filer's 13F book, then book size) | peerValue |
| ticker | Yes | Listed security ticker (e.g., NVDA) | |
| maxResults | No | Maximum number of targets to return (default 25, clamped to 1-500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safe read-only, non-open-world profile, so the bar is lower; the description goes well beyond them by disclosing the ranking algorithm, the fallback-to-sector behavior, the fund-returns-nothing case, and the fields each target carries. It stops short of auth or rate-limit context, but for a read-only lookup this is rich disclosure.
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 in the first sentence, but that sentence is extremely long and heavily nested with parentheticals ('operating companies whose active holders overlap most, funds excluded'), making it dense to parse. Most content earns its place, but the structure could be broken up for scanability.
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 output schema, the description carries the return-value burden and does so by enumerating what each target shows (13F book, peers' share, top peers, style, holder type). Combined with the fallback and fund edge cases, an agent has enough to call and interpret the tool, though the fallback trigger ('no overlap peers') could be defined more concretely.
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% and all three parameters (ticker, sort, maxResults) are documented in the schema, including the sort enum values and the 1-500 clamp. The description adds no parameter-level detail beyond that, so the baseline 3 is appropriate.
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 states a specific resource (13F filers) and a precise selection rule: filers of the newest closed quarter that hold holder-overlap peers but hold no class of the stock itself. This sharply distinguishes it from siblings like GetTopHolders, GetAllHolders, and GetSuperInvestors, which describe current holders rather than non-holding prospects.
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 is implied rather than stated: the definition makes clear it is a prospecting tool (filers who do NOT yet hold the stock), and it names two edge conditions (no overlap peers falls back to sector holdings; a fund has no targets). But it never explicitly says when to prefer it over GetTopHolders or GetOwnershipSignals, nor does it state prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetHolderTypeFlows13F Holder FlowsARead-onlyInspect
Market-wide 13F money flows for a closed quarter by kind of filer: what each bucket bought and sold, net flow, net flow as % of its prior 13F book, and net buyers vs sellers. Buckets: holder type (regulatory records, never names), measured style, turnover, horizon, book size, client base, private funds or location. Optionally split by sector, with ETFs apart. Trades are priced at quarter-average prices; filers with no 13F the quarter before add no flow.
| Name | Required | Description | Default |
|---|---|---|---|
| bucket | No | One bucket token of the dimension (e.g. adv, idx, high) to list that bucket's flow by sector; implies groupBy=sector | |
| groupBy | No | none (default) or sector: split each bucket's flow by sector | none |
| dimension | No | How to split the filers: type (holder type, default), style, turnover, horizon, aum (13F book size), client (client base), pf (private funds), country (filer location) | type |
| reportDate | No | Closed quarter-end report date in YYYY-MM-DD format (defaults to the newest computed quarter; a later date reads the newest computed quarter, an earlier off-quarter date the computed quarter before it) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/safe/openWorld=false, so the description's job is marginal. It earns credit for disclosing non-obvious behavior: trades priced at quarter-average prices, filers with no prior-quarter 13F contributing no flow, and the buckets being regulatory records that never name individuals.
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?
Two sentences, front-loaded with the purpose and metrics before the caveats. The second sentence is dense with an eight-item bucket list, but every clause carries information and nothing is 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 no output schema, the description must carry the return-value burden, and it does describe the measures produced and two important computational caveats. For a four-parameter, fully documented read tool this is largely complete, though bucket-by-sector output shape could be clearer.
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 the baseline is 3. The description restates the dimension options and the sector split in prose, adding a little interpretive context (e.g. that bucket implies groupBy=sector) but no syntax or meaning beyond the schema.
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: market-wide 13F money flows by kind of filer, and enumerates the measures returned (net flow, net flow as % of prior book, net buyers vs sellers). It is clearly a market-aggregate tool rather than an institution-level one, but it never names its nearest siblings (e.g. GetMarketWide13FActivity, GetTopInstitutionalBuyersSellers), so an agent must infer the distinction.
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 implies when the tool fits (closed-quarter flow analysis, optional sector split) and notes the 'with ETFs apart' handling, but gives no explicit when-not or alternative-tool routing. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetIndexChangesIndex Additions and DeletionsARead-onlyInspect
Get the companies that have joined or left a major US stock index, newest first. Changes are derived by comparing consecutive constituent lists from the funds that track the index, so each one is dated to the window between two reports rather than to an announcement: a daily holdings file dates a change to a day, a quarterly filing only to a quarter. Several funds track the same index and each records a change separately, so records for the same company and direction over overlapping windows are collapsed into the single event a reader should see, keeping the narrowest window. This is observed membership, not an announcement feed, so a change appears once a tracking fund has actually reported it. Each addition carries an estimate, not a record, of the index-fund buying it implied, in shares and days of volume.
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | Index name or slug, for example "S&P 500", "sp-500", "nasdaq-100" or "Russell 2000". | |
| maxResults | No | Maximum changes to return, newest first (default 25, max 500). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, closed-world), and the description adds substantial behavior beyond that: changes are derived by diffing consecutive constituent lists, dated to reporting windows rather than announcements, and de-duplicated across funds by keeping the narrowest window. It also flags that additions carry an estimate rather than a record of implied fund buying, which is a meaningful caveat not expressed anywhere in 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?
The purpose is front-loaded in the first sentence and each subsequent sentence contributes distinct information (derivation, dating granularity, de-duplication, estimate caveat). The middle de-duplication sentence is fairly sprawling and could be tightened, but nothing is pure 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 no output schema, the description does well to imply the shape of a change record (company, direction, window, implied buying in shares and days of volume). It does not spell out the concrete response fields or pagination/truncation behavior for maxResults, which leaves a modest gap for a two-parameter read tool with no 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 both parameters (index format, maxResults default/max) are already fully documented in the schema. The description adds no format hints, slug conventions, or guidance beyond what is structured. Baseline 3 is appropriate 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?
It states a specific verb and resource ('companies that have joined or left a major US stock index') and adds an ordering guarantee ('newest first'). This clearly distinguishes it from siblings like GetIndexComposition (current membership) or GetIndexForecast, so an agent can route without opening a 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 gives strong context on what the data represents and explicitly excludes a competing reading ('This is observed membership, not an announcement feed'), which is effectively a when-not statement. However, it never names an alternative sibling tool for the announcement-style or point-in-time-membership use cases, so routing is left partly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetIndexCompositionIndex ConstituentsARead-onlyInspect
Get the current constituent list of a major US stock index: S&P 500, S&P MidCap 400, S&P SmallCap 600, Nasdaq-100, Russell 1000, Russell 2000, or the Dow Jones Industrial Average. Each row carries the company's rank by weight, its ticker, and its share of the index. The list is a full-replication tracking fund's own disclosed holdings, taken from an SEC Form N-PORT filing or from the holdings file the fund publishes daily, and the answer names which fund and which date it came from. A list is only published once a fund's filing reaches us whole, so a partial filing is never served as a shrunken index. Rows that could not be matched to a tracked company are listed under the name the fund reported rather than dropped, because a dropped row would make the index look shorter than it is. Use GetIndexChanges for what has joined or left, and GetIndexForecast for who the published rules point to next.
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | Index name or slug, for example "S&P 500", "sp-500", "nasdaq-100" or "Russell 2000". | |
| offset | No | Rows to skip before returning, for paging through a full list (default 0). | |
| maxResults | No | Maximum constituents to return, heaviest first (default 100, max 500). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only and non-destructive, but the description goes far beyond that: it reveals the data provenance (SEC Form N-PORT or daily holdings file), the fact that the fund name and date are returned, that partial filings are never served, and that unmatched rows are preserved under their reported names rather than dropped. These are significant behavioral traits that an agent needs to know and are not present in the 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 long but every clause earns its place: it states the purpose, lists supported indices, explains data source, notes handling of partial filings and unmatched rows, and gives explicit alternatives—all in a logical flow. It is front-loaded with the key action and scope, and there is no redundant or filler wording.
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?
The tool has only three parameters, no output schema, and no nested objects, yet the description provides a thorough account of the response structure (rank, ticker, share), data provenance, and edge-case behavior (unmatched rows, partial filings). It even covers what the tool does not do via pointers to sibling tools. For a simple read-only list tool, this is complete and exceeds what is needed.
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% for all three parameters (index, offset, maxResults), and the schema already includes defaults and explanations such as 'heaviest first' for maxResults. The description does not add any new information about the parameters themselves; it only describes output structure and behavior, which is not the focus of this dimension. Thus, a baseline score of 3 is appropriate because the schema handles parameter semantics well.
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 opens with a specific verb and resource: 'Get the current constituent list of a major US stock index' and enumerates seven concrete indices, immediately making the tool's scope clear. It also distinguishes itself from siblings by referencing GetIndexChanges and GetIndexForecast as alternatives for different queries, which prevents confusion.
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?
Explicit usage guidance is provided: 'Use GetIndexChanges for what has joined or left, and GetIndexForecast for who the published rules point to next.' This tells the agent when not to use this tool and names the alternatives. The description also explains the data source (fund filings) and the guarantee about complete listings, offering clear context for when to rely on this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetIndexForecastIndex Rebalance ForecastARead-onlyInspect
Apply an index's published entry rules and return candidates with rule-by-rule evidence. S&P results are SCREENS because a committee chooses additions; the S&P 500 adds versioned 90-day empirical join probabilities for eligible candidates and exit probabilities for every member. They are estimates, not guarantees. Russell and Nasdaq-100 are PROJECTIONS decided by published rankings. A non-member with a missing figure has no entry verdict. An unmeasured member stays out of deterministic departure buckets, while the S&P 500 gives it the neutral exit baseline. The Dow has no quantitative rule or forecast. Each model revision is immutable. A model-version change may append a higher revision for the same trading day, and readers use the highest revision.
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | Index name or slug, for example "S&P 500", "nasdaq-100" or "Russell 2000". The Dow is not forecastable. | |
| maxResults | No | Maximum companies to return per bucket (default 25, max 1000). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only establish read-only and non-destructive behavior. The description adds essential behavioral detail: estimates are not guarantees, missing figures produce no entry verdict, unmeasured members are handled differently across indices, and model revisions are immutable with a highest-revision rule. This materially changes how an agent should interpret results.
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 front-loaded with the core operation and then organized by index family, edge cases, and revision semantics. Although dense, every sentence contributes a distinct and material constraint; there is no redundant 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?
This is a complex endpoint with no output schema, yet the description covers the output form (candidates with evidence, probabilities, departure buckets), index-specific forecast certainty, edge-case behavior, and versioning. That is sufficient for an agent to invoke and interpret the tool 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?
The input schema already documents both parameters with 100% coverage, including accepted index forms, the Dow limitation, and maxResults bounds. The description reinforces index-level semantics but does not add new parameter syntax or formatting details, so the baseline 3 is appropriate.
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 first sentence states a specific verb ('Apply'), a resource ('an index's published entry rules'), and a concrete deliverable ('return candidates with rule-by-rule evidence'). It also distinguishes this from sibling tools by framing it clearly as a forecast rather than a historical change report.
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 gives explicit guidance on when results are SCREENS vs PROJECTIONS and states that the Dow has no forecast, so an agent knows where the tool applies and where it does not. It does not explicitly name alternative sibling tools for actual index changes, which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetInsiderOwnershipInsider Ownership SummaryARead-onlyInspect
Get a summary of insider ownership for a stock, ranked by total shares held. Shares come from each insider's most recent SEC Form 3/4/5 filing: the filing's closing balance per security, held directly or through each indirect vehicle the filing names (a trust, partnership or LLC, told apart by its stated nature of ownership and by which balance each trade continues), actual shares only (options and other derivative holdings are excluded), summed into Direct and Indirect columns and restated onto today's split basis, so they can differ from the raw figures in older filings. A vehicle the newest filing does not list is not counted. Former insiders may linger with stale dates or zero shares. Returns at most maxResults insiders (default 30). Use this to understand the insider ownership structure of a company; use GetInsiderTransactions for the underlying trades.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | Number of ranked insiders to skip before returning rows (default: 0, clamped to 0-100000). For the next page, add the returned row count to the clamped current offset; if the next offset exceeds 100000, narrow the filters instead. Stop when fewer than the effective page size (maxResults clamped to 1-500) are returned, or the response's total has been reached. | |
| ticker | Yes | Company ticker symbol (e.g., AAPL, MSFT) | |
| maxResults | No | Maximum number of insiders to return (default: 30, max: 500; values outside 1-500 are clamped) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description goes well beyond that: it explains the aggregation methodology (direct vs indirect vehicles, derivative exclusion, split-basis restatement), and discloses real caveats — vehicles absent from the newest filing are not counted, and former insiders may linger with stale dates or zero shares. That is exactly the kind of data-quality context an agent needs to interpret results.
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 sibling routing are front-loaded, and the dense methodology is placed after the headline so an agent can stop reading early. It is somewhat long and the middle clause chains many qualifiers, but nearly every sentence carries information an agent would otherwise have to infer.
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?
There is no output schema, so the description carries the return-value burden — and it does, specifying the ranked ordering, the Direct/Indirect columns, the split-basis restatement, and the row cap tied to maxResults. Combined with the parameter coverage, nothing an agent needs to call or interpret this tool 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%, including detailed pagination semantics for offset and clamping rules for maxResults, so the schema already does the heavy lifting. The description only restates the default of 30, adding no meaning beyond the structured fields. Baseline 3 is appropriate.
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 opens with a precise verb+resource ('summary of insider ownership for a stock, ranked by total shares held') and immediately qualifies the scope with the data source (SEC Form 3/4/5 closing balances). It also differentiates from the nearest sibling by naming GetInsiderTransactions for underlying trades, so an agent can route 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?
It gives an explicit use case ('understand the insider ownership structure of a company') and names one alternative (GetInsiderTransactions) with the condition that selects it. It does not, however, disambiguate against other ownership-adjacent siblings such as GetBeneficialOwnership, GetTopHolders or GetAllHolders, so the routing guidance is clear but incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetInsiderSentimentScoresInsider Sentiment ScoresARead-onlyInspect
Rank stocks by a peer-relative 0-100 insider-accumulation score over 90 days: net buyers, net shares bought as a percent of shares outstanding, and net buy value. It uses qualifying open-market Forms 4/5 purchases and sales by officers and directors (a holder that is only a 10% owner is excluded); Form 3 establishes initial ownership, and disclosed Rule 10b5-1 trades are excluded. Filter for cluster buys or liquidity, request the bottom ranking for distribution, or pass ticker for one stock's factors and universe rank. Filters never renumber the universe rank. Use GetInsiderTransactions for the filings.
| Name | Required | Description | Default |
|---|---|---|---|
| bottom | No | Return the LOWEST-scored stocks instead — the heaviest peer-relative net insider selling — lowest score first. | |
| offset | No | Number of matching ranked stocks to skip before returning rows (default: 0; ignored for a single-ticker lookup). | |
| ticker | No | Optional stock ticker (e.g. NVDA): returns that one stock's score, factor breakdown, and rank within the scored universe instead of the leaderboard. The other filters do not apply to a single-ticker lookup. | |
| maxResults | No | Maximum number of stocks to return (default: 25, highest score first; clamped to 1-200). | |
| minMarketCap | No | Minimum market capitalization in US dollars (e.g. 300000000 = $300M; default 0 = no floor). Stocks with an unknown market cap are excluded when set. | |
| minSharePrice | No | Minimum share price in US dollars (e.g. 5 = $5; default 0 = no floor). Stocks with an unknown price are excluded when set. | |
| clusterBuysOnly | No | Return only stocks flagged as cluster buys (three or more distinct insiders buying in the window). | |
| minDollarVolume | No | Minimum trailing 3-month average daily dollar volume in US dollars (e.g. 5000000 = $5M/day; default 0 = no floor). Stocks with unknown volume are excluded when set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, non-destructive, and closed-world behavior, but the description adds important methodology: the score components, the 90-day window, the use of qualifying open-market Forms 4/5, the exclusion of mere 10% owners and Rule 10b5-1 trades, and the fact that filters never renumber the universe rank. These are substantive behavioral details 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 four sentences and front-loads the scoring concept, then methodology, then usage. It is dense but every sentence contributes relevant information, with no obvious 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 no output schema, the description still explains what a caller gets (leaderboard ranking, single-ticker factor breakdown and universe rank) and how filters affect results. Combined with full schema coverage and annotations covering safety, the definition is complete enough for correct invocation.
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% and each parameter is already well documented. The description adds little per-parameter meaning beyond reinforcing filter behavior and noting that filters do not renumber ranks; the baseline of 3 is appropriate when the schema carries the parameter definitions.
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 states a specific verb (Rank) and resource (stocks by a peer-relative 0-100 insider-accumulation score over 90 days), and it names the sibling GetInsiderTransactions for the underlying filings. An agent can distinguish this from other insider tools 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?
It explicitly describes the three main invocation modes (filter for cluster buys/liquidity, request bottom ranking for distribution, pass ticker for a single stock's factors and rank) and routes the agent to GetInsiderTransactions for raw filings. The when-to-use and alternative are both clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetInsiderTransactionsInsider Transactions (Forms 4/5)ARead-onlyInspect
Get recent insider trading transactions for a stock from SEC Forms 4 and 5, newest first. Form 3 supplies initial ownership rather than a transaction. The Type column carries the SEC transaction code meaning: 'Buy'/'Sell' are open-market purchases/sales only, while Award, Conversion, Exercise, Tax Payment, Expiration, Gift, Inheritance, Discretionary and Other are compensation or derivative mechanics — not conviction trades. The 10b5-1 column marks trades made under a pre-arranged Rule 10b5-1 plan ('-' = filing predates the 2023 checkbox). Per-row Shares/Price/Value are as filed; Owned After is the post-transaction balance restated onto today's split basis, tracked per security kind and ownership form. Supports optional date-range, transaction-type and insider-name filters to reach history beyond the newest rows. Use this to understand insider buying/selling activity.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | Number of matching transactions to skip before returning rows (default: 0) | |
| ticker | Yes | Company ticker symbol (e.g., AAPL, MSFT) | |
| toDate | No | Only include transactions on or before this date, format yyyy-MM-dd (optional) | |
| fromDate | No | Only include transactions on or after this date, format yyyy-MM-dd (optional) | |
| maxResults | No | Maximum number of transactions to return (default: 50, max: 500; values outside 1-500 are clamped) | |
| insiderName | No | Only include transactions by insiders whose SEC-filed name contains every word of this value, case-insensitive (e.g. 'Huang') (optional) | |
| transactionType | No | Only include one transaction type: Buy, Sell, Award, Conversion, Exercise, TaxPayment, Expiration, Gift, Inheritance, Discretionary or Other (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description's value lies in interpretation, and it delivers: it explains that Buy/Sell are open-market only while other types are compensation/derivative mechanics, decodes the 10b5-1 column, and clarifies that Owned After is split-restated. This prevents common misreadings of the data.
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 long but information-dense, with the core action front-loaded in the first sentence. Every sentence earns its place by adding scope, column semantics, or a caveat; minor formatting improvements could make it punchier, but there is no 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 no output schema, the description carries the burden of explaining return semantics, and it covers ordering, form source, column meanings, split adjustment, and filter reach. Combined with fully documented schema parameters, an agent has enough to invoke the tool correctly and interpret the results.
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 baseline is 3. The description adds practical meaning by explaining what transactionType values represent ('Buy'/'Sell' are open-market only; others are mechanics) and why date-range, transaction-type, and insider-name filters exist, going beyond bare schema format documentation.
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 — 'Get recent insider trading transactions for a stock from SEC Forms 4 and 5, newest first' — and distinguishes Form 3 as initial ownership rather than a transaction. This makes the tool's scope immediately recognizable and separable from sibling tools like GetInsiderOwnership and GetInsiderSentimentScores.
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: the tool is for understanding insider buying/selling activity and can reach history beyond newest rows via filters. It also clarifies what Form 3 is not, but it does not explicitly name sibling alternatives or state when to prefer GetInsiderOwnership versus this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetInstitutionalOwnershipHistoryInstitutional Ownership HistoryARead-onlyInspect
Get the historical trend of aggregate reported 13F exposure for an exact stock or ETF listing across multiple quarters. The legacy Total Shares field sums reported quantities across common-share rows, put/call notional-underlying rows, and any tracked principal-denominated rows, so it is not a pure share-ownership measure. Shows total reported quantity, published position value, and filer count. Share Chg (QoQ) is like-for-like: it compares only filers with an observed 13F in both quarters, and each quarter notes how many filers and shares it excluded (the largest named), so missing filings and filer identity changes are not trades. Values normally use report-date closing prices, may fall back to filer values, and can include zero when unavailable. While the newest quarter's filing window is open, non-ETF primary stocks use a provisional combined view; ETF listings remain exact and as-filed because carry-forward is filer-wide.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Listed security ticker (e.g., AAPL, VOO) | |
| maxPeriods | No | Maximum number of quarterly periods to return (default: 8, clamped to 1-500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only safety, so the bar is lower, and the description clears it: it discloses that the legacy Total Shares field mixes share, put/call underlying, and principal rows, that QoQ change is like-for-like with exclusions, that values may fall back to filer values or be zero, and that non-ETF primary stocks use a provisional combined view during the filing window. That is substantial methodological context beyond the 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 purpose is front-loaded in the first sentence and the following sentences each carry a distinct caveat rather than filler. It is dense and long, but the length is justified by the methodology being explained; only minor tightening is possible.
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 output schema, the description compensates by naming the returned fields (total reported quantity, published position value, filer count, Share Chg QoQ) and explaining their interpretation pitfalls. For a two-parameter read tool, nothing an agent needs to call and interpret it 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% with only two parameters, so the schema already documents ticker format and the maxPeriods default/clamp. The description adds no parameter-level detail beyond implying quarter granularity, so the baseline of 3 applies.
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 and resource: 'historical trend of aggregate reported 13F exposure for an exact stock or ETF listing across multiple quarters.' It also names the outputs (quantity, position value, filer count), which distinguishes it from sibling tools like GetTopHolders or GetInstitutionQuarterlyActivity.
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 scope ('exact stock or ETF listing', multi-quarter trend) implies when this is the right tool, and it implicitly separates itself from single-quarter/single-institution siblings. However, it never names an alternative tool or states an explicit when-not condition, leaving routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetInstitutionCloneBacktest13F Portfolio Clone BacktestARead-onlyInspect
Backtest how cloning an institutional filer's reported 13F portfolio would have performed against a market benchmark, either over a trailing window (windowYears) or an explicit fromDate/toDate range. Reconstructs the filer's portfolio at each quarterly 13F snapshot, rebalances on the SEC filing lag, and values each exact listed security on raw closing prices. Returns price return (dividends excluded), CAGR, and max drawdown for the clone and benchmark, plus price-return alpha. Returns are unavailable when a held security or benchmark crosses a captured split without a certified price basis; the requested window is not shortened to hide it.
| Name | Required | Description | Default |
|---|---|---|---|
| toDate | No | Optional window end in YYYY-MM-DD format (defaults to today when only fromDate is given) | |
| fromDate | No | Optional window start in YYYY-MM-DD format for an anchored historical backtest (e.g. 2015-01-01); overrides windowYears | |
| benchmark | No | Benchmark ticker to compare against (default: SPY) | SPY |
| institution | Yes | Institution name or SEC CIK (e.g., 'Berkshire Hathaway', '1067983', or zero-padded '0001067983'). Unique partials and verified aliases resolve; ambiguous partials return candidate CIKs. | |
| windowYears | No | Trailing window length in years anchored at today (default: 3, clamped to 1-20; ignored when fromDate/toDate are supplied) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and destructiveHint annotations, the description discloses substantial behavioral detail: quarterly portfolio reconstruction, rebalancing on SEC filing lag, valuation on raw closing prices, exclusion of dividends, and a specific limitation where returns become unavailable after a captured split without a certified price basis. It also explicitly states that the window is not shortened to hide this issue, which is unusually transparent.
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 well-structured with four purposeful sentences: purpose/scope, methodology, return metrics, and a critical limitation. Each sentence earns its place without fluff, and the most important information is front-loaded.
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 moderately complex backtest tool with no output schema, the description sufficiently covers input modes, methodology, return metrics, and edge-case behavior. It explains what the agent can expect from the result, including the important caveat about unavailable returns, making the definition complete for a competent agent.
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 the schema already documents all five parameters in detail. The description adds conceptual context by linking windowYears to trailing mode and fromDate/toDate to anchored mode, but it does not significantly extend meaning beyond the parameter descriptions already present in the schema.
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 opens with a specific verb and resource: 'Backtest how cloning an institutional filer's reported 13F portfolio would have performed against a market benchmark.' This clearly identifies the tool's unique function and distinguishes it from sibling tools like GetInstitutionPortfolio or CompareInstitutionPortfolios, which provide holdings or comparisons rather than clone performance backtesting.
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 establishes context by explaining that the tool can run over a trailing window or an explicit date range, with fromDate overriding windowYears. It does not explicitly name alternative tools or state when not to use this tool, but the core usage context is unambiguous enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetInstitutionConsensusHoldingsConsensus Holdings Across InstitutionsARead-onlyInspect
Combine 2-25 institutions' 13F portfolios on their latest common report date. Ranks stocks by holder count, then combined value. Published values normally use report-date closing prices, may fall back to filer values, and can be zero when unavailable. Set minInstitutions to 2 or more for positions shared by multiple filers.
| Name | Required | Description | Default |
|---|---|---|---|
| maxResults | No | Maximum number of stocks to return (default: 30, clamped to 1-500) | |
| reportDate | No | Quarter-end 13F report date in YYYY-MM-DD format (defaults to the latest common quarter; an off-quarter date snaps to the nearest common report on or before it) | |
| minInstitutions | No | Minimum number of institutions that must hold a stock (default: 1; set 2 or more for shared positions) | |
| institutionNames | Yes | Institution names or CIKs (2-25). Unique partial names and verified aliases resolve; ambiguous partials return candidate CIKs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds valuable behavioral detail: values 'normally use report-date closing prices, may fall back to filer values, and can be zero when unavailable.' This goes beyond the annotations by explaining data quirks the agent needs to anticipate.
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?
Three sentences with no redundancy. The main function is front-loaded, followed by ranking behavior, value caveats, and a usage tip. Every sentence earns its place.
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?
The description covers input constraints, ranking logic, value fallback behavior, and the shared-position threshold. Since there is no output schema, it would be helpful to state the exact returned fields explicitly, but the description gives enough shape (stocks ranked by holder count and combined value) for an agent to invoke 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 the baseline is 3. The description reinforces the minInstitutions behavior and institution count range, but adds little beyond what the schema already states for each parameter. No significant new parameter-level meaning is introduced.
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 states a specific verb ('Combine'), a clear resource ('2-25 institutions' 13F portfolios'), and the output behavior ('Ranks stocks by holder count, then combined value'). This distinguishes it from related siblings like GetInstitutionPortfolio (single institution) and CompareInstitutionPortfolios (comparison rather than consensus aggregation).
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 indicates the use case: aggregating 2-25 institutions' holdings and finding shared positions via minInstitutions. It does not explicitly name alternatives or state when not to use the tool, but the focus on consensus across multiple filers provides clear context for selection among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetInstitutionPortfolioInstitution Portfolio (13F)ARead-onlyInspect
View the tracked stock positions of a specific institutional investor from an SEC 13F-HR filing. Shows the largest positions by published value (default 20, max 500), with share counts, value, percent of tracked 13F value, and position count. Values normally use report-date closing prices, may fall back to filer values, and can be zero when unavailable. Coverage is limited to tracked U.S.-listed common stocks and related put/call positions; use position type before treating options as ownership. Use SearchInstitutions first when the name is ambiguous.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | Number of ranked holding rows to skip before returning rows (default: 0, clamped to 0-100000). For the next page, add the returned row count to the clamped current offset; if the next offset exceeds 100000, narrow the filters instead. Stop when fewer than the effective page size (maxResults clamped to 1-500) are returned, or the response's total has been reached. | |
| maxResults | No | Maximum number of holdings to return (default: 20, clamped to 1-500) | |
| reportDate | No | Quarter-end 13F report date in YYYY-MM-DD format (defaults to the holder's latest; an off-quarter date snaps to the nearest report on or before it) | |
| institutionName | Yes | Institution name or SEC CIK. A unique partial name resolves; an ambiguous partial returns candidate CIKs instead of selecting silently. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, closed-world). The description goes further by disclosing value provenance ('report-date closing prices, may fall back to filer values, and can be zero when unavailable') and a coverage boundary ('U.S.-listed common stocks and related put/call positions'), which are non-obvious data-quality caveats 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-loads the core purpose in sentence one, then layers return shape, value caveats, coverage limits, and routing advice. Dense but every sentence carries information; slight compression makes it read as one block rather than scannable clauses.
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?
There is no output schema, so the description carries the burden and does: it enumerates the returned fields (share counts, value, percent of tracked 13F value, position count) and flags the value-unavailable and options-interpretation cases. Nothing essential for correct invocation 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 the schema already documents offset, maxResults, reportDate, and institutionName in detail, including pagination arithmetic. The description merely restates defaults (20/500) and ranking order, adding no new parameter meaning beyond the schema baseline.
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 ('View the tracked stock positions of a specific institutional investor') plus the exact data source ('SEC 13F-HR filing'). This framing lets an agent separate it from stock-centric siblings like GetTopHolders and aggregate siblings like GetInstitutionConsensusHoldings 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 one explicit prerequisite ('Use SearchInstitutions first when the name is ambiguous') and cautions on interpreting put/call rows. It does not, however, say when to prefer this over CompareInstitutionPortfolios, GetInstitutionSummary, or GetTopHolders, so sibling routing is left partly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetInstitutionQuarterlyActivityInstitution Quarterly ActivityARead-onlyInspect
Get an institution's quarterly position-change activity — Initiated / Increased / Reduced / Exited stocks diffed against the immediately prior quarter. Common shares, put/call positions and principal amounts are separate rows labelled by Type. Returns the buckets as one markdown section per bucket, sorted by absolute Δ market-value desc (Δ Value includes price movement, not just trading). Use bucket to filter to a single bucket. Use this to answer 'what did this fund do this quarter?'
| Name | Required | Description | Default |
|---|---|---|---|
| bucket | No | Filter to a single bucket: initiated, increased, reduced, exited (omit for all four) | |
| maxResults | No | Maximum number of stocks to return per bucket (default: 20, clamped to 1-500) | |
| reportDate | No | Quarter-end 13F report date in YYYY-MM-DD format (defaults to the holder's latest; an off-quarter date snaps to the nearest report on or before it) | |
| institutionName | Yes | Institution name or CIK (a unique partial resolves; ambiguous partials return candidate CIKs) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, closed-world), so the description adds real value on top: it discloses the return shape (one markdown section per bucket), the sort order (absolute Δ market-value desc), and the crucial caveat that Δ Value includes price movement rather than pure trading activity. That caveat materially changes interpretation of results.
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, then the return format, then the sort semantics, then the filtering hint — every sentence carries distinct information with no 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?
No output schema exists, but the description compensates by explaining the return structure (markdown section per bucket), row labelling by Type, and sort order. Combined with 100% schema coverage and safety annotations, an agent has everything needed to call and interpret this tool.
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 the schema already documents bucket, maxResults, reportDate, and institutionName including the partial-resolution and snapping behavior. The description's 'Use `bucket` to filter to a single bucket' largely restates the schema, so the baseline of 3 is appropriate.
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?
Names a specific verb+resource (institution quarterly position-change activity) and pins down the scope precisely: initiated/increased/reduced/exited diffs against the prior quarter. It also distinguishes itself from similar siblings such as GetInstitutionPortfolio and GetInstitutionalOwnershipHistory by specifying that this is a quarter-over-quarter diff rather than a holdings snapshot.
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 a clear intended use case ('what did this fund do this quarter?') and tells the agent how to narrow output with `bucket`. It stops short of naming an alternative tool or stating when NOT to use it (e.g., versus GetInstitutionConsensusHoldings or GetMarketWide13FActivity), so it falls 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.
GetInstitutionSectorAllocationInstitution Sector AllocationARead-onlyInspect
Get an institution's 13F portfolio allocation for a given report quarter (defaults to the latest), grouped by fine-grained industry (default) or rolled up by sector via groupBy. Returns a markdown table sorted by % of portfolio descending, with stocks lacking a classification collapsed into a single 'Unclassified' row at the end. Published values normally use report-date closing prices, may fall back to filer values, and can be zero when unavailable. Use SearchInstitutions for an exact CIK; ambiguous partial names return candidates instead of selecting silently.
| Name | Required | Description | Default |
|---|---|---|---|
| groupBy | No | Grouping level: 'industry' (default, fine-grained) or 'sector' (broad rollup) | industry |
| reportDate | No | Quarter-end 13F report date in YYYY-MM-DD format (defaults to the holder's latest; an off-quarter date snaps to the nearest report on or before it) | |
| institutionName | Yes | Institution name or CIK (a unique partial resolves; ambiguous partials return candidate CIKs) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and non-destructive behavior, and the description adds substantial behavioral context: outputs a markdown table, sorts by portfolio percentage, collapses unclassified stocks, falls back from report-date prices to filer values, and may return zeros. No contradiction with 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?
Four information-dense sentences, each earning its place. The core purpose is front-loaded, followed by output format, price-source caveats, and name-resolution guidance, with 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?
With no output schema, the description fully covers return format, ordering, unclassified rows, and data caveats. It also covers defaults, grouping, date snapping, and name resolution, giving an agent everything needed to invoke the tool 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%, but the description adds valuable meaning beyond the schema: groupBy semantics, reportDate defaulting and off-quarter snapping, and how institutionName resolution handles unique vs ambiguous partials. This gives an agent operational guidance the schema alone does not provide.
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: 'Get an institution's 13F portfolio allocation' for a report quarter, with explicit grouping by industry or sector. It also distinguishes itself by describing the sorted markdown table output and unclassified-row behavior, which separates it from similar portfolio-related 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?
Provides clear context: defaults to latest report, supports fine-grained industry or sector rollup, and returns candidates for ambiguous partial names. It explicitly directs users to SearchInstitutions for exact CIK matching, but it does not contrast itself with closely related tools like GetInstitutionPortfolio or GetInstitutionConsensusHoldings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetInstitutionStyleHistoryInstitution Style HistoryARead-onlyInspect
Get an institutional 13F filer's portfolio style quarter by quarter, measured from its filed common-share book: style band (index-like, systematic-like, concentrated, diversified active), turnover band, holding-horizon band, and the measurements behind them (equity value, stock count, active share against every 13F filer's combined book and against the closest benchmark among the S&P 500, S&P MidCap 400, S&P SmallCap 600, Russell 1000, Russell 2000, Nasdaq-100 and Dow Jones Industrial Average with its as-of date, sector active share, top 10 weight, effective positions, trailing annual turnover, value-weighted holding period), plus the newest quarter's active share against every benchmark. Bands are measurements with stated thresholds, never the firm's own description. Closed quarters only; the newest quarter is measured once its filing window closes.
| Name | Required | Description | Default |
|---|---|---|---|
| maxPeriods | No | Number of measured quarters to return, newest first (default: 8, clamped to 1-40) | |
| institutionName | Yes | Institution name or CIK (a unique partial resolves; ambiguous partials return candidate CIKs) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/non-destructive/closed-world, so the description is free to add semantics it does add: bands are objectively measured with stated thresholds and are 'never the firm's own description', plus the closed-quarter/measurement-timing rule. That is real behavioral context beyond the 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 entire description is one enormous run-on sentence with a huge parenthetical enumeration of every metric. It is front-loaded with the purpose, but the list-of-measurements should be structured as a list; the density hurts readability.
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 output schema, the description carries the burden of explaining return values and does so thoroughly, enumerating the bands and the metrics behind them plus the benchmark set. Only minor gaps (e.g., no ordering/pagination note beyond maxPeriods semantics) remain.
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 both parameters are documented in the schema (maxPeriods with range, institutionName with partial/CIK resolution). The description adds no parameter-specific meaning, so the baseline of 3 applies.
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 (get) and precisely scoped resource (an institutional 13F filer's portfolio style quarter by quarter) plus the exact outputs it produces: style band, turnover band, holding-horizon band and the underlying measurements. This clearly distinguishes it from siblings like GetInstitutionPortfolio, GetInstitutionQuarterlyActivity and GetInstitutionSectorAllocation.
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 specifies the temporal constraint ('Closed quarters only; the newest quarter is measured once its filing window closes') which guides when results are available, but it never names an alternative tool or states when-not to use this one versus the other institution tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetInstitutionSummaryInstitution Portfolio SummaryARead-onlyInspect
Get the portfolio summary header for an institutional 13F filer — published tracked 13F value (not total firm AUM), position count, top-10 / top-25 concentration, QoQ turnover, and the latest / prior report dates with the count of quarters tracked, then the holder's profile from regulatory records: entity type and the record that decided it, Form ADV adviser facts (regulatory assets, client base, private funds, LEI) with roster history and dated Schedule D private funds, registered funds it advises, the parent 13F filer that reports its holdings, and earlier or later CIKs its 13F reports continue under, then any strategy the firm states in its own filed brochure (quoted, dated, linked), then its style, turnover and horizon bands measured from its filed book. Values use report-date closing prices, may fall back to filer values, and can be zero when unvalued. Resolve exact CIKs with SearchInstitutions; ambiguous partial names return candidates rather than selecting a filer silently.
| Name | Required | Description | Default |
|---|---|---|---|
| reportDate | No | Quarter-end 13F report date in YYYY-MM-DD format (defaults to the holder's latest; an off-quarter date snaps to the nearest report on or before it) | |
| institutionName | Yes | Institution name or CIK (a unique partial resolves; ambiguous partials return candidate CIKs) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly/openWorld=false/destructive=false), the description discloses meaningful semantics: the value is published tracked 13F value, explicitly NOT total firm AUM; values use report-date closing prices, may fall back to filer values, and can be zero when unvalued. It also states that ambiguous partial names return candidates rather than silently select a filer. These are non-obvious behavioral caveats that the annotations do not cover.
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 content is front-loaded (the summary fields come first), but the entire description is one very long run-on sentence chained with 'then ... then ... then', which is hard to parse. Given there is no output schema and return contents must be conveyed, the length is defensible, but the packing is denser than it needs to be.
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 output schema, the description carries the burden of describing return values and does so comprehensively: the summary metrics, the holder profile layers (regulatory record, Form ADV, parent filer, prior/next CIKs, filed brochure strategy, style bands), plus data-quality caveats and the CIK-resolution flow. An agent has enough to call this 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 the schema already documents both parameters, including the off-quarter snapping and partial-name resolution behavior. The description reinforces but does not extend those semantics, so the baseline 3 is appropriate; the schema does the heavy lifting here.
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 gives a precise verb+resource ('portfolio summary header for an institutional 13F filer') and enumerates exactly what it returns: tracked 13F value, position count, top-10/25 concentration, QoQ turnover, report dates, holder profile, Form ADV facts, style/horizon bands. This is highly specific, but it never names or contrasts against closely related siblings such as GetInstitutionPortfolio, GetInstitutionQuarterlyActivity or GetHolderMix, so the agent must infer the boundary itself.
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 gives explicit routing guidance for input resolution: 'Resolve exact CIKs with SearchInstitutions; ambiguous partial names return candidates rather than selecting a filer silently.' This names an alternative tool and the condition for using it. However, there is no when-to-use/when-not guidance relative to the portfolio- and ownership-summary siblings, so the usage context is clear but incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetInvestmentAdviserInvestment Adviser Profile (Form ADV)ARead-onlyInspect
Get the full Form ADV profile for a single SEC-registered or exempt reporting investment adviser by its Organization CRD number: legal and business names, SEC file number, main office, website, regulatory assets under management (discretionary, non-discretionary and total), employee count, and how the firm is compensated (fee structure); exempt reporting advisers do not report these Item 5 figures. Find CRD numbers with SearchInvestmentAdvisers.
| Name | Required | Description | Default |
|---|---|---|---|
| crd | Yes | The adviser's Organization CRD number (e.g., 231) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false and destructiveHint=false, so safety is covered. The description adds real behavioral value by warning that 'exempt reporting advisers do not report these Item 5 figures', telling the agent to expect missing/empty AUM, headcount and fee fields rather than treating them as an error.
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?
Two sentences, zero padding: the first front-loads the operation and the full return surface, the second handles the alternative-tool routing. Every clause earns its place, especially the field list, which substitutes for the absent 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 no output schema, the enumerated field list and the exempt-reporting-adviser caveat give the agent a solid picture of what comes back. It stops short of covering failure modes (invalid/unknown CRD) or whether historical filings are included, which keeps it from a 5.
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 the crd parameter is already documented in the schema (integer, with example 231). The description confirms the entity scope (SEC-registered or exempt reporting adviser) but adds no format, validation or error semantics beyond the schema. Baseline 3 applies.
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 (Get) and resource (full Form ADV profile for one SEC-registered or exempt reporting investment adviser) keyed by Organization CRD number, and enumerates the returned fields. It is clearly distinguishable from the sibling SearchInvestmentAdvisers, which it explicitly names.
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 line 'Find CRD numbers with SearchInvestmentAdvisers' routes the agent to the correct alternative when the required identifier is unknown, which is the key usage decision for a single-entity lookup. There is no explicit when-not guidance (e.g., what to do for a not-found CRD), but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetInvestorEventSlideMetadataInvestor Event Slide MetadataARead-onlyInspect
Get metadata and access links for a captured investor-event slide deck by event id. Returns the same deck metadata as REST: event and ticker, call date, deck title and source, PDF versus image-slideshow kind, page count, capture time, MIME type, and either the deck's public PDF URL or its ordered public slide-image URLs, which open in a browser without an API key. The binary PDF/image contents are not embedded in the response. Get the event id from ListInvestorEvents or GetEarningsCallEvent.
| Name | Required | Description | Default |
|---|---|---|---|
| eventId | Yes | The investor event id (from ListInvestorEvents or GetEarningsCallEvent) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavior beyond annotations: describes returned fields, public PDF or ordered slide-image URLs, browser access without an API key, and explicitly notes that binary contents are not embedded. This gives the agent a clear expectation of response shape and access model.
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-loads purpose, then return details, then id source. Despite listing many fields, each sentence contributes useful information without 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?
With no output schema, the description fully explains the return payload and access links. Annotations cover safety, and the description supplies the remaining calling context needed.
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 single eventId parameter is fully documented in the schema, including its source. The description repeats the same source and adds no new syntax or format meaning beyond the schema, so baseline 3 is appropriate.
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 metadata and access links for an investor-event slide deck by event id. It clearly distinguishes this metadata tool from sibling transcript and event-listing tools.
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 where to get the required eventId, naming ListInvestorEvents and GetEarningsCallEvent explicitly. It does not directly contrast with GetInvestorEventTranscript, but the use case is clear from the purpose and required id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetInvestorEventTranscriptInvestor Event TranscriptARead-onlyInspect
Get the speaker-labelled transcript of a specific investor event (earnings call, conference, investor day) by its event id — every speaker turn in order, attributed to the real person (executive or analyst) with their role when the resolution is trusted; unverified voices show as a role label (e.g. Operator) or a neutral speaker number. Get the event id from ListInvestorEvents. Use this for conferences and other non-earnings events, which have no fiscal quarter to key on.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of speaker turns to return (default 50, max 200; values outside 1-200 are clamped) | |
| offset | No | Number of leading speaker turns to skip, for paging through events longer than the 200-turn cap (default 0) | |
| eventId | Yes | The investor event id (from ListInvestorEvents) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context about speaker resolution: 'every speaker turn in order, attributed to the real person... when the resolution is trusted; unverified voices show as a role label... or a neutral speaker number.' This explains the output's trustworthiness and fallback behavior, which is beyond the annotation. A 4 is appropriate because it enriches understanding without redundancy.
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 compact and front-loaded: it starts with the core function, then details output attributes, then gives usage context. Each clause carries useful information—no filler. It is slightly dense due to the speaker-resolution details, but that is directly relevant to the tool's purpose. Overall, it is well-structured for its 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?
For a read-only tool with one required parameter and well-documented schema, the description covers the output format (speaker turns, attribution), the source of the id, and the scope (non-earnings events). It does not discuss error cases or edge behavior, but those are not critical given the read-only nature and existing pagination notes in the schema. The tool is sufficiently contextualized among its siblings.
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%: each parameter (eventId, limit, offset) has a description, including the clamping range for limit and paging purpose for offset. The description only adds a sourcing hint for eventId ('Get the event id from ListInvestorEvents'), which already appears in the schema's eventId description. Since the schema does the heavy lifting, the description adds little extra meaning, so baseline 3 is correct.
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 states a specific verb ('Get'), a clear resource ('speaker-labelled transcript of a specific investor event'), and the means of identification ('by its event id'). It explicitly contrasts with earnings calls, distinguishing it from the sibling GetEarningsCallTranscript, so an agent can immediately tell them apart without reading schemas.
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 gives explicit guidance: 'Use this for conferences and other non-earnings events, which have no fiscal quarter to key on,' which tells when to use this tool and implies when not to (earnings calls). It also directs the agent to obtain the event id from ListInvestorEvents, providing a clear prerequisite. This is nearly complete usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetInvestorRelationsNewsInvestor Relations NewsARead-onlyInspect
Get recent investor-relations press releases for a stock, scraped from the company's IR website. Returns the most recent news items (headline, publish date, summary when the source provides one, and link) in reverse-chronological order. Use this to see a company's latest official announcements straight from its IR page, distinct from third-party news. Coverage is partial — only companies whose IR page has been discovered and content-scraped have items, so an empty answer may be a coverage gap rather than corporate silence; the response says which case applies.
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | Optional earliest publish date, strict yyyy-MM-dd (UTC). Only items published on or after this date are returned. | |
| offset | No | Number of matching news items to skip before returning rows (default: 0). | |
| ticker | Yes | Company ticker symbol (e.g., NVDA), or MIC:TICKER (e.g., XPAR:AIR) for a listing outside the US. | |
| maxResults | No | Maximum number of news items to return (default: 20, max: 500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds genuinely useful behavior beyond that: partial coverage, the possibility of an empty result being a coverage gap rather than corporate silence, and that the response signals which case applies. It does not discuss pagination or rate/refresh behavior, keeping it short of a 5.
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?
Three sentences: purpose, return shape, and usage caveat. Front-loaded and mostly economical, though 'straight from its IR page, distinct from third-party news' slightly restates the opening source claim.
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 output schema, the description usefully enumerates returned fields (headline, publish date, summary, link) and ordering (reverse-chronological). Combined with the coverage caveat, an agent has everything needed to call it and interpret an empty response.
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 since, offset, maxResults, and ticker are already fully documented with formats and defaults. The description adds no parameter-level detail (e.g., date syntax or pagination interaction), so the baseline 3 applies.
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 gives a specific verb+resource ('Get recent investor-relations press releases for a stock') and adds the source scoping ('scraped from the company's IR website'), which cleanly separates it from third-party news tools in the sibling list. An agent can identify the tool's output and origin 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?
It states when to reach for this tool ('see a company's latest official announcements straight from its IR page, distinct from third-party news'), giving clear selection context. It stops short of naming a specific alternative sibling (e.g., a general news or web-data feed tool) or stating when-not-to-use, so it is not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetIpoDetailsIPO Registration DetailsARead-onlyInspect
Get one S-1/F-1 registration's full picture by the filer's SEC CIK (as listed by GetIpoFeed): lifecycle status, verified offering classification, effective-prospectus accession and EDGAR link, proposed ticker and exchange, the offer price range and shares offered with their verbatim prospectus quotes, what the company does, how it will use the proceeds, the underwriting banks in cover order, the key summary risk factors (each with its verbatim prospectus sentence), the annual pre-IPO financials from the filer's own XBRL-tagged statements, and the complete S-1/amendment/prospectus filing chain with EDGAR links. Underwriter and risk-factor availability distinguishes pending/rejected extraction from a completed read that stated none. Everything extracted is verified against the filing text and never estimated.
| Name | Required | Description | Default |
|---|---|---|---|
| cik | Yes | The filer's SEC CIK, with or without leading zeros (e.g. 1995137). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds valuable interpretive context: that missing underwriters/risk factors distinguish pending/rejected extractions, and that all data is 'verified against the filing text and never estimated.' This goes beyond the structured annotations without contradicting them.
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 sentence with a long semicolon-separated list. It front-loads the main action but would benefit from bullet points or shorter sentences for readability. Every item is informative, but the structure is not optimized for quick comprehension.
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?
There is no output schema, so the description correctly carries the burden of explaining return values. It inventories all major data groups (lifecycle, offering, prospectus, risk factors, financials, filing chain) and even clarifies interpretation of missing fields. The tool is simple (one input), so this seems sufficiently complete.
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 only parameter, cik, is fully described in the schema (CIK with or without leading zeros). The description adds a minor contextual note that the CIK comes from GetIpoFeed, but this does not alter the schema's meaning. Since schema coverage is 100%, baseline 3 is appropriate.
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 opens with 'Get one S-1/F-1 registration's full picture by the filer's SEC CIK (as listed by GetIpoFeed)', which clearly specifies the verb, resource, and differentiation from the list-oriented GetIpoFeed. The enumerated output categories (lifecycle status, offering classification, financials, filing chain) make the tool's purpose unmistakable.
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 explicitly references GetIpoFeed as the origin of the CIK, implying the intended workflow of listing IPOs first and then retrieving details for a specific filer. While it does not state 'use this instead of X' or provide exclusions, the context is clear enough for an agent to understand when this tool applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetIpoFeedIPO FeedARead-onlyInspect
Get the US S-1/F-1 registration pipeline, newest filing activity first. Rows distinguish Primary, Resale, DirectListing, NonOffering and Unknown transactions; terms come from the newest effective prospectus or latest filing and never a superseded document. Results include lifecycle, proposed listing, applicable offer terms and latest annual XBRL financials in the filer's currency. Filter lifecycle or SEC-classified SPAC versus operating filers. Use a row's CIK with GetIpoDetails for the filing chain and extracted detail.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum registrations to return, newest filing activity first (default 25). | |
| offset | No | Number of matching registrations to skip before returning rows (default 0). | |
| status | No | Optional lifecycle filter: Filed, Priced, Listed, or Withdrawn. Omit for all. | |
| filerType | No | Optional company-type filter: Operating (non-SPAC) or Spac (SIC 6770 blank checks). Omit for all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly and non-destructive behavior, and the description adds meaningful operational context beyond them. It details the transaction classifications, guarantees that terms come from the newest effective prospectus/latest filing and never a superseded document, and states what result content to expect. This is exactly the kind of data-provenance and content disclosure that helps an agent trust and use the tool correctly.
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 five sentences long and front-loaded with the core purpose and ordering rule. Each sentence adds a distinct fact: transaction types, document provenance, result contents, filtering, and sibling routing. The filtering sentence slightly duplicates schema documentation, but the overall structure is efficient and scannable.
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 absence of an output schema, the description does a strong job of telling an agent what each row will contain: lifecycle, proposed listing, offer terms, and latest annual XBRL financials. It also implies CIK is present by instructing the agent to use a row's CIK with GetIpoDetails. Pagination and filter mechanics are covered by the fully described input schema, so nothing critical 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?
All four parameters have complete descriptions in the input schema, including defaults, allowed lifecycle values, and the SIC-based SPAC distinction for filerType. The description only restates the filtering capability at a high level and does not add new parameter-level semantics. With 100% schema coverage, the schema rightly carries the weight here.
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 (US S-1/F-1 registration pipeline), a concrete verb ('Get'), and an ordering rule ('newest filing activity first'). It also distinguishes this list-style feed from GetIpoDetails by pointing detail-seekers to that sibling tool. This is well beyond a tautology and differentiates the tool within a large sibling set.
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 positions the tool as the pipeline/feed endpoint and explicitly routes deeper filing-chain requests to GetIpoDetails using a row's CIK. It doesn't list exclusions for other potentially similar tools such as GetFormDOfferings or ListFilings, so the guidance is good but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetLargestShortVolumeLargest Short Volume by DayARead-onlyInspect
Get the exact listed securities, including ETFs, with the largest daily short sale volume for a single trading day (defaults to the latest available), from FINRA's daily short sale volume files, sorted by short volume descending. Short % is the share of that day's FINRA-facility (off-exchange/TRF) volume sold short — 40-50% is a normal market-making baseline — NOT short interest (the open short position; use GetShortInterest/GetShortInterestSnapshot for positions and GetShortSqueezeScores for operating-stock squeeze candidates; use GetShortVolume for one listed security's daily history). Pass sortBy=shortPercent with a minTotalVolume floor to rank by short intensity instead of raw size.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Trading day in YYYY-MM-DD format (defaults to the latest available day) | |
| offset | No | Number of ranked results to skip before returning rows (default: 0, clamped to 0-100000). For the next page, add the returned row count to the clamped current offset; if the next offset exceeds 100000, narrow the filters instead. Stop when fewer than the effective page size (maxResults clamped to 1-500) are returned, or the response's total has been reached. | |
| sortBy | No | Sort key: shortVolume (default) or shortPercent — with shortPercent set a minTotalVolume floor, otherwise illiquid names dominate | shortVolume |
| maxResults | No | Maximum number of results to return (default: 50, max: 500) | |
| minShortVolume | No | Minimum short volume filter (default: 0) | |
| minTotalVolume | No | Minimum total FINRA-reported volume filter, in shares (default: 0 = no floor) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds genuine interpretive context beyond the annotations — that Short % is a share of FINRA TRF (off-exchange) volume with a 40-50% market-making baseline, and that it is not short interest — which materially improves correct interpretation.
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-loads the core purpose and scope, then the metric definition, then sibling routing and the sort recommendation. It is dense — a single long paragraph — but every sentence carries useful information with no 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?
There is no output schema, but the description conveys what is returned (listed securities including ETFs ranked by short volume descending) and the metric's meaning. Combined with the full schema coverage, an agent has enough to invoke correctly; pagination behavior is carried by the schema, not the description.
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 beyond the schema for sortBy by explaining that shortPercent requires a minTotalVolume floor to avoid illiquid names dominating. Other params are fully documented in the schema, so no further compensation is needed.
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 (largest daily short sale volume securities for a single trading day), names the data source (FINRA daily short sale volume files), and the sort order. It explicitly distinguishes the metric from short interest and from sibling tools, so an agent can tell it apart from GetShortVolume/GetShortInterest without opening a 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 routes the agent: use GetShortInterest/GetShortInterestSnapshot for positions, GetShortSqueezeScores for squeeze candidates, and GetShortVolume for one security's history. It also states when to change to sortBy=shortPercent with a minTotalVolume floor to rank by intensity rather than raw size — clear when/when-not/alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetLatestCftcPositioningLatest CFTC Positioning SnapshotARead-onlyInspect
Get the latest COT positioning snapshot across all tracked futures contracts, grouped by category (Agriculture, Energy, Metals, Equity Indices, Interest Rates, Currencies). Shows commercial and non-commercial net positions in contract counts from the legacy futures-only COT report (positions as of each Tuesday, published Friday). Each row carries the market code accepted by GetCftcPositioning.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Category filter: Agriculture, Energy, Metals, EquityIndices, InterestRates, Currencies (defaults to all) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is known. The description adds meaningful behavioral context: it specifies the report is the legacy futures-only COT report, the data timing (as of Tuesday, published Friday), and the grouping by category. This goes beyond annotations and gives agents a clearer picture of what the data represents, though it does not discuss pagination or error handling.
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?
Two sentences with no fluff. The main purpose is front-loaded ('Get the latest COT positioning snapshot'), and the subsequent sentence provides essential details (data type, source, timing, and cross-reference to a sibling). Every clause earns its place.
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 with one optional parameter and no output schema, the description covers the core aspects: what data is returned (net positions), grouping, the report vintage, and a cross-reference to the market code. It does not describe the exact row structure or whether all rows are returned, but given the simplicity of the tool and existing annotations, the information is sufficient for an agent 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?
The single parameter (category) is fully documented in the schema (100% coverage), so the description adds no additional semantic value beyond the schema. The listing of categories in the description is redundant with the schema's enum-like list, so the baseline score of 3 is appropriate.
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 clearly states the tool retrieves the latest COT positioning snapshot across all tracked futures contracts, grouped by category, and specifies the data type (commercial/non-commercial net positions). It implicitly differentiates from GetCftcPositioning by referencing the market code accepted by that tool, but does not explicitly state the boundary (e.g., 'this returns all; GetCftcPositioning returns a specific market').
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 gives useful context (latest, weekly, categories) but does not explicitly state when to use this tool versus GetCftcPositioning or SearchCftcMarkets. The mention of 'market code accepted by GetCftcPositioning' hints at a relationship but stops short of clear routing guidance or exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetLatestClosingPricesLatest Closing PricesARead-onlyInspect
Get each ticker's newest traded, settled daily close (USD for US listings; a MIC:TICKER listing on another exchange in its own trading currency, named in a note), with one-session change, volume, and trailing 52-week closing range. Rows can have different dates while a session settles; use the Date column. Change is omitted when the immediately prior trading session is absent; for a MIC:TICKER row it compares with the previous traded close, omitted when that close is more than 12 days older or a stored session in between shows no trades. Split-limited or partial 52-week ranges are marked in the response. This is settled history, not an intraday quote.
| Name | Required | Description | Default |
|---|---|---|---|
| tickers | Yes | Ticker symbols (max 25). Class shares may use BRK-B or BRK.B; a listing on another exchange is MIC:TICKER (XPAR:AIR). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, non-destructive, closed-world), but the description adds rich behavioral detail beyond them: how one-session change is omitted under specific conditions, how MIC:TICKER rows compare with the previous traded close (with a 12-day threshold), and that split-limited or partial 52-week ranges are marked. This is substantial context for correct interpretation.
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 front-loaded with the core purpose, then efficiently layers in essential caveats about change omission, MIC:TICKER behavior, and split-limited ranges. Every sentence adds value, and the final differentiator is clear and concise.
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 output schema, the description adequately explains return values (one-session change, volume, 52-week range) and edge cases. It covers all necessary information for an agent to call and interpret the tool 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 the sole parameter 'tickers' is fully documented in the schema. The description does not add syntax or format details beyond the schema, so the baseline of 3 is appropriate.
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 states a specific verb and resource ('Get each ticker's newest traded, settled daily close') and explicitly distinguishes from siblings by noting 'This is settled history, not an intraday quote,' which differentiates it from tools like GetLiveQuote.
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 provides clear usage context: use it for settled history, not intraday quotes, and it explains that rows can have different dates so 'use the Date column.' However, it does not name an alternative tool (e.g., GetLiveQuote) for intraday needs, 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.
GetLatestEconomicIndicatorsLatest Economic IndicatorsARead-onlyInspect
Get the latest values for key economic indicators across categories: interest rates, yield spreads, inflation, employment, GDP, money supply, sentiment, housing, exchange rates, and market indicators. Each row shows a series' latest stored observation with its date, plus the previous observation and the change between them for direction — check the Latest Date column for freshness. Returns a snapshot of current macro conditions.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Category filter: InterestRates, YieldSpreads, CorporateBondSpreads, Inflation, Employment, GdpAndOutput, MoneySupply, Sentiment, Housing, ExchangeRates, Market (defaults to all) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuine value on top: it discloses the return structure (latest observation, previous observation, change between them), states that rows carry dates, and flags the freshness caveat — advising the agent to 'check the Latest Date column'. No contradiction with 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?
Three sentences with no filler. The category enumeration is long but purposeful since it defines the tool's scope. The practical freshness note ('check the Latest Date column') is useful but placed at the end; a reader must parse a long category list before reaching the behavioral guidance. Efficient overall.
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?
Reasonably complete for a single optional-parameter, read-only snapshot tool with full schema coverage. The description explains what each row contains and the freshness caveat, which covers the main call-eligibility question. It does not mention pagination, result limits, or how it differs from the sibling indicator/calendar tools, but nothing an agent strictly needs to invoke it 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% and the category parameter is fully documented with its allowed enum-like values and default of 'all'. The description lists the same categories again, adding marginal value by reinforcing scope but not providing syntax, format, or value-behavior details beyond the schema. With full schema coverage, the baseline 3 applies.
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 ('Get') and resource ('latest values for key economic indicators'), enumerates the covered categories, and frames the output as a snapshot of current macro conditions. It does not explicitly name or differentiate against closely related siblings like GetEconomicIndicator, GetEconomicCalendar, or SearchEconomicIndicators, though the 'latest'/'snapshot' framing makes the contrast implicit.
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 implies when to use it — when you need a current macro snapshot across categories — via the 'Returns a snapshot of current macro conditions' closing sentence. However, it gives no explicit guidance on when NOT to use it, no exclusions, and no named alternatives such as GetEconomicIndicator for a single series or GetEconomicCalendar for dated events.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetLiveQuoteLive Stock QuoteARead-onlyInspect
Get the latest available consolidated SIP intraday reading for active U.S. listings, including last trade, UTC timestamp, session freshness, and bid/ask. This needs a paid plan: Pro receives real-time readings and Plus receives 15-minute-delayed readings, while the Free plan covers end-of-day data only and is answered with an upgrade note. Stale=true means the returned trade predates the expected market session and must not be reported as current. This tool does not backfill historical intraday bars after hours. Missing readings are listed explicitly. Use GetLatestClosingPrices or GetStockPrices for settled daily bars.
| Name | Required | Description | Default |
|---|---|---|---|
| tickers | Yes | Ticker symbols (max 25). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and non-destructive. The description adds substantial behavioral context beyond that: stale=true semantics, plan tier differences including an upgrade note for Free users, explicit handling of missing readings, and a no-backfill limitation after hours. This is rich, useful disclosure.
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 front-loaded with the core action and then uses every subsequent sentence for a distinct, valuable constraint or alternative. Despite covering several caveats, it remains compact and free of 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 single-parameter read-only tool with no output schema, the description covers what the data represents, freshness semantics, plan requirements, edge cases, limitations, and sibling alternatives. Nothing important is missing for an agent to decide whether and how to invoke the tool.
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 input schema covers the only parameter, tickers, with a description including the max 25 constraint. Since schema description coverage is 100%, the baseline is 3. The description adds context about active U.S. listings but does not meaningfully extend the semantics of the tickers parameter itself.
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 states a specific verb and resource: getting the latest consolidated SIP intraday reading for active U.S. listings, with concrete fields such as last trade, UTC timestamp, session freshness, and bid/ask. It also distinguishes itself from siblings by explicitly directing users to GetLatestClosingPrices or GetStockPrices for settled daily bars.
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 when to use this tool versus alternatives: intraday readings here, settled daily bars via GetLatestClosingPrices or GetStockPrices. It also provides plan-based usage context (Pro vs Plus vs Free) and states exclusions such as no after-hours backfill.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetMarketHolidayCalendarUS Market Holiday CalendarARead-onlyInspect
List the US equity market holidays and early-close (1:00 p.m. ET) half days for a calendar year (NYSE/Nasdaq). Defaults to the current year. The calendar is curated for 2025 through 2027; a year outside that range reports so rather than guessing.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Calendar year, e.g. 2026. Defaults to the current year. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds the important curation-range constraint and the honest behavior for out-of-range years (reports so rather than guessing). This gives the agent accurate expectations about data availability and error handling, going 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?
Three short sentences, each earns its place: core purpose, default behavior, and coverage limitation. No filler or redundant restatements of the name. Front-loaded with the most important information about what the tool returns.
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 with a single optional parameter, no output schema, and read-only annotations, the description is fully sufficient. It tells the agent what data is returned, the default, and the valid year range. An agent can invoke it correctly without needing further clarification.
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 schema covers 100% of the single parameter, including its default. The description adds the meaningful constraint that only 2025–2027 are curated, which is not in the schema. This added context helps the agent validate the year input before calling, raising the value beyond the baseline for full coverage.
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 uses a specific verb ('List') + resource ('US equity market holidays and early-close half days') and names the specific exchanges (NYSE/Nasdaq). It clearly distinguishes this from sibling tools like GetEconomicCalendar or GetMarketStatus, leaving no ambiguity about what it returns.
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 behavior (current year) and the coverage range (2025–2027), which informs when to call it. It does not explicitly name alternatives or exclusions, but the purpose is specific enough that an agent knows to use this for market holiday calendars, not for general economic events or market status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetMarketStatusUS Market StatusARead-onlyInspect
Get the current US equity market status (NYSE/Nasdaq), evaluated in America/New_York: whether the market is open, the current session (pre-market, regular, after-hours, or closed), whether today is a full-day holiday or a 1:00 p.m. ET early close, today's regular and extended (pre-market/after-hours) trading hours, and the next open and next close. Backed by the exchange's curated holiday and early-close calendar, not a heuristic.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, but the description adds valuable context: it is based on the exchange's curated holiday/early-close calendar rather than heuristics, and specifies timezone evaluation. This goes beyond the annotations without contradicting them.
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 sentence that is information-dense, enumerating all output fields without verbose embellishment. It is front-loaded with the main purpose and every clause provides useful detail, though the long list of outputs makes it slightly dense rather than crisp.
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?
Despite lacking an output schema, the description explicitly enumerates the return fields: open status, current session, holiday/early-close indicator, trading hours, and next open/close. This fully sets expectations for a parameterless, read-only tool, making it self-contained and complete.
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?
Tool has 0 parameters, so schema coverage is complete and the description adds no parameter-level information. The baseline for 0 params is 4, and nothing in the description reduces this, though it also doesn't need to add semantics for nonexistent parameters.
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 clearly states the tool gets current US equity market status, listing specific attributes like session, holiday/early close, and trading hours. It uses a specific verb and resource, and clearly distinguishes from siblings like GetMarketCalendar or GetLiveQuote.
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 implies usage context by detailing the exact information returned (open status, session, hours), making it obvious when to use this tool for current market state. However, it does not explicitly mention alternatives or exclusions, so it stops short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetMarketWide13FActivityMarket-Wide 13F ActivityARead-onlyInspect
Get the market-wide 13F leaderboards for a given quarter — which stocks were most bought, most sold, most initiated, or most exited across all 13F filers vs the prior quarter. The bucket argument selects one of: top-buys (Δ shares > 0 ranked by Δ value desc), top-sells (Δ shares < 0 ranked by Δ value asc), new-positions (stocks ranked by count of filers initiating a position), sold-out-positions (stocks ranked by count of filers exiting). Every board counts only filers with a 13F in both quarters. Δ Value is the change in published position value: values normally use report-date closing prices, may fall back to filer values, and can be zero when unavailable. It includes price movement on held shares, so use Δ Shares to read the position change itself. The output publishes the first complete 13F report quarter and refuses comparisons that cross that corpus boundary. Use this to answer 'what's the consensus 13F move this quarter?'
| Name | Required | Description | Default |
|---|---|---|---|
| bucket | Yes | Bucket: top-buys, top-sells, new-positions, or sold-out-positions | |
| maxResults | No | Maximum number of stocks to return (default: 20, clamped to 1-500) | |
| reportDate | No | Quarter-end 13F report date in YYYY-MM-DD format, e.g. 2026-03-31 (defaults to the latest available 13F quarter; an off-quarter date snaps to the nearest report on or before it) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only safety profile, yet the description layers on genuinely non-obvious behavior: boards count only filers present in both quarters, Δ Value includes price movement on held shares and can be zero, and the tool refuses comparisons crossing the corpus boundary. These are substantive caveats 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, then the bucket semantics and caveats. Dense but almost every clause carries actionable information; the Δ Value/Δ Shares distinction is the one slightly verbose stretch, but it is useful.
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 output schema, the description still conveys what is returned (leaderboards of ranked stocks with count-based or value-based ordering) and the corpus-boundary constraint on the report quarter. For a single required enum-style parameter plus two optional ones, nothing an agent needs to call it 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 already 100%, but the description adds real meaning beyond it: each bucket's ranking criterion (Δ shares sign and Δ value ordering, or count of initiating/exiting filers) is spelled out. It clarifies selection logic the enum-style schema line 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 precise verb+resource ('get the market-wide 13F leaderboards for a given quarter') and enumerates the exact four views it can produce. The 'market-wide ... across all 13F filers vs the prior quarter' scope cleanly distinguishes it from institution-scoped siblings like GetInstitutionQuarterlyActivity.
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?
Ends with concrete intended-use guidance ('Use this to answer what's the consensus 13F move this quarter?') and each bucket's meaning steers selection. However, it never names an alternative tool or states when NOT to use it, so it stops short of full when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetMarketWideCongressionalActivityMarket-Wide Congressional ActivityARead-onlyInspect
Get the stocks members of Congress traded most over a trailing window, aggregated across EVERY member and ticker — 'what did Congress buy this week' without needing a ticker or a member name. The window is anchored on the DISCLOSURE (filing) date because the STOCK Act's general outside filing deadline is 45 days after a trade; late or amended records can arrive later. Each row aggregates one stock's disclosed trades: distinct members buying and selling, trade counts, estimated dollar flow per direction (each disclosed amount range's midpoint — members disclose a band, not an exact figure), the largest participants, and the latest filing and transaction dates. direction=buys ranks by estimated net buying, direction=sells by estimated net selling; chamber=senate/house narrows to one chamber. Use GetCongressionalTrades for one stock's underlying disclosures and GetMemberTrades for one member's.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Trailing disclosure window in days (default: 30, max: 365). | |
| chamber | No | Filter by chamber: 'senate' or 'house' (defaults to both). | |
| direction | No | Ranking direction: 'buys' (most net congressional buying first, default) or 'sells' (most net selling first). | buys |
| maxResults | No | Maximum number of stocks to return (default: 25, max: 200). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even with readOnlyHint=true and destructiveHint=false already present, the description adds substantial behavioral context: the disclosure-date anchoring and STOCK Act 45-day filing deadline, the aggregation logic (midpoint of disclosed ranges, distinct member counts), and the ranking semantics for direction. No contradictions with 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 moderately long but every sentence carries essential information: purpose, date anchoring rationale, aggregation detail, parameter behavior, and sibling differentiation. It is front-loaded with the primary use case and structured logically without redundancy.
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 output schema, the description fully compensates by describing each row's contents (aggregated trades, distinct members, counts, estimated dollar flow, largest participants, latest dates). It also covers the key nuance of disclosure-date anchoring, making the tool's behavior and return shape clear enough for correct invocation.
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?
Although schema coverage is 100%, the description enriches parameter meaning by explaining the behavioral effect of each: direction ranks by estimated net buying/selling, chamber narrows to one chamber, and days references a trailing disclosure window anchored on filing dates. This adds value beyond the schema's terse field descriptions.
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 opens with a specific verb and resource ('Get the stocks members of Congress traded most over a trailing window, aggregated across EVERY member and ticker'), clearly distinguishing it from sibling tools. It explicitly contrasts with alternatives: 'without needing a ticker or a member name' and later names GetCongressionalTrades and GetMemberTrades for other granularities.
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?
Provides explicit when-to-use guidance ('what did Congress buy this week') and names exact alternatives for other scopes ('Use GetCongressionalTrades for one stock's underlying disclosures and GetMemberTrades for one member's'). This gives the agent clear decision criteria for selecting this tool over siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetMemberNetWorthCongress Member Net WorthARead-onlyInspect
Get a congress member's net worth history from their annual financial disclosures. Disclosed values are ranges, so every year is a band (minimum-maximum), never a point estimate. Only electronically filed reports are read: a missing year means no electronic filing, not zero net worth. Use SearchCongressMembers to find member names.
| Name | Required | Description | Default |
|---|---|---|---|
| maxResults | No | Maximum number of years to return (default: 20, max: 500, newest first) | |
| memberName | Yes | Congress member name, case-insensitive (e.g., 'Nancy Pelosi', 'Marsha Blackburn'); use SearchCongressMembers to find the exact name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint, but the description adds valuable behavioral details beyond that: values are always ranges (minimum-maximum), a missing year means no electronic filing rather than zero net worth, and only electronically filed reports are read. This helps set expectations for output and missing data.
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?
Three concise sentences: first states the purpose, second clarifies the output format, third discloses data limitations and search prerequisite. No filler or redundancy; every sentence contributes unique information.
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 output schema, the description fully compensates by explaining that each year is a band (min-max) and that missing years have a specific interpretation. It also covers the input prerequisite and data-source limitation, making it complete for a two-parameter read-only tool.
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 parameters are well documented. The description adds extra value by pointing to SearchCongressMembers for memberName lookup and by explaining that the tool returns ranges, which informs how to interpret results. However, it doesn't add much more beyond the schema.
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 begins with a specific verb+resource: 'Get a congress member's net worth history from their annual financial disclosures.' It clearly distinguishes from sibling tools like GetMemberTrades by focusing on net worth rather than trades, and adds unique nuances about range-based values.
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?
Provides clear context on when to use: for net worth history from financial disclosures. It also gives a key prerequisite by directing users to SearchCongressMembers for member names, and explains a data-coverage limitation (only electronic filings). However, it does not explicitly name alternative tools to use instead, such as GetMemberTrades.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetMemberTradesTrades by Congress MemberARead-onlyInspect
Get a congress member's disclosed securities transactions (newest first, last year by default). Shows tickers, transaction and filing dates, disclosed amount ranges, the filed Asset identifying the instrument (such as stock, option, or bond), and the member's party on the transaction date. Use SearchCongressMembers to find member names, and GetCongressionalTrades for all members' transactions in one ticker.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | Number of trades to skip before returning rows (default: 0, clamped to 0-100000). For the next page, add the returned row count to the clamped current offset; if the next offset exceeds 100000, narrow the filters instead. Stop when fewer than the effective page size (maxResults clamped to 1-500) are returned, or the response's total has been reached. | |
| ticker | No | Optional stock ticker to combine with the member filter (e.g., AAPL) | |
| endDate | No | End date in YYYY-MM-DD format (defaults to today) | |
| startDate | No | Start date in YYYY-MM-DD format (defaults to 1 year ago) | |
| maxResults | No | Maximum number of trades to return (default: 50, max: 500, newest first) | |
| memberName | Yes | Congress member name, case-insensitive (e.g., 'Nancy Pelosi', 'Dan Crenshaw'); use SearchCongressMembers to find the exact name | |
| transactionType | No | Filter by transaction type: Purchase or Sale; the synonyms Buy/Sell are accepted (defaults to all) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful context beyond that: default time window (last year), ordering (newest first), and the exact fields returned. It does not discuss pagination or rate limits, but the schema's offset/maxResults descriptions handle paging.
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?
Two tight sentences. The core purpose and default scope come first, followed by return fields, with sibling routing last. No 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?
Despite no output schema, the description enumerates what is returned (tickers, transaction and filing dates, amount ranges, asset instrument, party), and the schema fully documents filtering and paging. Nothing an agent needs to invoke it 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 schema already documents all seven parameters including pagination, date defaults, and the ticker/transactionType filters. The description only echoes the default one-year window and newest-first ordering, adding little beyond the schema, so the baseline 3 is appropriate.
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 (retrieves a congress member's disclosed securities transactions) plus scope (newest first, last year by default). It clearly distinguishes itself from the sibling tools GetCongressionalTrades and SearchCongressMembers.
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 routes the agent: use SearchCongressMembers to resolve member names, and GetCongressionalTrades for all members' transactions in a single ticker. The alternative and the condition that selects it are named, so no inference is required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetMostHeldStocksMost Widely Held StocksARead-onlyInspect
Get the cross-sectional ranking of stocks by institutional 13F breadth for a quarter. Rank by filer count (default), quarter-over-quarter filer-count change, total published position value, conviction (filers holding it among their ten largest positions) or crowding (high-turnover and private-fund adviser shares as % of shares outstanding), both among stocks 10+ filers hold. Conviction and crowding read the newest closed quarter measured across every 13F book (an open or unmeasured quarter snaps to it, noted). Values use report-date closing prices, may fall back to filer values, and can be zero when unvalued. Includes Δ filers, total value, Δ value, and share of the 13F universe. The first complete report quarter is published; earlier rankings and boundary-quarter deltas are unavailable. Only currently-held stocks rank; sold-out names use GetMarketWide13FActivity. During the newest quarter's open filing window, non-filers carry prior-quarter positions (noted in output).
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort by: 'filers' (default, # of 13F filers desc), 'filersDelta' (QoQ filer-count delta desc — warming names), 'filersDeltaAsc' (QoQ filer-count delta asc — cooling names), 'value' (current total published position value desc), 'conviction' (filers holding it among their ten largest positions desc) or 'crowding' (high-turnover and private-fund adviser shares as % of shares outstanding desc) | filers |
| maxResults | No | Maximum number of stocks to return (default: 25, clamped to 1-500) | |
| reportDate | No | Quarter-end 13F report date in YYYY-MM-DD format, e.g. 2026-03-31 (defaults to the latest available 13F quarter; an off-quarter date snaps to the nearest report on or before it) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive), and the description adds rich context beyond them: pricing basis (report-date closes, fallback to filer values, possible zero when unvalued), which quarter conviction/crowding read, the snapping note for open/unmeasured quarters, and non-filer carry-forward during the open filing window. These are material behaviors an agent would otherwise not know.
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 every sentence carries information, but the body is one dense run-on paragraph mixing edge cases, definitions, and default behavior. It earns its length but would scan faster with structure.
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 complex, no-output-schema tool it covers the return fields (Δ filers, total value, Δ value, share of 13F universe), the ranking universe, pricing caveats, and the quarter-availability edge cases. Nothing an agent needs to call it correctly appears 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 sort/maxResults/reportDate semantics are already documented; baseline would be 3. The description adds non-obvious scope that affects interpretation of the sort options — the '10+ filers hold' universe filter and the quarter-snapping behavior — which meaningfully extends the schema.
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?
Names a specific verb and resource ('cross-sectional ranking of stocks by institutional 13F breadth for a quarter') and immediately enumerates the ranking bases. It is clearly distinguishable from siblings like GetTopHolders and GetMarketWide13FActivity, which it explicitly contrasts.
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 routes the agent away for one adjacent case ('sold-out names use GetMarketWide13FActivity') and states availability constraints (first complete report quarter only, earlier rankings and boundary-quarter deltas unavailable). Strong on alternatives/constraints, though it does not disambiguate against other holder-related siblings (GetTopHolders, GetHolderMix, GetInstitutionConsensusHoldings).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetMyPortfolioMy PortfolioARead-onlyInspect
Get the caller's saved portfolios, and those colleagues shared with the caller's organization, including stock and option lots, cost basis, realized and unrealized profit, and watched instruments. Omit portfolio to list portfolios; if exactly one exists it is returned in full. Pass its name to select one; a shared portfolio whose name is also taken is named "Name (Creator)" in the list. Quantities are signed; costs are the owner's per-share inputs and are never split-restated. Each position is in its listing's currency; totals are in the portfolio's currency at the official rates named in the answer. Every mark names its session. Unpriceable and expired positions have unknown value, never zero. Watched instruments are not positions and must not be counted as exposure. Returned lot ids address the update, close and remove tools. Use GetInstitutionPortfolio for 13F holdings.
| Name | Required | Description | Default |
|---|---|---|---|
| portfolio | No | Optional. The portfolio's name, as listed. Omit to list the portfolios. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld=false/destructive=false, but the description adds substantial beyond-schema behavior: signed quantities, owner per-share costs never split-restated, per-listing vs portfolio currency with official rates, every mark naming its session, unpriceable/expired positions having unknown (not zero) value, watched instruments not counting as exposure, and lot ids addressing update/close/remove tools.
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-loads purpose and the core omit/pass usage before the denser return-semantics details. It is long and information-dense, but each sentence conveys distinct, non-redundant behavior (signed quantities, currency, marks, unpriceable positions, watched instruments, lot ids), so little is wasted.
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 output schema and a rich return surface (lots, cost basis, profit, watched instruments), the description carries the burden well by explaining currency, marks, and valuation semantics. It stops short of describing the overall response structure or pagination, but covers what an agent needs to interpret results 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 baseline is 3, but the description adds real meaning beyond the schema: omit-to-list behavior, the single-portfolio full-return case, and the 'Name (Creator)' disambiguation for shared portfolios whose name is taken. It leaves minor format/syntax details to the schema.
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?
Names a specific verb (Get) and resource (caller's saved portfolios, plus organization-shared ones) and enumerates the content returned: lots, cost basis, realized and unrealized profit, watched instruments. It explicitly distinguishes itself from GetInstitutionPortfolio for 13F holdings, so an agent can route 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?
Gives explicit conditional usage: omit 'portfolio' to list all, pass a name to select one, with the edge case that a single portfolio is returned in full. It names the alternative tool (GetInstitutionPortfolio) and the condition that selects it, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetNonGaapBridgeNon-GAAP to GAAP BridgeARead-onlyInspect
Get a company's non-GAAP-to-GAAP reconciliations ('bridges') as extracted from its earnings releases and 10-K/10-Q periodic reports: for each stated non-GAAP measure (Adjusted EBITDA, adjusted EPS, adjusted operating income, FFO/AFFO, ...), the GAAP starting line, each stated adjustment in order, and the non-GAAP result, with the period, unit and the verbatim source quote. Verifier-approved, newest filing first. Use this to see exactly how a company builds its adjusted numbers; GetCompanyKpis carries the same bridge inline with a metric, this returns the reconciliations on their own.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of source filings to read, newest first (default 6, valid 1-20; out-of-range values are clamped) | |
| offset | No | Number of approved source filings to skip before returning rows (default 0) | |
| ticker | Yes | Company ticker symbol (e.g., AAPL, MSFT) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses that results are verifier-approved, ordered newest filing first, and sourced from specific report types. These are useful behavioral traits that inform trust and usage expectations.
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 detailed but every part earns its place: it defines the resource, enumerates content, states provenance and ordering, and ends with a crisp usage distinction from a sibling tool. The key usage guidance is front-loaded and clear.
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?
Despite lacking an output schema, the description fully explains what the return data will contain, including the adjustment chain, period, unit, and source quote, and notes ordering. Combined with complete parameter documentation, an agent has enough to call this tool 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?
Input schema coverage is 100% and each parameter (ticker, limit, offset) already has a clear schema description. The tool description does not add meaning beyond the schema, which is acceptable at the baseline given the high schema coverage.
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 clearly states the tool returns non-GAAP-to-GAAP reconciliations as extracted from earnings releases and periodic filings, and details what each bridge contains (GAAP starting line, adjustments, non-GAAP result, period, unit, verbatim quote). It also explicitly distinguishes this from GetCompanyKpis, making sibling differentiation immediate.
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 says to use this tool to see how a company builds its adjusted numbers, and explicitly names GetCompanyKpis as the alternative that carries the same bridge inline with a metric. This gives an agent a clear selection rule between the two tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetOffExchangeVolumeOff-Exchange (Dark Pool) VolumeARead-onlyInspect
Get weekly off-exchange (dark pool / OTC) trading volume for an exact stock or ETF listing from the FINRA OTC/ATS Transparency data. Each week shows ATS (alternative trading system / dark pool) volume and trade count, non-ATS OTC volume and trade count, and the total off-exchange volume (ATS + non-ATS OTC). The FINRA file does not include consolidated tape volume, so the off-exchange share of total market volume is not reported here; compute that share elsewhere against a consolidated-volume source. Weeks before 2025-08-11 may include volume from a case-variant sibling security because they predate the ordinal FINRA symbol-map fix and can no longer be re-imported from FINRA's rolling source window. FINRA publishes each week on a delay (2 weeks for Tier 1 NMS stocks, longer for other tiers), so the latest week lags today.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Listed security ticker (e.g., AAPL, VOO, GME) | |
| endDate | No | End date in YYYY-MM-DD format (defaults to latest available) | |
| startDate | No | Start date in YYYY-MM-DD format (defaults to 6 months ago) | |
| maxResults | No | Maximum number of weeks to return — keeps the most recent N weeks in the range, displayed oldest to newest (default: 26, max: 500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and non-destructive behavior, and the description adds substantial behavioral context: the exact data source, the returned fields (ATS/non-ATS volume and trade counts), the consolidated-tape exclusion, the pre-2025-08-11 case-variant sibling risk, and the FINRA reporting delay. This goes well beyond the annotation hints.
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 front-loaded with the core purpose, then efficiently lists returned fields and important caveats in a few clear sentences. Every sentence adds useful information and there is no 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?
Because there is no output schema, the description appropriately explains what values are returned: ATS volume and trade count, non-ATS OTC volume and trade count, and total off-exchange volume. It also covers key limitations such as missing consolidated-tape share, the symbol-map fix issue, and FINRA's delayed publication, making it complete for invocation.
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%, and the schema already documents ticker, startDate, endDate, and maxResults with defaults. The description reinforces weekly granularity and the latest-week lag, but it does not need to restate what the schema already covers.
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 clearly states the specific verb+resource: it gets weekly off-exchange (dark pool / OTC) trading volume from FINRA OTC/ATS Transparency data for an exact stock or ETF listing. This distinguishes it from sibling volume-related tools like GetShortVolume or GetFailsToDeliver.
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 gives clear context: the tool is for a single listed security's weekly off-exchange volume, notes that the off-exchange share of total market volume must be computed separately, and explains the FINRA publication delay. It does not explicitly name alternative tools or when-not conditions, but the scope is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetOnBalanceVolumeOn-Balance Volume (OBV)ARead-onlyInspect
On-Balance Volume (OBV) for a stock. Running cumulative volume that adds the bar's volume on up-closes, subtracts on down-closes, and stays flat on equal closes. Useful for confirming or diverging from price trends with volume flow. OBV is anchored at 0 on the first bar of the requested range, so absolute values shift with startDate and are not comparable across calls - read the slope and divergences, not the level.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker symbol (e.g., AAPL, MSFT). Class shares use a dash (BRK-B); the dot form (BRK.B) is also accepted. A listing on another exchange is MIC:TICKER (XPAR:AIR). | |
| endDate | No | End date in YYYY-MM-DD format (defaults to latest available) | |
| startDate | No | Start date in YYYY-MM-DD format (defaults to 6 months ago) | |
| maxResults | No | Maximum number of records to return (default: 60, max: 500); the newest rows are kept and listed newest first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only safety profile (readOnlyHint true, destructiveHint false), so the burden is lower. The description adds real behavioral context beyond that: OBV is anchored at 0 on the first bar of the range, absolute values shift with startDate, and values are not comparable across calls. This is a non-obvious trait an agent would otherwise get wrong.
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?
Three sentences, front-loaded with the definition, then usage, then the critical anchoring caveat. Every sentence earns its place and the most decision-relevant warning (don't compare levels across calls) is clearly stated.
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 output schema and a read-only, non-destructive profile covered by annotations, the description supplies what matters: what OBV is, how it is computed, and how startDate distorts absolute levels. It does not enumerate returned fields, but for a self-describing indicator series that is a minor omission.
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 genuine meaning about startDate that the schema does not: it explains that the range start shifts the anchor and therefore the absolute level. That is added semantic value beyond the schema's format/default note.
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 ('On-Balance Volume (OBV) for a stock') and even defines the computation (adds volume on up-closes, subtracts on down-closes, flat on equal closes). Among siblings like GetAverageTrueRange, GetBollingerBands and GetStochasticOscillator, an agent can tell immediately this returns a volume-flow indicator.
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?
'Useful for confirming or diverging from price trends with volume flow' gives an implied analytical use-case but no explicit when-to-use/when-not and no named alternative among the many indicator siblings. Adequate minimum-viable guidance, not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetOptionChainOption ChainARead-onlyInspect
Get the option chain (calls and puts) for a stock for ONE expiration: strike, greeks (delta/gamma/theta/vega), implied volatility, open interest, and the latest daily price. Defaults to the nearest upcoming expiration; pass expiration=YYYY-MM-DD to pick another (use GetOptionExpirations to list them). When the chain is larger than maxResults the contracts nearest the money are returned, so an unfiltered call already lands where strategies trade. Narrow with minStrike/maxStrike and type (call/put) to reach the wings. Each row attributes its last price, day range and volume to its provider-stamped session and attributes open interest to its separate effective date, or marks either date unknown; implied volatility and greeks are the provider's model values computed at fetch time, so repeated calls can return different values. The daily figures are not live quotes. Bid/ask use real-time OPRA on Pro and a 15-minute delayed indicative feed on Plus; Free covers end-of-day data only.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Contract type: call or put (default: both) | |
| ticker | Yes | Stock ticker, e.g. AAPL | |
| maxStrike | No | Only include strikes at or below this price | |
| minStrike | No | Only include strikes at or above this price | |
| expiration | No | Expiration date in YYYY-MM-DD format (default: nearest upcoming) | |
| maxResults | No | Maximum contracts to return (default: 60, max: 500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate readOnlyHint=true and destructiveHint=false, and the description adds substantial behavioral context beyond that: per-row attribution of prices to provider-stamped sessions, open interest to its separate effective date, IV/greeks being provider model values computed at fetch time, and price-feed differences across Pro/Plus/Free. It also warns that daily figures are not live quotes, which is valuable for an agent deciding whether this tool fits the user's need.
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 front-loaded with the tool's purpose and then layers parameter behavior, return-value caveats, and data-feed differences in a logical order. Every sentence adds useful information without repetition or filler, and the length is justified by the complexity of an options chain 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?
Given there is no output schema, the description adequately explains what each row contains, how dates are attributed, how values like IV and greeks behave, and how the data differs across subscription tiers. It also covers all input params relevant to choosing and filtering the chain, leaving little ambiguity about what the agent should expect when calling this tool.
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 each parameter is already documented structurally. The description adds meaningful semantics on top of that: expiration format and default behavior, minStrike/maxStrike usage to reach the wings, type to select calls/puts, and the maxResults behavior where larger chains return near-the-money contracts. This goes beyond the schema's basic descriptions, though not every parameter gets extended detail.
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 states a specific verb and resource: get the option chain (calls and puts) for a stock for one expiration, including strike, greeks, implied volatility, open interest, and latest daily price. It clearly distinguishes itself from related siblings like GetOptionExpirations and GetOptionContract by emphasizing the 'ONE expiration' scope.
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 gives explicit usage context: it defaults to the nearest expiration, instructs how to pick another expiration, and points to GetOptionExpirations to list expiration dates. It also explains when results are limited to near-the-money contracts and how to narrow the chain, though it does not explicitly contrast with GetOptionContract or GetLiveQuote for single-contract or live-price needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetOptionContractOption ContractARead-onlyInspect
Get the full snapshot for ONE option contract by its OCC symbol (e.g. O:AAPL260724C00110000): greeks, implied volatility, open interest, the latest daily price, and bid/ask when the plan entitles quotes. Last, day range and volume name the provider's trading-session timestamp when supplied and otherwise mark it unknown; open interest names its separate effective date when supplied; implied volatility and greeks are the provider's model values computed at fetch time and can differ slightly from a chain response. Bid/ask use consolidated real-time OPRA on Pro and a 15-minute delayed indicative feed on Plus; the Free plan covers end-of-day data only and is answered with an upgrade note.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker, e.g. AAPL | |
| contract | Yes | OCC option symbol, e.g. O:AAPL260724C00110000 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a safe read-only operation, but the description goes well beyond that. It discloses plan-dependent bid/ask behavior (real-time OPRA on Pro, delayed indicative on Plus, end-of-day with upgrade note on Free), timestamp provenance, separate effective dates for open interest, and the fact that IV/greeks are provider model values computed at fetch time that may differ from chain responses. No contradiction with 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 front-loaded with the core purpose and then efficiently enumerates data fields and caveats. It is a single dense paragraph rather than a list, but every clause adds necessary behavioral or plan-specific detail. It could be slightly better organized, but there is no fluff 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?
Given there is no output schema, the description carries the full burden of explaining what the agent will receive, and it does so thoroughly: greeks, IV, open interest, latest price, bid/ask, day range, volume, timestamps, effective dates, and plan entitlements. It also addresses data source caveats and upgrade responses. This is enough for an agent to correctly invoke the tool and interpret the result.
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?
Both parameters already have full schema descriptions, so baseline is 3. The description adds value by explaining the contract parameter is an OCC symbol and providing a concrete example (O:AAPL260724C00110000), which helps an agent construct valid input. It also reinforces that ticker is the underlying stock through the AAPL example.
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 opens with a specific verb-resource pair: 'Get the full snapshot for ONE option contract by its OCC symbol.' It lists the exact data fields returned and the example OCC symbol, and it clearly differentiates from chain-level tools by emphasizing 'ONE option contract.' This makes the tool's purpose unambiguous and distinct from siblings like GetOptionChain.
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 establishes the use case: fetching a single option contract snapshot by OCC symbol. It does not explicitly name alternatives like GetOptionChain or state when not to use this tool, but the scope is precise enough that an agent can infer the correct context. The plan-based differences (Pro, Plus, Free) also give conditional usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetOptionExpirationsOption ExpirationsARead-onlyInspect
List the available option expiration dates for a stock, with the contract count at each. Use this to pick an expiration for GetOptionChain.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker, e.g. AAPL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safe read-only nature is covered. The description adds that the tool returns expiration dates with contract counts, which is useful context beyond the annotations, but does not disclose other behaviors like sorting or whether expired expirations are included. Still, it adds meaningful value.
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 two sentences, front-loaded with the primary verb and resource. Every sentence earns its place: first states what it does, second states how to use it. No wasted words.
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 simple single-parameter tool with no output schema, the description fully covers what it returns (expiration dates with contract counts) and how to use the result. Nothing more is needed.
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% with the ticker parameter already described with an example ('e.g. AAPL'). The description does not add any additional parameter semantics beyond what the schema provides, so the baseline of 3 is appropriate.
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?
Description uses specific verb 'List' and clearly identifies the resource as 'available option expiration dates for a stock', adding the detail that contract counts are included. This distinguishes it from sibling tools like GetOptionChain, which retrieves contract data for a specific expiration.
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 final sentence explicitly instructs the agent to use this tool to pick an expiration for GetOptionChain, providing clear guidance on when to use it and which downstream tool to use. This is direct and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetOrganizationOrganizationBRead-onlyInspect
Get an organization no market we cover lists, such as the U.S. Government, a federal agency or an unlisted company: its kind, country, LEI, parent and parts, the listed companies whose 10-K reports name it or one of its parts with the verbatim sentence, and for a federal agency the listed companies it awarded the most contract value in the last 12 months. Names from 10-K reports require the Pro plan.
| Name | Required | Description | Default |
|---|---|---|---|
| maxResults | No | Maximum companies listed per side (default: 50, max: 500). A company and the parts listed under it are kept together. | |
| organization | Yes | The organization's slug as GetSupplyChain prints it (e.g., us-government), or part of its name (e.g., Samsung). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds a meaningful access constraint (10-K names require Pro) and details what data comes back, but says nothing about pagination behavior or how maxResults/company-part grouping affects results, which are relevant for a read tool. A 3 reflects moderate added value over the 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?
It front-loads verb+resource, which is good, but the entire content is a single run-on sentence cramming return fields, examples, and plan gating together. Every clause is relevant, yet the lack of sentence breaks makes it harder to parse than necessary.
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 output schema, the description carries the burden of describing returns, and it does so thoroughly (kind, country, LEI, parent/parts, verbatim 10-K sentence, 12-month contract value). Combined with annotations covering safety, an agent has most of what it needs; only pagination/result-shaping guidance 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 both parameters are already documented, giving a baseline of 3. The description reinforces subject matter (organizations, 10-K mention names) but adds no new syntax, format, or usage detail beyond the schema's slug/name and maxResults semantics.
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 ("Get an organization") and scopes it precisely to entities no market we cover lists, which cleanly separates it from listed-company tools. It also enumerates the returned facets (kind, country, LEI, parent/parts, 10-K mentions, contract value), so the purpose is concrete. The dense phrasing slightly muddies the core intent, keeping it short of a 5.
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 implies when to use it by describing the target population (U.S. Government, federal agencies, unlisted companies) and notes a Pro-plan prerequisite for 10-K-derived names. However, it names no alternative sibling tools and gives no explicit when-not guidance, so selection against tools like SearchInstitutions or GetGovernmentContracts is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetOwnershipSignals13F Ownership SignalsBRead-onlyInspect
Who holds a stock and how, measured across every 13F book of the newest closed quarter, beside the quarter before: conviction (filers holding it among their ten largest positions, its weight in their books), crowding (shares held by high-turnover filers and private-fund advisers as % of shares outstanding, with its percentile among stocks at least 10 filers hold), institutional ownership of the estimated free float, holder concentration (Herfindahl, largest ten holders), how long holders have held it, the holders' estimated average cost per share and the share of 13F value held at a loss, active holders' like-for-like change, top-scored managers' net buying, Schedule 13D and 13G filers on record, holder-overlap peers (operating companies whose active holders overlap most, one row per company, funds excluded), and the filers with the highest weight in it. Cost is an estimate from quarter average prices, never a filed figure.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Listed security ticker (e.g., NVDA) | |
| maxPeers | No | Holder-overlap peers to list (default 10, clamped to 0-20) | |
| maxHolders | No | Highest-conviction holders to list, by the stock's weight in their 13F book (default 10, clamped to 0-50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds two useful pieces of behavioral context beyond that: the temporal scope (newest closed quarter vs. the prior quarter) and the data-quality caveat that cost is an estimate from quarter average prices, never a filed figure. It says nothing about auth, rate limits, or output size.
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 content is informative but delivered as one sprawling ~120-word sentence with a 14-item parenthetical list, giving the reader no structure or prioritization. It is dense rather than wasteful, but it is not front-loaded and not scannable.
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 output schema, the description carries the burden of explaining return content and does so thoroughly by naming each metric block (conviction, crowding, free-float ownership, concentration, holding duration, cost/loss share, active-holder change, 13D/13G filers, overlap peers, top-weight filers). It is nearly complete for a single-ticker analytics call, missing only output shape and interpretation guidance.
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 ticker, maxPeers, and maxHolders are already documented with defaults and clamp ranges. The description adds only marginal meaning, e.g. 'one row per company, funds excluded' for peers and 'top-scored managers' net buying' implying what maxHolders selects. Baseline 3 is appropriate 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 (13F ownership signals for a stock) and enumerates the exact metrics it reports, so an agent knows this is a composite ownership-analytics tool rather than a raw holder list. It never names or distinguishes itself from close siblings like GetTopHolders, GetOwnershipSummary, GetHolderMix, or GetAllHolders, so sibling selection still requires inference.
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?
There is no when-to-use guidance, no stated alternatives, and no prerequisites. The description only lists what the tool returns; an agent gets no help deciding between this and the many other ownership tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetOwnershipSummaryStock Ownership SummaryARead-onlyInspect
Get who owns a stock, as shares and % of shares outstanding: 13F institutions, insiders (Forms 3, 4, 5, single-class issuers only), 13D/13G blocks no 13F report already holds, and the remaining float, flagged rather than clipped when negative. Registered funds are shown but never summed, since their shares sit inside their advisers' 13F reports. Each holder counts once: insiders who file 13Fs, holders a 13F filer reports, and the filers and persons of any 13D or 13G that names a 13F filer, directly or through filings naming one another, are left out of the other lines, by CIK and SEC reporting links, never by name. A foreign private issuer's count is in ordinary shares, a different unit, so it gets no % or remainder. Also splits the 13F shares by holder type, style and location. view=ultimate adds the largest ultimate parents.
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | default, or ultimate to add the largest ultimate parents | default |
| ticker | Yes | Listed security ticker (e.g., NVDA, VOO) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safe read-only, non-open-world profile, and the description layers substantial extra behavior on top: single-count dedup by CIK and SEC reporting links, registered funds shown but excluded from sums, negative float flagged rather than clipped, and foreign private issuers receiving no % or remainder. This is exactly the kind of non-obvious semantics that structured fields cannot 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 scope statement is front-loaded and nearly every sentence carries unique information that a caller needs. It is dense to the point of being hard to parse in the dedup sentence ('the filers and persons of any 13D or 13G that names a 13F filer... by CIK and SEC reporting links'), which slightly hurts readability, but length is justified by the domain 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 no output schema, the description carries the return burden and does so well: it states the units (shares and % of shares outstanding), the holder-type/style/location breakdown, and the negative-remainder flag. It omits only secondary call logistics such as response shape for a single ticker versus batching, so it is strong but not exhaustive.
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% across both parameters, so the baseline is 3. The description's 'view=ultimate adds the largest ultimate parents' essentially restates the schema's own description of view, adding no new syntax or format detail 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?
Precise verb+resource with an unusually specific scope: it enumerates exactly which ownership classes are included (13F institutions, insiders Forms 3/4/5, 13D/13G blocks, residual float) and what is not summed. An agent can distinguish it from GetTopHolders or GetHolderMix by content, but no sibling is named explicitly, so it falls short of a 5.
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 is implied through the inclusion/exclusion rules and the note that view=ultimate adds ultimate parents, which tells the agent when to pick that mode. However, there is no explicit when-to-use guidance against the many overlapping siblings (GetBeneficialOwnership, GetInsiderOwnership, GetAllHolders), leaving the routing decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetPutCallRatiosCBOE Put/Call RatiosARead-onlyInspect
Get CBOE put/call ratio data showing market sentiment. Available types: Total (all exchange), Equity, Index, Vix, Etp. High ratios (>1.0) indicate bearish sentiment; low ratios (<0.7) indicate bullish sentiment. Volumes are contract counts. Data available from November 2006 to present (the Vix type from October 2019); pre-2013 history is sampled roughly weekly rather than daily.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Ratio type: Total, Equity, Index, Vix, Etp (default: Equity) | Equity |
| endDate | No | End date in YYYY-MM-DD format (defaults to latest available) | |
| startDate | No | Start date in YYYY-MM-DD format (defaults to 3 months ago) | |
| maxResults | No | Maximum number of records to return (default: 60, max: 500). When the range holds more rows the newest are kept; rows are always listed oldest to newest. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=true, destructiveHint=false), the description adds substantive behavioral caveats: data availability from November 2006, the Vix type only from October 2019, and pre-2013 data being sampled roughly weekly rather than daily. It also clarifies that volumes are contract counts, which is valuable for correct interpretation of results.
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 compact: three sentences each earning their place. The first states the purpose, the second provides sentiment interpretation, and the third gives data-availability caveats. It is front-loaded and free of redundancy.
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 data-retrieval tool with moderate complexity and no output schema, the description covers the essential context: what data is returned, how to interpret it, units, and historical availability. It does not describe the exact response record format, but the combination of sentiment thresholds, type list, and data-range caveats is sufficient for correct invocation and basic interpretation.
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 input schema already documents all four parameters with 100% coverage, so the description does not need to repeat parameter syntax. It adds interpretive thresholds and historical context, but does not introduce new parameter-specific semantics beyond what the schema provides. This aligns with the baseline of 3 for high schema coverage.
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 opens with a specific verb+resource pair ('Get CBOE put/call ratio data') and immediately frames the purpose as showing market sentiment, making it easy to distinguish from the many sibling Get* tools. It enumerates the available data types, further clarifying the exact scope of the tool.
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 gives clear context for when to use this tool: when CBOE put/call ratio data is needed, with specific available types and historical coverage. It does not explicitly name alternatives or exclusions, but the 'showing market sentiment' framing and the type list provide sufficient orientation among the large set of sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetRevenueBreakdownRevenue Breakdown by SegmentARead-onlyInspect
Get a company's revenue disaggregated by business segment, geography and product/service — plus operating income by segment when the issuer tags it, so segment profitability and margins are answerable — from the dimensional XBRL facts the issuer tags in its own filings. Annual fiscal years only, latest restated values, one table per axis the company reports; source values are as-reported and never estimated, while segment operating margin is derived as operating income divided by revenue for the same folded raw member QName and exact period. Rows within one table can OVERLAP when the issuer tags several granularities on the same axis (a parent segment alongside its components), so never sum rows to derive total revenue — use the consolidated total row each table carries. For consolidated figures use GetFinancialStatement or GetFinancialFact.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker symbol (e.g., AAPL, MSFT); a listing on another exchange is MIC:TICKER (XPAR:AIR). | |
| maxYears | No | Most recent fiscal years to include (default 8, max 12) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a safe read (readOnlyHint=true, destructiveHint=false), but the description adds substantial behavioral context beyond them: annual only, latest restated values, one table per axis, as-reported (never estimated), derived margin methodology, and a critical warning that rows can OVERLAP so users must not sum rows. This is exactly the kind of disclosure annotations cannot carry.
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 and each clause carries real information (scope, derivation, overlap warning, alternative). However it is delivered as a single dense run-on paragraph with several embedded parentheticals, which hurts scannability slightly.
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 output schema, the description carries the full burden of describing return shape and it does so: one table per axis, a consolidated total row per table, raw member QNames, exact periods, and derived margins. Nothing an agent needs to call and interpret the tool 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 both parameters (ticker, maxYears) are fully documented in the schema. The description's mention of 'annual fiscal years only' loosely frames maxYears but adds no syntax or format detail beyond the schema. Baseline 3 is appropriate.
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 with precise scope: revenue disaggregated by business segment, geography and product/service, plus operating income by segment when tagged. It explicitly routes away from siblings GetFinancialStatement and GetFinancialFact, so an agent can distinguish this from adjacent financial tools without opening a 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 explicit when-to-use context (segment profitability and margins via issuer-tagged dimensional facts) and an explicit when-not/alternative ('For consolidated figures use GetFinancialStatement or GetFinancialFact'). The annual-fiscal-years-only constraint further narrows applicability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetShortInterestShort Interest HistoryARead-onlyInspect
Get bi-monthly short interest history for an exact stock or ETF listing from FINRA. Shows the reported short position, change from the previous settlement, average daily volume, and days to cover per settlement date. Share counts are restated onto today's split basis so the series stays continuous across stock splits; days to cover is as reported (FINRA caps it at 999.99). High days-to-cover (>5) suggests a potential short squeeze — for short interest as a % of shares outstanding and an actual squeeze-candidate ranking use GetShortSqueezeScores; for the market-wide latest settlement use GetShortInterestSnapshot. For primary operating-company stocks only, the answer may also carry a model estimate of the settlement FINRA has not published yet; it appears BELOW the table and must never be presented as a FINRA figure.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Listed security ticker (e.g., AAPL, VOO, GME) | |
| endDate | No | End date in YYYY-MM-DD format (defaults to latest available) | |
| startDate | No | Start date in YYYY-MM-DD format (defaults to 1 year ago) | |
| maxResults | No | Maximum number of records to return — keeps the most recent N settlements in the range, displayed oldest to newest (default: 24, max: 500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and destructiveHint annotations, it discloses important behaviors: share counts are restated to today's split basis, days to cover is as reported with FINRA's 999.99 cap, and a model estimate may appear below the table and must not be presented as a FINRA figure. These details materially affect how an agent should interpret and present the result.
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 front-loaded with the core purpose, and every subsequent clause earns its place: field list, split restatement, FINRA cap, interpretation, alternative tools, and model-estimate caveat. No filler or redundancy.
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 output schema, the description carries the burden of explaining the response: it lists the reported fields (short position, change, ADV, days to cover), notes the split adjustment, and warns about the separate model estimate. This is sufficient for an agent to know what the tool returns and what caveats apply.
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 because the input schema already documents all four parameters. The description adds context about settlement cadence and split adjustment, but it does not add parameter-specific meaning beyond what the schema 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 opens with a specific verb and resource: 'bi-monthly short interest history for an exact stock or ETF listing from FINRA.' It also explicitly names adjacent tools (GetShortSqueezeScores, GetShortInterestSnapshot) and contrasts them, so an agent can distinguish this tool from siblings without inspecting their schemas.
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 gives explicit routing guidance: use GetShortSqueezeScores for short interest as a percentage of shares outstanding and for squeeze candidates, and GetShortInterestSnapshot for the market-wide latest settlement. It also scopes the tool to exact stock/ETF listings, making when-to-use clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetShortInterestSnapshotMarket-Wide Short Interest SnapshotARead-onlyInspect
Market-wide snapshot of the latest FINRA bi-monthly short interest settlement — one row per exact listed security, sorted by days to cover (descending) by default. FINRA caps days to cover at 999.99: capped rows are a sentinel (almost always illiquid names with a tiny average-daily-volume denominator) and are ranked after real readings; pass minAvgDailyVolume (e.g. 100000) to drop illiquid names entirely. This is the raw FINRA snapshot — for genuine short-squeeze candidate ranking use GetShortSqueezeScores; for one stock or ETF's history use GetShortInterest; for daily short-sale flow use GetShortVolume/GetLargestShortVolume.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | Number of ranked results to skip before returning rows (default: 0, clamped to 0-100000). For the next page, add the returned row count to the clamped current offset; if the next offset exceeds 100000, narrow the filters instead. Stop when fewer than the effective page size (maxResults clamped to 1-500) are returned, or the response's total has been reached. | |
| sortBy | No | Sort key: daysToCover (default; FINRA-capped 999.99 sentinel rows ranked last), shortPosition, or change (largest increase in short position first) | daysToCover |
| maxResults | No | Maximum number of results to return (default: 50, max: 500) | |
| minDaysToCover | No | Minimum days to cover filter (default: 0) | |
| minAvgDailyVolume | No | Minimum average daily share volume — set a floor (e.g. 100000) to drop illiquid names whose days-to-cover is inflated by a tiny volume denominator (default: 0 = no floor) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, non-destructive, closed-world), but the description adds real behavioral context the annotations cannot: the FINRA 999.99 days-to-cover cap, that capped rows are a sentinel ranked last, why they occur (tiny average-daily-volume denominator), and how to filter them out. The bi-monthly settlement cadence also tells the agent how stale the data may be.
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 what the tool returns, followed by the sentinel caveat and the filter workaround, then sibling routing. Semicolon-packed but every sentence carries distinct decision-relevant information; nothing is padding.
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?
There is no output schema, and the description partly compensates by naming the granularity and the sortable fields (daysToCover, shortPosition, change). Pagination mechanics live in the schema's offset description. Row-level fields beyond the sort keys are still unspecified, which is the only real gap for a no-output-schema tool.
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 a baseline of 3 applies, but the description adds meaning beyond the schema by explaining the rationale behind minAvgDailyVolume (dropping illiquid names whose days-to-cover is inflated) and by tying sortBy's daysToCover key to the sentinel-last ranking behavior.
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 (market-wide snapshot of the latest FINRA bi-monthly short interest settlement), the row granularity, and the default ordering. It explicitly names the siblings it is not — GetShortSqueezeScores, GetShortInterest, GetShortVolume — so an agent can discriminate without opening schemas.
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 explicit routing rules: use GetShortSqueezeScores for squeeze-candidate ranking, GetShortInterest for a single stock/ETF history, GetShortVolume/GetLargestShortVolume for daily short-sale flow. It also states when to set minAvgDailyVolume to exclude illiquid names, which is actionable guidance rather than a restatement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetShortSqueezeScoresShort Squeeze ScoresARead-onlyInspect
Rank primary operating-company stocks by a peer-relative 0-100 short-squeeze score using short interest, capped days to cover, price versus trailing VWAP, short-volume trend, short-interest change, fails-to-deliver pressure, and bounded price/volume/earnings catalyst boosts. Optional liquidity floors filter the board without changing scores. Pass ticker for one stock's factor breakdown and universe rank. Exchange-traded products are excluded because issuer shares outstanding and earnings are not product-level facts; use GetShortInterest for an ETF's exact FINRA series.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | Number of ranked results to skip before returning rows (default: 0, clamped to 0-100000; ignored for a single-ticker lookup). For the next page, add the returned row count to the clamped current offset; if the next offset exceeds 100000, narrow the filters instead. Stop when fewer than the effective page size (maxResults clamped to 1-200) are returned, or the response's total has been reached. | |
| ticker | No | Optional stock ticker (e.g. GME): returns that one stock's score, factor breakdown, and rank within the scored universe instead of the board. The liquidity floors do not apply to a single-ticker lookup. | |
| maxResults | No | Maximum number of stocks to return (default: 25, highest score first; clamped to 1-200). | |
| minMarketCap | No | Minimum market capitalization in US dollars (e.g. 300000000 = $300M; default 0 = no floor). Stocks with an unknown market cap are excluded when set. | |
| minDollarVolume | No | Minimum average daily dollar volume in US dollars, approximated as the FINRA average daily share volume times the market-cap-implied share price (e.g. 5000000 = $5M/day; default 0 = no floor). Stocks with unknown volume or market cap are excluded when set. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/openWorldHint=false/destructiveHint=false, yet the description goes further by disclosing the scoring methodology (capped days to cover, bounded catalyst boosts), that floors are filters rather than score inputs, and the reasoning behind excluding ETPs. That is substantial behavioral context beyond the safety profile.
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 action and scope, then methodology and exclusions. The factor list is long but each item is a distinct input to the score, so it earns its space; the final ETP sentence is slightly heavy but carries both the exclusion and the alternative 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?
With no output schema, the description still tells the agent what comes back (ranked rows, one stock's factor breakdown and rank, row count and total for paging) and how filtering affects scores. Complete enough to call correctly, though it never describes the shape of the returned factor fields.
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 the baseline is 3, but the description adds meaning the schema does not: ticker switches the response to a single stock's factor breakdown and universe rank, and the liquidity floors explicitly do not apply to a single-ticker lookup — an interaction the per-parameter schema text does not fully spell out.
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 precise verb and resource ('rank primary operating-company stocks by a peer-relative 0-100 short-squeeze score') and enumerates the inputs to the score. It explicitly scopes out exchange-traded products and routes ETF users to GetShortInterest, so the agent can distinguish it from GetShortInterest, GetShortVolume, and GetFailsToDeliver without reading 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?
Gives clear usage context: use it to get a ranked board, pass ticker for a single-stock factor breakdown, and note that liquidity floors filter the board without changing scores. It names the alternative for ETFs (GetShortInterest) but does not state when a stock-focused short-interest lookup would be preferable to this scoring tool, leaving some room for inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetShortVolumeDaily Short Sale VolumeARead-onlyInspect
Get daily short sale volume history for an exact stock or ETF listing from FINRA's short sale volume files. Shows short volume, short-exempt volume, total volume, and short volume percentage per trading day. Volumes cover trades reported to FINRA facilities (off-exchange/TRF) only — NOT consolidated tape volume — and a 40-50% Short % is the normal baseline from market-maker liquidity provision, so it must not be quoted as a share of the stock's total traded volume. This daily flow metric is distinct from bi-monthly short interest positions: use GetShortInterest for positions, GetLargestShortVolume for a market-wide single-day ranking, and GetShortSqueezeScores for squeeze candidates.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Listed security ticker (e.g., AAPL, VOO, GME) | |
| endDate | No | End date in YYYY-MM-DD format (defaults to latest available) | |
| startDate | No | Start date in YYYY-MM-DD format (defaults to 3 months ago) | |
| maxResults | No | Maximum number of records to return — keeps the most recent N trading days in the range, displayed oldest to newest (default: 90, max: 500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, but the description adds critical behavioral context: volumes cover only FINRA facilities (off-exchange/TRF) not consolidated tape, and the normal 40-50% Short % baseline must not be misquoted as share of total traded volume. This is essential interpretive guidance for a no-output-schema tool.
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 three sentences, each serving a distinct purpose: what it returns, the data scope and critical caveat, and how it differs from related tools. There is no filler or repetition, and the most important scoping caveat is front-loaded in the second sentence.
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 data retrieval tool with no output schema and four documented parameters, the description covers the core return fields, data source, interpretation warning, and sibling tool routing. The only missing details, such as response format, are not critical given the rich parameter schema and clear behavioral guidance.
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 all four parameters are already documented with type, defaults, and format. The description adds contextual meaning about the metric itself but does not provide additional per-parameter semantics. This meets the baseline for high schema coverage.
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 states a specific verb and resource: 'Get daily short sale volume history for an exact stock or ETF listing' from FINRA's short sale volume files. It also distinguishes itself from sibling tools by explicitly naming GetShortInterest, GetLargestShortVolume, and GetShortSqueezeScores and their different purposes.
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 explicitly routes to alternatives: 'use GetShortInterest for positions, GetLargestShortVolume for a market-wide single-day ranking, and GetShortSqueezeScores for squeeze candidates.' It also clarifies the data scope (off-exchange/TRF only) and the important caveat about interpreting Short %, which guides correct usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetStochasticOscillatorStochastic OscillatorARead-onlyInspect
Stochastic Oscillator (%K and %D) for a stock. %K measures the close relative to the high/low range over the lookback window; %D is the smoothed signal line (simple moving average of %K). Useful for spotting overbought (>80) and oversold (<20) conditions. The lookback window is warmed up on price history fetched before startDate, so values do not depend on the requested range's left edge.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker symbol (e.g., AAPL, MSFT). Class shares use a dash (BRK-B); the dot form (BRK.B) is also accepted. A listing on another exchange is MIC:TICKER (XPAR:AIR). | |
| dPeriod | No | Smoothing window for %D (default: 3) | |
| endDate | No | End date in YYYY-MM-DD format (defaults to latest available) | |
| kPeriod | No | Lookback window for %K (default: 14) | |
| startDate | No | Start date in YYYY-MM-DD format (defaults to 6 months ago) | |
| maxResults | No | Maximum number of records to return (default: 60, max: 500); the newest rows are kept and listed newest first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and closed-world scope, so safety is covered. The description adds genuinely useful behavior beyond that: the lookback window is warmed up on price history fetched before startDate, so values don't depend on the requested range's left edge — a non-obvious edge-case disclosure. It stops short of describing output shape or any rate limits.
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?
Three tight sentences, front-loaded with the definition of %K/%D, then interpretation, then the warm-up caveat. No filler and nothing buried.
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 single-ticker read-only indicator with full parameter coverage, the description covers definition, interpretation thresholds, and the warm-up edge case. With no output schema, a brief note on the returned series (columns, ordering) would make it fully self-sufficient, so it falls just short of complete.
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 every parameter including kPeriod, dPeriod and maxResults is already documented, setting the baseline at 3. The description's explanation of %K/%D maps loosely onto kPeriod and dPeriod but never names them or adds format details beyond the schema.
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?
Names a specific indicator and defines precisely what it computes: %K measures the close relative to the high/low range over the lookback window, and %D is the SMA of %K. It is self-defining against siblings like GetBollingerBands or GetAverageTrueRange, though it never explicitly says how it differs from those alternate technical indicators.
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?
Offers interpretive context ('useful for spotting overbought >80 and oversold <20 conditions') but gives no guidance on when to choose this indicator over the sibling technical-analysis tools, nor any prerequisites. Usage is implied by the overbought/oversold framing rather than stated as a selection rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetStockPricesPrice HistoryARead-onlyInspect
Get daily, weekly or monthly OHLCV (Open, High, Low, Close, Volume) price history for a stock. Useful for technical analysis, charting, and price trend analysis. Weekly (ISO week) and monthly bars roll up the daily rows: first open, highest high, lowest low, last close, summed volume, dated by their last session; a week or month the date range cuts is marked partial. A US listing is quoted in USD; a listing on another exchange (MIC:TICKER) is quoted in its own trading currency, which the output names. An Adj Close column shows the provider's split- and cash-dividend-adjusted close when it differs from Close. Captured corporate-action changes trigger a full-history refresh of the exact listed series, but the stored rows do not certify which split basis the provider returned. Do not treat reconciliation status alone as proof that a window is a consistent total-return series. Zero-volume carry-forward candles are excluded because they do not establish a traded market price.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker symbol (e.g., AAPL, MSFT, TSLA). Class shares use a dash (BRK-B); the dot form (BRK.B) is also accepted. A listing on another exchange is MIC:TICKER (XPAR:AIR, XLON:BP, XHKG:00005). | |
| endDate | No | End date in YYYY-MM-DD format (defaults to latest available) | |
| interval | No | Bar interval: daily (default), weekly or monthly. Use weekly or monthly with a wider startDate for long histories in one call. | daily |
| startDate | No | Start date in YYYY-MM-DD format (defaults to 1 year ago) | |
| maxResults | No | Maximum number of records to return (default: 260, max: 500). When the range holds more rows the newest are kept; rows are always listed oldest to newest. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/no-destructive, and the description goes well beyond them: aggregation rules (first open, highest high, last close, summed volume, dated by last session), partial-bar marking, currency of foreign listings, Adj Close semantics, and exclusion of zero-volume carry-forward candles. It loses a point for a confusing caveat about 'reconciliation status' that is neither explained nor tied to any visible field.
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 is front-loaded in the first sentence and every following sentence is substantive, but the paragraph is dense and unstructured, and the sentence about corporate-action refreshes and reconciliation status is opaque enough that an agent cannot act on it.
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?
There is no output schema, and the description compensates by describing the returned columns (OHLCV, Adj Close), currency behavior, partial-bar flagging and exclusion rules — everything an agent needs to interpret the result 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 schema already documents ticker formats, date formats, interval enum and maxResults cap. The description adds rollup semantics for the interval parameter but nothing else beyond the schema, so the baseline of 3 applies.
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 ('Get ... OHLCV price history for a stock') plus the granularity options, which cleanly separates it from siblings like GetLiveQuote, GetLatestClosingPrices and GetVixHistory.
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 gives use cases ('technical analysis, charting, price trend analysis') but never says when to pick it over GetLatestClosingPrices or GetLiveQuote, and the guidance about using weekly/monthly for long histories lives in the schema rather than the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetSuperInvestorsSuperinvestor DirectoryARead-onlyInspect
Get the curated superinvestor directory — a hand-picked list of well-known value investors and fund managers (Buffett, Ackman, Burry, Klarman and more), each with their 13F filer CIK and latest reported portfolio value, position count, quarter-over-quarter change, and report date. Portfolio value covers long US-listed 13F positions only, not total firm AUM; as-of dates vary by filer, and rows lagging the group's latest quarter are marked (stale). Use the returned CIK with GetInstitutionPortfolio for a manager's full holdings, or GetInstitutionQuarterlyActivity for their latest buys and sells.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, destructiveHint), the description discloses important nuances: portfolio value covers only long US-listed 13F positions, not total AUM; as-of dates vary; stale rows are marked. This adds real behavioral context that annotations alone would not 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 description is concise (two sentences), front-loaded with the main purpose, and packs in necessary caveats and follow-up guidance without fluff. Every sentence earns its place.
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, no-output-schema tool, the description is remarkably complete. It explains what data is included, its scope, quality caveats, and how to leverage the results with other tools, giving an agent everything needed to invoke and use 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?
The tool has zero parameters and the schema is empty, so there are no parameter semantics to explain. The description appropriately focuses on output semantics instead, which is sufficient for a parameterless tool.
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 clearly states the tool's purpose: getting a curated superinvestor directory with specific data fields (CIK, portfolio value, position count, etc.). It distinguishes itself from sibling tools by explicitly mentioning follow-up tools like GetInstitutionPortfolio and GetInstitutionQuarterlyActivity.
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 provides explicit guidance on when to use this tool and what to do with the results, naming specific alternatives for deeper dives (GetInstitutionPortfolio for full holdings, GetInstitutionQuarterlyActivity for buys/sells). This clearly frames the tool as the entry point for superinvestor data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetSupplyChainSupply ChainARead-onlyInspect
Get a company's supply chain: the customers, suppliers, competitors and partners named in annual 10-K reports, its own and those of other listed companies that name it, with any stated revenue or receivables share, a revenue share in dollars from the same filing, the verbatim sentence and the source filing. A share belongs to the filing that states it. Names the filings never state are not inferred, so a missing company is not evidence of no relationship. Requires the Pro plan.
| Name | Required | Description | Default |
|---|---|---|---|
| lens | No | Order within each side: 'stated' (largest stated share first, the default), 'dependsOn' (largest share of this company's revenue first: who it relies on) or 'dependents' (largest share of the other company's own revenue first: who relies on it). A share is stated by a filing or derived from a stated share in dollars. | stated |
| side | No | Only one side: customers, suppliers, competitors or partners (default: all four). | |
| ticker | Yes | Stock ticker symbol (e.g., AAPL, QRVO), or MIC:TICKER (e.g., XBRU:BAR) for a listing outside the US. | |
| maxResults | No | Maximum companies listed per side (customers, suppliers, competitors, partners) (default: 50, max: 500). A company and the parts listed under it are kept together. | |
| quantifiedOnly | No | Only companies with a stated revenue or receivables share (default: false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, non-destructive, non-open-world, so the safety profile is covered. The description adds genuinely useful behavior beyond that: a plan/auth requirement, a provenance rule ('A share belongs to the filing that states it'), and a critical completeness caveat that absent names are not inferred and missing data is not evidence of no relationship.
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 and every sentence carries content (scope, provenance, caveat, prerequisite). Sentences are long and clause-heavy, but nothing is padding 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?
With no output schema, the description must describe returns, and it does so concretely: the stated revenue/receivables share, a dollar revenue share from the same filing, the verbatim sentence, and the source filing. An agent has enough to call it and interpret results 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 lens, side, ticker, maxResults and quantifiedOnly are already documented in the schema; baseline is 3. The description's mention of 'stated revenue or receivables share' loosely relates to quantifiedOnly but adds no syntax or format detail beyond the schema.
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?
Specific verb (Get) and resource (supply chain), with the exact entity types returned (customers, suppliers, competitors, partners) and the bidirectional scope (its own 10-K and those of companies that name it). An agent can distinguish this from GetCustomerConcentration and GetSupplyChainOverlap 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?
States the plan prerequisite ('Requires the Pro plan') and the data source (annual 10-K filings), which frames when it applies, but never names an alternative sibling or a when-not condition. Usage is implied by the domain rather than explicitly routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetSupplyChainOverlapSupply Chain OverlapARead-onlyInspect
Get which of a company's suppliers and customers also supply or buy from its competitors, as 10-K filings name them: each one with the listed competitors it also serves, or, with vs, the company against one competitor (both, only the company, only the competitor). A competitor whose own 10-K is not read yet is marked, since other filings alone can miss what it uses. Requires the Pro plan.
| Name | Required | Description | Default |
|---|---|---|---|
| vs | No | One competitor to compare with, by the symbol GetSupplyChain lists for it (e.g., AMD); omit to check every listed competitor. | |
| ticker | Yes | Stock ticker symbol (e.g., NVDA), or MIC:TICKER (e.g., XPAR:SU) for a listing outside the US. | |
| maxResults | No | Maximum companies listed per side and group (default: 50, max: 500). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Read-only annotations cover the safety profile, and the description adds real context beyond them: data is sourced from named 10-K filings, competitors whose own 10-K is unread are flagged (and why), and the tool is gated behind the Pro plan.
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: the core output is stated first, then modes, then caveats, then plan gating. Slightly packed into one long sentence, but no wasted clauses.
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 output schema, the description carries the return-shape burden and does so adequately (per-entity competitor groupings, vs mode breakdown, unread-competitor marking). A little more on result ordering or maxResults interaction would make it complete.
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 baseline is 3, but the description adds meaning beyond the schema by explaining the 'vs' output shape (both / only the company / only the competitor) and the default-all behavior, which the schema only gestures at.
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 (get which suppliers/customers overlap with competitors' supply chains) and names the differentiating condition versus its sibling GetSupplyChain, which merely lists the chain. An agent can distinguish the two without opening schemas.
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 the two usage modes (all competitors by default, single-competitor comparison via 'vs') and discloses the Pro plan prerequisite. It does not explicitly say when to prefer this over GetSupplyChain, but the overlap framing makes the context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetTopGovernmentContractorsTop Federal ContractorsARead-onlyInspect
Rank public companies by total federal contract dollars awarded over a date range (from USAspending.gov). Sums the total award value (obligated dollars plus unexercised ceiling) of prime contract awards of $1M or more that resolve to a listed company; smaller awards and unlisted recipients are excluded. Answers questions like 'which public companies won the most federal contracts last quarter'. Use GetGovernmentContracts for one company's individual awards.
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | No | End date in YYYY-MM-DD format (defaults to today) | |
| startDate | No | Start date in YYYY-MM-DD format, filtering on the award action date (defaults to 1 year ago) | |
| maxResults | No | Maximum number of companies to return (default: 25, largest first) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds meaningful behavioral context beyond this: it sums 'obligated dollars plus unexercised ceiling' and excludes smaller/unlisted recipients, disclosing how the ranking is computed. This enriches the agent's understanding of the operation, though it doesn't explain the 'resolve to a listed company' mapping in depth.
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 four sentences, front-loaded with the primary purpose, followed by essential methodology and a usage example. There is no redundant filler, and each sentence adds value, though it could be tightened slightly without losing information.
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 no output schema, the description explains the tool's scope and ranking logic but does not explicitly state the return fields (e.g., company name, ticker, total amount). It covers the main use cases and limitations reasonably well, making it mostly complete for an agent to select and invoke the tool.
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%, with each parameter (endDate, startDate, maxResults) already described clearly. The description references the date range and 'largest first' ordering, but it does not add new semantic meaning beyond what the schema provides. Baseline 3 is appropriate because 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?
The description clearly states the tool ranks public companies by total federal contract dollars over a date range, explicitly naming the data source (USAspending.gov), the inclusion threshold ($1M+ prime awards), and the exclusion criteria. It distinguishes itself from the sibling tool GetGovernmentContracts by directing users to that tool for individual company awards.
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 provides an explicit example question ('which public companies won the most federal contracts last quarter') and gives an alternative tool with the line 'Use GetGovernmentContracts for one company's individual awards.' This gives clear when-to-use and when-not-to-use guidance, exceeding what is typically seen.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetTopHoldersTop Institutional HoldersARead-onlyInspect
Get the top institutional holders (fund managers) of an exact stock or ETF listing from SEC 13F-HR filings. Returns a ranked list by shares held, including published position value and percentage of total institutional 13F shares (not of shares outstanding). Values normally use report-date closing prices, may fall back to filer values, and can be zero when unavailable. During the newest quarter's filing window, non-ETF primary stocks carry non-filers' prior-quarter positions; ETF listings remain exact and as-filed because carry-forward is filer-wide. Use position type before treating put/call rows as ownership. Each holder shows its entity type from regulatory records (Form ADV, SEC filer profile, 13D/13G, N-CEN), filtered by holderTypes, and its style band measured from its filed book, filtered by styles.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | Number of ranked holding rows to skip before returning results (default: 0) | |
| styles | No | Style bands to keep, as an array of tokens: idx (index-like), sys (systematic-like), conc (concentrated), divact (diversified active), unk (book too small or unvalued to band), e.g. ["conc"]. Bands are measured from each holder's filed 13F book in the newest measured quarter on or before the report date; a holder not measured that quarter is left out by any style filter. Omit for all. | |
| ticker | Yes | Listed security ticker (e.g., AAPL, VOO) | |
| maxResults | No | Maximum number of holding rows to return (default: 20, clamped to 1-500) | |
| reportDate | No | Quarter-end 13F report date in YYYY-MM-DD format, e.g. 2026-03-31 (defaults to the latest available; an off-quarter date snaps to the nearest report on or before it) | |
| holderTypes | No | Holder types to keep, as an array of tokens: adv (registered investment adviser), era (exempt reporting adviser), ia (other adviser), bank, ins (insurer), bd (broker-dealer), fund (registered fund), plan (benefit plan), nonus (non-US institution), hc (parent holding company or control person with no other type on record), unk (no deciding record yet), e.g. ["bank", "ins"]. Types come from Form ADV, SEC filer profiles, 13D/13G and N-CEN, never from names. Omit for all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (read-only, not destructive, not open-world), and the description adds substantial context they cannot: value fallback behavior, zeros when unavailable, carry-forward of prior-quarter non-filer positions during the newest filing window, and the ETF-vs-primary-stock distinction. This is exactly the extra behavioral context that annotations cannot carry.
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 and the dense paragraph is mostly high-value caveats (carry-forward, put/call, entity-type sourcing). It is long and somewhat crowded, and the closing sentences partially re-state filter semantics already in the schema, but no sentence is pure 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 no output schema and a complex 13F data model, the description does meaningful work describing the return shape (ranked list, position value, percentage of total institutional 13F shares rather than shares outstanding) and its caveats. Pagination is left entirely to the schema, so it is complete enough but not exhaustive.
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 the schema already documents all six parameters in depth (including token lists for holderTypes and styles). The description largely restates those filters ('filtered by holderTypes', 'filtered by styles') and adds little syntax or format detail beyond the schema, so the baseline 3 applies.
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 with exact scope: 'top institutional holders (fund managers) of an exact stock or ETF listing from SEC 13F-HR filings'. The direction (holders OF a listing) clearly distinguishes it from near siblings like GetMostHeldStocks, GetFundsHoldingStock, and GetInstitutionPortfolio without needing their schemas.
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 is implied by the resource and by data-semantics cues ('Use position type before treating put/call rows as ownership', quarter-filing-window behavior), but no alternative tool is ever named and there is no explicit when-to-use/when-not statement. Minimum-viable context rather than routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetTopInstitutionalBuyersSellersTop Institutional Buyers and SellersARead-onlyInspect
Get the institutions that moved the needle the most on a stock this quarter — biggest absolute share additions (Top Buyers) and biggest absolute share reductions (Top Sellers) versus the previous 13F report date. Includes new positions (Δ = full position) and sold-out positions (Δ = −prior position); entries and exits require observed 13F filings in both compared quarters, so missing filings cannot become a full-position buy or sale; a filer that continues under one new CIK with a matching 13F book is compared through that successor, and one split across several new CIKs is left out; the output counts the filers and shares left out and names the largest. While the newest quarter's filing window is open, results cover only the funds that have already filed (noted in the output). Returns a markdown table with two sections. Use this to surface the most actionable quarterly signal from 13F filings.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Listed security ticker (e.g., AAPL, VOO) | |
| maxResults | No | Maximum number of buyers and sellers to return per section (default: 10, clamped to 1-500) | |
| reportDate | No | Quarter-end 13F report date in YYYY-MM-DD format, e.g. 2026-03-31 (defaults to the latest available; an off-quarter date snaps to the nearest report on or before it) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/not-destructive/closed-world, and the description goes well beyond them: it discloses the delta methodology, that entries/exits require observed filings in both quarters, the CIK-successor and multi-CIK exclusion handling, partial coverage during an open filing window, and the markdown two-section return shape. This is rich behavioral context that annotations alone cannot 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?
Purpose is front-loaded in the first sentence before the edge-case caveats, and the trailing sentences carry real information about exclusions. The opening sentence is very long and clause-heavy, but nearly every clause earns its place given the methodology being described.
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?
No output schema exists, so the description carries the return-format burden and does so ('returns a markdown table with two sections'), plus it explains counts/shares of excluded filers and partial-window coverage. For a non-trivial 13F analytics tool, an agent has everything needed to call and interpret it.
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% (ticker, maxResults with clamp/default, reportDate with snap behavior), so the schema carries parameter meaning. The description reinforces the quarter-over-quarter report-date concept but adds no syntax or format detail beyond the schema, matching the baseline 3.
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 precise verb+resource (get institutions with biggest absolute share additions/reductions on a stock this quarter, versus the previous 13F report date). The scope is unambiguous and an agent won't confuse it with holding-history tools. It does not explicitly name or differentiate itself from likely siblings such as GetInstitutionQuarterlyActivity or GetMarketWide13FActivity, so it stops short of a 5.
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 ('Use this to surface the most actionable quarterly signal from 13F filings') implies when the tool is appropriate, and the body explains which situations are covered (open filing window, missing filings). But it never names an alternative tool or states when NOT to use it, leaving selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetTranscriptPhraseTrendTranscript Phrase TrendARead-onlyInspect
Count how often a word or phrase comes up on a company's last earnings calls, oldest first: mentions per call, the rate per 10,000 words, the split between prepared remarks and Q&A where the call states its hand-off to questions, and one or two short quotes. Whole-word and case-insensitive, so "AI" never matches "said"; spellings that differ by a hyphen or a join count together ("copilot" also finds "co-pilot"), and the calls list which spelling they used. A call with no transcript text, or one in Chinese, Japanese or Korean, is flagged, never zero. Use it to follow a product, risk or initiative across quarters.
| Name | Required | Description | Default |
|---|---|---|---|
| calls | No | Number of most recent earnings calls to read (default 8, max 12; values outside 1-12 are clamped) | |
| phrase | Yes | Word or phrase to count, 2-80 characters after trimming (e.g. "tariffs", "sovereign AI"). Matched as whole words, ignoring case. A space or hyphen between words matches any whitespace, a hyphen or no gap ("co-pilot" finds "co pilot" and "copilot"), and a hyphen may split a word between two letters ("copilot" finds "co-pilot"); numbers never join, so "2025" never counts "20-25". | |
| ticker | Yes | Company ticker symbol (e.g., AAPL, MSFT), or MIC:TICKER (e.g., XPAR:AIR) for a listing outside the US. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/non-destructive, yet the description adds substantial behavior: whole-word and case-insensitive matching, hyphen/join equivalence, CJK and empty transcripts flagged rather than zeroed, the Q&A split only when a hand-off is stated, and a capped output of one or two quotes. These are exactly the caveats an agent would otherwise misreport.
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 action and output shape before the edge-case rules. It is dense but a single long sentence, and the hyphen/join rules duplicate the schema rather than earning new space.
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 output schema, the description does the work of describing the return payload (mentions per call, rate per 10,000 words, prepared-remarks/Q&A split, sample quotes). Combined with annotations covering safety, an agent has everything needed to call and interpret it.
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 all three parameters in detail. The description adds only the ordering of the `calls` window ('oldest first') and largely restates the phrase-matching rules already present in the phrase schema — a baseline 3 is appropriate.
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?
Names a specific verb ('count how often a word or phrase comes up') and resource (a company's last earnings calls), plus the exact scope ('last N calls, oldest first'). This is clearly distinct from the sibling transcript tools (GetEarningsCallTranscript returns full text, GetEarningsCallThemeHistory follows themes) without needing to name them.
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?
'Use it to follow a product, risk or initiative across quarters' gives a concrete usage context. However, it names no alternative tool and no when-not condition, so an agent must still infer the boundary with GetEarningsCallThemeHistory and GetEarningsCallTranscript.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetUpcomingInvestorEventsUpcoming Investor EventsARead-onlyInspect
Get upcoming investor-relations events for a stock — earnings webcasts, conference appearances, presentations, and shareholder meetings — scraped from the company's IR website. Returns events scheduled from now onward, soonest first, optionally filtered by event type. Also states the next earnings call when one is known beyond the listed events: a scheduled call, or an estimate projected from the company's past call dates and labelled as one. Coverage is partial — an empty answer distinguishes a coverage gap from a genuinely empty calendar. Only future events are returned; for past events and their transcripts use ListInvestorEvents / GetInvestorEventTranscript.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Company ticker symbol (e.g., NVDA, AAPL), or MIC:TICKER (e.g., XPAR:AIR) for a listing outside the US. | |
| eventType | No | Optional event-type filter: EarningsCall, Conference, Presentation, ShareholderMeeting, or Webcast. Omit for all types. Events whose source label could not be classified carry the generic type 'Event' and only appear when no filter is set. | |
| maxResults | No | Maximum number of events to return (default: 20, max: 500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, non-destructive profile, and the description adds substantial context beyond them: data provenance (scraped from the company's IR website), a partial-coverage caveat with a stated way to interpret empty results, and the projection behavior for the next earnings call labelled as an estimate. This is exactly the extra context annotations cannot express.
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 what the tool returns, followed by scope, then the alternative-tool routing. It is dense and slightly long-winded (the earnings-call projection sentence is intricate), but no sentence is 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 no output schema, the description supplies ordering ('soonest first'), scope limits (future only), empty-result semantics, and the extra next-earnings-call field. Nothing an agent needs in order 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 description coverage is 100% and all three parameters are documented in the schema, including the 'Event' fallback type for unclassified labels. The description restates the optional event-type filter but adds no syntax or format detail beyond the schema, so baseline 3 applies.
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 ('Get upcoming investor-relations events for a stock') and enumerates the concrete event kinds returned, then explicitly disclaims the past-events territory owned by ListInvestorEvents / GetInvestorEventTranscript. An agent can distinguish it from GetEarningsCallEvent and the transcript tools without opening a 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?
Names the alternatives and the condition that selects them: 'Only future events are returned; for past events and their transcripts use ListInvestorEvents / GetInvestorEventTranscript.' It also gives filtering guidance ('optionally filtered by event type') and tells the agent how to read an empty answer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetValuationMultiplesValuation MultiplesARead-onlyInspect
Get current EV/Revenue, EV/EBIT and P/E with peer median, quartiles and sample size; REITs also include verified company-stated P/FFO and P/AFFO, and any filer with a verified reconciliation also includes EV over its own stated Adjusted EBITDA, when available. TTM money flows use four discrete fiscal quarters or an exact annual-plus-current-YTD-minus-prior-YTD bridge; annual-only figures are not TTM. P/E uses validated diluted EPS or explicitly reported income available to common shareholders, with the basis named. Enterprise value uses same-date reported debt, cash and tagged short-term investments. Inputs must reconcile, share one effective split basis and be stated in USD; missing inputs are never estimated. The company is excluded from its peer cohort, which uses similar-size industry peers when sufficient and the full industry otherwise. The response names every figure's date and cohort basis. Use GetValuationMultiplesHistory for point-in-time history.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker symbol (e.g., AAPL, MSFT). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and non-destructive, but the description adds deep behavioral context beyond that: TTM bridge construction, P/E basis, enterprise value components, the rule that missing inputs are never estimated, and the guarantee that date and cohort basis are named in the response. This is exactly the kind of methodology disclosure that helps an agent trust and interpret the result.
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 long, but nearly every sentence adds a distinct, decision-relevant fact about methodology, scope, or routing to a sibling. It front-loads the core metrics and then layers important caveats. It could be mildly tightened with bullet-like separation, but it remains informative without fluff.
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 output schema, the description does the work of explaining what the response will contain: valuation multiples, peer statistics, REIT-specific multiples, and the guarantee that dates and cohort basis are named. It also gives the key routing instruction and all material data-quality constraints. For a one-parameter read-only tool, this is complete enough for an agent to invoke correctly and interpret the response.
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 schema already covers the only parameter ticker at 100% coverage, so the description is not required to add param-level detail. The description's methodology notes about reconciliation and USD are about the underlying data, not the ticker parameter itself. Baseline 3 is appropriate because the schema fully documents the parameter and the description does not meaningfully expand on it.
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 opens with a precise statement of what is returned: 'current EV/Revenue, EV/EBIT and P/E with peer median, quartiles and sample size.' It names distinct metrics and differentiates itself by explicitly pointing to GetValuationMultiplesHistory for history, so an agent can distinguish this from the closest sibling without guessing.
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 states when to use this tool versus an alternative: 'Use GetValuationMultiplesHistory for point-in-time history.' It also provides boundary conditions such as annual-only figures not being TTM, and cohort fallback rules, giving an agent enough context to know if this is the correct data source for a request.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetValuationMultiplesHistoryValuation Multiples HistoryARead-onlyInspect
Get up to ~10 years of quarterly EV/Revenue, EV/EBIT, EV/EBITDA and P/E, with P/FFO and P/AFFO for REITs and EV/Adjusted EBITDA for verified filers. Each row is recomputed at its filing date from facts then available and that day's raw close; non-GAAP cells name their TTM or fiscal-year basis. Completed exact-primary split reconciliation preserves older samples; anchors before an unresolved split are omitted. The reply reports omissions and missing EV inputs by cause. Uses the strict USD-only TTM/EV methodology of GetValuationMultiples on one effective split basis. Missing or unproved inputs are dashes, never estimates.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker symbol (e.g., AAPL, MSFT). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and destructiveHint=false, so the safety profile is already known. The description adds substantial behavioral detail: rows are recomputed at filing date using facts then available and that day's raw close; split reconciliation affects sample preservation; anchors before unresolved splits are omitted; omissions and missing EV inputs are reported; and missing values are dashes, never estimates. This far exceeds the annotation coverage and gives agents realistic expectations for edge cases.
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 every sentence carries essential specificity: time range, metrics, recomputation behavior, split handling, output reporting, and missing-value policy. There is no filler or repetition. The most important identifying information is front-loaded in the first sentence, with caveats following in a logical order.
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 with one parameter and no output schema, the description covers what the response contains: quarterly rows, metric set, basis labels, split reconciliation effects, omission reporting, and dashed missing values. It also clarifies which sub-populations get special metrics (REITs, verified filers). Nothing essential for an agent to call and interpret the tool 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?
The schema already fully documents the single ticker parameter with 100% coverage and examples, so the baseline is 3. The description does not add any ticker-specific semantics beyond what the schema provides, but none are needed for a single well-known parameter. There is no gap for the description to compensate for.
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 states a specific verb and resource: retrieving up to ~10 years of quarterly valuation multiples. It enumerates the exact metrics (EV/Revenue, EV/EBIT, EV/EBITDA, P/E, plus REIT and verified-filer variants), which clearly differentiates it from the point-in-time sibling GetValuationMultiples. The name and content together leave no ambiguity about what the tool returns.
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 implies the use case: historical quarterly multiples with a recomputed-at-filing methodology, and it explicitly references the methodology of sibling GetValuationMultiples. It does not explicitly state 'use this for history, use GetValuationMultiples for current,' but the relationship is clear enough from the name and methodology reference. A short when-to-use/when-not-to-use contrast would fully satisfy this dimension.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetVixHistoryVIX Volatility Index HistoryARead-onlyInspect
Get CBOE Volatility Index (VIX) historical daily OHLC data. VIX measures expected 30-day S&P 500 volatility. Below 15 = low volatility/complacency, above 30 = high fear/uncertainty. Data available from 1990 to present.
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | No | End date in YYYY-MM-DD format (defaults to latest available) | |
| startDate | No | Start date in YYYY-MM-DD format (defaults to 3 months ago) | |
| maxResults | No | Maximum number of records to return (default: 60, max: 500). When the range holds more rows the newest are kept; rows are always listed oldest to newest. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and non-destructive. The description adds the availability window ('1990 to present') and OHLC format, but omits pagination, error behavior, or response details. It meets the lowered bar but adds no deeper operational context.
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?
Two sentences total: the first is the purpose, the second offers actionable market context. No fluff, front-loaded.
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 historical data tool with a fully described schema, the description plus schema give an agent all needed info: data type, date range, parameters, and ordering. The OHLC designation implies return fields even without an 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 covers all 3 parameters with descriptions (100%), including defaults and maxResults ordering. The main description adds no parameter-specific meaning, so the baseline 3 applies.
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 explicitly states 'Get CBOE Volatility Index (VIX) historical daily OHLC data,' identifying the exact resource (VIX) and data type (OHLC). This distinguishes it from sibling price tools like GetStockPrices.
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 implies use for VIX historical analysis but doesn't explicitly compare to alternatives or state when not to use. The VIX level interpretation ('Below 15... above 30') provides context but no direct selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetWebDataFeedGet TrackerARead-onlyInspect
Get the latest independently verified stored result for one of the caller's trackers, or the latest retained result at or before a requested timestamp. This is read-only, never triggers a live run, and preserves the last good result after a newer failure. To create or manage a tracker, tell the user to open the Equibles Portal and choose Dashboard → Trackers: https://www.equibles.com/trackers
| Name | Required | Description | Default |
|---|---|---|---|
| dataFeed | Yes | The tracker name or full id shown by ListWebDataFeeds. | |
| capturedAtOrBefore | No | Optional ISO-8601 timestamp. Returns the newest retained verified capture completed at or before this instant. Omit it for the latest result. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, but the description adds beyond them: it specifies the result is 'independently verified' and 'stored', that it 'never triggers a live run', and that it 'preserves the last good result after a newer failure'. These are meaningful behavioral details not captured by the 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?
Front-loads the core purpose, then adds safety behavior, then redirects for management. Three sentences, each earning its place, though the portal URL and instruction are slightly tangential yet useful for preventing misuse.
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 two-parameter read-only tool with full schema coverage and no output schema, the description covers what it does, when to use it, key behavioral traits, and a clear path for management actions. No critical gaps remain for an agent 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 the schema already fully documents both parameters. The description restates the timestamp filtering ('latest retained result at or before a requested timestamp') and tracker scoping, but adds no syntax, format, or constraint details beyond what the schema 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?
States a specific verb (Get) and resource (latest independently verified stored result for the caller's trackers), with optional timestamp scope. Distinguishes from ListWebDataFeeds by referencing it for tracker names and from live-run tools by explicitly saying it never triggers a live run.
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?
Clear context for when to use: to retrieve a stored result, optionally at or before a timestamp. Provides a clear when-not-to-use by directing users to the Equibles Portal for creating or managing trackers. Does not name specific alternative data-retrieval tools, but the read-only/no-live-run note implicitly routes live queries elsewhere.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ListFilingsList FilingsARead-onlyInspect
List stored SEC filings and earnings-call transcripts newest first. Omit ticker for a market-wide feed or provide one ticker for a company-specific list. Returns company identity, document IDs, types, filing and reporting dates, SEC item numbers, line counts, EDGAR accession numbers and acceptance times (UTC; blank for filings stored before October 2026), and page totals. Supports date, document-type, and exact SEC item-number filters. Hidden document types remain excluded unless explicitly requested. When the deployment summarizes documents, each row adds a one- or two-sentence summary of what the document says, and when it has a public document viewer, each row adds the filing's page URL to share with the user. Pass a returned ID to SearchDocument or ReadDocumentLines.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination (default: 1) | |
| ticker | No | Optional company ticker symbol (e.g., AAPL, MSFT); a listing outside the US is MIC:TICKER (e.g. XPAR:AIR), whose list includes its ESEF reports. Omit for all companies. | |
| endDate | No | Optional end date filter in YYYY-MM-DD format | |
| maxItems | No | Maximum number of documents per page (default: 10) | |
| startDate | No | Optional start date filter in YYYY-MM-DD format | |
| itemNumber | No | Optional exact SEC current-report item number, e.g. 2.02, 5.02, or 1.01. | |
| documentType | No | Document type filter: a registered value such as 'TenK', 'TenQa', 'EightK', 'TwentyF', 'Def14A', 'Defa14A', 'SThree' or 'TenderOfferThirdParty', or its SEC form name ('10-K', '20-F/A', 'DEFA14A', 'S-3ASR', 'SC TO-T', 'NT 10-Q'), plus deployment-registered types such as EarningsCallTranscript. An unrecognized value returns an error listing every accepted value. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, closed-world), yet the description still adds real substance: hidden document types are excluded by default, EDGAR acceptance times are blank for filings stored before October 2026, and summary/viewer-URL fields appear only when the deployment supports them. These are non-obvious conditional behaviors 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 purpose and ordering, then scope selection, return fields, filters, and handoff. Dense and mostly waste-free, though 'Supports date, document-type, and exact SEC item-number filters' partly restates the schema and 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?
With no output schema, the description fully enumerates the returned columns (company identity, document IDs, types, dates, item numbers, line counts, accession numbers, acceptance times, page totals) including the UTC/blank caveat. It also covers conditional fields and the downstream ID handoff, so an agent needs nothing else to call and consume this tool.
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; the description earns more by adding semantics beyond the schema — the ticker argument's omit-vs-provide semantics, and the interaction between documentType and the hidden-type exclusion rule. It only lightly echoes the date and item-number filters that the schema already documents.
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 dual resource ('List stored SEC filings and earnings-call transcripts newest first'), plus ordering. It is clearly distinct from the Search* siblings, and the closing line 'Pass a returned ID to SearchDocument or ReadDocumentLines' positions it as the discovery step feeding those tools.
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 tells the agent how to choose scope: 'Omit ticker for a market-wide feed or provide one ticker for a company-specific list', and notes hidden types are excluded unless explicitly requested. It stops short of naming SearchDocuments/SearchDocument as the alternative for content-based lookup, so the search-vs-list choice is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ListInvestorEventsBrowse Investor EventsARead-onlyInspect
List a company's investor events, newest first: earnings calls plus conferences, investor days and shareholder meetings. Each row gives the event id, type, UTC start, title, fiscal period (earnings calls only), status, and each material's status (available, pending, notPublished, failed, notAttempted, noCallHeld) for transcript, audio and slides. Read a conference by event id with GetInvestorEventTranscript; GetEarningsCallEvent is keyed by fiscal quarter.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of events to return (default 25, max 100; values outside 1-100 are clamped) | |
| offset | No | Number of matching events to skip before returning rows (default 0) | |
| ticker | Yes | Company ticker symbol (e.g., AAPL, MSFT), or MIC:TICKER (e.g., XPAR:AIR) for a listing outside the US. | |
| eventType | No | Optional event type to filter on: EarningsCall, CapitalMarketsDay, InvestorUpdate, AGM, Conference, FiresideChat, or MAndA (default: all types) | |
| includeUncaptured | No | Also list events hidden because none of their materials could be captured and still on the company's own IR calendar (default false); their status reads Unavailable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered; the description adds real behavioral detail on top — sort order, the exact row fields returned, the material-status vocabulary, and that fiscal period applies only to earnings calls. It stops short of describing pagination interaction or how many events a typical company yields.
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?
Three sentences, front-loaded with the verb and resource, then the return shape, then the routing hints. It is dense rather than bloated, though the enumerated status vocabulary in the middle sentence makes it slightly heavy to scan.
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?
There is no output schema, so the description carries the full burden of describing returns — and it does so thoroughly, listing every row field and the full status enumeration for transcript, audio and slides. An agent has enough to select and call this tool 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 limit, offset, ticker, eventType and includeUncaptured are already fully documented; the description adds no parameter syntax or format detail beyond what the schema provides. 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?
Specific verb + resource ('List a company's investor events'), with the exact scope enumerated (earnings calls, conferences, investor days, shareholder meetings) and the ordering stated ('newest first'). It also names the sibling tools that consume its output, so an agent can place it in the workflow 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?
Explicit routing guidance: read an event via GetInvestorEventTranscript, and note that GetEarningsCallEvent is keyed by fiscal quarter rather than by event id. That is unusually actionable. It does not, however, distinguish this tool from the sibling GetUpcomingInvestorEvents (upcoming vs. historical scope) or state any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ListWebDataFeedsList TrackersARead-onlyInspect
List the caller's own trackers (recurring, verified website data collections), with schedule, state, visibility, and most recent run. This is read-only and never contacts a source website. To create or manage one, tell the user to open the Equibles Portal and choose Dashboard → Trackers: https://www.equibles.com/trackers
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false. The description adds genuinely new behavioral context beyond that: the feed never contacts a source website, which is non-obvious for a feed tool. It does not discuss pagination or freshness, but with strong annotation coverage this is a solid add.
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?
Two sentences that front-load the purpose and returned fields, then the fallback action. The external URL is slightly incidental but justified as actionable routing 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?
For a zero-param, read-only list tool with no output schema, the description conveys purpose, returned fields, safety, and the out-of-scope path. Nothing essential to correct invocation is missing; only finer return-shape detail is absent, which the annotations largely obviate.
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 the schema imposes no burden and there is nothing to disambiguate. Baseline of 4 is appropriate; no parameter guidance is needed or missing.
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 clear verb+resource ('List the caller's own trackers') and immediately defines what a tracker is ('recurring, verified website data collections'). The scoping to 'the caller's own' and the returned attributes distinguish it from the singular sibling GetWebDataFeed.
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 when-to-use context (read-only listing) and an explicit when-not path for creation/management, redirecting to the Equibles Portal with a URL. It does not name the sibling GetWebDataFeed as an alternative for fetching a single feed, so it stops short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ReadDocumentLinesRead Filing LinesARead-onlyInspect
Read numbered lines from one SEC filing or earnings-call transcript. Use line numbers returned by SearchDocument or request a known range. Returns at most 2,000 lines and identifies the next startLine when truncated.
| Name | Required | Description | Default |
|---|---|---|---|
| endLine | Yes | Last line to read (1-based, inclusive). At most 2,000 lines are returned per call; a longer range is truncated with a note on how to continue. | |
| startLine | Yes | First line to read (1-based, inclusive) | |
| documentId | Yes | Document ID obtained from ListFilings |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
ReadOnlyHint and destructiveHint already identify this as a safe read operation. The description adds useful scope and continuation behavior: it covers exactly one SEC filing or transcript and identifies the next startLine when truncated. The 2,000-line cap is partly duplicated from the schema, but the next-startLine detail goes beyond it.
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?
Three compact sentences front-load the core purpose, then explain how to obtain line numbers, then state the return limit and truncation continuation. Every sentence earns its place with no filler or redundancy beyond the schema's existing 2,000-line limit.
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 simple read-only tool with a fully documented schema, the description provides the missing runtime details: it clarifies the source of line numbers, caps the returned batch, and explains how to continue when truncated. No output schema exists, so the return-behavior note is essential and sufficient.
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%, and startLine/endLine semantics are fully documented in the schema. The description adds the useful hint that line numbers can come from SearchDocument, but this is marginal rather than a substantive expansion of parameter meaning.
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 states a specific verb ('Read') and a specific resource ('numbered lines from one SEC filing or earnings-call transcript'). It also establishes the companion relationship with SearchDocument, making it distinguishable from the search and transcript-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 gives clear context: use this tool with line numbers from SearchDocument or with a known line range. It does not explicitly list exclusions or alternatives like SearchDocument, 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.
RemovePortfolioLotRemove Portfolio LotADestructiveInspect
Permanently delete a lot from the USER's portfolio, as if it had never been recorded. This is for a lot entered by mistake. It is NOT how a sale is recorded: deleting a lot that was sold destroys its realized profit; use ClosePortfolioLot for that. This cannot be undone, so confirm with the user first, naming the lot.
| Name | Required | Description | Default |
|---|---|---|---|
| lotId | Yes | The lot id shown by GetMyPortfolio, e.g. a1b2c3d4. | |
| portfolio | Yes | The portfolio holding the lot, by name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already set destructiveHint: true. The description adds value by stating the action 'permanently delete...as if it had never been recorded', and specifies it destroys realized profit if the lot was sold. It also warns 'This cannot be undone'. This enriches the behavioral context beyond the annotation.
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?
Three sentences, no wasted words. The first sentence states the action and its effect. The second clarifies the exception case and names the alternative tool. The third gives a user-facing constraint. Every sentence serves a distinct purpose.
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 2-parameter, no-output-schema tool with clear destructiveHint and high schema coverage, the description is complete. It covers purpose, usage guidelines, behavioral transparency, and user caution. No additional information is needed for effective invocation.
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%, with clear descriptions for both parameters. The description itself does not add detailed param info, but the schema already provides 'The lot id shown by GetMyPortfolio' and 'The portfolio holding the lot, by name'. The description reaffirms the purpose of the lot (mistaken entry) which indirectly helps parameter understanding. Baseline is 3 due to high schema coverage; the extra context on when a lot should be removed justifies a 4.
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 uses the specific verb 'delete' and the resource 'lot from the USER's portfolio', clearly distinguishing it from the sibling tool ClosePortfolioLot by stating it is for lots entered by mistake and that it's not how a sale is recorded. The description fully clarifies the tool's unique purpose.
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?
Explicit usage guidelines are provided: when to use (a lot entered by mistake), when not to use (not for recording a sale), and the alternative (use ClosePortfolioLot for that). Also advises to confirm with the user before proceeding.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ReportProblemReport an Equibles Tool ProblemAInspect
Report an Equibles tool call you actually made when it failed, timed out, was unexpectedly empty (ToolFailed), or returned verifiably impossible or contradictory data (ImplausibleResult). Answer the user first, then retry or use a fallback; this report does not fix the current call. Report the call and response, never the person or their question. Omit private or user-provided argument values or replace them with [redacted]. Mention briefly that you flagged it. Do not report surprising-but-plausible data, missing tools, feature requests, or non-Equibles tools.
| Name | Required | Description | Default |
|---|---|---|---|
| expected | No | Optional. What you expected instead, and how you know — a figure from another Equibles tool, a filing, or the tool's own documented behaviour. This is what makes an implausible-result report reproducible. | |
| toolName | Yes | The Equibles tool that misbehaved, e.g. GetCompanyKpis. | |
| arguments | No | Optional. The arguments you passed to the failing tool, as JSON or key=value pairs, so the call can be replayed. Omit or redact any user-provided or private text. | |
| observation | Yes | What went wrong, in one or two sentences: the error text, or why the figures are not credible. Describe the call and its response only — never the user or their question. Do not submit placeholder-only text such as N/A. | |
| problemKind | Yes | Either 'ToolFailed' (error, timeout, or unexpectedly empty) or 'ImplausibleResult' (answered, but the data cannot be right). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are minimal (readOnlyHint false, etc.), so the description carries the behavioral burden. It fully discloses that the report does not fix the current call, requires answering the user first, and specifies what should/shouldn't be reported (call and response only, omit private data, redact). This goes well 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?
The description is detailed but every sentence carries distinct guidance: scope, order of operations, content rules, exclusions, and redaction. It is front-loaded with the core purpose and then specifics, with 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 reporting tool with 5 params and no output schema, the description covers all the essential behavioral and content requirements: what to report, what to omit, redaction, how to phrase observation, the purpose of expected, and the fallback order. 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%, and each parameter already has a clear description. The tool description additionally clarifies the expected format/length for 'observation' and the purpose of 'expected' as the reproducibility crux for implausible results. It also reinforces the redaction guidance for 'arguments'. This adds meaningful value beyond the schema, though the schema already does most of the work.
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 states a specific verb (Report) and resource (an Equibles tool call you actually made) and defines the exact conditions that qualify (failed, timed out, unexpectedly empty, or implausible result). This clearly differentiates it from the sibling data-query tools and from SuggestToolImprovement.
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?
Explicit when-to-use criteria are given (after a call fails or returns implausible data), along with an explicit exclusion list ('surprising-but-plausible data, missing tools, feature requests, or non-Equibles tools'). Also provides sequencing guidance (answer user first, then retry/fallback, then report) and instructs to mention the flag briefly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ScreenStocksStock ScreenerARead-onlyInspect
Screen listed stocks with optional min/max bounds for price, market cap, institutional ownership, 13F holder signals (conviction, crowding, private-fund adviser ownership, active holders' share change, holder tenure and price versus the holders' estimated cost), short data, insider activity, valuation, growth, margins, liquidity and earnings. Exact sector, industry, covered-index membership and going-concern filters are also available. A stock missing a bounded metric is excluded. Results use the requested sort (market cap descending by default), are paged, and include each dataset's vintage. Filtering or sorting on a fundamental metric adds that metric to the result table. US listings by default; pass market to screen European, Chinese, Hong Kong, Japanese or Canadian listings.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Result page (default 1) — combine with maxResults to walk past the first page of a large match set. | |
| index | No | Keep only members of one covered index, by slug or name (sp-500, S&P 500, nasdaq-100, Russell 2000). An unknown name returns the accepted list. | |
| maxPe | No | Maximum trailing-twelve-month price-to-earnings ratio (e.g. 15 for value screens). | |
| minPe | No | Minimum trailing-twelve-month price-to-earnings ratio. | |
| market | No | Listing markets as ISO country codes, comma-separated (e.g. GB,FR or CN,HK), or 'all' for every covered market. Default US. A non-US row's ticker is a qualified MIC:TICKER symbol (e.g. XPAR:AIR) that the portfolio tools and the price, financial, earnings-call, guidance, debt and estimate tools accept; its price and market cap are USD at the official exchange rate, with the traded close in its own currency beside the price. Non-US rows carry identity, price and market cap only. | |
| sector | No | Exact sector name (e.g. Technology, Healthcare). An unknown name returns the accepted list. | |
| sortBy | No | Sort key: marketcap, ticker, name, price, filers, filerdelta, sipct, dtc, squeeze, sentiment, insiderbuy, pe, divyield, revgrowth, grossmargin, dollarvol, netincome, instown, conv, crowd, pfown, actlfl, tenure or costgap. Default marketcap. An unknown key is rejected, never silently ignored. | marketcap |
| tickers | No | Optional list of up to 200 tickers to restrict the screen to, for scoring stocks the user already holds or follows instead of searching the whole market. Every other bound still applies and sortBy still orders the result. Class-share dots (BRK.B) resolve to the listed form, a secondary listing resolves to its issuer, and any symbol outside the covered universe is named back to you. | |
| industry | No | Exact industry name (e.g. Semiconductors). Prefer sector for broad groups. | |
| maxPrice | No | Maximum share price in dollars. | |
| minPrice | No | Minimum share price in dollars. | |
| maxResults | No | Maximum rows to return (default 50; clamped to 1-200). | |
| maxCrowding | No | Maximum crowding in percent of shares outstanding. | |
| minCrowding | No | Minimum crowding: shares held by high-turnover 13F filers and private-fund advisers, in percent of shares outstanding. | |
| maxMarketCap | No | Maximum market capitalization in dollars. | |
| maxNetIncome | No | Maximum trailing-twelve-month net income in dollars. | |
| minMarketCap | No | Minimum market capitalization in dollars. | |
| minNetIncome | No | Minimum trailing-twelve-month net income in dollars (0 keeps profitable companies only). | |
| maxFilerCount | No | Maximum number of 13F institutional filers holding the stock. | |
| maxFilerDelta | No | Maximum quarter-over-quarter change in filer count. | |
| minFilerCount | No | Minimum number of 13F institutional filers holding the stock. | |
| minFilerDelta | No | Minimum quarter-over-quarter change in filer count. | |
| sortAscending | No | Sort ascending instead of descending. | |
| maxDaysToCover | No | Maximum days to cover. | |
| maxGrossMargin | No | Maximum gross margin in percent (0-100). | |
| minDaysToCover | No | Minimum days to cover. | |
| minGrossMargin | No | Minimum gross margin in percent (0-100). | |
| maxDollarVolume | No | Maximum trailing-3-month average daily dollar volume in dollars. | |
| maxHolderTenure | No | Maximum value-weighted holder tenure in quarters. | |
| maxSqueezeScore | No | Maximum composite short-squeeze score (0-100, peer-relative). | |
| minDollarVolume | No | Minimum trailing-3-month average daily dollar volume in dollars (e.g. 5000000 = $5M/day). | |
| minHolderTenure | No | Minimum value-weighted holder tenure in quarters (how long 13F filers have held the stock). | |
| minSqueezeScore | No | Minimum composite short-squeeze score (0-100, peer-relative; higher = more squeeze-prone). | |
| maxDividendYield | No | Maximum trailing dividend yield in percent. | |
| maxNetInsiderBuy | No | Maximum net open-market insider buying by officers and directors in dollars over the trailing 90 days. | |
| maxRevenueGrowth | No | Maximum revenue growth in percent, latest quarter vs the same quarter a year earlier. | |
| minDividendYield | No | Minimum trailing dividend yield in percent (e.g. 3 = 3%). | |
| minNetInsiderBuy | No | Minimum net open-market insider buying by officers and directors in dollars over the trailing 90 days. | |
| minRevenueGrowth | No | Minimum revenue growth in percent, latest quarter vs the same quarter a year earlier. | |
| maxConvictionShare | No | Maximum conviction share in percent. | |
| minConvictionShare | No | Minimum conviction share: percent of the stock's 13F filers holding it among their ten largest positions. | |
| maxEstimatedCostGap | No | Maximum quarter-end price versus the holders' estimated average cost, in percent. | |
| maxInsiderSentiment | No | Maximum composite insider-sentiment score (0-100, peer-relative). | |
| minEstimatedCostGap | No | Minimum quarter-end price versus the 13F holders' ESTIMATED average cost, in percent (negative = holders sit on an estimated loss). | |
| minInsiderSentiment | No | Minimum composite insider-sentiment score (0-100, peer-relative; higher = more aggressive insider accumulation). | |
| hasGoingConcernDoubt | No | True keeps only companies whose latest filing states unalleviated going-concern doubt; false keeps only companies without the flag. | |
| maxActiveHolderChange | No | Maximum like-for-like share change of actively managed 13F holders, in percent. | |
| minActiveHolderChange | No | Minimum like-for-like share change of actively managed 13F holders over the quarter, in percent (positive = adding). | |
| maxPrivateFundOwnership | No | Maximum private-fund adviser ownership in percent of shares outstanding. | |
| maxShortInterestPercent | No | Maximum short interest as a percent of shares outstanding (0-100). | |
| minPrivateFundOwnership | No | Minimum ownership by 13F filers that advise private funds (Form ADV), in percent of shares outstanding. | |
| minShortInterestPercent | No | Minimum short interest as a percent of shares outstanding (0-100). | |
| maxInstitutionalOwnership | No | Maximum institutional ownership in percent. | |
| minInstitutionalOwnership | No | Minimum institutional ownership: 13F shares held over shares outstanding, in percent (overlapping filings can exceed 100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only and non-destructive; the description adds substantial behavior beyond that: missing bounded metrics are excluded, results are paged and sorted with market cap descending default, each dataset's vintage is included, filtering/sorting adds that metric to the table, and non-US rows carry only identity/price/market cap.
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 well front-loaded for a 54-parameter screener. Every sentence conveys a distinct behavioral or scoping rule, and there is no redundant restatement of schema details.
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 and the schema's full parameter coverage, the description is complete enough for an agent to invoke it correctly. It covers purpose, filter scope, defaults, pagination, sorting, dynamic output columns, vintage information, and market limitations, with no output schema needed.
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 the schema already documents all 54 parameters thoroughly. The description adds useful cross-parameter semantics such as exclusion of missing bounded metrics and dynamic result columns, but does not add parameter-level syntax or defaults beyond what the schema provides; baseline 3 is appropriate.
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 opens with a precise verb and resource ('Screen listed stocks') and immediately enumerates the multi-metric filtering scope. It clearly distinguishes this cross-dataset screener from the many single-dataset sibling tools like GetValuationMultiples or GetShortInterest.
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 gives clear context for optional min/max bounds, exact sector/industry/index filters, and ticker-restricted screening, plus the default US market and how to switch to other markets. It does not explicitly name sibling alternatives or when-not-to-use conditions, but the intended use is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
SearchCftcMarketsSearch CFTC Futures ContractsARead-onlyInspect
Search the tracked CFTC futures contracts by name, market code, common contract name, or standard futures symbol, or omit the query to list every tracked contract. Coverage is a curated set of ~35 major contracts across Agriculture, Energy, Metals, Equity Indices, Interest Rates, and Currencies - markets outside this set have no COT data here. Returns matching contracts with their codes and categories; use this to discover market codes before calling GetCftcPositioning.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search query — market code, name words, common name, or standard symbol (e.g., 'gold futures', 'WTI', 'ES', 'S&P 500', '088691'). Search requires every punctuation-independent word first and broadens to any word only when no strict row matches. Omit to list all tracked contracts. | |
| maxResults | No | Maximum number of results to return (default: 50, max: 500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, which the description supports by being a search operation. The description adds valuable behavioral context: the curated coverage set, the 'no COT data' caveat, the search broadening behavior (in the param description), and the return of codes and categories. This goes beyond the annotation-provided safety/read-only signal, though it doesn't detail exact output structure or pagination beyond maxResults.
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 concise and well-structured: three sentences that front-load the action, state the scope and coverage limitation, and clarify the return value and its intended follow-up. No wasted words; every sentence provides necessary information for using 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?
Given the simple 2-optional-parameter profile, no output schema, and annotations covering safety, the description is complete. It covers what the tool searches, what it returns, coverage boundaries, and how to use it in the broader workflow (before GetCftcPositioning). A small gap is the lack of the exact output shape, but 'codes and categories' suffices for a discovery tool.
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 input schema already has thorough descriptions for both parameters (query and maxResults) with examples and default/max values, giving 100% schema coverage. The main description reiterates that the query can be a name, code, symbol, etc., and that omitting it lists all, which adds value but does not significantly exceed what the parameter descriptions already explain. Baseline 3 is appropriate given 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?
The description clearly states the tool searches tracked CFTC futures contracts by multiple identifiers (name, market code, common name, symbol) and can list all when no query is given. It uniquely distinguishes itself by explicitly directing the agent to use it for discovering market codes before calling GetCftcPositioning, separating it from the many Get* and Search* 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 provides explicit guidance on when to use the tool, including the directive to 'discover market codes before calling GetCftcPositioning'. It also explains the coverage limitation (only ~35 curated contracts, markets outside have no COT data), helping the agent decide if this tool is applicable. The 'omit the query to list all' also clarifies a use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
SearchCongressMembersSearch Congress MembersARead-onlyInspect
Search the tracked congressional roster by name. Search first requires every punctuation-independent query word anywhere in the filed name, then broadens to any word only when no strict row matches. Verified public-name aliases such as Dan Crenshaw resolve to the roster name. Returns each match with its position, seat and current party (from the latest term); pass the returned exact Name to GetMemberTrades or GetMemberNetWorth.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query — partial or full name (e.g., 'Pelosi', 'Cruz', 'Dan') | |
| position | No | Filter by position: Senator or Representative (defaults to both) | |
| maxResults | No | Maximum number of results to return (default: 20, max: 500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish a safe, closed-world read, but the description adds real behavioral detail beyond them: a two-stage matching strategy (strict all-words first, broaden only on no match) and alias resolution for public names like 'Dan Crenshaw'. It also discloses the shape of each result (position, seat, party from latest term).
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?
Three dense sentences, front-loaded with the core purpose and the downstream hand-off. Every sentence carries information, though the fallback-matching clause is syntactically heavy for the value it adds.
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?
No output schema exists, and the description compensates by naming the returned fields and the identifier to reuse downstream. Combined with a well-covered three-parameter schema, an agent has enough to invoke and chain 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 genuine matching semantics the schema does not: punctuation-independent, every query word must appear in the filed name for a strict hit. It says nothing extra about position or maxResults, which the schema already documents.
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 ('Search the tracked congressional roster by name') and immediately scopes it to the roster rather than trades or net worth. An agent can distinguish it from GetMemberTrades, GetMemberNetWorth, and the other Search* tools without opening a 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?
Clearly signals when to use it and what to do with the result: 'pass the returned exact Name to GetMemberTrades or GetMemberNetWorth.' It does not state exclusions (e.g., when to use SearchInsiders instead), so it falls short of a full when/when-not treatment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
SearchDocumentSearch Within One FilingARead-onlyInspect
Search one SEC filing or earnings-call transcript by document ID. semantic mode uses hybrid relevance and returns excerpts in document order with approximate line numbers. exact mode performs a literal case-insensitive substring match and returns precise matching lines. Get document IDs from SearchDocuments or ListFilings; use ReadDocumentLines for surrounding text.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query — plain keywords or a short natural-language phrase. When too few excerpts match every word, the search automatically broadens to match any of the words. In searchMode 'exact', matched as a literal case-insensitive substring. | |
| documentId | Yes | Document ID obtained from ListFilings or a SearchDocuments result header | |
| maxResults | No | Maximum number of results to return (default: 5) | |
| searchMode | No | How to match: 'semantic' (default — hybrid keyword and semantic relevance) or 'exact' (literal case-insensitive substring match with precise line numbers). | semantic |
| maxExcerptChars | No | Maximum characters per excerpt (default: 0 = full excerpt). Set a small value (e.g. 400) for a compact scan across many results; truncated excerpts end with an explicit note. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals meaningful behavioral details beyond the read-only annotations: semantic mode returns excerpts 'in document order with approximate line numbers,' while exact mode returns 'precise matching lines.' It also discloses automatic query broadening through the schema description. This gives the agent a concrete model of what the tool will return and how it behaves in each mode.
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?
Three sentences accomplish a lot: scoping the resource, explaining the two operational modes and their output differences, and linking to sibling tools. The content is front-loaded with the core action, and every sentence delivers necessary, non-redundant information.
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?
The description is complete for a read-only, single-document search tool: it covers prerequisite ID acquisition, mode behavior, output characteristics, and a sibling for contextual reading. With annotations already covering safety and no output schema required, nothing an agent needs to invoke or interpret results 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 the schema already documents all five parameters. The tool description adds no parameter-level meaning beyond what the schema provides; it only restates the searchMode behavior at a high level. Baseline 3 is appropriate because the schema carries the semantic weight.
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 opens with a specific verb and resource: 'Search one SEC filing or earnings-call transcript by document ID.' It explicitly narrows scope to a single document, distinguishing it from sibling SearchDocuments, and references how to obtain IDs, making the tool's purpose unmistakable.
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 tells agents how to get the prerequisite document ID ('Get document IDs from SearchDocuments or ListFilings') and redirects to a specific sibling for a different need ('use ReadDocumentLines for surrounding text'). This explicit routing and prerequisite guidance leave no ambiguity about when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
SearchDocumentsSearch SEC FilingsARead-onlyInspect
Search SEC filings and earnings-call transcripts with hybrid keyword and semantic retrieval, or with match 'phrase' for only the excerpts containing an exact phrase. Omit ticker to search every company, or provide one ticker to search only that company. Returns excerpts with document IDs for SearchDocument or ReadDocumentLines. Use excludeTickers and maxResultsPerCompany only for market-wide discovery; use ListFilings to browse filings newest first without a text query.
| Name | Required | Description | Default |
|---|---|---|---|
| match | No | How the query matches: 'ranked' (default — relevance-ranked keyword and semantic retrieval that broadens to any of the words when results are sparse) or 'phrase' (only excerpts containing the query's words consecutively and in order; case and punctuation are ignored). | ranked |
| query | Yes | Search query — plain keywords or a short natural-language phrase. In ranked mode, when too few excerpts match every word, the search automatically broadens to match any of the words; concise, filing-phrased terms (e.g. 'Data Center revenue') still rank best. In phrase mode, the exact phrase to find. | |
| ticker | No | Optional company ticker; a listing outside the US is MIC:TICKER (e.g. XPAR:AIR). Omit to search across all companies. | |
| endDate | No | Optional end date filter in YYYY-MM-DD format | |
| startDate | No | Optional start date filter in YYYY-MM-DD format | |
| maxResults | No | Maximum number of results to return (default: 5, max: 500) | |
| documentTypes | No | Optional document types. Accepts registered values such as TenK, TenQ, EightK, TwentyF, SixK, FortyF, Def14A, SOne, or deployment-registered types such as EarningsCallTranscript. SEC form names such as 10-K, DEFA14A, S-3, SC TO-T or NT 10-K are also accepted; an invalid value returns the full accepted list. | |
| excludeTickers | No | Optional tickers to exclude from a market-wide search (max 25). Cannot be combined with ticker. | |
| maxExcerptChars | No | Maximum characters per excerpt (default: 0 = full excerpt). Set a small value (e.g. 400) for a compact scan across many results; truncated excerpts end with an explicit note. | |
| maxResultsPerCompany | No | Maximum results from any single company (default: 0 = unlimited). Set a small value (e.g. 2) to spread results across more companies for discovery-style queries. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds real behavioral context beyond that: results are excerpts carrying document IDs intended to feed SearchDocument/ReadDocumentLines, and ranked mode auto-broadens to any-word matching when results are sparse. It stops short of noting rate limits or result-count ceilings beyond maxResults.
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?
Three sentences, no filler, and the core capability plus the primary mode/filter distinction is front-loaded before the alternative-tool pointer. Every clause earns its place despite covering ten parameters.
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 ten-parameter, read-only search tool with no output schema and full schema coverage, the description covers purpose, modes, filtering strategy, follow-up chaining and the sibling alternative. It is only marginally short on output shape (excerpt structure, ordering, pagination), which is not fatal given the cheap 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 the baseline is 3. The description still adds meaning the schema does not: it frames 'match' as an exact-phrase switch vs. ranked retrieval, and states that excludeTickers/maxResultsPerCompany are intended only for market-wide discovery, which the schema's per-field text does not convey.
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 (search), specific resources (SEC filings and earnings-call transcripts), and the retrieval mechanism (hybrid keyword + semantic, with a 'phrase' mode). It also names the sibling it is not (ListFilings) and the follow-up tools (SearchDocument/ReadDocumentLines), so an agent can place it without opening a 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 explicit when-to-use rules: omit ticker for market-wide vs. one ticker for single-company, and reserve excludeTickers/maxResultsPerCompany for market-wide discovery. It also names a concrete alternative (ListFilings for newest-first browsing without a text query), which is exactly the routing guidance an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
SearchEconomicIndicatorsSearch Economic IndicatorsARead-onlyInspect
Search the curated set of ~40 US macro FRED series Equibles tracks (rates, inflation, employment, GDP, housing, market indicators) — not the full FRED catalog. Search first requires every punctuation-independent query word anywhere across the series ID, title, or category, then broadens to any word only when that strict search has no rows. Standard names such as fed funds rate, jobless claims, payrolls, yield curve, and core CPI are recognized. An empty query lists every tracked series. Results include seasonal adjustment, the latest observation date, and the UTC time Equibles last synced the series.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query — series ID, title keyword, or category name (e.g., 'inflation', 'unemployment', 'GDP', 'FEDFUNDS'). Empty lists all tracked series. | |
| maxResults | No | Maximum number of results to return (default: 20, max: 500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations establish readOnlyHint=true and destructiveHint=false, and the description adds substantial behavioral detail: the two-stage matching strategy, recognition of standard names, empty-query behavior, and the specific result fields (seasonal adjustment, latest observation date, UTC sync time). This goes far beyond the 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 three sentences, each earning its place. The first scopes the resource, the second explains the search logic, and the third describes output contents. No redundancy or 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 search tool with 2 parameters and no output schema, the description covers scope, behavior, result contents, and edge cases (empty query). It is fully self-contained and leaves no critical gaps for an agent to invoke or interpret the tool.
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. The description enriches the query parameter with word-matching semantics (every word required first, then any-word fallback) and clarifies that empty queries list all series. maxResults is fully covered by the schema, so the net addition is meaningful but not maximal.
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 clearly states the tool searches a curated set of ~40 US macro FRED series, distinguishing it from the full FRED catalog. The verb 'search' plus the specific resource scope (rates, inflation, employment, GDP, etc.) makes the purpose unambiguous and differentiates it from sibling tools like GetEconomicIndicator.
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 provides clear usage context: it searches only the tracked series, not the full FRED catalog, and explains the search algorithm with strict-then-broad matching. It also notes that an empty query lists all series. However, it does not explicitly name alternative tools or provide direct 'use this instead of X' guidance, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
SearchEtfsSearch ETFsARead-onlyInspect
Search active exchange-traded funds and products by exact ticker, fund name, or sponsor. ETF identity comes from the authoritative security-type reference directory, while assets and holdings come from the linked SEC Form NPORT-P fund series when available. Use GetEtfProfile for analysis or GetEtfHoldings for a paged portfolio.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Ticker, fund name, or sponsor (for example SPY, S&P 500, or iShares). | |
| maxResults | No | Maximum results to return (default 20, max 500). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the call read-only and non-destructive. The description adds useful behavioral context beyond annotations: only active ETFs are searched, identity is sourced from the authoritative reference directory, and assets/holdings are included only when the linked NPORT-P series is available.
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?
Three sentences, each with a distinct job: state the search scope, explain data provenance/availability, and route to relevant siblings. There is no filler or repetition of schema field names beyond what is useful.
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 simple two-parameter, read-only search tool with full schema coverage, the description covers selection, query semantics, source reliability, and follow-up tools. It omits exact return-field details, but with no output schema declared, the prose gives enough for an agent 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 schema carries parameter docs for query and maxResults. The description adds meaning not present in the schema by specifying 'exact' matching and the 'active' filter, plus clarifying that returned identity/assets/holdings have different data sources.
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 opens with a specific verb and resource: 'Search active exchange-traded funds and products by exact ticker, fund name, or sponsor.' It clearly scopes the tool to ETFs and products and distinguishes its role from downstream siblings like GetEtfProfile and GetEtfHoldings.
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 gives concrete routing guidance: 'Use GetEtfProfile for analysis or GetEtfHoldings for a paged portfolio.' It does not explicitly contrast with SearchFunds or state when not to search, so it lacks an exclusion, but the intended context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
SearchFundsSearch Funds and ETFsARead-onlyInspect
Search the tracked SEC Form NPORT-P fund directory by fund name, ticker, SEC series ID, or registrant. Returns one canonical profile per series with ticker, registration type, latest report date, assets, and reported-versus-stored holding counts. Exact stored tickers outrank verified share-class aliases. Use the profile ID with GetFundProfile. The directory covers NPORT-P filers; a miss is a dataset-coverage result, not proof that a fund does not exist.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Fund name, ticker, registrant, or verified share-class alias (e.g., 'Russell 2000', 'iShares', 'IWM', 'VOO'). | |
| maxResults | No | Maximum number of funds to return, largest by net assets first (default: 20, max: 500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description directly contradicts the annotation openWorldHint=false. The description states that 'a miss is a dataset-coverage result, not proof that a fund does not exist', which implies an open-world interpretation, while the annotation marks the tool as closed-world. This is a significant inconsistency that could mislead an agent about how to interpret missing results.
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 three sentences, each contributing meaningful information. The purpose is front-loaded, and the coverage caveat is placed at the end. It is efficient without being terse, though the third sentence is slightly lengthy. Overall, it is well-structured and concise.
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?
The description covers the return fields (ticker, registration type, latest report date, assets, holding counts) despite the lack of an output schema, which is helpful for an agent. It also notes the ranking behavior and the usage handoff. However, it does not address potential errors, pagination, or limits beyond maxResults, leaving minor gaps. Given the tool's moderate complexity and absent output schema, the coverage is fairly complete.
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 input schema covers both parameters with descriptions (100% coverage), so the baseline of 3 applies. The description adds a minor detail about matching behavior ('Exact stored tickers outrank verified share-class aliases') but does not add new parameter formats or examples beyond what the schema already specifies. No extra semantic value beyond the schema.
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 clearly specifies the verb 'Search' and the resource 'tracked SEC Form NPORT-P fund directory', and differentiates itself from siblings like SearchInstitutions and SearchDocuments by naming the specific domain (funds/ETFs) and the source (NPORT-P filings). It also states what is returned (canonical profile per series with ticker, registration type, etc.), so an agent knows exactly what the tool does.
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 explicitly instructs to 'Use the profile ID with GetFundProfile', which tells the agent when to hand off to a sibling. It also provides context on dataset coverage ('directory covers NPORT-P filers; a miss is a dataset-coverage result'), which helps the agent interpret results. It does not explicitly list when not to use it, but the pointer to GetFundProfile and the coverage note are strong usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
SearchInsidersSearch Corporate InsidersARead-onlyInspect
Search the tracked SEC corporate-insider set (directors, officers, 10% owners) by name. Search first requires every punctuation-independent whole query word in the filed legal name, then broadens to any whole word only when no strict row matches; a token inside a different word is not a match. Verified public-name aliases such as Jensen Huang resolve to the SEC owner identity. Returns CIK, role, latest filing company, and location, ordered by recent filing activity.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query for insider name | |
| offset | No | Number of matches to skip before returning rows (default: 0, clamped to 0-100000). For the next page, add the returned row count to the clamped current offset; if the next offset exceeds 100000, narrow the filters instead. Stop when fewer than the effective page size (maxResults clamped to 1-500) are returned, or the response's total has been reached. | |
| maxResults | No | Maximum number of results (default: 10, max: 500; values outside 1-500 are clamped) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/openWorldHint=false/destructiveHint=false, so safety is covered. The description adds genuine behavioral detail beyond annotations: the two-stage matching rule (all punctuation-independent words first, then any whole word), the no-substring rule, alias resolution (e.g., Jensen Huang), the returned fields, and the ordering by recent filing activity.
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?
A single front-loaded paragraph: the tool's scope comes first, then matching behavior, then return shape. It is dense but every sentence carries decision-relevant information, though the matching-rule sentence is somewhat syntactically heavy.
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?
No output schema exists, but the description compensates by naming the returned fields (CIK, role, latest filing company, location) and the ordering, and the pagination contract is fully documented in the schema. Nothing material for correct invocation 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 baseline is 3; the description goes beyond the schema's terse 'Search query for insider name' by specifying whole-word, punctuation-independent matching semantics and alias behavior for the query parameter, which materially changes how an agent should phrase a query. Offset/maxResults are left entirely to the schema, so not a 5.
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 ('Search') and resource ('the tracked SEC corporate-insider set') and even enumerates the entity types covered (directors, officers, 10% owners). This clearly separates it from the many sibling search tools (SearchCongressMembers, SearchInstitutions, SearchFunds) that target different entity sets.
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 is implied: use this to look up insiders by name, and the description explains that matching starts strict and then broadens. However, it never states when NOT to use it, nor names alternatives such as GetInsiderOwnership or GetInsiderTransactions for non-name-based insider data, so the agent must infer routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
SearchInstitutionsSearch Institutional InvestorsARead-onlyInspect
Search the tracked 13F filer set by institution name or SEC CIK. Search first requires every punctuation-independent query word anywhere in the filed name, then broadens to any word only when no strict row matches. Verified brand aliases such as Fidelity, Vanguard, and BlackRock include their current flagship CIK. Results are largest within the recently-active filing bucket first and include latest report date, tracked 13F position value, and position count so same-name filers can be compared before calling an institution tool. Values use report-date closing prices, may fall back to filer values, and can be zero when unvalued. Scoped institution tools remain strict and never discard an unmatched word. Each result shows its entity type from regulatory records, and holderTypes filters by it.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query — institution name, partial name, or CIK | |
| maxResults | No | Maximum number of results to return (default: 10, clamped to 1-500) | |
| holderTypes | No | Holder types to keep, as an array of tokens: adv (registered investment adviser), era (exempt reporting adviser), ia (other adviser), bank, ins (insurer), bd (broker-dealer), fund (registered fund), plan (benefit plan), nonus (non-US institution), hc (parent holding company or control person with no other type on record), unk (no deciding record yet), e.g. ["bank", "ins"]. Types come from Form ADV, SEC filer profiles, 13D/13G and N-CEN, never from names. Omit for all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already covering the safety profile (readOnly, non-destructive, closed-world), the description still adds substantial behavior: strict-then-broadened matching, verified brand aliases carrying flagship CIKs, result ordering (largest within the recently-active bucket first), and value semantics (report-date closing prices, filer-value fallback, zeros when unvalued). This is rich disclosure well beyond the 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 is front-loaded in the first sentence and each subsequent sentence carries real information about matching, ordering, or value semantics. It is dense and runs long, but no sentence is filler; structure is acceptable if slightly packed.
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?
There is no output schema, so the description must carry return-value burden, and it does: it lists latest report date, tracked 13F position value, position count, entity type, and ordering. Combined with matching rules and value caveats, an agent has everything needed to call and interpret the tool.
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 query, maxResults, and holderTypes are already fully documented, establishing the baseline of 3. The description adds only marginal value by tying holderTypes to the output 'entity type from regulatory records' rather than adding new syntax or constraints.
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 (Search), a precisely scoped resource ('the tracked 13F filer set'), and the searchable keys (institution name or SEC CIK). The 13F-filer scoping distinguishes it from sibling searches like SearchInvestmentAdvisers and SearchFunds without needing to open 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?
Gives clear usage context: it explains that results let 'same-name filers be compared before calling an institution tool,' routing the agent to the drill-down step. It also contrasts its broadening behavior with scoped institution tools that 'remain strict and never discard an unmatched word,' an implicit when-to-use-this-vs-those cue, though no explicit exclusion is spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
SearchInvestmentAdvisersSearch Investment AdvisersARead-onlyInspect
Search the tracked SEC Form ADV adviser set by firm name. Search first requires every punctuation-independent query word anywhere in the legal or business name, then broadens to any word only when no strict row matches. Returns CRD, main office, regulatory assets under management, employee count and as-of date, largest by assets first. Use the CRD with GetInvestmentAdviser.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Part of the firm's legal or business name (e.g., "Vanguard", "Renaissance") | |
| maxResults | No | Maximum number of advisers to return (default: 20, clamped to 1-500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the annotations by explaining the search algorithm (strict matching first, then broadening), the specific fields returned (CRD, main office, RAUM, employee count, as-of date), and the sort order (largest by assets first). This provides substantial behavioral context not captured in the schema or 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 concise and well-structured, with each sentence providing essential information: what it searches, how the search behaves, what it returns, and how to use the result. No redundant language or fluff.
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 simple search tool with two parameters and no output schema, the description is complete. It covers the input, search behavior, output fields, ordering, and the next step, leaving no critical gaps in understanding how to invoke and use the tool.
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. The description adds semantic meaning to 'query' by explaining the matching behavior (punctuation-independent, strict then broad), which enhances understanding beyond the schema's simple 'Part of the firm's legal or business name.'
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 clearly states the tool's function: searching the tracked SEC Form ADV adviser set by firm name. It specifies the resource (SEC Form ADV advisers) and the verb (search), and distinguishes itself from sibling GetInvestmentAdviser by indicating that CRD is used with that other tool.
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 provides a clear usage context: search by firm name to find advisers, then use the returned CRD with GetInvestmentAdviser. It implies when to use this tool versus the retrieval tool, though it does not explicitly mention alternatives like SearchInstitutions or SearchFunds.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
SuggestToolImprovementSuggest an Equibles Tool ImprovementAInspect
Suggest the smallest actionable contract improvement to an existing Equibles tool you actually called when it worked as documented but lacked a useful operation, filter, parameter or output option. Answer the user first; this records a future improvement and does not change the current call. Describe the call, never the person or their question. Omit private or user-provided argument values or replace them with [redacted]. Mention briefly that you suggested it. Use ReportProblem for wrong data; do not request new tools, duplicate existing options, or report non-Equibles ideas.
| Name | Required | Description | Default |
|---|---|---|---|
| toolName | Yes | The existing Equibles tool you actually called, e.g. GetCompanyKpis. | |
| arguments | No | Optional. The arguments you passed to the existing tool, as JSON or key=value pairs, so the limitation can be reproduced. Omit or redact any user-provided or private text. | |
| limitation | Yes | The concrete limitation encountered in that call. State what the current operation, filter, parameter, or output contract could not do. Describe the call only — never the user or their question. Do not submit placeholder-only text such as N/A. | |
| suggestedChange | Yes | The smallest actionable change you recommend, including the proposed operation, filter, parameter, or output behaviour and why it would resolve the limitation. Do not submit placeholder-only text such as N/A. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=false, openWorldHint=false, destructiveHint=false, but the description goes well beyond these by explaining that the tool 'records a future improvement and does not change the current call.' It also tells the agent to mention that it suggested the improvement, making the side effect (recording) transparent. This is consistent with annotations and adds valuable context about non-mutating behavior.
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 paragraph but is well-structured and front-loaded with the core purpose. Every sentence provides necessary instruction, from when to use it to what to avoid and how to mention the suggestion. While it is longer than minimal, the length is justified by the amount of critical operational guidance it conveys.
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?
The description is complete for an agent to call this tool correctly. It covers the trigger condition, alternative tool routing (ReportProblem), constraints on scope (no new tools, no duplicates), data privacy (redaction), and expected interaction flow (answer user first, mention the suggestion). Since there is no output schema, the description appropriately covers the behavioral contract without needing to explain return values.
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 all parameters are documented. The description adds extra semantic guidance beyond the schema: it tells the agent to redact user-provided values in the 'arguments' field, to avoid placeholder-only text in 'limitation' and 'suggestedChange', and to reference the existing tool called. This enhances parameter usability, earning a score above the baseline of 3.
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 clearly states the tool's purpose: to suggest a small actionable contract improvement to an existing Equibles tool that was actually called and worked as documented but lacked an operation, filter, parameter, or output option. It distinguishes itself from ReportProblem explicitly ('Use ReportProblem for wrong data') and from other siblings by its focus on improvement suggestions for existing tools.
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 gives explicit when-to-use (when a tool worked but lacked something) and when-not-to-use guidance (do not request new tools, do not duplicate existing options, do not report non-Equibles ideas). It also directs the agent to answer the user first and provides instructions on how to present the suggestion (describe the call, not the person, redact private values, mention briefly that it was suggested).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
UnwatchInstrumentUnwatch InstrumentADestructiveInspect
Remove a stock or an option contract from one of the USER's portfolio watchlists. This only removes the watch entry: it never touches a holding, so a stock the portfolio also owns stays exactly as recorded. Confirm with the user before removing.
Address the instrument the way it appears in GetMyPortfolio's Watching section: the symbol shown for a stock (MIC:TICKER for another exchange, e.g. XPAR:AIR), or the OCC symbol in optionContract for an option.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | No | The watched stock's symbol as shown, e.g. AAPL or XPAR:AIR. Omit when removing an option by its OCC symbol. | |
| portfolio | Yes | The portfolio whose watchlist to remove from, by name. | |
| optionContract | No | Optional. The watched option's OCC symbol, e.g. O:AAPL260724C00110000. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is known; the description adds real value beyond that by scoping the blast radius ('only removes the watch entry: it never touches a holding') and mandating user confirmation. It does not describe the response or failure modes, but annotations carry most of that burden.
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 action and its scope, then a second paragraph on addressing. Every sentence earns its place, though the addressing paragraph is somewhat dense and could be tightened.
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 destructive mutation with no output schema, it covers what is removed, what is preserved, how to address the instrument, and the confirmation requirement. Adequate to call the tool correctly, with only return/confirmation-feedback behavior left implicit.
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 non-trivial addressing semantics: ticker as MIC:TICKER (e.g. XPAR:AIR) versus the OCC symbol in optionContract, framed against how GetMyPortfolio displays them. This clarifies the mutual-exclusion intent behind the two identifier 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?
Specific verb (Remove) plus resource (stock or option contract from the USER's portfolio watchlist). It is clearly distinguishable from the inverse sibling WatchInstrument and from GetMyPortfolio, which it references for the addressing convention.
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 a clear context (removing a watched entry) and a per-call prerequisite ('Confirm with the user before removing'), plus explicit instructions to source the symbol from GetMyPortfolio's Watching section. It stops short of explicitly naming WatchInstrument as the inverse operation to use instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
UpdatePortfolioLotUpdate Portfolio LotAInspect
Correct a lot the USER already recorded: a mistyped quantity, price, trade date, note or exchange rate. Only the fields you pass change; the rest are left alone.
The instrument itself cannot be edited: a lot on the wrong stock or the wrong contract is a different holding, so remove it with RemovePortfolioLot and add the right one. To record a sale, use ClosePortfolioLot rather than editing the quantity down, because editing it away loses the realized profit.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Optional. A replacement note, up to 256 characters. | |
| lotId | Yes | The lot id shown by GetMyPortfolio, e.g. a1b2c3d4. | |
| fxRate | No | Optional. The broker's exchange rate on the trade, as units of the portfolio's currency per 1 unit of the lot's currency. | |
| quantity | No | Optional. The corrected signed size. Negative is a short or written option. | |
| portfolio | Yes | The portfolio holding the lot, by name. | |
| clearFxRate | No | Optional. True removes the broker's exchange rate, so the lot converts at the official rate on its trade date. Cannot be combined with fxRate. | |
| costPerUnit | No | Optional. The corrected price per share, always positive. | |
| acquiredDate | No | Optional. The corrected trade date, as yyyy-MM-dd. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, destructiveHint=false, openWorldHint=false, so the safety profile is partly covered. The description still adds real value beyond them: partial-update semantics ('only the fields you pass change'), the immutability of the instrument, and the consequence that editing quantity down loses realized profit. It omits permission/auth requirements, which is a minor gap.
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?
Three tight sentences, front-loaded with the core action and scope, then the two routing rules. No filler; every clause carries decision-relevant information.
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-parameter mutation tool with no output schema, the description covers partial-update behavior, the immutable instrument, and sibling routing, which is most of what an agent needs. It does not state what the response looks like or whether success is confirmed, a minor omission.
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% and every parameter is documented in the schema, which sets the baseline at 3. The description frames why each field exists (mistyped quantity, price, trade date, note, exchange rate) but adds no syntax or format 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?
States a specific verb (correct) and resource (a lot the USER already recorded), enumerating the fields that can be fixed. It distinguishes itself from AddPortfolioLot, RemovePortfolioLot, and ClosePortfolioLot by name, so an agent can pick it without opening schemas.
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 routes the agent: use RemovePortfolioLot for a wrong instrument, use ClosePortfolioLot instead of editing quantity down for a sale. This is exactly the when/when-not/alternative guidance that most definitions lack.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
WatchInstrumentWatch InstrumentAInspect
Put a stock or an option contract on one of the USER's portfolio watchlists, without recording any position. A watched instrument shows up in GetMyPortfolio's 'Watching (not held)' section with a current mark and nothing else - no quantity, no cost, no value.
For a stock, pass its ticker, or MIC:TICKER for another exchange (e.g. XPAR:AIR). For an option, pass BOTH the underlying ticker and the OCC symbol in optionContract, exactly as AddPortfolioLot takes them; the contract is verified against the live options data before anything is stored.
Watching something the portfolio already holds is allowed - the page shows one row, and selling out later keeps the instrument on the list.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker, or MIC:TICKER for a listing on another exchange, e.g. XPAR:AIR. For an option, the UNDERLYING U.S. ticker, e.g. AAPL. | |
| portfolio | Yes | The portfolio whose watchlist to add to, by name. | |
| optionContract | No | Optional. The OCC option symbol, e.g. O:AAPL260724C00110000. Provide it to watch an option contract; omit it for the stock itself. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only tell the agent this is a non-destructive write. The description adds substantial context beyond that: no position fields are stored (no quantity/cost/value), the option contract is verified against live options data before persisting, and the exact downstream representation in GetMyPortfolio is described.
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?
Three short paragraphs, front-loaded with the core action and the 'not held' distinction. Every paragraph carries weight, though the third paragraph on already-held instruments is a minor edge-case elaboration that could be tightened.
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?
There is no output schema, yet the description fully covers what an agent needs: what is stored, what is verified, symbol formats for both stocks and options, and how the result appears in GetMyPortfolio. Nothing material for correct invocation 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 already 100%, so the baseline is 3, but the description adds real meaning by describing the relationship between parameters - pass BOTH the underlying ticker and the OCC symbol to watch an option, omit optionContract for the stock - which clarifies the ticker/optionContract combination beyond the individual field docs.
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: 'Put a stock or an option contract on one of the USER's portfolio watchlists, without recording any position.' It immediately differentiates itself from position-recording siblings like AddPortfolioLot and clarifies the resulting state in GetMyPortfolio's 'Watching (not held)' section.
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?
Clearly frames the when: this is for watching, not holding, and explicitly notes that watching something already held is allowed and that selling out keeps it on the list. It references AddPortfolioLot for input format but does not explicitly name it as the alternative for recording positions, so the routing is strong but not fully spelled out.
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.
2 tool updates
- Changed
GetStockPrices1 field changed- added
Input schema / properties / intervalAdded value: +{ + "default": "daily", + "description": "Bar interval: daily (default), weekly or monthly. Use weekly or monthly with a wider startDate for long histories in one call.", + "type": "string" +}
- Changed
GetTranscriptPhraseTrend1 field changed- changed
Input schema / properties / phrase / descriptionPrevious value: -"Word or phrase to count, 2-80 characters after trimming (e.g. \"tariffs\", \"sovereign AI\"). Matched as whole words, ignoring case; a space matches any whitespace."New value: +"Word or phrase to count, 2-80 characters after trimming (e.g. \"tariffs\", \"sovereign AI\"). Matched as whole words, ignoring case. A space or hyphen between words matches any whitespace, a hyphen or no gap (\"co-pilot\" finds \"co pilot\" and \"copilot\"), and a hyphen may split a word between two letters (\"copilot\" finds \"co-pilot\"); numbers never join, so \"2025\" never counts \"20-25\"."
4 tool updates
- Added
GetHolderTargets - Changed
GetMostHeldStocks1 field changed- changed
Input schema / properties / sort / descriptionPrevious value: -"Sort by: 'filers' (default, # of 13F filers desc), 'filersDelta' (QoQ filer-count delta desc — warming names), 'filersDeltaAsc' (QoQ filer-count delta asc — cooling names), or 'value' (current total published position value desc)"New value: +"Sort by: 'filers' (default, # of 13F filers desc), 'filersDelta' (QoQ filer-count delta desc — warming names), 'filersDeltaAsc' (QoQ filer-count delta asc — cooling names), 'value' (current total published position value desc), 'conviction' (filers holding it among their ten largest positions desc) or 'crowding' (high-turnover and private-fund adviser shares as % of shares outstanding desc)"
- Added
GetOwnershipSignals - Changed
ScreenStocks15 fields changed- added
Input schema / properties / maxActiveHolderChangeAdded value: +{ + "default": null, + "description": "Maximum like-for-like share change of actively managed 13F holders, in percent.", + "type": [ + "number", + "null" + ] +} - added
Input schema / properties / maxConvictionShareAdded value: +{ + "default": null, + "description": "Maximum conviction share in percent.", + "type": [ + "number", + "null" + ] +} - added
Input schema / properties / maxCrowdingAdded value: +{ + "default": null, + "description": "Maximum crowding in percent of shares outstanding.", + "type": [ + "number", + "null" + ] +} - added
Input schema / properties / maxEstimatedCostGapAdded value: +{ + "default": null, + "description": "Maximum quarter-end price versus the holders' estimated average cost, in percent.", + "type": [ + "number", + "null" + ] +} - added
Input schema / properties / maxHolderTenureAdded value: +{ + "default": null, + "description": "Maximum value-weighted holder tenure in quarters.", + "type": [ + "number", + "null" + ] +} - added
Input schema / properties / maxInstitutionalOwnershipAdded value: +{ + "default": null, + "description": "Maximum institutional ownership in percent.", + "type": [ + "number", + "null" + ] +} - added
Input schema / properties / maxPrivateFundOwnershipAdded value: +{ + "default": null, + "description": "Maximum private-fund adviser ownership in percent of shares outstanding.", + "type": [ + "number", + "null" + ] +} - added
Input schema / properties / minActiveHolderChangeAdded value: +{ + "default": null, + "description": "Minimum like-for-like share change of actively managed 13F holders over the quarter, in percent (positive = adding).", + "type": [ + "number", + "null" + ] +} - added
Input schema / properties / minConvictionShareAdded value: +{ + "default": null, + "description": "Minimum conviction share: percent of the stock's 13F filers holding it among their ten largest positions.", + "type": [ + "number", + "null" + ] +} - added
Input schema / properties / minCrowdingAdded value: +{ + "default": null, + "description": "Minimum crowding: shares held by high-turnover 13F filers and private-fund advisers, in percent of shares outstanding.", + "type": [ + "number", + "null" + ] +} - added
Input schema / properties / minEstimatedCostGapAdded value: +{ + "default": null, + "description": "Minimum quarter-end price versus the 13F holders' ESTIMATED average cost, in percent (negative = holders sit on an estimated loss).", + "type": [ + "number", + "null" + ] +} - added
Input schema / properties / minHolderTenureAdded value: +{ + "default": null, + "description": "Minimum value-weighted holder tenure in quarters (how long 13F filers have held the stock).", + "type": [ + "number", + "null" + ] +} - added
Input schema / properties / minInstitutionalOwnershipAdded value: +{ + "default": null, + "description": "Minimum institutional ownership: 13F shares held over shares outstanding, in percent (overlapping filings can exceed 100).", + "type": [ + "number", + "null" + ] +} - added
Input schema / properties / minPrivateFundOwnershipAdded value: +{ + "default": null, + "description": "Minimum ownership by 13F filers that advise private funds (Form ADV), in percent of shares outstanding.", + "type": [ + "number", + "null" + ] +} - changed
Input schema / properties / sortBy / descriptionPrevious value: -"Sort key: marketcap, ticker, name, price, filers, filerdelta, sipct, dtc, squeeze, sentiment, insiderbuy, pe, divyield, revgrowth, grossmargin, dollarvol or netincome. Default marketcap. An unknown key is rejected, never silently ignored."New value: +"Sort key: marketcap, ticker, name, price, filers, filerdelta, sipct, dtc, squeeze, sentiment, insiderbuy, pe, divyield, revgrowth, grossmargin, dollarvol, netincome, instown, conv, crowd, pfown, actlfl, tenure or costgap. Default marketcap. An unknown key is rejected, never silently ignored."
1 tool update
- Changed
GetHolderMix1 field changed- changed
Input schema / properties / dimension / descriptionPrevious value: -"How to split the holders: type (holder type, default), style, turnover, horizon, aum (13F book size), client (client base), pf (private funds), country (filer location)"New value: +"How to split the holders: type (holder type, default), style, turnover, horizon, aum (13F book size), client (client base), pf (private funds), country (filer location), fundtype (registered funds by N-CEN fund type, from N-PORT, as a share of shares outstanding)"
1 tool update
- Changed
GetAllHolders1 field changed- changed
Input schema / properties / view / descriptionPrevious value: -"default (one row per holder, others nested), all (every row flat, stale included) or ultimate (summed holders grouped by ultimate parent)"New value: +"default (one row per holder, others nested), all (every row flat, stale included) or ultimate (summed holders grouped by ultimate parent, members listed beneath)"
2 tool updates
- Changed
GetAllHolders1 field changed- changed
Input schema / properties / source / descriptionPrevious value: -"Source to list: all (default), 13f, 13dg (13D and 13G), 13d, 13g, insider or fund. A single source lists its rows flat, stale ones flagged."New value: +"Source to list: all (default), 13f, 13dg (13D and 13G), 13d, 13g, insider, fund or nonus (non-US disclosures a deployment adds). A single source lists its rows flat, stale ones flagged."
- Added
GetMajorShareholdings
3 tool updates
- Added
GetAllHolders - Added
GetBeneficialOwnership - Added
GetOwnershipSummary
2 tool updates
- Changed
GetTopHolders1 field changed- changed
Input schema / properties / holderTypes / descriptionPrevious value: -"Holder types to keep, as an array of tokens: adv (registered investment adviser), era (exempt reporting adviser), ia (other adviser), bank, ins (insurer), bd (broker-dealer), fund (registered fund), plan (benefit plan), nonus (non-US institution), unk (no deciding record yet), e.g. [\"bank\", \"ins\"]. Types come from Form ADV, SEC filer profiles, 13D/13G and N-CEN, never from names. Omit for all."New value: +"Holder types to keep, as an array of tokens: adv (registered investment adviser), era (exempt reporting adviser), ia (other adviser), bank, ins (insurer), bd (broker-dealer), fund (registered fund), plan (benefit plan), nonus (non-US institution), hc (parent holding company or control person with no other type on record), unk (no deciding record yet), e.g. [\"bank\", \"ins\"]. Types come from Form ADV, SEC filer profiles, 13D/13G and N-CEN, never from names. Omit for all."
- Changed
SearchInstitutions1 field changed- changed
Input schema / properties / holderTypes / descriptionPrevious value: -"Holder types to keep, as an array of tokens: adv (registered investment adviser), era (exempt reporting adviser), ia (other adviser), bank, ins (insurer), bd (broker-dealer), fund (registered fund), plan (benefit plan), nonus (non-US institution), unk (no deciding record yet), e.g. [\"bank\", \"ins\"]. Types come from Form ADV, SEC filer profiles, 13D/13G and N-CEN, never from names. Omit for all."New value: +"Holder types to keep, as an array of tokens: adv (registered investment adviser), era (exempt reporting adviser), ia (other adviser), bank, ins (insurer), bd (broker-dealer), fund (registered fund), plan (benefit plan), nonus (non-US institution), hc (parent holding company or control person with no other type on record), unk (no deciding record yet), e.g. [\"bank\", \"ins\"]. Types come from Form ADV, SEC filer profiles, 13D/13G and N-CEN, never from names. Omit for all."
1 tool update
- Added
GetHolderTypeFlows
1 tool update
- Added
GetHolderMix
1 tool update
- Added
GetShareholderVoteResults
Publisher details
- Operator
- Equibles · Publisher source
- Operator website
- https://equibles.com · Publisher source
- Vendor relationship
- First-party · Publisher source
- Documentation
- https://equibles.com/docs/mcp · Publisher source
- Trust center
- Not available
- Restrictions
- Sign in over OAuth or send an Equibles API key as a Bearer header; tool calls without either are refused. The Free plan includes 100 requests a day shared across MCP and REST. Plus ($9.99 a month) adds delayed quotes, option chains and 10,000 requests a day; Pro ($49.99 a month) adds real-time prices and 100,000 requests a day. · Publisher source
Related MCP Connectors
SEC filings, insider trades, and earnings data
SEC filings, financial statements, metrics, insider and institutional holdings as structured data
US stock market data for AI agents: SEC filings, financials, insider trades, 13F, options, macro.
Stocks, ETFs, crypto, commodities, forex: quotes, fundamentals, SEC filings, point-in-time history.
Related MCP Servers
AlicenseNot gradedqualityBmaintenanceSEC-filed financial statements back to 1985 for US-listed companies, plus global coverage, every number cited to its filing with an accession number. 59 tools for income statements, balance sheets, cash flow, growth rates, valuation (DCF, reverse DCF, comparables, fair-value range), SEC filing and earnings-call search, supply chains, 13F holders, options positioning and thesis monitoring.MIT- FlicenseNot gradedqualityAmaintenanceEnables natural-language research and structured, source-backed answers across SEC filings, earnings transcripts, company financials, stock and crypto market data, and prediction markets news and research.-
- AlicenseAqualityCmaintenanceGive your AI agent live SEC EDGAR data: company financials, insider trades, 8-K events, 13F holdings, and the raw filings stream — all normalized to clean JSON, every number traceable back to its sec.gov source filing.842 PyPIMIT
- AlicenseNot gradedqualityAmaintenanceWall 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
Glama MCP Gateway
Add one secure layer between your agents and this server.
Directories
Last observed