Skip to main content
Glama

Server Details

Read-only value-investing fund, holdings, financial, options, and insider research.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 55 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.8/5.0

Scored across 13 tools

Disambiguation4/5

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 Consistency4/5

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.

Tool Count5/5

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.

Completeness4/5

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 tools
compare_stocksCompare stocks side by sideA
Read-onlyIdempotent
Inspect

Aligned multi-stock comparison: valuation, latest financial point, fund conviction, and insider activity. Requires FolioFact Pro.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickersYesComma-separated tickers (2–6, dots allowed).
insider_windowNoInsider activity window.

Output Schema

ParametersJSON Schema
NameRequiredDescription
columnsYes
tickersYes
provenanceYes
insider_windowYes
unknown_tickersYes
submitted_tickersYes
insider_window_labelYes

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 pageA
Read-onlyIdempotent
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPublic path, e.g. /blog/how-to-read-a-13f-without-overreading-it, /agents, or /llms.txt.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pathYes
textYes
titleNo
provenanceYes

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 historyA
Read-onlyIdempotent
Inspect

Quarter-by-quarter filing history and a summary (turnover, concentration, favorites).

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesFund slug (URL identifier).

Output Schema

ParametersJSON Schema
NameRequiredDescription
fundYes
summaryYes
quartersYes
provenanceYes

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 holdingsA
Read-onlyIdempotent
Inspect

A fund's current portfolio positions with quarter-over-quarter change.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesFund slug (URL identifier).

Output Schema

ParametersJSON Schema
NameRequiredDescription
fundYes
quarterYes
holdingsYes
provenanceYes
total_valueYes

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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 fundB
Read-onlyIdempotent
Inspect

One fund's latest filing and its investors.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesFund slug (URL identifier).

Output Schema

ParametersJSON Schema
NameRequiredDescription
fundYes
filingYes
investorsYes
portfolioYes
provenanceYes

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 investorA
Read-onlyIdempotent
Inspect

One investor's portfolio links (funds they run or back) and featured fund.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesInvestor slug (URL identifier).

Output Schema

ParametersJSON Schema
NameRequiredDescription
investorYes
portfoliosYes
provenanceYes
featured_fundYes

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 stockB
Read-onlyIdempotent
Inspect

One company as held by tracked funds: holders, values, and last-quarter moves.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesStock ticker (dots allowed, e.g. BRK.A).

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYes
tickerYes
listingYes
positionsYes
provenanceYes
total_valueYes
single_classYes
latest_earningsYes

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 feedA
Read-onlyIdempotent
Inspect

Recent Form 4/5 insider transactions across all held stocks, newest first. Filterable by transaction type and owner. Page 2+ requires FolioFact Pro.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoOwner name query.
dirNoSort direction.
pageNoPage number (deep pages require Pro).
sortNoSort column.
filterNoTransaction type filter.
per_pageNoRows per page.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dirYes
sortYes
queryYes
filterYes
paginationYes
provenanceYes
coverage_onYes
transactionsYes

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

stock_earningsStock AI Earnings ReportA
Read-onlyIdempotent
Inspect

The latest cited AI Earnings Report for one stock (or a stable period with period). Requires FolioFact Pro.

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoOptional stable report slug, for example 2026-03-31-quarter.
tickerYesStock ticker (dots allowed).
include_fullNoRequest full Pro analysis (always returned to Pro callers).

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYes
accessYes
reportYes
tickerYes
provenanceYes

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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 valuationB
Read-onlyIdempotent
Inspect

Financial statements (yearly and quarterly) and the valuation summary (enterprise value, FCF/EV and OCF/EV yields). Requires FolioFact Pro.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesStock ticker (dots allowed).

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYes
seriesYes
tickerYes
summaryYes
provenanceYes

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 transactionsA
Read-onlyIdempotent
Inspect

Recent Form 4/5 insider transactions for one company. Requires FolioFact Pro.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesStock ticker (dots allowed).

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYes
tickerYes
provenanceYes
coverage_onYes
transactionsYes

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 snapshotA
Read-onlyIdempotent
Inspect

Daily 30-day implied volatility history for one company. Requires FolioFact Pro.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesStock ticker (dots allowed).

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYes
staleYes
latestYes
tickerYes
historyYes
provenanceYes
expected_reading_dateYes

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

  1. 3 tool updates
    • Changedcompare_stocks2 fields changed
      • addedOutput schema / properties / columns / items / properties / valuation_basis
        Added 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"
        +}
      • changedOutput schema / properties / columns / items / required
        Previous 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"
        +]
    • Changedfund_holdings1 field changed
      • changedOutput schema / properties / holdings / items / properties / change / enum
        Previous value: -[
        -  "new",
        -  "add",
        -  "trim",
        -  "hold",
        -  "sold"
        -]New value: +[
        +  "new",
        +  "add",
        +  "trim",
        +  "hold",
        +  "sold",
        +  "unknown"
        +]
    • Changedstock_financials2 fields changed
      • addedOutput schema / properties / summary / properties / valuation_basis
        Added 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"
        +}
      • changedOutput schema / properties / summary / required
        Previous 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"
        +]
  2. 4 tool updates
    • Changedcompare_stocks2 fields changed
      • addedOutput schema / properties / columns / items / properties / listing
        Added 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"
        +    }
        +  ]
        +}
      • changedOutput schema / properties / columns / items / required
        Previous 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"
        +]
    • Changedfund_holdings2 fields changed
      • addedOutput schema / properties / holdings / items / properties / security / properties / listing
        Added 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"
        +    }
        +  ]
        +}
      • changedOutput schema / properties / holdings / items / properties / security / required
        Previous value: -[
        -  "ticker",
        -  "name"
        -]New value: +[
        +  "ticker",
        +  "name",
        +  "listing"
        +]
    • Changedget_stock2 fields changed
      • addedOutput schema / properties / listing
        Added 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"
        +    }
        +  ]
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "ticker",
        -  "name",
        -  "total_value",
        -  "single_class",
        -  "latest_earnings",
        -  "positions",
        -  "provenance"
        -]New value: +[
        +  "ticker",
        +  "name",
        +  "listing",
        +  "total_value",
        +  "single_class",
        +  "latest_earnings",
        +  "positions",
        +  "provenance"
        +]
    • Changedsearch2 fields changed
      • addedOutput schema / properties / results / properties / stocks / items / properties / listing
        Added 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"
        +    }
        +  ]
        +}
      • changedOutput schema / properties / results / properties / stocks / items / required
        Previous value: -[
        -  "ticker",
        -  "name"
        -]New value: +[
        +  "ticker",
        +  "name",
        +  "listing"
        +]
  3. 2 tool updates
    • Changedfund_holdings2 fields changed
      • addedOutput schema / properties / holdings / items / properties / position_type
        Added value: +{
        +  "enum": [
        +    "direct",
        +    "call",
        +    "put"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / holdings / items / required
        Previous value: -[
        -  "security",
        -  "shares",
        -  "value",
        -  "percent_of_fund",
        -  "change",
        -  "change_percent"
        -]New value: +[
        +  "security",
        +  "position_type",
        +  "shares",
        +  "value",
        +  "percent_of_fund",
        +  "change",
        +  "change_percent"
        +]
    • Changedstock_earnings1 field changed
      • changedInput schema / properties / include_full / description
        Previous 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)."
  4. 2 tool updates
    • Changedcompare_stocks3 fields changed
      • addedOutput schema / properties / columns / items / properties / price_basis_kind
        Added value: +{
        +  "anyOf": [
        +    {
        +      "enum": [
        +        "daily_close",
        +        "intraday",
        +        "implied_13f"
        +      ],
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • addedOutput schema / properties / columns / items / properties / valuation_observed_at
        Added value: +{
        +  "format": "date-time",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / columns / items / required
        Previous 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"
        +]
    • Changedstock_financials5 fields changed
      • removedOutput schema / properties / summary / properties / price / anyOf
        Removed value: -[
        -  {
        -    "pattern": "^-?[0-9]+(?:\\.[0-9]+)?$",
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / summary / properties / price / type
        Added value: +"null"
      • changedOutput schema / properties / summary / properties / price_basis_kind / anyOf
        Previous value: -[
        -  {
        -    "enum": [
        -      "daily_close",
        -      "implied_13f"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "enum": [
        +      "daily_close",
        +      "intraday",
        +      "implied_13f"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / summary / properties / valuation_observed_at
        Added value: +{
        +  "format": "date-time",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / summary / required
        Previous 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"
        +]
  5. 6 tool updates
    • Addedcompare_stocks
    • Changedget_stock2 fields changed
      • addedOutput schema / properties / latest_earnings
        Added 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"
        +    }
        +  ]
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "ticker",
        -  "name",
        -  "total_value",
        -  "single_class",
        -  "positions",
        -  "provenance"
        -]New value: +[
        +  "ticker",
        +  "name",
        +  "total_value",
        +  "single_class",
        +  "latest_earnings",
        +  "positions",
        +  "provenance"
        +]
    • Addedstock_earnings
    • Addedstock_financials
    • Addedstock_insiders
    • Addedstock_options
  6. 8 tool updates
    • First observedfetch_page
    • First observedfund_history
    • First observedfund_holdings
    • First observedget_fund
    • First observedget_investor
    • First observedget_stock
    • First observedinsider_feed
    • First observedsearch

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    Provides 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
  • A
    license
    A
    quality
    D
    maintenance
    Provides 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.
    13
    53 PyPI
    39
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables 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
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources