equibles
Server Details
90+ free tools, Claude & ChatGPT: prices, options, SEC filings, 13F, insider, congress, transcripts.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- daniel3303/stock-market-mcp-server
- GitHub Stars
- 1
Available Tools
116 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. 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. 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. | |
| ticker | Yes | Stock ticker. For an option, the UNDERLYING 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). | |
| 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 indicate a non-read, non-destructive operation. The description adds substantial behavior: rejects unknown/expired contracts, requires verified OCC symbols for options, signed quantity semantics, positive costPerUnit, and idempotent retries within a duplicate window. This goes well beyond annotations and is critical for correct usage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but each sentence adds unique value. It leads with purpose, then covers inference prohibition, instrument specifics, quantity/cost semantics, and idempotency in a logical order. No redundant or filler content; 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 the tool's complexity (7 parameters, 5 required) and no output schema, the description covers all critical usage constraints: instrument selection, signed quantity, cost semantics, rejection rules, and duplicate behavior. It doesn't mention prerequisites like portfolio existence, but that's a minor gap likely handled elsewhere. Overall, it's quite complete for a write operation.
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 detailed descriptions, so the baseline is 3. The description adds meaningful cross-parameter context: that for options you must pass both the underlying ticker and the optionContract, and that costPerUnit is never the per-contract total. These relationships are not explicit in the schema, elevating the score.
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 ('Record') and resource ('a user-confirmed purchase or sale in the caller's portfolio'). It clearly indicates this is a write operation for adding lots, distinguishing it from siblings like UpdatePortfolioLot, RemovePortfolioLot, and GetMyPortfolio. The purpose is 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?
The description gives clear context for instrument types (stock vs option), requires user confirmation ('Never infer or guess'), and explains idempotency for retries. It does not explicitly name alternative tools, but the context and sibling names make it obvious that this is for adding new lots. The guidance is solid but could be strengthened by explicitly saying 'use this to add a new lot, not to modify or close an existing one.'
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). | |
| 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 declare readOnlyHint=true and destructiveHint=false, so the description correctly doesn't repeat that. It adds behavioral detail beyond those annotations: the return format (one row per ticker, latest-restated value, separate listing for tickers with no data) and the fiscal calendar alignment caveat. This enriches the agent's understanding of the tool's output 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?
The description is two concise sentences: the first states the primary purpose and return behavior, the second provides a critical caveat about fiscal calendar variation. Every sentence earns its place, with the main purpose front-loaded and 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 read-only comparison tool with no output schema, the description adequately covers key operational details: the return row structure, treatment of missing data, and the fiscal calendar nuance. It even directs the agent to check the Period End column, which implies that column exists. This is sufficient for an agent to call the tool correctly and 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?
The schema covers all parameters with descriptions (100% coverage), so the baseline is 3. The description adds extra meaning by highlighting that fiscalYear/period refer to each company's own fiscal calendar, which is not explicitly stated in the schema descriptions but is crucial for interpreting results. This goes beyond the schema to clarify a potential source of confusion.
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: comparing a single financial concept across multiple companies for a given fiscal period, explicitly calling it 'peer comparison'. It also specifies the return structure ('one row per ticker...') and distinguishes itself from single-company tools like GetFinancialFact by its multi-company focus.
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, notably that fiscal years follow each company's own calendar and that peer rows can cover different months, urging the agent to check the Period End column. However, it does not explicitly name alternative tools or specify when not to use it, though the peer-comparison purpose implies the appropriate context.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | A short name for the portfolio, e.g. Main or Retirement. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and destructiveHint=false. The description adds context: the portfolio is empty initially, holdings must be added separately via AddPortfolioLot, and duplicate names are rejected rather than merged. This provides useful behavioral detail 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?
Two sentences, front-loaded with purpose, no wasted words. Every sentence adds essential guidance.
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 tool with one parameter and no output schema, the description covers creation, uniqueness, user consent, and follow-up actions. It is fully 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 coverage is 100% with a clear description of the 'name' parameter. The description adds value by explaining uniqueness constraints and rejection behavior, which are not 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 clearly states it creates a new empty portfolio in the user's account, and explicitly mentions the sibling tool AddPortfolioLot for adding holdings, distinguishing it from other 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 instructs the agent to ask the user before creating, providing explicit user consent guidance. It also notes uniqueness constraints and rejection behavior, though it does not explicitly list alternatives or when not to use.
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.
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). 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. | |
| 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 mark readOnlyHint=true and destructiveHint=false, and the description adds non-obvious behavior: the recursive smoothing is warmed up on price history before startDate, so output doesn't depend on the requested range's left edge. It also clarifies the unit (USD), which is useful behavioral 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?
Four dense sentences, each informative: definition, formula, use case, and behavior. No filler; the technical description 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?
No output schema exists, and the description doesn't explicitly state the return shape, but the maxResults parameter description covers record ordering and count. The description provides the essential interpretive and behavioral context (unit, warmup, volatility interpretation) needed to use the tool confidently.
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 adds value by explaining that period is a smoothing window used recursively and that startDate's left-edge warmup makes values stable; this goes beyond the schema's terse 'Start date in YYYY-MM-DD' definition.
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 'Average True Range (ATR) for a stock' and unpacks the indicator with a precise formula (True Range max of high-low, |high-prev_close|, |low-prev_close|), distinguishing it from related indicators like Bollinger Bands or Stochastic Oscillator. The scope is clear: a volatility measure for a single stock, in USD.
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 ATR is 'commonly used for position sizing and stop placement' and explains that higher ATR means wider daily moves, giving clear applied context. It doesn't explicitly name alternatives or when-not-to-use, but the domain is sufficiently specialized.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetBollingerBandsBollinger BandsARead-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. | |
| 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?
Beyond the readOnlyHint annotation, the description discloses two important behaviors: the inclusion of %B and bandwidth columns, and the warm-up of the moving-average window on price history before startDate, which ensures values do not depend on the requested range's left edge. This adds significant context about data computation and edge-case handling that annotations alone do not 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 concise—three sentences that front-load the tool's purpose, then explain the calculation, interpretation, included columns, and a nontrivial edge-case behavior. Every sentence contributes meaningful information without waste 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?
Despite the absence of an output schema, the description adequately explains what the tool returns (BB bands, %B, bandwidth) and how the indicator behaves relative to the requested date range. It also covers the key formula components and the smoothing effect of the warm-up, providing enough detail for an agent to understand the tool's behavior without missing critical information.
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 adds value by explaining how parameters affect the output: 'moving average of close' corresponds to period, 'standard deviations above and below' corresponds to stdDev, and the warm-up behavior clarifies startDate semantics. This is more than just restating the schema, though it does not delve into every parameter detail, hence 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 opens with 'Bollinger Bands for a stock', clearly identifying the tool's purpose. It provides specific details about the calculation (middle band, upper/lower bands, standard deviations), distinguishes it from sibling indicators like GetAverageTrueRange or GetStochasticOscillator, and mentions included columns (%B, bandwidth), making the tool's scope 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?
Usage context is provided through interpretive guidance: 'Bands widen when volatility rises and contract when it falls; price touching the upper/lower band is a common overbought/oversold cue.' This helps an agent decide when to use Bollinger Bands. However, it does not explicitly name alternatives or state when not to use this tool, 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.
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). | |
| 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 convey readOnlyHint=true and destructiveHint=false. The description adds meaningful behavioral context by revealing that the response bundles current balances, a filing observation, covenant bullets, exact source quotes, and SEC documents, and that history, covenants, and documents are independently paged. This goes beyond the annotation baseline.
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 first states the core purpose, the second summarizes the returned data, and the third covers paging and prerequisite. 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 10-parameter read tool with no output schema, the description adequately describes what will be returned, notes that subresources are paged independently, and routes the agent to the prerequisite call. Remaining details like evidence character limits are fully specified in the 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%, with all ten parameters documented including defaults, maximums, and offsets. The description reinforces that instrumentId comes from GetDebtProfile and that collections page independently, but it does not materially add meaning beyond what the schema already 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?
The description states a specific verb ('Get'), a specific resource ('one durable debt instrument'), and a key ('Equibles identifier'), then enumerates the exact return contents. It clearly distinguishes this from the sibling GetDebtProfile by positioning that tool as the source of the identifier.
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 GetDebtProfile first to obtain the instrument identifier', giving the agent a concrete prerequisite and call sequence. It does not mention when not to use the tool or list alternative detail tools, but GetDebtProfile is the relevant sibling and the guidance is clear enough.
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 reported total debt history and its identified notes, loans, and revolving credit facilities. The latest 10-K establishes the annual baseline; each subsequent 10-Q and relevant 8-K updates 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). | |
| 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?
Beyond the readOnlyHint and destructiveHint annotations, the description discloses meaningful methodology: the latest 10-K establishes the annual baseline, 10-Q/8-K filings update durable instrument records rather than creating duplicates, and unmatched observations are disclosed and excluded. This gives the agent accurate expectations about deduplication and data coverage.
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 distinct value: the core purpose, the deduplication behavior, and the pointer to the sibling tool. It is front-loaded with the main function and avoids 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?
With no output schema, the description compensates by stating what results contain: instrument summaries, IDs, reported totals history, and disclosed unmatched observations. It could go slightly further in describing the paging-related outputs, but the parameter schema already covers paging parameters and the description covers the key behavioral details.
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 parameters are already well documented. The description adds context about output shape but does not add parameter-level meaning beyond what the input schema provides, 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 names a specific verb and resource: get a company's reported total debt history and identified notes, loans, and revolving credit facilities. It clearly differentiates this from GetDebtInstrument by describing summary-level output with instrument IDs.
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 points to GetDebtInstrument for paged covenants, filing observations, exact evidence, and SEC exhibits, which tells an agent when to choose the sibling instead. It does not explicitly state when to prefer GetDebtProfile over related debt tools, but the intended use is clearly implied.
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 a company's stored declared cash dividends newest first. Each row gives the ex-dividend date, cash amount per share in USD, and source. Date filters apply to the ex-dividend date. Future ex-dates can appear after a dividend is declared. Dividend records are issuer-level and available only through the company's current primary ticker; a secondary share class is never assumed to have the same dividend.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | Number of newest matching records to skip for pagination (default: 0). | |
| ticker | Yes | Current primary stock ticker (e.g., AAPL, MSFT). | |
| 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 the safety profile is covered. The description supplements this with ordering behavior, row fields, ex-date semantics, the possibility of future ex-dates, and the primary-ticker/issuer-level restriction—valuable 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 description is four dense sentences with no filler. The core action and result ordering are front-loaded, followed by only high-value caveats that an agent needs before calling the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even without an output schema, the description tells the agent what each returned row contains, how results are ordered, how filters apply, and a critical ticker restriction. Combined with the schema's parameter documentation, this 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 coverage is 100%, so the baseline is 3. The description adds meaningful parameter semantics by stating that date filters apply to the ex-dividend date and that records are tied to the current primary ticker, clarifying startDate/endDate and ticker beyond their schema 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 states a specific verb and resource: 'Get a company's stored declared cash dividends newest first.' It clearly identifies the row contents, ordering, and the primary-ticker constraint, and no sibling tool covers dividend history, so an agent can distinguish it.
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 invocation context: date filters apply to the ex-dividend date, records are issuer-level, and only the current primary ticker is valid. It does not explicitly name alternatives or say when not to use this tool, but that is a minor gap given no sibling directly overlaps.
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) | |
| 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?
Beyond the readOnlyHint=true annotation, the description discloses significant behavioral nuances: the narrative shift 'is derived from approved bullets and is not separately verifier-approved', comparisons 'use filed GAAP XBRL facts, never estimates', ordering is 'Newest quarter first', and quarters can be absent from the sequence because only approved briefs appear. These caveats prevent the agent from misinterpreting missing quarters or over-trusting the shift metric.
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 (four sentences) but every sentence earns its place: each adds a disambiguating constraint ('not analyst consensus', 'not separately verifier-approved', 'quarters can be missing'). It is front-loaded with the core content definition before the caveats. The density is justified given the tool's complexity, though it could trim some redundancy around ordering.
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 retrieval tool with no output schema, the description lists the return elements (TL;DR, points, quotes, shift, guidance deltas, reported quarter vs guidance) plus all caveats (verification status, missing quarters, XBRL facts). Annotations already cover the read-only safety profile. The only gap is that the exact return structure/field naming isn't specified, but the content inventory 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?
Schema coverage is 100% — every parameter (ticker, limit, fiscalYear, fiscalQuarter) is already well-documented, including the clamp range for limit and the exact-period semantics for the fiscal fields. The description's 'Newest quarter first' and 'Omit both period fields for newest briefs' reinforce schema text but add little new meaning. Baseline 3 is appropriate since the structured schema carries the parameter 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 opens with a specific verb and resource — 'Get the AI Earnings Brief for a company's recent earnings calls' — and enumerates the exact content: verifier-approved TL;DR, bullish/bearish points, verbatim pull-quotes, and a narrative shift. It also carves out the data provenance ('company guidance, not analyst consensus... filed GAAP XBRL facts, never estimates'), which sharply distinguishes it from siblings like GetGuidance, GetEarningsCallTranscript, and GetEarningsCallToneAndThemes 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 provides rich context about what the tool returns and its data constraints ('Only calls with an approved brief appear, so quarters can be missing from the sequence', 'Newest quarter first'). However, it never explicitly names sibling alternatives or states when NOT to use this tool in favor of GetGuidance, GetEarningsCallTranscript, or GetFinancialStatement. Usage context is implied through content specificity, but no explicit routing or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetEarningsCallEventEarnings Call EventARead-onlyInspect
Get the earnings-call event for a company's fiscal quarter — the single record that groups the quarter's call artefacts (audio, transcript, slide deck, and 8-K earnings release) under one event. Returns the event's id (usable with GetInvestorEventTranscript), title, call date, status, which of the four artefacts are available, the transcript and earnings-release document ids when linked, and the release's extracted guidance rows when the 8-K carries approved ones. When a transcript is available, read it with GetEarningsCallTranscript, or get the AI read via GetEarningsBrief / GetEarningsCallToneAndThemes. Use this to ask "what do we have for AAPL FY2025 Q3?" rather than chasing each artefact separately — or omit the fiscal period for the company's latest call.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Company ticker symbol (e.g., AAPL, MSFT) | |
| 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, destructiveHint=false, and openWorldHint=false, so the safety profile is covered; with annotations present the bar is lower. The description adds real behavioral context beyond that: the selection semantics (omit both period fields for the latest call; year alone selects the latest in that year; quarter alone selects the latest matching quarter) and the group-scope behavior that distinguishes this from single-artefact tools. It discloses what the call returns (status, artefact availability, linked document ids, guidance rows) 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?
The description is front-loaded with the core purpose before moving to return content, sibling routing, and a concrete usage example. Every sentence earns its place — the return enumeration is useful given there is no output schema, and the sibling routing is essential. It is on the longer side (roughly 90 words) for a read-only getter, with slight redundancy between the artefact enumeration in sentence one and the return-content detail in sentence two, but it remains well organized and not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the nuanced nullable-period selection rules and the absence of an output schema, the description carries the full burden of explaining return values — and it does: id (usable with GetInvestorEventTranscript), title, call date, status, artefact availability, transcript/earnings-release document ids, and extracted guidance rows. It also covers the period-selection semantics and onward routing. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 even with no parameter details in the description. The schema already documents ticker, and the nullability/defaults and omission rules for fiscalYear and fiscalQuarter. The description echoes the 'omit the fiscal period for the latest call' rule but does not add material syntax or format detail beyond the schema. Value added is marginal but not absent, so a defensible 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 opens with a specific verb+resource+scope: 'Get the earnings-call event for a company's fiscal quarter — the single record that groups the quarter's call artefacts.' It clearly distinguishes itself from siblings by naming GetEarningsCallTranscript, GetEarningsBrief, GetEarningsCallToneAndThemes, and GetInvestorEventTranscript as the tools for the underlying artefacts rather than the grouping event. An agent can tell this apart from the adjacent investors-event and transcript tools without inspecting 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?
Usage direction is explicit and actionable: 'Use this to ask "what do we have for AAPL FY2025 Q3?" rather than chasing each artefact separately — or omit the fiscal period for the company's latest call.' It also routes onward behavior: 'When a transcript is available, read it with GetEarningsCallTranscript, or get the AI read via GetEarningsBrief / GetEarningsCallToneAndThemes.' When-to-use and alternatives are both spelled out, 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.
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) | |
| 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 readOnlyHint=true and destructiveHint=false. The description adds meaningful behavioral context beyond that: verifier-approved calls only, potential missing quarters with gap notes, and AI-scored nature of the data. It does not contradict annotations and enriches understanding of data quality and completeness.
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—with the primary purpose stated upfront, followed by key data quirks and a usage hint. Every sentence adds value and there is 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 tool with four parameters, full schema coverage, annotations covering safety, and a clear description of return content (tone scores, themes, mention counts), nothing essential is missing. The description even explains the gap-note behavior and ordering, making the tool fully navigable for an 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 all four parameters (ticker, limit, fiscalYear, fiscalQuarter) are already documented in the schema with meaningful descriptions. The tool description does not add any additional parameter-level detail beyond what the schema provides, so a 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 clearly states the exact resource (company earnings calls), the specific outputs (net tone score, hedging score, key themes with mention counts and per-theme tone), and the ordering (newest first). It distinguishes itself from similar siblings like GetEarningsBrief and GetEarningsCallTranscript by focusing on AI-scored tone and themes.
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 clear context on when to use the tool ('to gauge how confident or guarded management sounded') and explains data availability quirks (verifier approval, gaps in quarters). However, it does not explicitly name alternative tools or state conditions for selecting this one over others, leaving some routing inference to the agent.
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) | |
| 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?
Beyond the readOnlyHint annotation, the description discloses when speaker identities appear (only trusted resolution) and how unverified voices are labelled (role or neutral number). This adds meaningful behavioral context about output reliability 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?
Two sentences with zero fluff. The core purpose is front-loaded, followed by behavioral nuance and a usage directive. Every word 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 no output schema, the description explains the output format (ordered speaker turns with attribution) and the identity resolution rule. It also provides a prerequisite check. The agent has enough context to decide and 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 fiscal quarter focus but adds no new parameter details; the schema already documents each parameter adequately. No 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?
The description clearly states the verb 'Get', the resource 'speaker-labelled transcript of a company's earnings call', and the scope 'for a fiscal quarter'. It also distinguishes from GetEarningsCallEvent by implying that tool checks existence, making the purpose 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?
The description explicitly directs the agent to 'Use GetEarningsCallEvent first to check a transcript exists', which is a clear alternative tool and an explicit precondition. This is a strong usage guideline that prevents failed calls.
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, tracked U.S. equities only, or unknown when the authoritative reported count is unavailable. 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 declare readOnlyHint and destructiveHint, but the description adds valuable behavioral details: the data source is the latest NPORT-P, results are sorted largest-first, and coverage is conditional ('full, tracked U.S. equities only, or unknown') depending on availability of the authoritative reported count. This goes 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 tightly written sentences, with the core purpose and data source in the first sentence. Every sentence carries useful information and there is no filler or repetition 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?
For a read-only listing tool with fully documented parameters and safety annotations, the description is complete. It explains the source, sorting, coverage behavior, and pagination approach, so an agent has enough context 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 parameters are already fully documented. The description adds a small behavioral note about offset for broad portfolios and ordering context, but does not substantially expand parameter semantics 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 states a specific verb ('Get'), a resource ('an ETF's stored portfolio holdings'), a source ('latest SEC Form NPORT-P report'), and the ordering ('largest position first'). This clearly distinguishes it from sibling tools like GetFundsHoldingStock or 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?
The description gives clear context: it covers ETF portfolio holdings from the latest NPORT-P, with coverage caveats, and explicitly tells the user to use 'offset' for broad portfolios. It does not explicitly name alternative tools or exclusion cases, but the use case is clear enough for agent selection.
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, 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. Dividend history is currently primary-listing-only; 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?
Beyond the readOnlyHint=true annotation, the description discloses meaningful behavioral traits: data is 'settled' (not live/intraday), SEC assets come from filings, dividend history is 'currently primary-listing-only,' and issuer-trained short-interest forecasts/squeeze scores are excluded from ETF analytics. These caveats tell the agent what the tool will and will not return, all consistent with the readOnly and closed-world 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 core function is front-loaded in a concise first sentence, followed by logically ordered sections: same-ticker routing, holdings differentiation, filing caveat, data limitations. However, the routing catalog is long and reads like a data directory, and the final clause about 'issuer-trained short-interest forecasts and squeeze scores' is cryptic — informative but not zero-waste.
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 one-parameter read-only tool with no output schema, the description covers what is returned (settled performance, SEC assets, allocation, top holdings), what alternative tools handle other data categories, and known limitations. Minor gaps remain: no return format or units for SEC assets/allocation, and no indication of performance time periods.
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 documents the single parameter well: 'Exact exchange-traded ticker (for example SPY, VOO, or IVV).' The description only reinforces exact ticker matching ('For this same exact ETF ticker') without adding new parameter semantics, 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 opening sentence names a specific verb ('Get'), a specific resource ('ETF profile'), and the exact deliverables: 'settled performance, SEC assets, allocation and top holdings.' It immediately differentiates from the most confusable sibling, GetEtfHoldings ('instead returns investments inside the ETF'), so an agent can distinguish them 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?
The description goes beyond vague context by enumerating explicit routing rules: prices → GetStockPrices/GetLatestClosingPrices, intraday quotes → GetLiveQuote, options → GetOptionExpirations/GetOptionChain/GetOptionContract, short interest → GetShortInterest, and so on. It also states when-not-to-use: ListFilings/SearchDocuments 'may include sibling funds, not just this ETF series,' which is exactly the guidance an agent needs to avoid scope errors.
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). Returns a time series, one row per fiscal period, using the latest restated value unless asOriginallyReported is set. 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) | |
| 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 mark the tool as read-only and non-destructive. The description adds valuable behavioral context: returns a time series with latest restated values unless asOriginallyReported is set, each row includes actual period start/end, fiscal periods follow the company's own calendar, and a warning is raised when the selected alias ends materially before other facts (indicating a possible XBRL tag change). 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 a single dense paragraph that efficiently conveys purpose, usage, and behavioral details. It front-loads the core action and then adds specifics. While it could be slightly more structured (e.g., bullet points for the warning or parameter clarifications), it is not overly long and every sentence adds value.
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 8 parameters, no output schema, and moderate complexity, the description is highly complete. It explains the return type (time series, one row per fiscal period with period start/end), the default data treatment (latest restated), the warning mechanism, and scope exclusions. No output schema is needed because the description sufficiently describes the output structure.
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 adds extra meaning beyond the schema: it explains the default behavior of asOriginallyReported, mentions that calling concept with an unknown value lists supported aliases, and clarifies the fiscalPeriod note about discrete Q4 rows. This pushes the score above 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?
The description clearly identifies the tool as retrieving a single financial concept over time for a company from SEC XBRL data, naming example concepts. It explicitly distinguishes from sibling tools (GetFinancialStatement for full statements, CompareFinancialFact for peer comparison) and mentions that dimensioned disclosures are out of 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 provides explicit guidance on when to use this tool versus alternatives: 'For a full statement use GetFinancialStatement; to compare peers use CompareFinancialFact.' It also notes that dimensioned disclosures (e.g., customer concentration) are outside this tool, and instructs calling with an unknown concept to list supported aliases.
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). 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 USD values, 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 latest reported year. | |
| period | No | Fiscal period: 'FY' (annual) or 'Q1'..'Q4'. Defaults to the latest reported period. 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) | |
| 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?
The annotations already mark the tool as read-only and non-destructive, and the description adds meaningful behavioral detail beyond that: it returns latest-restated values, targets one exact period end, derives discrete quarterly flow rows from cumulative YTD values when necessary, and marks those rows as Derived. This gives the agent a clear picture of what the tool actually does at runtime.
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 longer than average but every sentence earns its place: scope, output behavior, derived-quarter caveat, and sibling routing are all covered without redundancy. It is front-loaded with the core purpose and then layers in necessary constraint 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?
With no output schema, the description carries the responsibility for explaining return semantics, and it does so: standard line items, latest-restated value, one exact period end, discrete quarterly rows, and the Derived flag are all disclosed. It also covers source provenance, exclusions, and alternatives, making it complete for an agent to select and invoke 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 the description is not burdened with compensating for undocumented parameters. It restates the statement types and period concept already covered by the schema, and the Q4 caveat is already present in the period parameter description. It adds little parameter-level meaning beyond the structured 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 specific action and resource: get a company's income statement, balance sheet, or cash-flow statement for a fiscal year and period. It also differentiates itself from siblings by explicitly excluding dimensional facts and naming GetRevenueBreakdown, GetFinancialFact, and CompareFinancialFact as the alternatives for those cases.
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 guidance, including the note that most filers do not report discrete Q4 income/cash-flow facts and that 'FY' should be used for annual figures. It also tells the agent exactly when to prefer sibling tools such as GetRevenueBreakdown and GetFinancialFact.
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 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) | |
| 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 mark this as read-only and non-destructive, and the description adds substantial behavioral detail: exact CUSIP matching, exclusion of funds that stopped filing more than 18 months ago, the guarantee that exited positions never show as current, and the caveat that report dates differ and cross-row totals mix as-of dates. 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 dense but not bloated; each sentence carries distinct information: purpose/source, matching logic and exclusions, returned fields and ordering, and the date-mixing caveat. It is front-loaded with the primary use case and contains 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 compensates by enumerating what is returned: registrant, series, reporting period, position size, dollar value, share of net assets, and payoff profile. It also covers edge behavior around report dates and stale filings, making the tool's behavior predictable enough for an agent to invoke and interpret 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. The description adds real value by explaining how 'ticker' works via authoritative CUSIP matching, that results are ordered 'largest positions first' (relevant to maxResults), and that 'registrantOrSeries' lets you reach positions beyond the largest 500. This enriches the parameters without duplicating 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 precise verb and resource: 'Get the registered investment companies (mutual funds and ETFs) holding an exact stock or ETF listing, from SEC Form NPORT-P portfolio reports.' It clearly distinguishes this from sibling tools like GetInstitutionPortfolio by specifying the data source and entity type. The exactness of security matching is also stated, leaving no ambiguity about 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 clear context about when this tool applies: when you need mutual fund or ETF holdings from NPORT-P filings, with recent-report and 18-month staleness constraints. However, it does not explicitly name alternatives or state when not to use it, so it falls short of a 5 but provides strong situational context.
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). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint, openWorldHint, and destructiveHint, but the description adds rich behavioral detail: how closed periods are marked, how revenue/EPS guidance includes actuals once comparable XBRL facts exist, the non-GAAP comparison rule, and coverage notes distinguishing unprocessed documents. This transparency goes 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 compact yet information-dense, front-loading the primary purpose and then efficiently covering ordering, period marking, comparison rules, and coverage notes. No redundant sentences; each 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?
Given the single parameter, no output schema, and read-only annotations, the description provides a thorough explanation of the returned content: source types, ordering, period status, comparison behavior, and coverage classification. This suffices for an agent to invoke correctly and 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?
The schema fully describes the only parameter 'ticker' with an example and type, achieving 100% schema description coverage. The description does not add extra parameter-level detail, which is unnecessary given the baseline of 3 for high 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 retrieves company guidance from Item 2.02 earnings releases and transcripts, newest first, with specific attributes like range, unit, GAAP basis, fiscal period, and provenance. This specific verb+resource combination distinguishes it from siblings such as GetEarningsBrief or GetFinancialFact.
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 tool is for guidance data from written earnings releases and call transcripts, and notes nuances like non-GAAP never being compared to GAAP actuals. However, it does not explicitly name alternative tools or conditions for when not to use it, relying on the detailed purpose to guide selection.
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.
| 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 mark the operation as read-only and non-destructive, and the description adds substantial behavioral transparency beyond that: it explains window-based dating, collapse of duplicate records across funds, and the reporting lag. These are exactly the non-obvious traits 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?
The first sentence is a clear front-loaded purpose statement, and every subsequent sentence adds necessary nuance about derivation, timing, deduplication, and reporting behavior. It is longer than the minimal case, but the complexity of the tool justifies each sentence 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?
For a two-parameter read-only list tool with no nested objects and no output schema, the description is unusually complete. It covers what the tool returns conceptually, the meaning of the returned events, the data source derivation, and key caveats such as window granularity and deduplication.
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 "index" and "maxResults" are already documented with examples and defaults. The description adds context about index change events but does not need to repeat parameter mechanics; the baseline of 3 is appropriate because the schema carries the parameter 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 opens with a specific verb and resource: "Get the companies that have joined or left a major US stock index, newest first." It clearly identifies this as a change-history tool for index constituents and distinguishes it from related index tools by emphasizing observed membership rather than an announcement feed.
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 the data is available: changes appear only after a tracking fund has reported them, and overlapping fund reports are collapsed. It also explicitly frames the tool as "observed membership, not an announcement feed," which is a useful exclusion, though it does not name alternative tools such as GetIndexComposition or GetIndexForecast.
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 and ownership bucket (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. Indirect can understate an insider holding through several vehicles, because a filing reports one balance per vehicle and only the last is kept. 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 — pass the previous call's shown count to page past the maxResults cap (default: 0) | |
| 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?
The description adds substantial behavioral detail beyond the annotations: shares come only from the most recent Form 3/4/5 filing, options and derivatives are excluded, figures are restated onto today's split basis, Indirect can understate because only the last vehicle balance is kept, and former insiders may show stale dates or zero shares. These nuances materially affect how an agent interprets 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 dense but efficient: it front-loads the core purpose, then packs several important caveats into compact sentences, ending with clear usage guidance. Every sentence contributes meaningful information about behavior or usage, with no filler or tautology.
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 responsibility of explaining what the result contains, and it does so thoroughly: source filings, ownership buckets, split adjustment, exclusions, indirect holding limitations, max results, and ranking order. An agent has enough context to call the tool and correctly 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?
Schema description coverage is 100%, so the schema already documents all three parameters. The description adds useful contextual semantics like the maxResults default and implicit ranking by total shares, but it does not significantly extend the meaning of individual parameters 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 states the exact verb and resource ('Get a summary of insider ownership for a stock'), specifies the ranking basis ('ranked by total shares held'), and clearly differentiates itself from sibling tools like GetInsiderTransactions and GetInsiderSentimentScores. It is unambiguous 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 explicitly states when to use this tool ('Use this to understand the insider ownership structure of a company') and names the alternative for the underlying trades ('use GetInsiderTransactions'). This gives an agent clear routing guidance without needing to infer usage from the schema.
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; 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?
Beyond the read-only/destructive annotations, the description discloses substantive behavior: data source (qualifying open-market Forms 4/5), treatment of Form 3, exclusion of Rule 10b5-1 trades, and the non-obvious invariant that filters never renumber the universe rank. These are exactly the behavioral traits 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?
Three dense sentences front-load the core purpose and then add methodology, exclusions, modes, and an alternative tool without redundancy. Every clause adds information, and no space is wasted restating the title or annotation 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 tool with no output schema and no required parameters, the description is suitably complete: it defines the score, source data, exclusions, filter behavior, rank invariant, ticker mode, and alternative for raw filings. An agent can select and invoke it correctly without needing additional context.
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 documents all eight parameters completely, so the baseline is 3. The description adds value by explaining non-obvious parameter interactions—ticker mode returns factors and rank, bottom ranking is for distribution, and filters do not renumber the universe rank—which go beyond the individual property 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 action and object: 'Rank stocks by a peer-relative 0-100 insider-accumulation score over 90 days' and lists the inputs to the score (net buyers, net shares bought %, net buy value). This clearly distinguishes it from the many insider-related siblings, and the closing pointer to GetInsiderTransactions reinforces what this tool is not.
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 identifies concrete usage modes: default leaderboard, bottom ranking, ticker lookup, and filtering by cluster buys or liquidity. It also names the explicit alternative for raw filings ('Use GetInsiderTransactions for the filings'). However, it does not discuss when to prefer GetInsiderOwnership or other insider siblings, so the guidance is clear but not fully exclusive.
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 how total reported quantity, published position value, and filer count changed. 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?
Goes well beyond the readOnlyHint annotation by explaining that the legacy Total Shares field sums mixed row types and is not a pure share-ownership measure, plus fallback pricing, possible zeros, and provisional combined-view behavior during the filing window. These caveats materially affect how an agent should interpret returned values.
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, all dense with necessary caveats. The main purpose is front-loaded, and each subsequent sentence adds interpretive value without 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?
Even without an output schema, the description names the key change dimensions: total reported quantity, published position value, and filer count. It also covers valuation behavior, fallback conditions, zero values, and filing-window nuances, making the tool safely usable by an 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 input schema already provides 100% parameter coverage for ticker and maxPeriods, including defaults and clamping. The description reinforces the multi-quarter theme but does not add significant new parameter-level 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: retrieving the historical trend of aggregate reported 13F exposure for an exact stock or ETF across multiple quarters. The qualifiers 'aggregate' and 'exact stock or ETF listing' distinguish it from institution-portfolio or market-wide 13F sibling 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?
Clear context is provided: use this when you need aggregate 13F history for one listed ticker across multiple quarters. It does not explicitly name alternatives or exclusions, but the scope wording is precise enough to guide selection among similar 13F-related tools.
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. Usable captured split ratios restate closes onto one basis; an unusable ratio can exclude that listing's earlier closes.
| 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?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds meaningful behavioral details beyond these: dividends are excluded from returns, split ratios are handled with a fallback to exclude earlier closes when unusable, and the valuation uses raw closing prices. These are non-obvious behaviors that materially affect results and are not inferable from 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 a single verbose paragraph, but every sentence earns its place—purpose, mode selection, reconstruction/rebalancing details, return metrics, and split handling are all packed in. It is front-loaded with the core purpose. While it could be broken into bullet points for readability, it is not bloated and remains efficient for its 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?
Given the tool's complexity (backtest logic, snapshot reconstruction, split handling) and the absence of an output schema, the description does a thorough job. It specifies the exact return metrics (price return, CAGR, max drawdown, alpha), explains the date range logic, institution resolution, and benchmark default. An agent has enough information to invoke the tool correctly without ambiguity about inputs or expected outputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter has a description. The tool description adds value by clarifying interactions: fromDate overrides windowYears, windowYears is clamped to 1-20, and institution accepts names/CIKs with resolution behavior (unique partials, aliases, ambiguous partials return candidates). This enriches the schema descriptions without being redundant.
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 the specific verb 'Backtest' and a precise object: how cloning an institutional filer's reported 13F portfolio would perform against a market benchmark. It clearly distinguishes this from the many other institution-related tools (e.g., GetInstitutionPortfolio, GetInstitutionQuarterlyActivity) by focusing on backtest performance, not holdings or activity. The first sentence alone fully defines the tool's 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?
The description explicitly explains the two modes of operation (trailing window via windowYears, or explicit fromDate/toDate range) and notes that fromDate overrides windowYears when both are supplied. It also mentions the rebalancing on the SEC filing lag, giving context for how results are produced. However, it does not explicitly contrast with alternative tools (e.g., 'use this instead of X when...'), though given the unique purpose, this is a minor omission.
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 — pass the previous call's last row number to page past the maxResults cap (default: 0) | |
| 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?
Even with readOnlyHint=true, the description adds valuable behavioral disclosures: values may fall back to filer values, can be zero when unavailable, coverage is limited to tracked U.S.-listed common stocks and put/call positions, and position type must be inspected before treating options as ownership. These details materially inform 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?
Every sentence earns its place: core purpose, output contents, value caveat, coverage limitation, and disambiguation guidance. It is dense but not bloated, and the key scoping information appears early.
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 covers what is returned, how values behave, coverage restrictions, and prerequisite disambiguation. Combined with fully documented parameters, nothing essential is missing for an agent 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?
Schema description coverage is 100%, so the baseline is 3. The description reinforces maxResults defaults and mentions pagination indirectly via 'largest positions', but adds no new detail beyond what the schema already documents for offset, maxResults, reportDate, or institutionName.
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 ('View'), resource ('tracked stock positions of a specific institutional investor from an SEC 13F-HR filing'), and output contents. It distinguishes itself from siblings like GetInstitutionSummary, GetInstitutionConsensusHoldings, and GetInstitutionQuarterlyActivity by focusing specifically on portfolio positions from a 13F filing.
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 usage context: it is for viewing 13F holdings, with an explicit prerequisite to use SearchInstitutions first when the name is ambiguous. It does not explicitly enumerate exclusions versus siblings, but the purpose is specific enough that an agent can determine when it applies.
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. 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?
Beyond the readOnlyHint annotation, the description adds valuable behavioral details: it returns one markdown section per bucket, sorts by absolute Δ market-value descending, and clarifies that Δ Value includes price movement, not just trading. It also explains the diffing logic against the prior quarter, giving the agent a clear picture of the output and 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 two sentences, front-loaded with the verb and resource, and every clause contributes value. It efficiently conveys the core functionality, return format, sorting, and a usage example 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?
Given the tool's moderate complexity, the 100% schema coverage, and the read-only annotations, the description is fully complete. It explains the return format (markdown sections), sorting rationale, the meaning of Δ Value, and the applicable question it answers. No output schema exists, but the description sufficiently covers expected 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 already covers all four parameters with detailed descriptions (bucket values, default maxResults, date snapping, and institution name resolution). The description does not add new parameter-level semantics beyond what is already present in 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 clearly specifies the verb ('Get') and resource ('institution's quarterly position-change activity'), and enumerates the exact buckets (Initiated / Increased / Reduced / Exited) and the temporal comparison (vs. immediately prior quarter). This distinctly separates it from sibling tools like GetInstitutionPortfolio and GetFundHoldings, which focus on current holdings rather than changes.
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 concrete use case: 'Use this to answer "what did this fund do this quarter?"' and explains how to filter with the `bucket` parameter. However, it does not explicitly name alternatives or state when NOT to use this tool, such as when a user needs a current holdings snapshot rather than change activity.
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.
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 in this database. Values normally use report-date closing prices, may fall back to filer values, and can include zero for unavailable valuations. 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?
The description adds meaningful behavior beyond the readOnly/destructive annotations: it clarifies the metric is not total firm AUM, states possible fallback to filer values, notes zero can represent unavailable valuations, and explains the ambiguous-name behavior. This gives agents important expectations about output values and name resolution.
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, front-loading the core purpose and output fields, then adding valuation caveats and name-resolution guidance. Every sentence contributes useful information, though the long first sentence is somewhat heavy for a quick 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?
Without an output schema, the description compensates by enumerating the specific returned metrics and caveats about price sources and zero values. It also covers the key caller concern of name ambiguity. Minor gaps such as error behavior or pagination are not critical for a summary-header 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 parameters are already fully documented. The description adds some context around name matching ('ambiguous partials return candidates') and implies the output uses report-date prices, but it does not materially extend the schema's parameter 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?
The description names a specific verb ('Get') and resource ('portfolio summary header for an institutional 13F filer'), then enumerates the exact contents: tracked 13F value, position count, concentration, turnover, and report dates. This clearly distinguishes it from sibling tools like GetInstitutionPortfolio 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?
It gives a concrete usage directive: resolve exact CIKs with SearchInstitutions, and warns that ambiguous partial names return candidates rather than auto-selecting. It does not explicitly contrast with sibling tools or state when not to use it, but the focused resource definition makes the intended use clear.
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 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). 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, destructiveHint=false, and openWorldHint=false, so the safety profile is clear. The description adds behavioral context by enumerating the specific data fields returned (legal/business names, SEC file number, etc.), which gives the agent a better sense of what the response contains. It does not discuss error handling or rate limits, but this is a simple read operation.
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: the first packs the scope and all key fields in a list, the second gives a pointer to the search tool. No redundant words, no repetition of schema content, and the most important detail (Form ADV profile by CRD number) 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 single-parameter read-only tool with no output schema, the description is highly complete. It specifies the input (CRD number), the exact domain (Form ADV), the list of fields returned, and how to obtain the necessary input via SearchInvestmentAdvisers. The only minor omission is error handling, but this is not essential for a simple getter and the annotations cover safety concerns.
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 the parameter with type and description (100% coverage), but the tool description adds semantic detail by specifying it is for 'SEC-registered' advisers and that it is the 'Organization' CRD number, distinguishing from other possible identifiers. It also explains how to find the CRD value via the sibling tool, enriching the 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 uses a specific verb 'Get' with a precise resource, 'full Form ADV profile', and identifiers it by 'Organization CRD number'. It clearly distinguishes from the sibling SearchInvestmentAdvisers by explicitly noting that CRD numbers can be found with that 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 explicit guidance on when to use this versus the alternative: 'Find CRD numbers with SearchInvestmentAdvisers' implies you need a CRD number to use this tool and should use the search tool if you lack one. No exclusions are stated, but the prerequisite and an alternative are clearly named.
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 PDF API path or ordered slide-image API paths. 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?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the read-only nature is given. The description adds valuable behavioral detail: it returns metadata and access paths, not the binary contents, and explicitly lists the response fields including the distinction between PDF and image-slideshow paths. This goes beyond annotations by explaining what the response contains and what it does not.
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 that front-loads the purpose and then details the return fields. It avoids redundancy and each clause adds information, but it is slightly longer than necessary and uses a semicolon-heavy structure. Still, it is efficient and easy to parse.
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 by listing all returned metadata fields and the two possible path types. It also clarifies that binary content is not embedded, which prevents an agent from expecting it. The prerequisite for the id is explicitly stated. This is complete for an agent to call 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 single parameter eventId is fully described in the schema with the same source guidance ('from ListInvestorEvents or GetEarningsCallEvent'). Since schema description coverage is 100%, the baseline is 3; the description does not add additional semantic meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it 'Get[s] metadata and access links for a captured investor-event slide deck by event id,' specifying the resource and action. It distinguishes itself from sibling tools like GetInvestorEventTranscript by detailing the exact fields returned (deck metadata, PDF vs. image-slideshow kind, page count, etc.) and by noting that binary content is not embedded, making its purpose 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?
The description provides clear context on how to obtain the required event id ('Get the event id from ListInvestorEvents or GetEarningsCallEvent'), which serves as a prerequisite. It implies this tool is the one for slide-deck metadata, distinct from transcript tools, though it does not explicitly list alternatives or exclusions. This is clear contextual guidance without explicit 'when not to use' phrasing.
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) | |
| 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 the safety profile is covered. The description adds genuinely valuable behavioral context beyond annotations: the partial-coverage caveat — 'an empty answer may be a coverage gap rather than corporate silence; the response says which case applies' — plus 'scraped from the company's IR website' hinting at an external dependency. This materially improves agent interpretation of empty 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 purpose and scope, then return format, then usage context, then the coverage caveat. Every sentence earns its place, though it is slightly verbose — the coverage disclosure could be tightened. Overall efficient and well-ordered.
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 fills the gap by specifying returned fields (headline, publish date, summary, link) and ordering (reverse-chronological). It also covers the empty-answer ambiguity. For a 4-parameter read tool with one required param, 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 description coverage is 100%, so all four parameters (ticker, since, offset, maxResults) are already documented in the schema, which sets the baseline at 3. The description focuses on return format rather than parameter syntax and does not add meaning beyond the schema, which is acceptable given 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 states a specific verb ('Get'), resource ('investor-relations press releases for a stock, scraped from the company's IR website'), and explicitly differentiates from third-party news. This distinguishes it from siblings like GetEarningsBrief and GetEarningsCallTranscript by content type, so an agent can select it confidently 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?
'Use this to see a company's latest official announcements straight from its IR page, distinct from third-party news' gives clear context for when the tool is appropriate, distinguishing official IR releases from third-party coverage. It stops short of naming explicit sibling alternatives or stating when not to use it, but the intended use case is unambiguous.
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 — pass the previous call's last row number to page past the maxResults cap (default: 0) | |
| 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 indicate a read-only, non-destructive operation, and the description adds valuable behavioral detail beyond that: the data comes from FINRA daily short sale volume files, results are sorted by short volume descending, and Short % is defined as the share of FINRA-facility (off-exchange/TRF) volume sold short with a normal market-making baseline of 40-50%. It also explicitly corrects a common misunderstanding by stating this is NOT short interest.
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 carry substantial information without redundancy. The primary purpose is front-loaded, followed by the necessary short-interest distinction, sibling routing, and a parameter 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?
For a read-only list tool with six fully documented optional parameters, the description is complete: it covers data source, scope, default behavior, sorting, metric interpretation, alternatives, and a caveat about ranking by short intensity. No output schema exists, but the task is straightforward and the description provides enough context 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 coverage is 100%, so the schema already documents parameters. The description adds meaning beyond the schema by explaining when to use sortBy=shortPercent, why a minTotalVolume floor is needed with it, and warning that illiquid names dominate otherwise. This is actionable parameter guidance rather than repetition.
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: retrieving the exact listed securities with the largest daily short sale volume for a single trading day. It further distinguishes itself from siblings by noting it covers ETFs and defaults to the latest day, and by explicitly listing sibling tools for short interest, squeeze scores, and single-security short volume.
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 versus alternatives: use GetShortInterest/GetShortInterestSnapshot for positions, GetShortSqueezeScores for squeeze candidates, and GetShortVolume for one security's daily history. It also instructs when to use sortBy=shortPercent with a minTotalVolume floor, making the call path clear.
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 in USD, 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. 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses three non-obvious behaviors: rows can carry different dates while a session settles and the Date column should be used, change is omitted when the immediately prior trading session is absent, and split-limited or partial 52-week ranges are marked. These edge cases materially affect interpretation and are invisible in the schema. The description is consistent with readOnlyHint=true, so no contradiction 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?
Five sentences, each earning its place: the core return contract is front-loaded in sentence one, followed by the date-alignment caveat, the conditional omission rule, the quality-marker note, and the semantic scope disclaimer. There is no redundant or filler 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?
With no output schema present, the description serves as the response contract: it enumerates the returned fields (close, change, volume, trailing 52-week range) and covers the edge cases that affect interpretation. For a single-parameter, read-only data-fetch tool, nothing essential is missing for correct invocation or 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 description coverage is 100% — the tickers parameter is fully documented as an array of strings with a max of 25 and accepted class-share formats (BRK-B or BRK.B). The description adds no parameter-level detail beyond what the schema already provides, 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?
The first sentence names a specific verb and resource: 'Get each ticker's newest traded, settled daily close in USD, with one-session change, volume, and trailing 52-week closing range.' It enumerates the exact fields returned and closes with 'This is settled history, not an intraday quote,' which differentiates it from siblings like GetLiveQuote and 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 closing statement 'This is settled history, not an intraday quote' gives agents a clear boundary for when this tool is appropriate versus when it is not. However, it stops short of naming the explicit alternative (GetLiveQuote) for live intraday needs, so the routing is clear 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.
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). Δ 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 mark this as read-only, and the description adds substantial behavioral detail: comparisons are vs the prior quarter, bucket definitions include concrete ranking logic, Δ Value has documented fallback/zero behavior and price-movement caveats, and comparisons across a corpus boundary are refused. This greatly exceeds annotation basics.
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 earns its place: purpose, bucket definitions, data caveats, boundary behavior, and a concrete use case. The main action is front-loaded, and the advanced details follow logically without 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?
For a market-wide aggregation tool with no output schema, this description covers selection criteria, ranking logic, data nuances, and boundary behavior. The leaderboard semantics plus full schema coverage give an agent enough to invoke the tool confidently and 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?
The schema covers parameter names and defaults, but the description adds crucial meaning beyond it: exact ranked semantics for each bucket, how counts are used for new/exited positions, and how to interpret Δ Value vs Δ Shares. This is significantly richer than the schema descriptions alone.
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 and resource: retrieving market-wide 13F leaderboards for a given quarter, covering buys, sells, new positions, and exits. Phrases like 'market-wide' and 'across all 13F filers' distinguish this from institution-specific or other market-activity 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?
It gives an explicit use case: answer 'what's the consensus 13F move this quarter?' and explains how the `bucket` argument changes the query. It does not explicitly name sibling alternatives or state when not to use it, but the market-wide vs institution-level distinction makes routing reasonably clear.
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, and the filed Asset identifying the instrument (such as stock, option, or bond). 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 — pass the previous call's shown count to page past the maxResults cap (default: 0) | |
| 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 and destructiveHint=false, covering the safety profile. The description adds meaningful behavioral detail beyond that: results are newest-first, the default period is one year, and it enumerates the returned fields (tickers, transaction/filing dates, amount ranges, asset type). This goes beyond mere scope and helps an agent set expectations for the response.
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 crisp sentences: the first states purpose, ordering, and default window; the second covers returned fields and routes to sibling tools. Every word earns its place, and the most decision-relevant 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 read-only tool with 100% schema coverage and no output schema, the description adequately conveys purpose, defaults, output content, and alternative tools. Minor caveats like date inclusivity or pagination edge cases are already handled in the 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?
Input schema covers 100% of parameters with detailed descriptions including defaults, date format, synonyms (Buy/Sell), and pagination semantics. The description reinforces memberName usage and summarizes return values but does not materially add to the parameter-level semantics already present in 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?
The description opens with a specific verb+resource: 'Get a congress member's disclosed securities transactions,' and adds ordering ('newest first') and default window ('last year by default'). It explicitly distinguishes itself from the closest siblings by pointing to SearchCongressMembers for name lookup and GetCongressionalTrades for all members in one ticker, so an agent can tell them apart without inspecting 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 second sentence gives explicit routing guidance: 'Use SearchCongressMembers to find member names, and GetCongressionalTrades for all members' transactions in one ticker.' This clearly states when to choose alternatives versus this tool, leaving no ambiguity about the two closest sibling tools.
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, or total published position value. Values normally use report-date closing prices, may fall back to filer values, and can include zero for unavailable valuations. 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), or 'value' (current total published position value 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 mark the tool as read-only and non-destructive, and the description adds substantial behavioral detail beyond that: report-date price values with fallback to filer values, zero for unavailable valuations, first complete quarter limitation, and the open filing window behavior with prior-quarter positions. This fully discloses expectations to the agent.
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 information needed for correct invocation or expectation-setting. It is front-loaded with the core purpose, then moves through ranking modes, valuation behavior, output fields, limitations, and the sibling-tool alternative 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?
Given there is no output schema, the description compensates by naming the returned metrics (Δ filers, total value, Δ value, share of 13F universe) and by covering edge cases like sold-out names, unavailable quarters, and mid-filing-window behavior. For a three-optional-parameter read-only tool, this is complete enough for an agent to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description reinforces the sort options and output semantics, but it does not meaningfully add parameter-level detail beyond what the input schema already documents, such as defaults, clamping, and date snapping.
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 cross-sectional ranking of stocks by institutional 13F breadth for a quarter.' It states the available sort dimensions and explicitly contrasts with GetMarketWide13FActivity for sold-out names, so it is easy to distinguish from 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 explicit usage context: quarter-based ranking, sort modes, availability constraints, and a direct alternative: 'Only currently-held stocks rank; sold-out names use GetMarketWide13FActivity.' It also tells the user that earlier quarters and boundary-quarter deltas are unavailable, preventing invalid usage.
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 personal portfolios, 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. Quantities are signed; costs are the owner's per-share inputs and are never split-restated. 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. Omit to list the account's portfolios. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool read-only and non-destructive, but the description adds substantial behavioral detail beyond that: signed quantities, owner-cost basis never split-restated, session-marked lots, unknown (never zero) values for unpriceable/expired positions, and the role of returned lot ids in update/close/remove tools. This gives the agent a clear model of how results behave.
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 in the description earns its place: core purpose, parameter usage, data semantics, edge cases, and sibling differentiation. The text is dense but not verbose, and the most critical usage guidance appears near the front.
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 Key fields are named (lots, cost basis, profits, watched instruments), and special value semantics are clarified. For a single-optional-parameter read-only tool, this is complete enough for an agent to invoke 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?
Although the schema already documents the portfolio parameter as optional and says to omit it to list portfolios, the description adds the crucial exact-one-returned-in-full behavior and explicitly states that passing a name selects a portfolio. This goes beyond the schema's basic description and gives the agent actionable semantics for the only 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 begins with a specific verb and resource: 'Get the caller's saved personal portfolios,' and enumerates the included data (lots, cost basis, realized/unrealized profit, watched instruments). It also explicitly differentiates itself from GetInstitutionPortfolio by directing 13F holdings queries to that sibling, 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 gives precise call guidance: omit portfolio to list portfolios, with the edge case that a single existing portfolio is returned in full, and pass the name to select one. It also names the alternative tool (GetInstitutionPortfolio) and clarifies that watched instruments are not positions, which prevents misuse.
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. | |
| 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?
Beyond the annotations (readOnlyHint, destructiveHint), the description explains the cumulative calculation, the fact that OBV is anchored at 0 on the first bar, that absolute values shift with startDate, and warns that values are not comparable across calls. This is significant context about behavior and 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 three sentences, each earning its place: definition, usage, and a critical interpretation caveat. It is front-loaded with the purpose and avoids 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 simple technical indicator with no output schema, the description covers the core concept, calculation, usage, and a key pitfall. Combined with the rich input schema and safety annotations, it provides sufficient context for an agent to select 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?
Schema coverage is 100%, so baseline is 3. The description adds valuable nuance about startDate affecting the anchoring and comparability of values, which is not in the schema. This extra insight elevates the score above 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?
The description clearly states it is 'On-Balance Volume (OBV) for a stock' and explains the calculation logic. This specific verb-resource pairing distinguishes it from sibling indicator 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?
It mentions 'Useful for confirming or diverging from price trends with volume flow,' providing an implied use case. However, it does not explicitly state when to choose OBV over other indicators or when not to use it, so there is no direct alternative guidance.
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.
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) | |
| 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 readOnlyHint=true and destructiveHint=false, but the description adds substantial behavioral context: data comes from dimensional XBRL facts, source values are as-reported and never estimated, segment operating margin is derived, and rows can overlap (warning never to sum rows). This goes beyond annotations and helps the agent predict output quirks.
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 longer than average but every sentence carries information: purpose, data source, period/restatement rules, derivation method, overlap warning, and alternative tools. It is front-loaded with the main purpose and then details. Some jargon ('folded raw member QName') is dense but purposeful.
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 explain return structure, and it does: one table per axis, total row included, rows can overlap, and derived margin definition. It also covers data provenance, period constraints, and explicit alternatives. This is complete for an agent to invoke 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%; the input schema already documents ticker and maxYears with descriptions and defaults. The description adds context like annual fiscal years only, which affects maxYears interpretation, but it doesn't add per-parameter syntax or constraints 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 tool gets a company's revenue disaggregated by segment, geography, and product/service, plus operating income when tagged. This specific verb+resource+dimensions structure distinguishes it from sibling tools like GetFinancialStatement and GetFinancialFact, which are explicitly referenced for consolidated figures.
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 concrete usage rules: annual fiscal years only, latest restated values, one table per axis, and warnings about overlapping rows. It explicitly directs users to GetFinancialStatement or GetFinancialFact for consolidated revenue, giving clear when-to-use and when-not-to-use guidance.
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 — pass the previous call's last row number to page past the maxResults cap (default: 0) | |
| 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 declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds meaningful behavioral context: FINRA caps days to cover at 999.99, capped rows act as a sentinel, are ranked after real readings, and are almost always illiquid names. It also discloses the default sorting behavior and the existence of the cap. 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?
Three dense sentences, front-loaded with the core purpose, followed by the critical edge-case explanation, then the sibling routing. Every sentence earns its place: no filler, no repetition of schema content. The structure helps an agent quickly grasp scope, quirks, and alternatives.
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 5 optional parameters, no enums, no output schema, and a rich sibling context, this description is complete enough for correct selection and invocation. It covers the data source, granularity, default sort, sentinel cap, filtering guidance, and alternatives. The absence of an output schema is mitigated by the description's clarity on what the snapshot represents and the sort keys exposed in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds interpretive value beyond the schema by explaining why minAvgDailyVolume matters (sentinel cap caused by tiny volume denominator) and how capped rows behave under sorting. It reinforces the offset paging concept implicitly via 'ranked results' but relies on the schema for exact parameter semantics. The added context 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 a specific verb and resource: 'Market-wide snapshot of the latest FINRA bi-monthly short interest settlement'. It clearly distinguishes itself from sibling tools by naming GetShortSqueezeScores, GetShortInterest, GetShortVolume, and GetLargestShortVolume as alternatives for different use cases. The scope ('one row per exact listed security') and default sort order are 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?
The description provides explicit routing guidance: '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.' It also gives a concrete usage recommendation ('pass minAvgDailyVolume (e.g. 100000) to drop illiquid names entirely'). This is clear when-to-use and when-not-to-use guidance.
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 — pass the previous call's last rank to page past the maxResults cap (default: 0; ignored for a single-ticker lookup) | |
| 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 mark it readOnly and non-destructive, and the description adds substantial behavioral context beyond that: the universe is limited to operating companies, liquidity floors 'filter the board without changing scores,' and passing a ticker switches to a single-stock mode returning 'factor breakdown and universe rank.' The ETP exclusion comes with a rationale (issuer shares outstanding and earnings are not product-level facts). No contradiction with the readOnlyHint.
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 information: purpose plus factors, floor semantics, ticker mode, and ETF exclusion with routing. The core purpose is front-loaded in the first sentence, and the factor list earns its place by defining what the composite score means. No repetition of what the schema already documents.
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 covers the single-ticker return shape (score, factor breakdown, universe rank) and the score's 0-100 peer-relative meaning, while the schema documents ordering and caps. The missing piece is the board mode's exact return columns and rank assignment semantics, which the agent must infer. Overall, annotations, schema, and description combine sufficiently for selection and 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%, so the baseline is 3; the description adds meaning by grouping minMarketCap/minDollarVolume as 'liquidity floors' and stating the key semantic that they 'filter the board without changing scores.' The ticker-mode behavior ('factor breakdown and universe rank') reinforces, though partly duplicates, the schema's ticker description. This is incremental but genuine added 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 ('Rank'), a bounded universe ('primary operating-company stocks'), and a precise output ('peer-relative 0-100 short-squeeze score') with its formula inputs enumerated. Explicitly excludes exchange-traded products and routes ETF queries to GetShortInterest, separating it from that sibling. The title and name align with the stated 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?
Gives one explicit when-not-to-use rule with a named alternative: ETPs are excluded and 'use GetShortInterest for an ETF's exact FINRA series.' Does not, however, contrast this tool against other potentially confusing siblings (GetShortVolume, GetLargestShortVolume, ScreenStocks), so usage context is clear but not exhaustive.
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. | |
| 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 and destructiveHint=false, so the safety profile is clear. The description adds valuable behavioral context beyond annotations: the lookback window is warmed up on price history before startDate, so values don't depend on the range's left edge. This helps agents understand why results may differ from naive computation. It doesn't disclose return format, but for a read-only indicator with no output schema, this is solid.
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 of high-density information: what it is, formula components, use case, and a key computation nuance. Every sentence earns its place with no redundancy. It is front-loaded and easy 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?
For a technical indicator with configurable parameters, the description covers the core semantics, usage, and a critical warm-up behavior. The absence of an output schema is mitigated by explaining the indicator's components. It could mention the return rows (e.g., date, %K, %D) or percentages, but overall it is sufficiently complete for an agent to understand what to expect.
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 description doesn't need to explain each parameter. The description does add conceptual meaning by defining %K and %D in terms of the lookback window and smoothing, which relates to kPeriod and dPeriod, but it doesn't directly enrich parameter syntax or constraints. 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 'Stochastic Oscillator (%K and %D) for a stock,' clearly identifying the tool as a specific technical indicator. It then explains what %K and %D measure, distinguishing it from other indicator tools like GetAverageTrueRange or GetBollingerBands. The purpose is concrete 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?
The description states 'Useful for spotting overbought (>80) and oversold (<20) conditions,' providing clear guidance on when the tool is appropriate. It does not explicitly mention alternatives or exclusions, but the use case is well-defined, earning a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GetStockPricesDaily Price HistoryARead-onlyInspect
Get daily OHLCV (Open, High, Low, Close, Volume) price history for a stock. Useful for technical analysis, charting, and price trend analysis. Prices are in USD. 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. | |
| 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 (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?
Goes far beyond the readOnlyHint annotation by disclosing key data behaviors: prices are in USD, Adj Close column handling, corporate-action refresh caveats with a warning about split basis and reconciliation status, and the exclusion of zero-volume carry-forward candles. This is rich, non-obvious context that is crucial 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 appropriately sized and front-loaded with the core purpose. Each sentence adds value (fields, use cases, currency, adjustment behavior, caveats), though the cautionary sentences about corporate actions add complexity. No redundancy; a tight but information-dense description.
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 partially covers the return format by naming columns (OHLCV, Adj Close) and exclusions. It does not explicitly state the array structure or date range behavior beyond the schema, but the combination of schema and description is sufficiently complete for a read-only history 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 provides full descriptions for all four parameters, so the description adds no extra parameter-level meaning. Baseline of 3 applies per guidelines 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 explicitly names the action ('Get') and the resource ('daily OHLCV price history for a stock'), with the data fields (Open, High, Low, Close, Volume) spelled out. It clearly distinguishes from sibling tools like GetLatestPrices or GetLiveQuote by focusing on historical daily data, and it mentions use cases (technical analysis, charting).
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 by stating it is 'useful for technical analysis, charting, and price trend analysis,' and additionally flags that zero-volume candles are excluded, which helps set expectations. However, it does not explicitly mention alternatives or when not to use, so it misses the explicit exclusion/alternative criterion.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | Number of ranked holding rows to skip before returning results (default: 0) | |
| 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) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate read-only and non-destructive behavior, so the description carries the burden of explaining data nuances. It adds substantial context: percentage is of total institutional 13F shares, prices may fall back to filer values, values can be zero, non-ETF stocks may carry prior-quarter non-filer positions, and put/call rows must be treated carefully.
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 structured logically: purpose, return content, valuation behavior, quarter-window caveat, and position-type warning. Every sentence earns its place, with 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?
There is no output schema, and the description adequately explains what the ranked list contains, the key fields, price fallback behavior, zero-value cases, and important filing-window exceptions. This is sufficient for an agent to understand what to expect and how 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 baseline is 3. The description reinforces that the ticker must be an exact listed security, but it does not materially add parameter semantics beyond what 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?
The description states a specific action and resource: getting the top institutional holders (fund managers) of an exact stock or ETF listing from SEC 13F-HR filings, ranked by shares held. This clearly differentiates it from related tools like institutional ownership history, funds holding a stock, or top buyers/sellers.
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: the tool is for exact stock or ETF listings, not fuzzy searches, and includes important caveats about the newest quarter's filing window and put/call position types. It does not explicitly name alternative tools or state when not to use it, 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.
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); a previous holder counts as a seller only if it filed a 13F for the target quarter, so a fund that stopped filing (CIK migration, deregistration) is not shown as a mass seller. 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?
Beyond the readOnly/destructive annotations, the description discloses important behavioral details: new positions and sold-out positions are treated as full deltas, funds that stopped filing are not shown as mass sellers, and the incomplete filing window is noted in the output. These edge cases materially affect interpretation and are exactly the kind of context an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core behavior and then adds edge-case detail in a logical order. Every sentence carries information that affects interpretation or invocation, with 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?
For a complex 13F tool with no output schema, the description explains the return shape (markdown table with two sections), the comparison baseline, and the key filing-window caveats. An agent can confidently select 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?
Schema coverage is 100%, so ticker, maxResults, and reportDate are already well documented. The description adds useful context about the comparison period and the filing window, but it does not add meaningful per-parameter guidance beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get'), a specific resource ('institutions that moved the needle the most on a stock this quarter'), and an unambiguous scope (absolute share additions/reductions vs. the previous 13F report date). This clearly differentiates it from siblings like GetTopHolders or GetInstitutionalOwnershipHistory.
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 it: to surface the most actionable quarterly 13F signal for a stock, and it cautions about the filing-window caveat. It does not explicitly name alternative tools or state when not to use it, 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.
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. 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) | |
| 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?
Beyond the annotations (readOnlyHint=true, destructiveHint=false), the description adds crucial behavioral context: partial coverage, the interpretation of empty results, the scraping source, and that only future events are returned. It also states the ordering. None of this contradicts the annotations, and it meaningfully enriches the agent's understanding of what the tool does and what the results mean.
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 with no filler. It front-loads the core purpose, then adds filtering, ordering, coverage caveat, and routing to alternatives—each sentence earns its place. The structure is highly efficient for an agent scanning for decision-useful 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 covers the essential decision points: what is returned (future events), ordering, optional filter, coverage caveat, and where to go for past events. However, it does not specify the exact structure of the returned event objects (e.g., fields like date, type, URL), and there is no output schema to fill that gap. This leaves a minor ambiguity for an agent that needs to parse the result programmatically, though it is sufficient 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?
The input schema already provides 100% coverage on all three parameters (ticker, eventType, maxResults) with detailed descriptions, defaults, and the note about the 'Event' generic type. The tool description adds little beyond that, merely echoing optional filtering and the future-only scope. Since the schema carries the full parameter meaning, 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?
The description uses a specific verb ('Get') with a clear resource ('upcoming investor-relations events'), enumerates concrete event types (earnings webcasts, conference appearances, presentations, shareholder meetings), and names the data source (company IR website). It also differentiates from siblings by explicitly noting that past events and transcripts are handled by ListInvestorEvents / GetInvestorEventTranscript, leaving no ambiguity about what this tool covers.
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 guidance: 'Only future events are returned; for past events and their transcripts use ListInvestorEvents / GetInvestorEventTranscript.' It also clarifies the optional eventType filter, the ordering (soonest first), and the coverage caveat—an empty answer means a coverage gap, not an empty calendar. This is complete routing and expectation-setting.
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 Web Data FeedARead-onlyInspect
Get the latest independently verified stored result for one of the caller's web data feeds, 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 feed, tell the user to open the Equibles Portal and choose Dashboard → Web Data Feeds: https://www.equibles.com/WebDataFeeds
| Name | Required | Description | Default |
|---|---|---|---|
| dataFeed | Yes | The web data feed 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?
Beyond the readOnlyHint/destructiveHint annotations, the description adds genuinely non-obvious behavioral traits: 'never triggers a live run' and 'preserves the last good result after a newer failure,' plus the 'independently verified' nature of the retained result. These traits materially change what an agent should expect from a data-retrieval call, and nothing contradicts 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?
Three sentences with no wasted words: sentence one states the purpose and both modes, sentence two adds the behavioral caveats, sentence three routes the user to the portal with a URL. Every sentence earns its place and the core purpose 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 two-parameter read-only tool with full schema coverage and safety annotations, the description covers purpose, behavioral expectations, and out-of-scope actions well. The only gap is that with no output schema, the exact return shape and empty-result/before-timestamp-no-match behavior are not specified, though the 'preserves the last good result' hint mitigates this.
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 dataFeed and capturedAtOrBefore, including the ListWebDataFeeds reference and the ISO-8601 semantics. The tool description adds context about the overall behavior but no parameter-level detail 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 the latest independently verified stored result for one of the caller's web data feeds,' and covers both retrieval modes (latest, or latest at/before a timestamp). It distinguishes itself from the many sibling Get* tools by scoping to the caller's own stored feed results and explicitly noting 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?
The description gives clear context on when to use the tool — when a stored, verified result is wanted rather than a live computation — and explicitly routes create/manage workflows away from it ('To create or manage a feed, tell the user to open the Equibles Portal'). It does not explicitly name a sibling alternative for listing feeds (though the schema's dataFeed parameter does point to ListWebDataFeeds), so a fully explicit exclusion is slightly lacking.
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, and page totals. Supports date, document-type, and exact SEC item-number filters. Hidden document types remain excluded unless explicitly requested. 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). 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. Accepts a registered type value — 'TenK', 'TenQ', 'EightK', 'TenKa', 'TenQa', 'EightKa', 'TwentyF', 'SixK', 'FortyF', 'TwentyFa', 'SixKa', or 'FortyFa' — or its display name (e.g. '10-K', '20-F/A'), plus any deployment-registered type, such as EarningsCallTranscript (display name: Earnings Call) for earnings-call transcripts where available. An unrecognized value returns an error listing every accepted value. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and destructiveHint annotations, the description reveals meaningful behavior: results are sorted newest-first, hidden document types stay excluded unless explicitly requested, and the response includes specific metadata fields. This gives the agent a strong behavioral model of the call.
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 yet information-dense: every sentence conveys a distinct fact—ordering, ticker behavior, return fields, filters, hidden-type behavior, and downstream usage. Key behavioral details are 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 listing tool with no output schema, the description covers what the tool returns, how to paginate conceptually via maxItems/page, how to filter, and what to do with returned IDs. No critical information for invoking 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 baseline is 3. The description adds useful context beyond parameter names by explaining the ticker omission behavior, filter categories, and the hidden-document-type exclusion rule, which clarifies how documentType behaves in practice.
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 ('List') and resource ('stored SEC filings and earnings-call transcripts'), and clarifies ordering ('newest first') and output contents. It also distinguishes itself from downstream tools like SearchDocument and ReadDocumentLines by noting the ID-passing relationship.
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 usage context: omit ticker for market-wide feed, provide one ticker for company-specific list, and chain returned IDs into SearchDocument or ReadDocumentLines. It does not explicitly contrast with SearchDocuments or other list-type siblings, so it stops just 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.
ListInvestorEventsBrowse Investor EventsARead-onlyInspect
List a company's recent investor events — earnings calls AND the other events it webcasts (conferences, investor/analyst days, shareholder meetings) — newest first. Each row gives the event id, type, the UTC start (time shown when one was reported), the event title, fiscal period (earnings calls only), status, and whether a transcript, audio and slide deck are on file. Conferences have no fiscal quarter, so use the event id with GetInvestorEventTranscript to read one rather than GetEarningsCallEvent (which is keyed by fiscal quarter and earnings-only).
| 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) | |
| eventType | No | Optional event type to filter on: EarningsCall, CapitalMarketsDay, InvestorUpdate, AGM, Conference, FiresideChat, or MAndA (default: all types) |
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 does not contradict them. It adds useful behavioral context beyond annotations: results are ordered newest first, start times are UTC, and each row indicates whether transcript, audio, and slide deck materials are 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?
The description is dense but every sentence earns its place: purpose and scope, row contents, and cross-tool routing. It is front-loaded with the main action and resource before enumerating output 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?
With no output schema, the description carries the burden of explaining return values, and it does so thoroughly: event id, type, UTC start, title, fiscal period, status, and document availability. It also explains ordering and provides the critical exception for conferences, making the tool fully actionable.
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, so the baseline is 3. The description adds context about returned row semantics (fiscal period only for earnings calls, conferences lack fiscal quarter) but does not substantially expand on the parameters themselves, which are already well-documented.
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 ('List'), a clear resource ('a company's recent investor events'), and defines the full scope: earnings calls plus webcast conferences, investor/analyst days, and shareholder meetings, sorted newest first. It also distinguishes itself from closely related siblings by naming the row fields (event id, type, UTC start, title, fiscal period, status, transcript/audio/slide availability).
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 tells the agent when to use this tool versus alternatives: conferences have no fiscal quarter, so one should use the event id with GetInvestorEventTranscript rather than GetEarningsCallEvent, which is keyed by fiscal quarter and earnings-only. This is direct, actionable routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ListWebDataFeedsList Web Data FeedsARead-onlyInspect
List the caller's own recurring web data feeds, schedule, state, 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 → Web Data Feeds: https://www.equibles.com/WebDataFeeds
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and openWorldHint=false, and the description reinforces this by saying 'read-only and never contacts a source website.' It also adds the important scoping detail that only the caller's own feeds are listed, which is useful 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 description is two concise sentences. The first sentence front-loads the action, resource, and returned fields; the second adds essential behavioral context and user guidance. No filler or redundant material.
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-parameter, read-only listing tool with no output schema, the description covers purpose, scope, behavioral safety, and the fallback path for creation/management. The agent has enough information to invoke the tool correctly and set user expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is nothing to explain about inputs. The baseline of 4 applies, and the description adds value by describing what the result includes (schedule, state, most recent run), even though no parameter semantics are 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?
The description uses a specific verb ('List') and resource ('the caller's own recurring web data feeds') and names the fields included (schedule, state, most recent run). It doesn't explicitly name sibling tools like GetWebDataFeed, but the scope and wording make the purpose clear.
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 states this listing operation is read-only and never contacts a source website, and tells the user to use the Equibles Portal for creating or managing feeds. It gives clear exclusions, though it doesn't directly compare against the sibling GetWebDataFeed tool.
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, 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.
| 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. | |
| 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 or netincome. 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). | |
| 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. | |
| 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). | |
| 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 insider buying 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 insider buying in dollars over the trailing 90 days. | |
| minRevenueGrowth | No | Minimum revenue growth in percent, latest quarter vs the same quarter a year earlier. | |
| maxInsiderSentiment | No | Maximum composite insider-sentiment score (0-100, peer-relative). | |
| 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. | |
| maxShortInterestPercent | No | Maximum short interest as a percent of shares outstanding (0-100). | |
| minShortInterestPercent | No | Minimum short interest as a percent of shares outstanding (0-100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the operation as read-only and non-destructive, but the description adds substantial behavioral detail beyond that: stocks missing a bounded metric are excluded, results respect the requested sort with a default of market cap descending, results are paged, each dataset's vintage is included, and filtering/sorting on a fundamental metric dynamically adds that metric to the result table. These are non-obvious behaviors that materially affect how an agent interprets 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 but information-dense, covering the tool's scope, behavior, defaults, and dynamic output characteristics in three sentences. Every sentence contributes unique value, and the most important behavioral rules (exclusion of missing metrics, dynamic metric inclusion) are stated explicitly 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?
For a complex tool with 39 optional parameters and no output schema, the description covers the crucial behavioral context an agent needs: exclusion semantics, sorting and paging defaults, vintage inclusion, and dynamic result expansion. The schema handles per-parameter detail, 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 baseline is 3; every parameter already has a detailed description including units, defaults, and examples. The tool description adds only a high-level category summary without introducing parameter-specific meanings, so it neither harms nor improves on 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 uses a specific verb ('Screen') and resource ('listed stocks') and clearly enumerates the filter categories (price, market cap, institutional ownership, short data, insider activity, valuation, growth, margins, liquidity, earnings). It does not explicitly distinguish itself from sibling tools by name, but its role as a multi-criteria screener is unambiguous, so it earns a 4 rather than 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 tool does but provides no guidance on when to use it versus alternative tools or when not to use it. There are no exclusions, prerequisites, or references to sibling tools. The usage context is only implied by the tool's purpose, not explicitly stated.
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; 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 declare readOnlyHint and destructiveHint, but the description adds meaningful behavioral context: the two-stage search algorithm (strict word match then broaden), punctuation independence, alias resolution, and positional output. This goes beyond what annotations provide, though it doesn't cover output layout 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?
Four sentences, each earning its place: purpose, algorithm, aliases, and downstream usage. No filler or repetition, front-loaded with the core action.
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?
Covers purpose, matching algorithm, alias resolution, return value (position + exact Name), and integration with sibling tools. Without an output schema, it could specify more about the response structure, but the essential info is present for effective use.
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 100% of parameters, so baseline is 3. The description adds semantics for the query parameter (matches punctuation-independent words anywhere in the name, aliases) and clarifies the output's exact Name should be passed onward, enriching 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?
Clearly states it 'Search[es] the tracked congressional roster by name', a specific verb+resource action. The description also differentiates from siblings by explaining it returns exact names to feed into GetMemberTrades or GetMemberNetWorth, establishing a distinct lookup role.
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 the tool: to resolve member names/aliases before querying trades or net worth. It describes search behavior (strict then broad) and explicitly names downstream tools, though it does not mention exclusions or alternative search tools in detail.
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. 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 |
|---|---|---|---|
| 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; concise, filing-phrased terms (e.g. 'Data Center revenue') still rank best. | |
| ticker | No | Optional company ticker. 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, or deployment-registered types such as EarningsCallTranscript. Display names such as 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 and destructiveHint, so the safety profile is covered. The description adds useful behavioral context: hybrid retrieval, automatic broadening behavior, and the fact that returned excerpts include document IDs for downstream tools. 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?
Three tightly written sentences front-load the core function, then explain scoping and sibling alternatives. There is no fluff or restatement of the schema; every sentence adds operational value.
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 covers the key return artifact: excerpts with document IDs for SearchDocument or ReadDocumentLines. It also handles search scope and points to the appropriate alternative for browsing. Minor gaps like ranking/pagination behavior are partially addressed by the schema fields maxResults and maxResultsPerCompany, so the description is 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?
Schema coverage is 100% with detailed parameter descriptions, so the baseline is 3. The description adds value by clarifying cross-parameter intent, such as 'Omit ticker to search every company' and scoping excludeTickers/maxResultsPerCompany specifically to market-wide discovery. This nuance helps an agent choose parameter values more effectively than the schema alone.
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 the specific verb 'Search' with a clear resource ('SEC filings and earnings-call transcripts'), specifies the retrieval strategy ('hybrid keyword and semantic'), and describes the output ('excerpts with document IDs'). It also distances itself from ListFilings by clarifying that browsing without a query belongs to that sibling.
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 guidance: omit ticker for all companies vs provide one ticker for a single company. It further states that excludeTickers and maxResultsPerCompany are 'only for market-wide discovery' and that ListFilings should be used to browse filings newest first without a text query. This clearly routes the agent to the correct alternative.
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 — pass the previous call's shown count to page past the maxResults cap (default: 0) | |
| 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 read-only and non-destructive behavior, but the description adds substantive behavioral detail: the two-stage matching algorithm (strict whole-word first, then broaden), punctuation and word-boundary rules, alias resolution, and return-field/ordering specifics. This goes 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 compact and front-loaded: the first sentence states the core purpose, followed by two sentences of high-value behavioral nuance. No 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?
Despite having no output schema, the description lists the return fields (CIK, role, latest filing company, location) and ordering. Pagination and clamping behavior are covered in the input schema, so the description complements structured data without needing to repeat it. The tool is a read-only search, so no mutation warnings are required.
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 descriptions cover all three parameters (100% coverage), so the baseline is 3. The description goes further by explaining how the 'query' parameter is interpreted (whole-word matching, alias resolution), which adds meaningful semantics beyond the schema's simple 'Search query for insider 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 states a specific action ('Search'), a defined resource ('tracked SEC corporate-insider set'), and a clear scope ('directors, officers, 10% owners') by name. This clearly distinguishes it from sibling tools that retrieve insider transactions or ownership, and from other search 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 clear context: this tool is for searching insiders by name and returns identity details. It doesn't explicitly name alternatives (e.g., 'for transactions use GetInsiderTransactions'), but the intended use case is unambiguous, and the absence of exclusions is acceptable.
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 normally use report-date closing prices, may fall back to filer values, and can include zero for unavailable valuations. Scoped institution tools remain strict and never discard an unmatched word.
| 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) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It discloses a two-phase matching strategy (strict all-words then broad any-word), verified alias handling, ordering by largest positions in the recent bucket, and valuation fallback behavior. It also explains that unmatched words are never discarded by downstream scoped tools. This goes well beyond the readOnly/destructive annotations and has no contradiction.
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 purposeful, front-loading the core searchable set and layering matching, ordering, and result contents. The final sentence about downstream scoped tools is tangential for invoking this tool but adds useful context. No filler or redundancy otherwise.
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 essential return semantics: included fields (latest report date, tracked value, position count), ordering, and valuation caveats. It does not spell out the exact response envelope or behavior for zero/no-match cases, but an agent has enough to invoke and interpret results correctly. Given two simple parameters, this is adequately 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 already documents the query and maxResults parameters with 100% coverage, so the baseline is met. The description adds query interpretation details (punctuation-independent word matching, strict-then-broad semantics, alias expansion) that let an agent form a good query. It does not add anything specifically about maxResults beyond the schema 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?
The description names a specific resource ('tracked 13F filer set') and the two query keys (institution name or SEC CIK), so an agent can identify what is searched. It is distinct from generic search siblings like SearchInvestmentAdvisers or SearchFunds. This is more than a restatement of the title.
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 establishes a clear use context: resolve and compare 13F filers by name or CIK before calling a scoped institution tool. It does not explicitly name alternative search tools or state when not to use this one, so it falls 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.
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 ticker for a stock, or the OCC symbol in optionContract for an option.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | No | The watched stock's ticker. 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 include destructiveHint=true, but the description adds essential context that this action is narrowly scoped: 'it never touches a holding, so a stock the portfolio also owns stays exactly as recorded'. It also emphasizes user confirmation, providing significant behavioral guidance 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 two concise paragraphs: the first clearly states the action and its boundary, the second provides parameter addressing instructions. Every sentence serves a distinct purpose 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?
The tool has no output schema, but for a removal action the description adequately covers what is removed, what is not affected, the confirmation requirement, and parameter addressing. It lacks information about return values or error cases (e.g., if the instrument is not watchlisted), but this does not hinder 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 descriptions already cover all three parameters (100% coverage). The description adds value by clarifying the mutual exclusivity of ticker vs optionContract and instructing the agent to use the format from GetMyPortfolio's Watching section, which reinforces parameter selection 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?
The description clearly states 'Remove a stock or an option contract from one of the USER's portfolio watchlists', using the specific verb 'Remove' and resource 'watch entry'. It distinguishes from sibling tools like WatchInstrument and portfolio lot tools by explicitly limiting scope to watchlists.
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 must be used to remove a watch entry, and it instructs the agent to confirm with the user before acting. It also gives addressing guidelines (ticker vs OCC symbol as they appear in GetMyPortfolio). It doesn't explicitly list when not to use, but there are no ambiguous alternatives.
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 or note. 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. | |
| quantity | No | Optional. The corrected signed size. Negative is a short or written option. | |
| portfolio | Yes | The portfolio holding the lot, by name. | |
| 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?
The description clearly states that only passed fields are updated ('the rest are left alone'), despite annotations being empty (no readOnlyHint, destructiveHint, or openWorldHint). It also warns that editing away quantity loses realized profit, adding critical behavioral 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?
The description is highly concise and logically structured. It opens with the core purpose, then the 'instrument cannot be edited' rule, followed by the 'sale vs. correction' distinction. Every sentence serves a purpose 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?
The description is complete for a mutation tool with no output schema. It explains the update mechanism, immutable fields, and related sibling tools. Given the context signals (no output schema, 100% schema coverage), no further return-value details are 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 at 100%, so all parameters are documented structurally. The description adds value by clarifying the semantics of not passing fields (they remain unchanged) and explaining the business rule for quantity signs (negative for shorts/written options). A 4 is appropriate, but not a 5, as no further nuance 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?
The description clearly specifies the tool's purpose: to correct user-recorded lot details like quantity, price, trade date, or note. It explicitly distinguishes this from deleting lots (use RemovePortfolioLot) or recording sales (use ClosePortfolioLot), and states what cannot be changed (instrument).
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 guides when NOT to use the tool (i.e., for wrong instruments—use RemovePortfolioLot instead) and what to use for sales (ClosePortfolioLot). This directly addresses alternatives and typical misuses.
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. 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. For an option, the UNDERLYING 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 show readOnlyHint=false, implying a write operation, but the description adds key behavioral context: the instrument appears in GetMyPortfolio's 'Watching (not held)' section with no quantity/cost/value, option contracts are verified against live data before storage, and selling out later keeps the instrument on the list. This goes 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 organized into three concise paragraphs: core function/effect, option-specific parameter guidance, and an edge case. Each sentence adds necessary value with no redundancy, and the main purpose 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?
The description fully covers selection and invocation criteria: exact parameters, behavior, and edge cases. Although there is no output schema, the description adequately conveys what the agent needs to know to use the tool correctly, including the absence of position-related fields in the display.
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?
While the schema covers all parameters with descriptions, the description adds important semantic constraints: for options, both ticker and optionContract are required, and ticker means the underlying ticker. The reference to AddPortfolioLot's format and the verification step provide meaning not 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 clearly states the tool's function: adding a stock or option contract to a portfolio watchlist without recording a position. It distinguishes from AddPortfolioLot by emphasizing 'without recording any position' and from UnwatchInstrument implicitly, making the purpose 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?
The description provides explicit when-to-use guidance: choose this when you do not want to record a position. It also gives precise instructions for options (both underlying ticker and OCC symbol, exactly as AddPortfolioLot takes them) and clarifies the edge case of watching an already-held instrument.
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. Dates show when Glama detected each change.
9 tool updates
- Changed
GetCongressionalTrades1 field changed- changed
Input schema / properties / ticker / descriptionPrevious value: -"Stock ticker symbol (e.g., AAPL, MSFT, NVDA)"New value: +"Listed security ticker (e.g., AAPL, VOO, MSFT)"
- Changed
GetFailsToDeliver1 field changed- changed
Input schema / properties / ticker / descriptionPrevious value: -"Stock ticker symbol (e.g., AAPL, GME, AMC)"New value: +"Exact stock or ETF ticker symbol (e.g., AAPL, GME, SPY)"
- Changed
GetFundsHoldingStock1 field changed- changed
Input schema / properties / ticker / descriptionPrevious value: -"Stock ticker symbol (e.g., AAPL, MSFT)"New value: +"Listed security ticker (e.g., AAPL, VOO)"
- Changed
GetInstitutionalOwnershipHistory1 field changed- changed
Input schema / properties / ticker / descriptionPrevious value: -"Company ticker symbol (e.g., AAPL, MSFT)"New value: +"Listed security ticker (e.g., AAPL, VOO)"
- Changed
GetOffExchangeVolume1 field changed- changed
Input schema / properties / ticker / descriptionPrevious value: -"Stock ticker symbol (e.g., AAPL, GME, TSLA)"New value: +"Listed security ticker (e.g., AAPL, VOO, GME)"
- Changed
GetShortInterest1 field changed- changed
Input schema / properties / ticker / descriptionPrevious value: -"Stock ticker symbol (e.g., AAPL, GME, TSLA)"New value: +"Listed security ticker (e.g., AAPL, VOO, GME)"
- Changed
GetShortVolume1 field changed- changed
Input schema / properties / ticker / descriptionPrevious value: -"Stock ticker symbol (e.g., AAPL, GME, AMC)"New value: +"Listed security ticker (e.g., AAPL, VOO, GME)"
- Changed
GetTopHolders1 field changed- changed
Input schema / properties / ticker / descriptionPrevious value: -"Company ticker symbol (e.g., AAPL, MSFT)"New value: +"Listed security ticker (e.g., AAPL, VOO)"
- Changed
GetTopInstitutionalBuyersSellers1 field changed- changed
Input schema / properties / ticker / descriptionPrevious value: -"Company ticker symbol (e.g., AAPL, MSFT)"New value: +"Listed security ticker (e.g., AAPL, VOO)"
5 tool updates
- Changed
GetDebtInstrument8 fields changed- added
Input schema / properties / covenantOffsetAdded value: +{ + "default": 0, + "description": "Zero-based covenant offset for paging.", + "type": "integer" +} - added
Input schema / properties / documentOffsetAdded value: +{ + "default": 0, + "description": "Zero-based document offset for paging.", + "type": "integer" +} - added
Input schema / properties / evidenceOffsetAdded value: +{ + "default": 0, + "description": "Zero-based character offset into the exact evidence for these history and covenant pages.", + "type": "integer" +} - added
Input schema / properties / historyOffsetAdded value: +{ + "default": 0, + "description": "Zero-based filing-history offset for paging.", + "type": "integer" +} - added
Input schema / properties / maxCovenantsAdded value: +{ + "default": 10, + "description": "Maximum covenant rows to return (default 10, max 10).", + "type": "integer" +} - added
Input schema / properties / maxDocumentsAdded value: +{ + "default": 10, + "description": "Maximum governing/update documents to return (default 10, max 10).", + "type": "integer" +} - added
Input schema / properties / maxEvidenceCharactersAdded value: +{ + "default": 0, + "description": "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.", + "type": "integer" +} - added
Input schema / properties / maxHistoryAdded value: +{ + "default": 10, + "description": "Maximum filing-history rows to return (default 10, max 10).", + "type": "integer" +}
- Changed
GetDebtProfile5 fields changed- added
Input schema / properties / evidenceOffsetAdded value: +{ + "default": 0, + "description": "Zero-based character offset into the selected company-reported totals' exact evidence.", + "type": "integer" +} - added
Input schema / properties / maxEvidenceCharactersAdded value: +{ + "default": 0, + "description": "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.", + "type": "integer" +} - added
Input schema / properties / maxReportedTotalsAdded value: +{ + "default": 10, + "description": "Maximum company-reported totals to return (default 10, max 10).", + "type": "integer" +} - changed
Input schema / properties / maxResults / descriptionPrevious value: -"Maximum instruments to return (default 25, max 500)."New value: +"Maximum instruments to return (default 25, max 25)." - added
Input schema / properties / reportedTotalOffsetAdded value: +{ + "default": 0, + "description": "Zero-based company-reported-total offset for paging.", + "type": "integer" +}
- Added
GetEtfHoldings - Added
GetEtfProfile - Added
SearchEtfs
1 tool update
- 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 reported $ 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), or 'value' (current total published position value desc)"
6 tool updates
- Changed
GetExecutiveChanges1 field changed- added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "description": "Number of matching changes to skip before returning rows (default 0).", + "type": "integer" +}
- Changed
GetInsiderSentimentScores1 field changed- added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "description": "Number of matching ranked stocks to skip before returning rows (default: 0; ignored for a single-ticker lookup).", + "type": "integer" +}
- Changed
GetInvestorRelationsNews1 field changed- added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "description": "Number of matching news items to skip before returning rows (default: 0).", + "type": "integer" +}
- Changed
GetIpoFeed1 field changed- added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "description": "Number of matching registrations to skip before returning rows (default 0).", + "type": "integer" +}
- Changed
GetNonGaapBridge1 field changed- added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "description": "Number of approved source filings to skip before returning rows (default 0)", + "type": "integer" +}
- Changed
ListInvestorEvents1 field changed- added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "description": "Number of matching events to skip before returning rows (default 0)", + "type": "integer" +}
11 tool updates
- Changed
GetCongressionalTrades1 field changed- added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "description": "Number of matching trades to skip before returning rows (default: 0)", + "type": "integer" +}
- Added
GetDebtInstrument - Added
GetDebtProfile - Changed
GetForm144ProposedSales1 field changed- added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "description": "Number of matching notices to skip before returning rows (default: 0)", + "type": "integer" +}
- Changed
GetFormDOfferings1 field changed- added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "description": "Number of matching notices to skip before returning rows (default: 0)", + "type": "integer" +}
- Changed
GetFundProfile1 field changed- added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "description": "Number of ranked holdings to skip before returning rows (default: 0)", + "type": "integer" +}
- Changed
GetFundsHoldingStock1 field changed- added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "description": "Number of matching fund positions to skip before returning rows (default: 0)", + "type": "integer" +}
- Changed
GetGovernmentContracts1 field changed- added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "description": "Number of matching awards to skip before returning rows (default: 0)", + "type": "integer" +}
- Changed
GetInsiderTransactions1 field changed- added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "description": "Number of matching transactions to skip before returning rows (default: 0)", + "type": "integer" +}
- Changed
GetMemberTrades1 field changed- added
Input schema / properties / tickerAdded value: +{ + "default": null, + "description": "Optional stock ticker to combine with the member filter (e.g., AAPL)", + "type": "string" +}
- Changed
GetTopHolders2 fields changed- changed
Input schema / properties / maxResults / descriptionPrevious value: -"Maximum number of holders to return (default: 20, clamped to 1-500)"New value: +"Maximum number of holding rows to return (default: 20, clamped to 1-500)" - added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "description": "Number of ranked holding rows to skip before returning results (default: 0)", + "type": "integer" +}
1 tool update
- Changed
ScreenStocks1 field changed- added
Input schema / properties / tickersAdded value: +{ + "default": null, + "description": "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.", + "items": { + "type": "string" + }, + "type": "array" +}
1 tool update
- Changed
GetWebDataFeed1 field changed- added
Input schema / properties / capturedAtOrBeforeAdded value: +{ + "default": null, + "description": "Optional ISO-8601 timestamp. Returns the newest retained verified capture completed at or before this instant. Omit it for the latest result.", + "type": "string" +}
4 tool updates
- Removed
GetCustomDataSet - Added
GetWebDataFeed - Removed
ListCustomDataSets - Added
ListWebDataFeeds
8 tool updates
- Removed
CreateWebDataWorkflow - Added
GetCustomDataSet - Removed
GetWebDataWorkflowData - Added
ListCustomDataSets - Removed
ListWebDataWorkflows - Removed
PauseWebDataWorkflow - Removed
ResumeWebDataWorkflow - Removed
RetireWebDataWorkflow
1 tool update
- Changed
CreateWebDataWorkflow1 field changed- added
Input schema / properties / siteConnectionAdded value: +{ + "default": null, + "description": "Optional site-connection name or id created in the Equibles portal. Never put credentials in this argument or in the request.", + "type": "string" +}
6 tool updates
- Added
CreateWebDataWorkflow - Added
GetWebDataWorkflowData - Added
ListWebDataWorkflows - Added
PauseWebDataWorkflow - Added
ResumeWebDataWorkflow - Added
RetireWebDataWorkflow
5 tool updates
- Added
GetDividendHistory - Removed
ListCompanyDocuments - Added
ListFilings - Changed
ReadDocumentLines1 field changed- changed
Input schema / properties / documentId / descriptionPrevious value: -"Document ID obtained from ListCompanyDocuments"New value: +"Document ID obtained from ListFilings"
- Changed
SearchDocument1 field changed- changed
Input schema / properties / documentId / descriptionPrevious value: -"Document ID obtained from ListCompanyDocuments or a SearchDocuments result header"New value: +"Document ID obtained from ListFilings or a SearchDocuments result header"
1 tool update
- Changed
GetIndexForecast1 field changed- changed
Input schema / properties / maxResults / descriptionPrevious value: -"Maximum companies to return per bucket (default 25, max 500)."New value: +"Maximum companies to return per bucket (default 25, max 1000)."
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
SEC filings for Claude, ChatGPT, Cursor — 23 tools + 5 recipes. Financials, insider, 13F, funds.
SEC filings and financial data for AI agents: 55 tools for financials, valuation and supply chains.
1Real SEC, 13F, insider, congress & macro data your AI agent can cite. Hosted MCP, 24 tools.
11 company intelligence tools — financials, tech stack, competitors, patents, jobs, news. Free.
Related MCP Servers
- AlicenseBqualityBmaintenance95 free financial intelligence tools for AI agents covering Indian and global markets, options analytics, AI-driven stock debates, portfolio analysis, and more.95MIT
- AlicenseAqualityAmaintenanceReal-time SEC Form 4 insider trading data — transactions with post-trade returns, cluster-buy signals, Form 144 early warnings, and 13F institutional holdings. 27 tools + 6 research prompts; free tier available.362601MIT
- AlicenseBqualityBmaintenance38 AI data tools for Claude and any MCP-compatible agent — crypto, DeFi, equities, commodities, energy, real estate, government intelligence, security audits, and more.45MIT
- AlicenseAqualityDmaintenanceProvides actionable financial intelligence tools for AI agents including insider buying signals, earnings IV plays, market pulse, stock analysis, and options strategies via free public data sources.6MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
Most tools have clearly distinct purposes, with detailed descriptions that cross-reference related alternatives. A few near-duplicate names could cause misselection, notably SearchDocument versus SearchDocuments and GetCftcPositioning versus GetLatestCftcPositioning.
Tool names consistently follow a VerbNoun camelCase pattern: Get for retrievals, Search for discovery, List/Read for document access, and Add/Close/Remove/Update/Watch/Create/Delete for portfolio mutations. Despite the large count, there is no mixing of naming conventions or unpredictable verb styles.
108 tools is an extreme surface area, far beyond the 3-15 well-scoped range and well past the 25+ threshold. Even for a broad financial data platform, this creates a heavy selection burden and substantial context overhead for agents.
The server covers an unusually wide domain: prices, fundamentals, SEC filings, options, insider activity, 13F holdings, short interest, macro data, funds, IPOs, and full portfolio lifecycle management. Notable gaps remain, such as a basic company profile/ticker-resolution tool, dividend history, and analyst estimates, so it is not a perfect 5.