Skip to main content
Glama

Server Details

US stock fundamentals: SEC financial statements, valuation series, summaries, screens, chart images.

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 21 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL

TDQS

A4.4/5.0

Scored across 7 tools

Disambiguation4/5

Most tools target clearly distinct outputs: get_stock_summary (one ticker), compare_stocks (2-4 tickers), get_financial_statement (raw SEC line items), screen_stocks (universe filter), and list_metrics (catalog). The one fuzzy boundary is get_metric_series vs get_chart, which both address a metric's history but are separated by output type (JSON points vs PNG), and the descriptions explicitly steer selection.

Naming Consistency5/5

All seven tools follow a consistent verb_noun snake_case convention: get_chart, get_financial_statement, get_metric_series, get_stock_summary, list_metrics, compare_stocks, screen_stocks. The verbs (get/list/compare/screen) map predictably to the operation type.

Tool Count5/5

Seven tools is well-scoped for a financial data/charting server, with each tool earning its place across summary, comparison, screening, statements, series, charts, and metric discovery. No redundant or filler tools.

Completeness4/5

The surface covers the core read-only lifecycle well: discovery (list_metrics), single-entity lookup (get_stock_summary), multi-entity comparison (compare_stocks), screening, raw statements, and both series and chart renderings. Minor gaps exist (e.g. no bulk/portfolio fetch or non-fundamental data), but core analyst workflows are covered.

Available Tools

7 tools
compare_stocksCompare stocksA
Read-onlyIdempotent
Inspect

Use to compare companies against each other. Side-by-side headline fundamentals for 2–4 tickers (latest values with as-of context): market cap, close, P/E, P/S, margins, ROE, dividend yield, and 5-year revenue/EPS CAGRs. Uncovered symbols are reported honestly, not dropped silently.

NameRequiredDescriptionDefault
formatNojson (default): the full JSON as text. markdown: a compact table or list, fewer tokens. structuredContent is the full JSON either way.
symbolsYes2–4 ticker symbols

Output Schema

NameRequiredDescription
noteYes
stocksYes
compareUrlYes

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, non-destructive, and closed-world, so the safety profile is covered. The description still adds real behavioral context the annotations cannot: values are 'latest with as-of context', and missing symbols 'are reported honestly, not dropped silently' — a meaningful error-handling guarantee.

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?

Two sentences, no filler, front-loaded with the use case and field coverage. The final clause about uncovered symbols is short and carries non-obvious value, so no sentence is wasted.

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?

An output schema exists, so return values need not be explained. The description covers what is compared, the symbol range, freshness semantics, and missing-symbol behavior — everything an agent needs before invoking it.

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 already documents the symbols array (2–4) and the json/markdown format enum in detail. The description only restates the ticker count and field surface, adding nothing about the format parameter. Baseline 3 applies.

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?

Specific verb+resource ('compare companies') with an explicit scope ('side-by-side headline fundamentals for 2–4 tickers') and an enumerated field list. It is clearly distinguished from siblings like get_stock_summary (single stock) and screen_stocks (filtering a universe).

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?

'Use to compare companies against each other' states the triggering context plainly, and the 2–4 ticker bound makes the multi-company scenario concrete. No explicit when-not or named alternative (e.g., use get_stock_summary for one ticker) is offered, which keeps it 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.

get_chartChart image URLA
Read-onlyIdempotent
Inspect

Use when the answer should show a picture of a metric's history. A ready-to-embed 1600×900 PNG chart of a metric's history in TGMCharts' house style (watermarked, as-of stamped). Returns the canonical URL — fetch or embed it directly (); it is edge-cached and needs no key. Sector-gated or empty histories render an honest explanation card rather than failing.

NameRequiredDescriptionDefault
yearsNoTrailing window in years
metricYesChart-tier metric slug (see list_metrics)
symbolYesTicker symbol, e.g. AAPL
compareNoSecond ticker for grouped comparison bars (bar metrics only)

Output Schema

NameRequiredDescription
urlYes
labelYes
metricYes
symbolYes

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive and closed-world, but the description adds substantially more: watermarking, as-of stamping, edge caching, no API key required, and — most valuably — that sector-gated or empty histories return an honest explanation card instead of an error. That failure-mode disclosure is exactly what an agent needs and cannot get from annotations or schema.

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?

Three tight sentences, front-loaded with the usage condition, then the artifact, then the delivery guarantee and failure mode. Every clause carries information an agent would otherwise have to guess.

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?

For a read-only image-URL tool with a full output schema, the description covers what the agent must know: what is returned (canonical URL), how to consume it (<img src>), that no key is needed, and how degenerate inputs are handled. Nothing material 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 all four parameters (including the metric enum and the compare ticker) are already documented structurally. The description adds only a passing reference to 'chart-tier metric' and says nothing about years, metric slugs, or the compare-only-for-bar-metrics constraint, so the baseline 3 applies.

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?

States a specific verb (render/return) and resource (a metric's history as a chart image URL), including the concrete artifact: a 1600×900 PNG in house style. The 'picture of a metric's history' framing implicitly separates it from data-returning siblings like get_metric_series, so an agent can distinguish them without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Opens with an explicit usage trigger ('Use when the answer should show a picture of a metric's history'), which is a real selection criterion. It never names an alternative or states when-not to use it, so routing versus get_metric_series is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_financial_statementRaw financial statement (SEC EDGAR)A
Read-onlyIdempotent
Inspect

Use for line items as filed with the SEC (revenue, net income, cash flow, dividends paid, debt…) by year or quarter. Raw as-filed statement rows (income statement, balance sheet, or cash flow) sourced exclusively from SEC EDGAR XBRL company facts — public domain, latest-filed per period, honest nulls (never zero-filled, never vendor-backfilled). Derived quarters are disclosed. Token-frugal default: 5 fiscal years without per-value provenance; set include_provenance for the winning us-gaap tag + accession per value, or use https://tgmcharts.com/api/v1/statements/{symbol}/{statement} for full depth (30y, CSV).

NameRequiredDescriptionDefault
yearsNoTrailing fiscal years of rows (default 5; quarterly serves 4×years)
formatNojson (default): the full JSON as text. markdown: a compact table or list, fewer tokens. structuredContent is the full JSON either way.
periodNoannual (default) or quarterly
symbolYesTicker symbol, e.g. AAPL
statementYesWhich statement
include_provenanceNoInclude per-value provenance (us-gaap tag, accession, filed date). Default false to stay token-frugal.

Output Schema

NameRequiredDescription
cikYes
asOfYes
rowsYes
linksYes
periodYes
sourceYes
symbolYes
conceptsYes
currencyYes
statementYes
entityNameYes
methodologyYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover only the safety profile (read-only, idempotent), yet the description adds substantial behavior: exclusive SEC EDGAR XBRL sourcing, public-domain status, latest-filed-per-period semantics, honest nulls (never zero-filled or vendor-backfilled), disclosed derived quarters, and default token-frugal behavior. This is exactly the kind of context annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the use case and dense with signal; nearly every clause earns its place (sourcing, null policy, provenance, CSV fallback). It is a single long paragraph, which slightly hurts scannability, but there is little waste.

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 an output schema present, the description need not explain return shapes, and it fills the remaining gaps: data provenance, null semantics, quarterly derivation, and provenance opt-in. An agent has everything required to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/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, but the description adds real meaning: it explains the 5-year default, what include_provenance unlocks (winning us-gaap tag + accession per value), and offers a deeper alternative endpoint. That goes beyond the schema's per-parameter field descriptions.

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?

States a precise verb+resource ('line items as filed with the SEC... by year or quarter') and enumerates concrete content (revenue, net income, cash flow, dividends paid, debt). It also characterizes the scope as raw as-filed statement rows from EDGAR, which visibly separates it from derived-metric siblings like get_metric_series.

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 opening 'Use for line items as filed with the SEC' gives clear context for when to reach for this tool, and the token-frugal default plus the CSV depth alternative gives explicit guidance. It stops short of naming the sibling tools (e.g. get_metric_series) it should be preferred over, so an agent must infer the split.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_metric_seriesMetric history seriesA
Read-onlyIdempotent
Inspect

Use for a metric's history or trend (is the P/E high versus its past? how have margins moved?). Historical series for a TGMCharts-computed metric (daily valuation/yield lines, rolling TTM flows, quarterly margins). Points are even-time downsampled to max_points (default 120) to stay token-frugal — raw density is available at https://tgmcharts.com/api/v1/series/{symbol}/{metric}. points:null = intentionally withheld (sector-inappropriate, message included); [] = no stored history.

NameRequiredDescriptionDefault
yearsNoTrailing window in years (default: full stored history)
formatNojson (default): the full JSON as text. markdown: a compact table or list, fewer tokens. structuredContent is the full JSON either way.
metricYesSeries-tier metric slug (see list_metrics)
symbolYesTicker symbol, e.g. KO
max_pointsNoDownsample cap (default 120)

Output Schema

NameRequiredDescription
asOfYes
nameYes
unitYes
basisYes
labelYes
linksYes
yearsYes
metricYes
pointsYes
symbolYes
methodologyYes
applicabilityYes
downsampledToYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly/idempotent/non-destructive), and the description layers on real behavioral detail beyond them: even-time downsampling to max_points with a 120 default, the raw-density URL for full fidelity, and the exact meaning of points:null (intentionally withheld, message included) versus [] (no stored history). Those are non-obvious runtime traits an agent could not infer from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose then behavioral detail, and every clause carries information (downsampling, raw fallback, null-vs-empty semantics). It is dense — several parentheticals stacked in one paragraph — but not padded.

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 available, the description needn't explain return values, yet it still clarifies the two ambiguous return states (null vs []). Combined with the annotation coverage and the sampling contract, nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3; the description nonetheless adds useful semantics around max_points (downsampling cap, token-frugality rationale) and the escape hatch URL for un-downsampled density. It goes modestly beyond restating the schema, though format's json-vs-markdown tradeoff is largely left to 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?

States a specific verb+resource ('Historical series for a TGMCharts-computed metric') and enumerates the kinds of lines returned (daily valuation/yield, rolling TTM flows, quarterly margins). The motivating examples ('is the P/E high versus its past?') make the intent unambiguous relative to siblings like get_stock_summary or get_chart.

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?

Opens with an explicit when-to-use framing ('Use for a metric's history or trend') plus concrete question examples that tell an agent what class of query belongs here. It does not, however, name an alternative tool or state when-not to use it, so the routing guidance stops short of full disambiguation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_stock_summaryStock summaryA
Read-onlyIdempotent
Inspect

Use first for any question about one company. Compact fundamentals summary for one ticker (~5 KB): latest close, market cap, valuation ratios, margins, returns, dividend record, and 3/5/10-year growth CAGRs, with as-of dates and applicability notes. Null values are honest gaps or sector-inappropriate metrics — never zeros.

NameRequiredDescriptionDefault
formatNojson (default): the full JSON as text. markdown: a compact table or list, fewer tokens. structuredContent is the full JSON either way.
symbolYesTicker symbol, e.g. AAPL

Output Schema

NameRequiredDescription
asOfYes
nameYes
linksYes
priceYes
sectorYes
symbolYes
currencyYes
industryYes
dividendsYes
valuationYes
applicabilityYes
profitabilityYes
classificationYes
financialHealthYes
reportedCurrencyYes
growthCagrPercentYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/non-destructive/openWorld, so the description rightly focuses on data semantics: the ~5 KB size, included as-of dates, applicability notes, and the important null-handling rule ('honest gaps or sector-inappropriate metrics — never zeros'). That null rule is valuable context an agent could not infer from structured fields; only rate/pagination behavior is unstated.

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?

Front-loaded with the routing instruction ('Use first...'), then the content list, then the null-semantics caveat — a logical order with no filler. The contents enumeration is dense but each item earns its place by telling the agent what to expect.

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?

With an output schema present and annotations covering the safety profile, the description is nearly sufficient: it says when to use it and what it returns, and adds null semantics. The only gap is not clarifying when to prefer the sibling drill-down tools (get_chart, get_metric_series).

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%, and the format enum plus symbol are fully documented in the schema itself. The description mentions 'one ticker' but adds no syntax or format nuance beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Compact fundamentals summary for one ticker') and enumerates exactly what is returned (close, market cap, ratios, margins, returns, dividends, CAGRs). The 'one company' framing implicitly distinguishes it from compare_stocks and screen_stocks, so an agent can route without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use first for any question about one company' gives a clear selection context and priority. It stops short of naming the alternative siblings (get_financial_statement, get_metric_series) or stating when NOT to use it, so it falls just below the exhaustive 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_metricsList available metricsA
Read-onlyIdempotent
Inspect

Use to find the right metric slug before get_metric_series or get_chart. The full metric catalog: slug, label, unit, basis (daily/monthly/annual/quarterly/ttm — the stored sampling density, never overstated), methodology, and whether each metric is available as a JSON series (get_metric_series) and/or a chart render (get_chart). The same dictionary is the resource tgmcharts://metrics.

NameRequiredDescriptionDefault
formatNojson (default): the full JSON as text. markdown: a compact table or list, fewer tokens. structuredContent is the full JSON either way.

Output Schema

NameRequiredDescription
docsYes
metricsYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds non-annotation context: the 'basis' field meaning (stored sampling density, 'never overstated') and per-metric availability for series vs chart rendering. It does not discuss pagination or cost, but this is a static catalog, so little is missing.

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?

Two sentences, front-loaded with the action and its routing hint, then the payload contents. The second sentence is a dense enumerated list but every item earns its place by describing a real catalog field; slight compression possible but no filler.

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 an output schema present, return values need no prose, and the annotations carry the safety profile. The description still supplies the routing context, field semantics, and resource alternative an agent needs to call this correctly. Nothing material 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% and the single enum parameter's trade-off (json vs. markdown token cost, structuredContent always full JSON) is fully documented in the schema. The description never mentions 'format', so it adds nothing beyond the schema; baseline 3 is correct.

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?

States a specific verb+resource ('The full metric catalog') and enumerates exactly what the catalog contains (slug, label, unit, basis, methodology, availability flags). It also names the two downstream siblings (get_metric_series, get_chart) that consume the slug, so an agent can place it precisely in the tool graph.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to find the right metric slug before get_metric_series or get_chart' gives an explicit trigger condition and names the alternatives it precedes. Also notes the equivalent resource tgmcharts://metrics, so the agent knows it can read the same data without an extra call.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

screen_stocksScreen stocksA
Read-onlyIdempotent
Inspect

Use to find companies that meet conditions (cheap, high dividend, fast growth…). Filter and rank the covered universe (about 4,000 US-listed names) on fundamental fields (marketCap, peRatio, dividendYield, consecutiveYears, margins, 5y CAGRs, …). Returns at most 25 rows — the MCP tier's cap; the full screener lives at https://tgmcharts.com/screener. Units: yields, margins, growth and CAGRs are fractions, not percents (dividendYield gt 0.03 = above 3%; see the field description). Example: filters [{field: "dividendYield", operator: "gt", value: 0.03}, {field: "consecutiveYears", operator: "gte", value: 25}], sortBy "dividendYield".

NameRequiredDescriptionDefault
limitNoRows to return (default 10, max 25)
formatNojson (default): the full JSON as text. markdown: a compact table or list, fewer tokens. structuredContent is the full JSON either way.
sortByNoSort field (default marketCap)
filtersNo
sortOrderNoDefault desc
includeEtfsNoInclude ETFs (default false)

Output Schema

NameRequiredDescription
shownYes
stocksYes
screenerUrlYes
totalMatchesYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations, the description discloses the hard row cap ('at most 25 rows — the MCP tier's cap') and points to the full screener at an external URL when that cap is insufficient. It also warns that units are fractions, not percents, which prevents a common silent misuse — substantial context the annotations do not carry.

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?

Front-loaded with purpose and scope, then limits, then units, then a worked example — a logical order. It is dense and the unit convention is stated twice (prose and example), but every part is useful and nothing is padded.

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 an output schema present, return values need not be explained, and the description covers the remaining gaps an agent needs: result cap, unit conventions, filter shape, and sort behavior. Nothing material is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is high (83%) and the field enum already documents units, so the baseline is 3. The description adds value by reinforcing the fraction convention ('dividendYield gt 0.03 = above 3%') and giving a concrete two-filter example plus sortBy usage that the agent can copy directly.

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?

States a specific verb and resource — 'find companies that meet conditions' — and scopes it to 'the covered universe (about 4,000 US-listed names)' ranked on named fundamental fields. This clearly distinguishes it from siblings like compare_stocks and get_stock_summary without needing to open any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The opening 'Use to find companies that meet conditions (cheap, high dividend, fast growth…)' gives a clear use context, and 'Filter and rank' tells the agent what the operation does. It does not name alternatives or state exclusions (e.g. when to prefer compare_stocks or get_stock_summary), so it stops short of the top band.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedscreen_stocks1 field changed
      • changedInput schema / properties / filters / items / properties / field / description
        Previous value: -"Field to filter on"New value: +"Field to filter on. Units: dividendYield, netProfitMargin, grossMargin, revenueGrowth (TTM), priceChange1Y and the *Cagr5y fields are fractions (0.03 = 3%); percentFrom52WeekHigh and percentFrom52WeekLow are percents (-12.5 = 12.5% below the high); marketCap is in the quote currency (US dollars for US listings); peRatio and debtToEquity are ratios; consecutiveYears is years of dividend increases; symbol, name and sector are text (eq / neq)."
  2. 7 tool updates
    • Changedcompare_stocks2 fields changed
      • addedInput schema / properties / format
        Added value: +{
        +  "description": "json (default): the full JSON as text. markdown: a compact table or list, fewer tokens. structuredContent is the full JSON either way.",
        +  "enum": [
        +    "json",
        +    "markdown"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": {},
        +  "properties": {
        +    "compareUrl": {
        +      "type": "string"
        +    },
        +    "note": {
        +      "type": "string"
        +    },
        +    "stocks": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "covered": {
        +            "type": "boolean"
        +          },
        +          "symbol": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "symbol",
        +          "covered"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "stocks",
        +    "note",
        +    "compareUrl"
        +  ],
        +  "type": "object"
        +}
    • Changedget_chart1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": {},
        +  "properties": {
        +    "label": {
        +      "type": "string"
        +    },
        +    "metric": {
        +      "type": "string"
        +    },
        +    "symbol": {
        +      "type": "string"
        +    },
        +    "url": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "url",
        +    "symbol",
        +    "metric",
        +    "label"
        +  ],
        +  "type": "object"
        +}
    • Changedget_financial_statement2 fields changed
      • addedInput schema / properties / format
        Added value: +{
        +  "description": "json (default): the full JSON as text. markdown: a compact table or list, fewer tokens. structuredContent is the full JSON either way.",
        +  "enum": [
        +    "json",
        +    "markdown"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": {},
        +  "properties": {
        +    "asOf": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "cik": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "concepts": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "key": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "key",
        +          "label",
        +          "unit"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "currency": {
        +      "type": "string"
        +    },
        +    "entityName": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "links": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "docs": {
        +          "type": "string"
        +        },
        +        "openapi": {
        +          "type": "string"
        +        },
        +        "page": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "page",
        +        "docs",
        +        "openapi"
        +      ],
        +      "type": "object"
        +    },
        +    "methodology": {
        +      "type": "string"
        +    },
        +    "period": {
        +      "type": "string"
        +    },
        +    "rows": {
        +      "anyOf": [
        +        {
        +          "items": {
        +            "additionalProperties": {},
        +            "properties": {
        +              "filed": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "fiscalPeriod": {
        +                "type": "string"
        +              },
        +              "fiscalYear": {
        +                "type": "number"
        +              },
        +              "form": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "metrics": {
        +                "additionalProperties": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "propertyNames": {
        +                  "type": "string"
        +                },
        +                "type": "object"
        +              },
        +              "periodEnd": {
        +                "type": "string"
        +              },
        +              "periodStart": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "fiscalYear",
        +              "fiscalPeriod",
        +              "periodStart",
        +              "periodEnd",
        +              "form",
        +              "filed",
        +              "metrics"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "source": {
        +      "type": "string"
        +    },
        +    "statement": {
        +      "type": "string"
        +    },
        +    "symbol": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "symbol",
        +    "entityName",
        +    "cik",
        +    "statement",
        +    "period",
        +    "currency",
        +    "source",
        +    "asOf",
        +    "methodology",
        +    "concepts",
        +    "rows",
        +    "links"
        +  ],
        +  "type": "object"
        +}
    • Changedget_metric_series2 fields changed
      • addedInput schema / properties / format
        Added value: +{
        +  "description": "json (default): the full JSON as text. markdown: a compact table or list, fewer tokens. structuredContent is the full JSON either way.",
        +  "enum": [
        +    "json",
        +    "markdown"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": {},
        +  "properties": {
        +    "applicability": {
        +      "anyOf": [
        +        {
        +          "const": "applicable",
        +          "type": "string"
        +        },
        +        {
        +          "additionalProperties": {},
        +          "properties": {
        +            "message": {
        +              "type": "string"
        +            },
        +            "tone": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "tone",
        +            "message"
        +          ],
        +          "type": "object"
        +        }
        +      ]
        +    },
        +    "asOf": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "basis": {
        +      "type": "string"
        +    },
        +    "downsampledTo": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "label": {
        +      "type": "string"
        +    },
        +    "links": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "chart": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "docs": {
        +          "type": "string"
        +        },
        +        "openapi": {
        +          "type": "string"
        +        },
        +        "page": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "chart",
        +        "page",
        +        "docs",
        +        "openapi"
        +      ],
        +      "type": "object"
        +    },
        +    "methodology": {
        +      "type": "string"
        +    },
        +    "metric": {
        +      "type": "string"
        +    },
        +    "name": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "points": {
        +      "anyOf": [
        +        {
        +          "items": {
        +            "additionalProperties": {},
        +            "properties": {
        +              "date": {
        +                "type": "string"
        +              },
        +              "value": {
        +                "type": "number"
        +              }
        +            },
        +            "required": [
        +              "date",
        +              "value"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "symbol": {
        +      "type": "string"
        +    },
        +    "unit": {
        +      "type": "string"
        +    },
        +    "years": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "symbol",
        +    "name",
        +    "metric",
        +    "label",
        +    "unit",
        +    "basis",
        +    "methodology",
        +    "asOf",
        +    "years",
        +    "points",
        +    "applicability",
        +    "links",
        +    "downsampledTo"
        +  ],
        +  "type": "object"
        +}
    • Changedget_stock_summary2 fields changed
      • addedInput schema / properties / format
        Added value: +{
        +  "description": "json (default): the full JSON as text. markdown: a compact table or list, fewer tokens. structuredContent is the full JSON either way.",
        +  "enum": [
        +    "json",
        +    "markdown"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": {},
        +  "properties": {
        +    "applicability": {
        +      "additionalProperties": {
        +        "type": "string"
        +      },
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "asOf": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "dataUpdatedAt": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "note": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "dataUpdatedAt",
        +        "note"
        +      ],
        +      "type": "object"
        +    },
        +    "classification": {},
        +    "currency": {
        +      "type": "string"
        +    },
        +    "dividends": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "consecutiveYears": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "dividendPerShare": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "payoutRatioPercent": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "yieldPercent": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        }
        +      },
        +      "required": [
        +        "yieldPercent",
        +        "payoutRatioPercent",
        +        "dividendPerShare",
        +        "consecutiveYears"
        +      ],
        +      "type": "object"
        +    },
        +    "financialHealth": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "currentRatio": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "debtToEquity": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "interestCoverage": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "quickRatio": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        }
        +      },
        +      "required": [
        +        "currentRatio",
        +        "quickRatio",
        +        "debtToEquity",
        +        "interestCoverage"
        +      ],
        +      "type": "object"
        +    },
        +    "growthCagrPercent": {
        +      "additionalProperties": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "y10": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "y3": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "y5": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "y3",
        +          "y5",
        +          "y10"
        +        ],
        +        "type": "object"
        +      },
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "industry": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "links": {
        +      "additionalProperties": {
        +        "type": "string"
        +      },
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "name": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "price": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "change": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "changePercent": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "high52Week": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "lastClose": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "lastCloseDate": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "latestPrice": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "low52Week": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "marketCap": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "priceSource": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "return1YPercent": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "returnYtdPercent": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        }
        +      },
        +      "required": [
        +        "lastClose",
        +        "lastCloseDate",
        +        "latestPrice",
        +        "priceSource",
        +        "change",
        +        "changePercent",
        +        "marketCap",
        +        "high52Week",
        +        "low52Week",
        +        "returnYtdPercent",
        +        "return1YPercent"
        +      ],
        +      "type": "object"
        +    },
        +    "profitability": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "grossMarginPercent": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "netMarginPercent": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "operatingMarginPercent": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "roaPercent": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "roePercent": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "roicPercent": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        }
        +      },
        +      "required": [
        +        "grossMarginPercent",
        +        "operatingMarginPercent",
        +        "netMarginPercent",
        +        "roePercent",
        +        "roaPercent",
        +        "roicPercent"
        +      ],
        +      "type": "object"
        +    },
        +    "reportedCurrency": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "sector": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "symbol": {
        +      "type": "string"
        +    },
        +    "valuation": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "earningsYieldPercent": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "evToEbitda": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "evToSales": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "fcfYieldPercent": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "pbRatio": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "peRatio": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "peRatioForward": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "pegRatio": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "pfcfRatio": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "psRatio": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        }
        +      },
        +      "required": [
        +        "peRatio",
        +        "peRatioForward",
        +        "psRatio",
        +        "pbRatio",
        +        "pfcfRatio",
        +        "pegRatio",
        +        "evToEbitda",
        +        "evToSales",
        +        "earningsYieldPercent",
        +        "fcfYieldPercent"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "symbol",
        +    "name",
        +    "sector",
        +    "industry",
        +    "currency",
        +    "reportedCurrency",
        +    "asOf",
        +    "price",
        +    "valuation",
        +    "profitability",
        +    "financialHealth",
        +    "dividends",
        +    "growthCagrPercent",
        +    "links",
        +    "applicability",
        +    "classification"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_metrics2 fields changed
      • addedInput schema / properties / format
        Added value: +{
        +  "description": "json (default): the full JSON as text. markdown: a compact table or list, fewer tokens. structuredContent is the full JSON either way.",
        +  "enum": [
        +    "json",
        +    "markdown"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": {},
        +  "properties": {
        +    "docs": {
        +      "type": "string"
        +    },
        +    "metrics": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "basis": {
        +            "type": "string"
        +          },
        +          "chart": {
        +            "type": "boolean"
        +          },
        +          "description": {
        +            "type": "string"
        +          },
        +          "label": {
        +            "type": "string"
        +          },
        +          "series": {
        +            "type": "boolean"
        +          },
        +          "slug": {
        +            "type": "string"
        +          },
        +          "unit": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "slug",
        +          "label",
        +          "description",
        +          "unit",
        +          "basis",
        +          "series",
        +          "chart"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "metrics",
        +    "docs"
        +  ],
        +  "type": "object"
        +}
    • Changedscreen_stocks2 fields changed
      • addedInput schema / properties / format
        Added value: +{
        +  "description": "json (default): the full JSON as text. markdown: a compact table or list, fewer tokens. structuredContent is the full JSON either way.",
        +  "enum": [
        +    "json",
        +    "markdown"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": {},
        +  "properties": {
        +    "screenerUrl": {
        +      "type": "string"
        +    },
        +    "shown": {
        +      "type": "number"
        +    },
        +    "stocks": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "symbol": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "symbol"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "totalMatches": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "stocks",
        +    "totalMatches",
        +    "shown",
        +    "screenerUrl"
        +  ],
        +  "type": "object"
        +}
  3. 7 tool updates
    • First observedcompare_stocks
    • First observedget_chart
    • First observedget_financial_statement
    • First observedget_metric_series
    • First observedget_stock_summary
    • First observedlist_metrics
    • First observedscreen_stocks

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Provides as-reported US equity fundamentals, live quotes, financial statements, valuation comps, and a screener from SEC filings, with per-cell filing provenance for citations.
    7
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    SEC-filed financial statements back to 1985 for US-listed companies, plus global coverage, every number cited to its filing with an accession number. 59 tools for income statements, balance sheets, cash flow, growth rates, valuation (DCF, reverse DCF, comparables, fair-value range), SEC filing and earnings-call search, supply chains, 13F holders, options positioning and thesis monitoring.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides free SEC filing fundamentals for US public companies, including financial statements, 10-K/10-Q summaries, and 8-K event histories. No API key or signup required.
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Provides access to SEC filings and detailed XBRL financial data for all publicly traded U.S. companies. It enables users to search for company info, retrieve historical metrics like revenue and assets, and compare financial performance across different industries.
    6
    1
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources