FolioFact
Server Details
Read-only value-investing fund, holdings, financial, options, and insider research.
- Status
- Healthy
- Uptime
- 100.0% over 55 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 13 tools
Most tools target distinct resources (funds, investors, stocks, insiders), but insider_feed and stock_insiders overlap in subject matter and compare_stocks aggregates data also available via get_stock/stock_financials/stock_insiders. Descriptions are clear enough to resolve most ambiguity.
Naming is mostly predictable with get_* for single entities, fund_* for fund data, and stock_* for stock data. Minor inconsistencies exist: get_stock doesn't follow the stock_* pattern, and insider_feed is a standalone verb-noun name rather than insider_* like the stock_insiders tool.
13 tools is well within the ideal range for a financial data API. Each tool covers a meaningful slice of the domain—funds, holdings, history, investors, stocks, insiders, search, comparison, and docs—without feeling padded.
The tool surface covers the core domain well: fund discovery and history, holdings, investor relationships, stock-level financials/insiders/options, cross-domain search, and comparison. Minor gaps exist such as no direct fund-to-fund comparison or historical stock price data, but these are not obvious dead ends for the stated purpose.
Available Tools
13 toolscompare_stocksCompare stocks side by sideARead-onlyIdempotentInspect
Aligned multi-stock comparison: valuation, latest financial point, fund conviction, and insider activity. Requires FolioFact Pro.
| Name | Required | Description | Default |
|---|---|---|---|
| tickers | Yes | Comma-separated tickers (2–6, dots allowed). | |
| insider_window | No | Insider activity window. |
Output Schema
| Name | Required | Description |
|---|---|---|
| columns | Yes | |
| tickers | Yes | |
| provenance | Yes | |
| insider_window | Yes | |
| unknown_tickers | Yes | |
| submitted_tickers | Yes | |
| insider_window_label | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the bar for extra disclosure is lower. The description adds a valuable access constraint (Requires FolioFact Pro) and explains what kind of data is aligned across stocks. 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?
One dense sentence front-loads the core behavior, lists the comparison content, and ends with the Pro requirement. Every clause earns its place and there is no redundant restatement of the tool name or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a full output schema, 100% parameter coverage, and read-only/idempotent annotations, the description provides the missing contextual pieces: the multi-stock alignment, the content categories, and the subscription requirement. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents tickers (comma-separated, 2–6, dots allowed) and insider_window (90d/1y/all). The description adds only high-level context like 'insider activity' and does not need to repeat parameter syntax; 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 'Aligned multi-stock comparison', giving a specific operation and resource, and names the comparison dimensions (valuation, latest financial point, fund conviction, insider activity). This clearly distinguishes it from single-stock siblings like get_stock, stock_financials, and stock_insiders.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 clear use context: choose this when you need an aligned comparison across multiple tickers. It also states the FolioFact Pro requirement as a gate. It does not explicitly name alternatives or when-not-to-use conditions, 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.
fetch_pageFetch a public pageARead-onlyIdempotentInspect
Fetches an allowlisted public page as markdown/text: published blog posts (/blog/:slug), static pages (e.g. /agents, /api-docs, /about), and the agent discovery doc (/llms.txt).
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Public path, e.g. /blog/how-to-read-a-13f-without-overreading-it, /agents, or /llms.txt. |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | Yes | |
| text | Yes | |
| title | No | |
| provenance | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds the 'allowlisted' constraint and the output format (markdown/text), providing useful behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence that front-loads the purpose and lists examples. No unnecessary words 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 simple 1-parameter schema, strong annotations, and output schema, the description covers the tool's scope, constraints, and output format sufficiently. It is complete for a simple fetch 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 schema fully documents the single 'path' parameter with examples. The description also lists path patterns like /blog/:slug, but this largely overlaps with the schema. Since schema coverage is 100%, the description adds marginal 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 states the tool fetches public pages, specifies the output format (markdown/text), and enumerates the types of allowlisted pages (blog posts, static pages, /llms.txt). This distinguishes it from the finance-focused 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?
The description implies usage by enumerating specific page types and the 'allowlisted' constraint, which tells the agent when this tool is appropriate. It does not explicitly list alternatives or exclusions, but the scope is clear and distinct from siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fund_historyFund filing historyARead-onlyIdempotentInspect
Quarter-by-quarter filing history and a summary (turnover, concentration, favorites).
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Fund slug (URL identifier). |
Output Schema
| Name | Required | Description |
|---|---|---|
| fund | Yes | |
| summary | Yes | |
| quarters | Yes | |
| provenance | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety and side-effect profile. The description adds useful context about the data granularity (quarter-by-quarter) and summary metrics, but does not disclose additional behavioral traits such as authentication requirements or potential limitations. It does not contradict 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, concise sentence that conveys the core content efficiently. No redundant phrases or irrelevant details are present, and it is front-loaded with the primary 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?
Given the simple one-parameter schema, rich annotations, and presence of an output schema, the description is complete enough. It provides the key information needed to understand the tool's role without needing to elaborate on return formats or parameters, which are covered by structured fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage for the single 'slug' parameter, explicitly defining it as 'Fund slug (URL identifier).' The description does not add any parameter detail, but the schema fully compensates, 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 specifies the resource ('fund filing history') and the content ('quarter-by-quarter history' with 'turnover, concentration, favorites'). This distinguishes it from sibling tools like fund_holdings and get_fund, which focus on different aspects. The verb is implied but the scope 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 usage context is implied: use this when you need a fund's filing history and summary metrics. However, it does not explicitly state when to use this tool versus alternatives, nor does it mention any exclusions. Sibling tools like fund_holdings exist, but no differentiation guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fund_holdingsFund portfolio holdingsARead-onlyIdempotentInspect
A fund's current portfolio positions with quarter-over-quarter change.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Fund slug (URL identifier). |
Output Schema
| Name | Required | Description |
|---|---|---|
| fund | Yes | |
| quarter | Yes | |
| holdings | Yes | |
| provenance | Yes | |
| total_value | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that it returns current positions and quarter-over-quarter change, which is useful behavioral context about the data content. However, it does not mention pagination, limits, or any special handling beyond the annotations, so it adds moderate 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 a single, concise sentence that front-loads the core purpose ('current portfolio positions') and includes the key differentiator (QoQ change). There is zero redundancy or irrelevant detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 an existing output schema, the description is largely complete. It conveys the essential information: the resource (fund holdings) and the temporal aspect (current, with QoQ change). The output schema likely covers the exact structure, and annotations cover safety. Minor gaps like whether holdings are limited to top positions are not critical given 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?
The input schema fully describes the slug parameter as 'Fund slug (URL identifier)' with 100% coverage. The tool description adds no additional parameter semantics, so the baseline of 3 applies since the schema carries 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 clearly states the tool provides a fund's current portfolio positions and quarter-over-quarter change. This specific verb-resource combination distinguishes it from siblings like fund_history (historical data) and get_fund (fund metadata), 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?
No guidance is given on when to use this tool versus alternatives. While the description implies it is for current holdings with QoQ change, it does not explicitly mention that fund_history might be used for historical trends or that get_fund covers basic fund details. The agent is left to infer usage context from the name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fundGet a tracked fundBRead-onlyIdempotentInspect
One fund's latest filing and its investors.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Fund slug (URL identifier). |
Output Schema
| Name | Required | Description |
|---|---|---|
| fund | Yes | |
| filing | Yes | |
| investors | Yes | |
| portfolio | Yes | |
| provenance | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds that the tool returns 'latest filing and its investors,' which is useful context, but it does not disclose any additional behavior such as pagination, rate limits, or relationship to other resources.
Agents need to know what a tool does to the 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, short phrase with no filler or redundant information. Every word contributes to specifying what the tool returns, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 retrieval tool with an output schema and strong annotations, the description is largely sufficient. It clearly states the core return data, but it could be slightly more complete by explaining what constitutes 'latest filing' or what investor details are included, though the output schema likely covers these.
Complex tools with many parameters or behaviors need more documentation. 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%: the single parameter 'slug' is fully described with examples and a clear definition. The description adds no extra parameter meaning beyond what the schema already provides, so a 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 'One fund's latest filing and its investors' clearly identifies the resource and what data is returned, distinguishing it from sibling tools like fund_history and fund_holdings. However, it lacks a explicit verb (e.g., 'retrieves'), relying on the title and name for the action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 no guidance on when to use this tool versus alternatives. Sibling tools such as fund_history and fund_holdings likely overlap in functionality, but no comparison or exclusions are mentioned. The only implied usage is that this tool focuses on a single fund's latest filing and investors.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_investorGet an investorARead-onlyIdempotentInspect
One investor's portfolio links (funds they run or back) and featured fund.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Investor slug (URL identifier). |
Output Schema
| Name | Required | Description |
|---|---|---|
| investor | Yes | |
| portfolios | Yes | |
| provenance | Yes | |
| featured_fund | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety coverage is well established. The description adds the specific return subjects (portfolio links, featured fund) but does not disclose additional behavioral traits such as error handling, ordering, or authorization requirements.
Agents need to know what a tool does to the 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, tightly written sentence that conveys the essential output of the tool without repetition. It is front-loaded with the resource type and adds clarifying parenthetical detail, earning its place with minimal 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 simplicity (one required parameter, strong annotations, and an existing output schema), the description is sufficient for an agent to understand what the tool does. It could be slightly more explicit about the scope (e.g., 'by slug'), but that is already captured by 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?
The input schema has 100% coverage for the single 'slug' parameter, including examples and a description of it as an 'Investor slug (URL identifier).' The tool description adds no further parameter-level meaning, so the schema itself carries the full 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 identifies the resource (an investor) and the specific payload (portfolio links and featured fund), distinguishing it from sibling tools like get_fund and get_stock. However, it is phrased as a noun phrase rather than a clear imperative verb like 'Returns' or 'Lists,' relying on the title for the verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied: the description indicates this tool provides a single investor's portfolio links and featured fund, so an agent can infer it is for investor-specific lookups. It does not explicitly contrast with alternatives or state when not to use it, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stockGet a held stockBRead-onlyIdempotentInspect
One company as held by tracked funds: holders, values, and last-quarter moves.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker (dots allowed, e.g. BRK.A). |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| ticker | Yes | |
| listing | Yes | |
| positions | Yes | |
| provenance | Yes | |
| total_value | Yes | |
| single_class | Yes | |
| latest_earnings | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false, openWorldHint=false), lowering the disclosure burden. The description adds useful context by scoping the data to 'tracked funds' and previewing the returned content, but it does not clarify semantics like how 'last-quarter moves' are computed or as-of what date the values are.
Agents need to know what a tool does to the 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 efficient line with the topic front-loaded before a colon-separated content list; there is zero filler. It loses a point for being a verbless fragment, which makes it slightly less self-contained as a 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?
For a one-parameter, fully-annotated, read-only tool with an output schema present, the description covers the essentials: what entity it addresses and what data it returns. The remaining gaps — no sibling distinction from fund_holdings and no definition of 'last-quarter moves' — are real but minor for this simple 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%: the ticker parameter already includes a type, examples (AAPL, BRK.A), and a description noting dots are allowed. With the schema carrying the full burden, the baseline of 3 applies; the description adds nothing about 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 names a specific resource ('One company as held by tracked funds') and enumerates the data content (holders, values, last-quarter moves), which distinguishes it from siblings like stock_earnings, stock_financials, and stock_insiders. It stops short of a 5 because it is a noun phrase with no explicit verb — 'get' appears only in the title — and it does not clearly differentiate itself from fund_holdings, which could plausibly cover the same data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to call this tool versus alternatives; it never mentions siblings or exclusions. The closest rival, fund_holdings, is not addressed, leaving the agent to guess whether to use this tool or fund_holdings for a holdings query.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insider_feedInsider transaction feedARead-onlyIdempotentInspect
Recent Form 4/5 insider transactions across all held stocks, newest first. Filterable by transaction type and owner. Page 2+ requires FolioFact Pro.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Owner name query. | |
| dir | No | Sort direction. | |
| page | No | Page number (deep pages require Pro). | |
| sort | No | Sort column. | |
| filter | No | Transaction type filter. | |
| per_page | No | Rows per page. |
Output Schema
| Name | Required | Description |
|---|---|---|
| dir | Yes | |
| sort | Yes | |
| query | Yes | |
| filter | Yes | |
| pagination | Yes | |
| provenance | Yes | |
| coverage_on | Yes | |
| transactions | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive; the description adds valuable context such as default ordering ('newest first'), the pagination paywall ('Page 2+ requires FolioFact Pro'), and the universe of stocks ('all held stocks'). These go beyond the structured annotations to inform the agent of constraints.
Agents need to know what a tool does to the 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-loads the primary purpose, and includes only high-value constraints (newest first, Pro requirement, filterability). Every phrase earns its place with 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 the tool's moderate complexity (6 optional parameters), strong annotations, and an existing output schema, the description covers the core semantics, scope, ordering, filtering, and a key limitation (Pro paywall). The output schema handles return value details, so the description is sufficient 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 coverage is 100%, so the baseline is 3. The description reinforces that the tool is filterable by transaction type and owner, which maps to parameters, and its pagination note aligns with the 'page' parameter already explained in the schema. However, it adds no new parameter-level detail 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 states a specific resource ('Form 4/5 insider transactions') and action/scope ('across all held stocks, newest first'), which clearly distinguishes it from sibling tools like fund_holdings or get_stock. It also mentions filterability, making the tool's function 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 provides clear context for when to use the tool (viewing recent insider transactions for held stocks) and implicitly excludes other uses by naming its specific scope. It does not explicitly name alternatives or when-not-to-use, but the domain is sufficiently distinct from siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSearch funds, stocks, and insidersARead-onlyIdempotentInspect
Bounded cross-domain search: funds by name, stocks by ticker/name, and insider transactions by owner. The same scopes the web search uses. A blank or missing query returns empty buckets, mirroring GET /api/v1/search.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search query (fund names, tickers, insider names). |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | |
| results | Yes | |
| provenance | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, and non-destructive behavior; the description adds the important edge-case behavior that blank or missing queries return empty buckets. It also states the bounded scope, echoing the closed-world annotation, and contains no contradiction with 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 deliver scope, domain mapping, and empty-query behavior with no filler. The most important differentiator, bounded cross-domain search, 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 one-optional-parameter search tool with a rich output schema and strong annotations, the description covers purpose, scope, domain mapping, and the edge case. There is no essential context missing for correct invocation, though sibling-selection guidance could be stronger.
Complex tools with many parameters or behaviors need more documentation. 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 documents the single query parameter with examples, and the description goes further by mapping query forms to each domain: funds by name, stocks by ticker/name, and insider transactions by owner. It also clarifies the optional-parameter case with the empty-bucket behavior, so parameter semantics are fully covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the search verb, enumerates the three resources (funds, stocks, and insider transactions), and states the fields each can be queried by. This makes it easy to distinguish from sibling getters like get_fund, get_stock, and insider_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?
It clearly identifies the tool as a cross-domain search entry point with the same scopes as web search, so an agent can infer when a broad query is intended. However, it never says when to prefer the specific sibling tools instead, leaving exclusion guidance implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stock_earningsStock AI Earnings ReportARead-onlyIdempotentInspect
The latest cited AI Earnings Report for one stock (or a stable period with period). Requires FolioFact Pro.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Optional stable report slug, for example 2026-03-31-quarter. | |
| ticker | Yes | Stock ticker (dots allowed). | |
| include_full | No | Request full Pro analysis (always returned to Pro callers). |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| access | Yes | |
| report | Yes | |
| ticker | Yes | |
| provenance | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds meaningful context beyond that by disclosing the FolioFact Pro requirement and clarifying that the report is the latest cited one unless a stable period slug is supplied. This is useful behavioral information for an agent deciding whether it can invoke the 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 two short sentences with no filler. The core purpose is front-loaded, and the access requirement is stated separately and clearly. Every phrase 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 simple read-only tool with full schema coverage, annotations, and an output schema, the description is nearly complete. It covers purpose, scope, and an access restriction. The only gap is that it does not help an agent choose between this and closely related siblings like stock_financials, though the AI Earnings Report naming makes that distinction reasonably inferable.
Complex tools with many parameters or behaviors need more documentation. 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 three parameters and their exact meanings, so schema_description_coverage is 100%. The description adds a little extra framing by mentioning 'one stock' and the stable-period use of `period`, but it does not materially supplement 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 states a clear resource and action: retrieving the latest cited AI Earnings Report for a single stock, with an optional stable period. It also names a required access condition (FolioFact Pro). It does not explicitly differentiate this from sibling tools like stock_financials or compare_stocks, so it stops short of a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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: use it for one stock or a stable period, and only with FolioFact Pro. It does not explicitly state when not to use it or point to alternatives such as compare_stocks for multi-stock comparisons, but the intended scope is apparent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stock_financialsStock financial statements and valuationBRead-onlyIdempotentInspect
Financial statements (yearly and quarterly) and the valuation summary (enterprise value, FCF/EV and OCF/EV yields). Requires FolioFact Pro.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker (dots allowed). |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| series | Yes | |
| ticker | Yes | |
| summary | Yes | |
| provenance | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, and non-destructive behavior. The description adds the requirement for FolioFact Pro, which is a meaningful operational constraint not in the annotations. It does not disclose rate limits, pagination, or data freshness, but given the strong annotation coverage, the added Pro requirement justifies a middle score.
Agents need to know what a tool does to the 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 efficiently communicates the core content (financial statements, valuation summary) and the Pro requirement. It is front-loaded with the most important information and contains no fluff. It is concise and well-structured, though it could arguably be split into two sentences for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, a single parameter, and the presence of an output schema (which covers return values), the description is largely complete. It specifies the types of data included (yearly/quarterly statements, valuation yields) and the access requirement (Pro). No major gaps are apparent for a read-only tool with a single ticker input.
Complex tools with many parameters or behaviors need more documentation. 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 provides 100% coverage for the single parameter 'ticker' with a clear description. The tool description does not add any parameter-specific details beyond the schema. Since coverage is complete, the baseline of 3 is appropriate, and there is no extra semantic value from the 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 clearly states the tool's purpose: it provides financial statements (yearly and quarterly) and a valuation summary including specific metrics like enterprise value, FCF/EV and OCF/EV yields. It uses a specific resource (financial statements and valuation) and distinguishes itself from siblings like stock_earnings and stock_options by focusing on statements and valuation, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 offers no guidance on when to use this tool versus alternatives like get_stock or stock_earnings. It only mentions a prerequisite ('Requires FolioFact Pro'), which is a condition for use but not a comparison to other tools. The agent must infer usage from the name and sibling context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stock_insidersStock insider transactionsARead-onlyIdempotentInspect
Recent Form 4/5 insider transactions for one company. Requires FolioFact Pro.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker (dots allowed). |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| ticker | Yes | |
| provenance | Yes | |
| coverage_on | Yes | |
| transactions | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description does not need to repeat these. It adds valuable context by stating 'Requires FolioFact Pro' (an access restriction) and specifying 'Form 4/5' (the exact regulatory filing type). This goes beyond the structured fields without contradicting them, earning a 4.
Agents need to know what a tool does to the 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 short sentences: 'Recent Form 4/5 insider transactions for one company. Requires FolioFact Pro.' Every piece of information (content type, scope, access requirement) earns its place. It is front-loaded and free of any irrelevant detail, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 simplicity (one parameter, output schema present, annotations cover safety), the description is largely complete. It states the data type (Form 4/5), the granularity (one company), and a key prerequisite (Pro subscription). Minor details like how 'recent' is defined or pagination are not mentioned, but the output schema likely covers return structure. Overall, it provides sufficient context for a straightforward 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 provides 100% coverage for the single parameter 'ticker' with a description ('Stock ticker (dots allowed).'). The description adds no additional parameter semantics or examples. With full schema coverage, the baseline is 3, and there is nothing extra to justify a higher 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 description clearly states the tool's function: 'Recent Form 4/5 insider transactions for one company.' It uses a specific verb ('transactions') and resource ('insider transactions'), and explicitly limits scope to 'one company,' distinguishing it from broader tools like insider_feed. This is a precise and unambiguous purpose statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 (single company vs. a feed) but does not explicitly mention alternatives or when not to use this tool. The phrase 'for one company' suggests it is for a single ticker, but no exclusions or sibling tool comparisons are provided. This is clear context without explicit guidance, so a 3 is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stock_optionsStock options-market snapshotARead-onlyIdempotentInspect
Daily 30-day implied volatility history for one company. Requires FolioFact Pro.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Stock ticker (dots allowed). |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| stale | Yes | |
| latest | Yes | |
| ticker | Yes | |
| history | Yes | |
| provenance | Yes | |
| expected_reading_date | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent behavior, so the description adds value by disclosing the FolioFact Pro subscription requirement and the specific daily 30-day history scope. No contradictions with annotations; the tool is read-only and the description reinforces that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the core purpose and immediately followed by the critical access requirement. Every word earns its place; no redundancy or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 rich annotations, a simple one-parameter schema, and an output schema, so the description does not need to explain return values. It covers the essential behavioral constraint (Pro requirement) and scope. Minor gap: does not mention that the data is historical series, but output schema likely covers 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 coverage is 100% with the ticker parameter well described ('Stock ticker (dots allowed)'). The tool description adds 'for one company,' clarifying single-ticker usage, but does not introduce format details beyond what the schema already 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 clearly identifies the resource (daily 30-day implied volatility history) and scope (one company), distinguishing it from siblings like stock_earnings or get_stock. It lacks an explicit verb but the noun phrase 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?
The description mentions 'for one company,' implying single-stock usage, and 'Requires FolioFact Pro' sets a clear prerequisite. However, it does not explicitly state when to use this tool instead of alternatives or mention any exclusions, though sibling names suggest differentiation from general stock data tools.
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.
3 tool updates
- Changed
compare_stocks2 fields changed- added
Output schema / properties / columns / items / properties / valuation_basisAdded value: +{ + "additionalProperties": false, + "properties": { + "accession_number": { + "type": [ + "string", + "null" + ] + }, + "calculation_version": { + "type": "string" + }, + "cash_flow_period": { + "type": [ + "string", + "null" + ] + }, + "description": { + "type": "string" + }, + "estimated": { + "type": "boolean" + }, + "ev_unavailable_reason": { + "type": [ + "string", + "null" + ] + }, + "mapping_sources": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "measurement": { + "type": [ + "string", + "null" + ] + }, + "price_on": { + "format": "date", + "type": [ + "string", + "null" + ] + }, + "shares_on": { + "format": "date", + "type": [ + "string", + "null" + ] + }, + "source_url": { + "type": [ + "string", + "null" + ] + }, + "statement_on": { + "format": "date", + "type": [ + "string", + "null" + ] + }, + "unavailable_reason": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "statement_on", + "shares_on", + "price_on", + "measurement", + "estimated", + "description", + "unavailable_reason", + "ev_unavailable_reason", + "accession_number", + "source_url", + "mapping_sources", + "calculation_version", + "cash_flow_period" + ], + "type": "object" +} - changed
Output schema / properties / columns / items / requiredPrevious value: -[ - "ticker", - "name", - "listing", - "market_cap", - "enterprise_value", - "ocf_ev_yield", - "fcf_ev_yield", - "price_basis_kind", - "valuation_observed_at", - "financial_point", - "fund_summary", - "insider_summary" -]New value: +[ + "ticker", + "name", + "listing", + "market_cap", + "enterprise_value", + "ocf_ev_yield", + "fcf_ev_yield", + "price_basis_kind", + "valuation_observed_at", + "financial_point", + "fund_summary", + "insider_summary", + "valuation_basis" +]
- Changed
fund_holdings1 field changed- changed
Output schema / properties / holdings / items / properties / change / enumPrevious value: -[ - "new", - "add", - "trim", - "hold", - "sold" -]New value: +[ + "new", + "add", + "trim", + "hold", + "sold", + "unknown" +]
- Changed
stock_financials2 fields changed- added
Output schema / properties / summary / properties / valuation_basisAdded value: +{ + "additionalProperties": false, + "properties": { + "accession_number": { + "type": [ + "string", + "null" + ] + }, + "calculation_version": { + "type": "string" + }, + "cash_flow_period": { + "type": [ + "string", + "null" + ] + }, + "description": { + "type": "string" + }, + "estimated": { + "type": "boolean" + }, + "ev_unavailable_reason": { + "type": [ + "string", + "null" + ] + }, + "mapping_sources": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "measurement": { + "type": [ + "string", + "null" + ] + }, + "price_on": { + "format": "date", + "type": [ + "string", + "null" + ] + }, + "shares_on": { + "format": "date", + "type": [ + "string", + "null" + ] + }, + "source_url": { + "type": [ + "string", + "null" + ] + }, + "statement_on": { + "format": "date", + "type": [ + "string", + "null" + ] + }, + "unavailable_reason": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "statement_on", + "shares_on", + "price_on", + "measurement", + "estimated", + "description", + "unavailable_reason", + "ev_unavailable_reason", + "accession_number", + "source_url", + "mapping_sources", + "calculation_version", + "cash_flow_period" + ], + "type": "object" +} - changed
Output schema / properties / summary / requiredPrevious value: -[ - "market_cap", - "enterprise_value", - "fcf_ev_yield_ttm", - "ocf_ev_yield_ttm", - "fcf_ev_yield_year", - "ocf_ev_yield_year", - "price", - "price_reported_on", - "price_basis_kind", - "valuation_observed_at", - "valuation_label", - "revenue_growth_quarter", - "revenue_growth_year", - "revenue_growth_three_year_cagr", - "share_reduction_quarter", - "share_reduction_year", - "share_reduction_two_years", - "share_reduction_three_years" -]New value: +[ + "market_cap", + "enterprise_value", + "fcf_ev_yield_ttm", + "ocf_ev_yield_ttm", + "fcf_ev_yield_year", + "ocf_ev_yield_year", + "price", + "price_reported_on", + "price_basis_kind", + "valuation_observed_at", + "valuation_label", + "valuation_basis", + "revenue_growth_quarter", + "revenue_growth_year", + "revenue_growth_three_year_cagr", + "share_reduction_quarter", + "share_reduction_year", + "share_reduction_two_years", + "share_reduction_three_years" +]
4 tool updates
- Changed
compare_stocks2 fields changed- added
Output schema / properties / columns / items / properties / listingAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "disclosure_note": { + "type": "string" + }, + "event_type": { + "enum": [ + "ipo", + "direct_listing", + "spin_off" + ], + "type": "string" + }, + "listed_on": { + "format": "date", + "type": "string" + }, + "recently_listed": { + "type": "boolean" + }, + "source_url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "listed_on", + "event_type", + "recently_listed", + "source_url", + "disclosure_note" + ], + "type": "object" + }, + { + "type": "null" + } + ] +} - changed
Output schema / properties / columns / items / requiredPrevious value: -[ - "ticker", - "name", - "market_cap", - "enterprise_value", - "ocf_ev_yield", - "fcf_ev_yield", - "price_basis_kind", - "valuation_observed_at", - "financial_point", - "fund_summary", - "insider_summary" -]New value: +[ + "ticker", + "name", + "listing", + "market_cap", + "enterprise_value", + "ocf_ev_yield", + "fcf_ev_yield", + "price_basis_kind", + "valuation_observed_at", + "financial_point", + "fund_summary", + "insider_summary" +]
- Changed
fund_holdings2 fields changed- added
Output schema / properties / holdings / items / properties / security / properties / listingAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "disclosure_note": { + "type": "string" + }, + "event_type": { + "enum": [ + "ipo", + "direct_listing", + "spin_off" + ], + "type": "string" + }, + "listed_on": { + "format": "date", + "type": "string" + }, + "recently_listed": { + "type": "boolean" + }, + "source_url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "listed_on", + "event_type", + "recently_listed", + "source_url", + "disclosure_note" + ], + "type": "object" + }, + { + "type": "null" + } + ] +} - changed
Output schema / properties / holdings / items / properties / security / requiredPrevious value: -[ - "ticker", - "name" -]New value: +[ + "ticker", + "name", + "listing" +]
- Changed
get_stock2 fields changed- added
Output schema / properties / listingAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "disclosure_note": { + "type": "string" + }, + "event_type": { + "enum": [ + "ipo", + "direct_listing", + "spin_off" + ], + "type": "string" + }, + "listed_on": { + "format": "date", + "type": "string" + }, + "recently_listed": { + "type": "boolean" + }, + "source_url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "listed_on", + "event_type", + "recently_listed", + "source_url", + "disclosure_note" + ], + "type": "object" + }, + { + "type": "null" + } + ] +} - changed
Output schema / requiredPrevious value: -[ - "ticker", - "name", - "total_value", - "single_class", - "latest_earnings", - "positions", - "provenance" -]New value: +[ + "ticker", + "name", + "listing", + "total_value", + "single_class", + "latest_earnings", + "positions", + "provenance" +]
- Changed
search2 fields changed- added
Output schema / properties / results / properties / stocks / items / properties / listingAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "disclosure_note": { + "type": "string" + }, + "event_type": { + "enum": [ + "ipo", + "direct_listing", + "spin_off" + ], + "type": "string" + }, + "listed_on": { + "format": "date", + "type": "string" + }, + "recently_listed": { + "type": "boolean" + }, + "source_url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "listed_on", + "event_type", + "recently_listed", + "source_url", + "disclosure_note" + ], + "type": "object" + }, + { + "type": "null" + } + ] +} - changed
Output schema / properties / results / properties / stocks / items / requiredPrevious value: -[ - "ticker", - "name" -]New value: +[ + "ticker", + "name", + "listing" +]
2 tool updates
- Changed
fund_holdings2 fields changed- added
Output schema / properties / holdings / items / properties / position_typeAdded value: +{ + "enum": [ + "direct", + "call", + "put" + ], + "type": "string" +} - changed
Output schema / properties / holdings / items / requiredPrevious value: -[ - "security", - "shares", - "value", - "percent_of_fund", - "change", - "change_percent" -]New value: +[ + "security", + "position_type", + "shares", + "value", + "percent_of_fund", + "change", + "change_percent" +]
- Changed
stock_earnings1 field changed- changed
Input schema / properties / include_full / descriptionPrevious value: -"Request full Pro analysis. Defaults to true for Pro callers and false otherwise."New value: +"Request full Pro analysis (always returned to Pro callers)."
2 tool updates
- Changed
compare_stocks3 fields changed- added
Output schema / properties / columns / items / properties / price_basis_kindAdded value: +{ + "anyOf": [ + { + "enum": [ + "daily_close", + "intraday", + "implied_13f" + ], + "type": "string" + }, + { + "type": "null" + } + ] +} - added
Output schema / properties / columns / items / properties / valuation_observed_atAdded value: +{ + "format": "date-time", + "type": [ + "string", + "null" + ] +} - changed
Output schema / properties / columns / items / requiredPrevious value: -[ - "ticker", - "name", - "market_cap", - "enterprise_value", - "ocf_ev_yield", - "fcf_ev_yield", - "financial_point", - "fund_summary", - "insider_summary" -]New value: +[ + "ticker", + "name", + "market_cap", + "enterprise_value", + "ocf_ev_yield", + "fcf_ev_yield", + "price_basis_kind", + "valuation_observed_at", + "financial_point", + "fund_summary", + "insider_summary" +]
- Changed
stock_financials5 fields changed- removed
Output schema / properties / summary / properties / price / anyOfRemoved value: -[ - { - "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$", - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / summary / properties / price / typeAdded value: +"null" - changed
Output schema / properties / summary / properties / price_basis_kind / anyOfPrevious value: -[ - { - "enum": [ - "daily_close", - "implied_13f" - ], - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "enum": [ + "daily_close", + "intraday", + "implied_13f" + ], + "type": "string" + }, + { + "type": "null" + } +] - added
Output schema / properties / summary / properties / valuation_observed_atAdded value: +{ + "format": "date-time", + "type": [ + "string", + "null" + ] +} - changed
Output schema / properties / summary / requiredPrevious value: -[ - "market_cap", - "enterprise_value", - "fcf_ev_yield_ttm", - "ocf_ev_yield_ttm", - "fcf_ev_yield_year", - "ocf_ev_yield_year", - "price", - "price_reported_on", - "price_basis_kind", - "valuation_label", - "revenue_growth_quarter", - "revenue_growth_year", - "revenue_growth_three_year_cagr", - "share_reduction_quarter", - "share_reduction_year", - "share_reduction_two_years", - "share_reduction_three_years" -]New value: +[ + "market_cap", + "enterprise_value", + "fcf_ev_yield_ttm", + "ocf_ev_yield_ttm", + "fcf_ev_yield_year", + "ocf_ev_yield_year", + "price", + "price_reported_on", + "price_basis_kind", + "valuation_observed_at", + "valuation_label", + "revenue_growth_quarter", + "revenue_growth_year", + "revenue_growth_three_year_cagr", + "share_reduction_quarter", + "share_reduction_year", + "share_reduction_two_years", + "share_reduction_three_years" +]
6 tool updates
- Added
compare_stocks - Changed
get_stock2 fields changed- added
Output schema / properties / latest_earningsAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "period": { + "additionalProperties": false, + "properties": { + "end_on": { + "format": "date", + "type": "string" + }, + "kind": { + "enum": [ + "quarter", + "half_year", + "annual" + ], + "type": "string" + }, + "label": { + "type": "string" + }, + "slug": { + "type": "string" + } + }, + "required": [ + "slug", + "label", + "kind", + "end_on" + ], + "type": "object" + }, + "published_at": { + "format": "date-time", + "type": [ + "string", + "null" + ] + }, + "revision": { + "type": "integer" + }, + "teaser": { + "additionalProperties": false, + "properties": { + "headline": { + "type": "string" + }, + "highlights": { + "items": { + "type": "string" + }, + "maxItems": 3, + "minItems": 3, + "type": "array" + }, + "summary": { + "type": "string" + } + }, + "required": [ + "headline", + "summary", + "highlights" + ], + "type": "object" + } + }, + "required": [ + "period", + "revision", + "published_at", + "teaser" + ], + "type": "object" + }, + { + "type": "null" + } + ] +} - changed
Output schema / requiredPrevious value: -[ - "ticker", - "name", - "total_value", - "single_class", - "positions", - "provenance" -]New value: +[ + "ticker", + "name", + "total_value", + "single_class", + "latest_earnings", + "positions", + "provenance" +]
- Added
stock_earnings - Added
stock_financials - Added
stock_insiders - Added
stock_options
8 tool updates
- First observed
fetch_page - First observed
fund_history - First observed
fund_holdings - First observed
get_fund - First observed
get_investor - First observed
get_stock - First observed
insider_feed - First observed
search
Related MCP Connectors
SEC filings, company financials, holdings, earnings calls, stock prices, options and macro data.
Primary-source equity research: scores, screens, filings, insider trades and 13F holdings.
Read-only public-company financials, KPIs, benchmarks, filings, and insider activity.
Read-only stock research: company scores, the Monthly Top 10, the screener and your own portfolio.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceProvides derived financial intelligence for AI agents, including insider activity analysis, earnings surprises, institutional moves, stock screening with a proprietary composite value score, and macro indicators.MIT
- AlicenseAqualityDmaintenanceProvides read-only access to Robinhood portfolio data for research and analysis. Enables users to query portfolio values, positions, stock quotes, fundamentals, historical data, news, earnings, analyst ratings, and dividends through natural language.1353 PyPI39MIT
- AlicenseNot gradedqualityBmaintenanceEnables read-only research into parsed SEC events keyed by CIK and CUSIP, including 8-K items, Form 144, Form D, FTD series, XBRL facts, Form 4 insider trades, and 13F filings.MIT
- FlicenseNot gradedqualityCmaintenanceProvides read-only access to a SQL Server investment database, enabling searching symbols, retrieving prices and history, and generating research snapshots.-
Glama MCP Gateway
Add one secure layer between your agents and this server.