Skip to main content
Glama

Screen Companies

screen_companies
Read-only

Screen companies by price range, volume, cash runway, float, shares outstanding, market cap, industry, listing exchange (NASDAQ/NYSE/AMEX), listing market (market="otc" / "exchange"; the reliable OTC test, as the exchange label is inconsistent on OTC rows), float data source, TTM dividend yield and snapshot cash (minCash / maxCash). Sortable by any sortable column. Returns matching companies with key metrics and pagination. Float: "float" is the measured point float (null on a withheld dilution-snapshot row, which then carries "floatEstimate" + "floatEstimateBound" ("point" / "ceiling" / "floor") + "floatEstimateBasis"). A point estimate is a number with its basis as the caveat; a ceiling or floor is a bound, not a figure: the float is not stated and is at most (ceiling) or at least (floor) that number. floatEstimate is not a basis for a market cap, percent-of-float or short-interest ratio. minFloat / maxFloat and the computed_float sort use the figure's value, so a bounded row is kept; a row with neither is not measured, not 0. shares_outstanding is dated by sharesOutstandingAsOf + sharesOutstandingAsOfKind (stated / checked / none = date not recorded) and sharesOutstandingSource; the count is only meaningful with its date. Cash runway: a null cash_runway_months carries cashRunwayReason. "estimate_would_be_negative" = the last cash figure (dated cashRunwayAsOf) rolled forward by burn is below zero: estimated exhausted, not a reported zero balance; maxCashRunway drops such rows unless includeRunwayExhausted=true. Any other or null reason is not a runway claim. estimatedCurrentCash (estimatedCashAsOf) is the snapshot's USD cash projection, only for snapshot-covered companies: null = not measured, not "no cash"; a non-USD filer has it null and is never matched by minCash / maxCash. dividendYield (TTM cash dividends with an ex-date in the last 365 days / current price, %), nextExDate, lastExDate: null = not measured or not a payer, not 0%. listingMarket: "exchange" / "otc", null = unknown. Each row carries live trading-halt status (halted/haltCode/haltedAt; false/null when trading normally); excludeHalted=true drops currently-halted tickers.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "screen_companies"
  }
}

Input Schema

NameRequiredDescriptionDefault
limitNoMaximum results per page (default: 25, max: 100)
marketNoListing market: "otc" (OTC Markets) or "exchange" (NASDAQ / NYSE / NYSE American / Arca / Cboe). Companies with no listing record match neither
offsetNoOffset for pagination (default: 0)
sortByNoColumn to sort results by (default: volume)
countryNoCompany universe by issuer domicile: "US" (default), "CA" (Canadian companies via their US-OTC/US cross-listings), or "all"
maxCashNoMaximum dilution-snapshot cash projection in USD (estimatedCurrentCash). Snapshot-covered companies only; an uncovered company is not measured, not excluded for having cash
minCashNoMinimum dilution-snapshot cash projection in USD (estimatedCurrentCash). Snapshot-covered companies reporting in USD only
exchangeNoFilter by listing exchange: NASDAQ (every tier), NYSE (includes NYSE Arca), or AMEX (NYSE American). Each matches every spelling of that exchange; names that moved to OTC never match. For OTC use market="otc" instead
industryNoFilter by company industry (exact match, e.g. "Biotechnology", "Software")
maxFloatNoMaximum computed public float (shares)
maxPriceNoMaximum latest price in USD
minFloatNoMinimum computed public float (shares)
minPriceNoMinimum latest price in USD
maxVolumeNoMaximum daily trading volume
minVolumeNoMinimum daily trading volume
sortOrderNoSort direction (default: desc)
floatSourceNoFilter by float data source
excludeHaltedNoWhen true, exclude tickers with a currently-active trading halt (regulatory or volatility) from the results. Default false: halted rows are included and carry halted/haltCode/haltedAt fields.
maxCashRunwayNoMaximum estimated months of cash remaining
minCashRunwayNoMinimum estimated months of cash remaining
maxDividendYieldNoMaximum TTM dividend yield in percent. Rows with no measured yield never match.
minDividendYieldNoMinimum TTM dividend yield in percent (e.g. 3 for 3%). Rows with no measured yield never match.
maxMarketCapComputedNoMaximum market cap in USD (price * shares outstanding)
maxSharesOutstandingNoMaximum shares outstanding from SEC EDGAR
minMarketCapComputedNoMinimum market cap in USD (price * shares outstanding)
minSharesOutstandingNoMinimum shares outstanding from SEC EDGAR
includeRunwayExhaustedNoWhen true, maxCashRunway also returns companies whose estimated cash is already exhausted (cash_runway_months null, cashRunwayReason "estimate_would_be_negative"); they sort first on an ascending runway sort. Default false

Output Schema

NameRequiredDescriptionDefault
dataNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / excludeHalted / description
      Previous value: -"When true, exclude tickers with a currently-active trading halt (regulatory or volatility) from the results. Default false — halted rows are included and carry halted/haltCode/haltedAt fields."New value: +"When true, exclude tickers with a currently-active trading halt (regulatory or volatility) from the results. Default false: halted rows are included and carry halted/haltCode/haltedAt fields."
    • changedInput schema / properties / maxCash / description
      Previous value: -"Maximum dilution-snapshot cash projection in USD (estimatedCurrentCash). Snapshot-covered companies only — an uncovered company is not measured, not excluded for having cash"New value: +"Maximum dilution-snapshot cash projection in USD (estimatedCurrentCash). Snapshot-covered companies only; an uncovered company is not measured, not excluded for having cash"
  2. Changed2 schema fields changed
    • changedInput schema / properties / exchange / description
      Previous value: -"Filter by listing exchange (exact match): NASDAQ, NYSE, or AMEX. For OTC use market=\"otc\" instead"New value: +"Filter by listing exchange: NASDAQ (every tier), NYSE (includes NYSE Arca), or AMEX (NYSE American). Each matches every spelling of that exchange; names that moved to OTC never match. For OTC use market=\"otc\" instead"
    • changedInput schema / properties / minCash / description
      Previous value: -"Minimum dilution-snapshot cash projection in USD (estimatedCurrentCash). Snapshot-covered companies only"New value: +"Minimum dilution-snapshot cash projection in USD (estimatedCurrentCash). Snapshot-covered companies reporting in USD only"
  3. Changed6 schema fields changed
    • changedInput schema / properties / exchange / description
      Previous value: -"Filter by listing exchange (exact match): NASDAQ, NYSE, or AMEX"New value: +"Filter by listing exchange (exact match): NASDAQ, NYSE, or AMEX. For OTC use market=\"otc\" instead"
    • addedInput schema / properties / includeRunwayExhausted
      Added value: +{
      +  "description": "When true, maxCashRunway also returns companies whose estimated cash is already exhausted (cash_runway_months null, cashRunwayReason \"estimate_would_be_negative\"); they sort first on an ascending runway sort. Default false",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / market
      Added value: +{
      +  "description": "Listing market: \"otc\" (OTC Markets) or \"exchange\" (NASDAQ / NYSE / NYSE American / Arca / Cboe). Companies with no listing record match neither",
      +  "enum": [
      +    "exchange",
      +    "otc"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / maxCash
      Added value: +{
      +  "description": "Maximum dilution-snapshot cash projection in USD (estimatedCurrentCash). Snapshot-covered companies only — an uncovered company is not measured, not excluded for having cash",
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / minCash
      Added value: +{
      +  "description": "Minimum dilution-snapshot cash projection in USD (estimatedCurrentCash). Snapshot-covered companies only",
      +  "minimum": 0,
      +  "type": "number"
      +}
    • changedInput schema / properties / sortBy / enum
      Previous value: -[
      -  "ticker",
      -  "price",
      -  "change_percent",
      -  "volume",
      -  "industry",
      -  "cash_runway_months",
      -  "shares_outstanding",
      -  "computed_float",
      -  "market_cap_computed",
      -  "updated_at",
      -  "dividend_yield"
      -]New value: +[
      +  "ticker",
      +  "price",
      +  "change_percent",
      +  "volume",
      +  "industry",
      +  "cash_runway_months",
      +  "shares_outstanding",
      +  "computed_float",
      +  "market_cap_computed",
      +  "updated_at",
      +  "dividend_yield",
      +  "estimated_current_cash"
      +]
  4. Changed3 schema fields changed
    • addedInput schema / properties / maxDividendYield
      Added value: +{
      +  "description": "Maximum TTM dividend yield in percent. Rows with no measured yield never match.",
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / minDividendYield
      Added value: +{
      +  "description": "Minimum TTM dividend yield in percent (e.g. 3 for 3%). Rows with no measured yield never match.",
      +  "minimum": 0,
      +  "type": "number"
      +}
    • changedInput schema / properties / sortBy / enum
      Previous value: -[
      -  "ticker",
      -  "price",
      -  "change_percent",
      -  "volume",
      -  "industry",
      -  "cash_runway_months",
      -  "shares_outstanding",
      -  "computed_float",
      -  "market_cap_computed",
      -  "updated_at"
      -]New value: +[
      +  "ticker",
      +  "price",
      +  "change_percent",
      +  "volume",
      +  "industry",
      +  "cash_runway_months",
      +  "shares_outstanding",
      +  "computed_float",
      +  "market_cap_computed",
      +  "updated_at",
      +  "dividend_yield"
      +]
  5. Changed1 schema field changed
    • addedInput schema / properties / exchange
      Added value: +{
      +  "description": "Filter by listing exchange (exact match): NASDAQ, NYSE, or AMEX",
      +  "type": "string"
      +}
  6. Changed1 schema field changed
    • addedInput schema / properties / excludeHalted
      Added value: +{
      +  "description": "When true, exclude tickers with a currently-active trading halt (regulatory or volatility) from the results. Default false — halted rows are included and carry halted/haltCode/haltedAt fields.",
      +  "type": "boolean"
      +}
  7. Changed1 schema field changed
    • addedInput schema / properties / country
      Added value: +{
      +  "description": "Company universe by issuer domicile: \"US\" (default), \"CA\" (Canadian companies via their US-OTC/US cross-listings), or \"all\"",
      +  "enum": [
      +    "US",
      +    "CA",
      +    "all"
      +  ],
      +  "type": "string"
      +}
  8. Changed20 schema fields changed
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / floatSource / description
      Added value: +"Filter by float data source"
    • addedInput schema / properties / industry / description
      Added value: +"Filter by company industry (exact match, e.g. \"Biotechnology\", \"Software\")"
    • addedInput schema / properties / limit / description
      Added value: +"Maximum results per page (default: 25, max: 100)"
    • addedInput schema / properties / maxCashRunway / description
      Added value: +"Maximum estimated months of cash remaining"
    • addedInput schema / properties / maxFloat / description
      Added value: +"Maximum computed public float (shares)"
    • addedInput schema / properties / maxMarketCapComputed / description
      Added value: +"Maximum market cap in USD (price * shares outstanding)"
    • addedInput schema / properties / maxPrice / description
      Added value: +"Maximum latest price in USD"
    • addedInput schema / properties / maxSharesOutstanding / description
      Added value: +"Maximum shares outstanding from SEC EDGAR"
    • addedInput schema / properties / maxVolume / description
      Added value: +"Maximum daily trading volume"
    • addedInput schema / properties / minCashRunway / description
      Added value: +"Minimum estimated months of cash remaining"
    • addedInput schema / properties / minFloat / description
      Added value: +"Minimum computed public float (shares)"
    • addedInput schema / properties / minMarketCapComputed / description
      Added value: +"Minimum market cap in USD (price * shares outstanding)"
    • addedInput schema / properties / minPrice / description
      Added value: +"Minimum latest price in USD"
    • addedInput schema / properties / minSharesOutstanding / description
      Added value: +"Minimum shares outstanding from SEC EDGAR"
    • addedInput schema / properties / minVolume / description
      Added value: +"Minimum daily trading volume"
    • addedInput schema / properties / offset / description
      Added value: +"Offset for pagination (default: 0)"
    • addedInput schema / properties / sortBy / description
      Added value: +"Column to sort results by (default: volume)"
    • addedInput schema / properties / sortOrder / description
      Added value: +"Sort direction (default: desc)"
    • removedOutput schema / required
      Removed value: -[
      -  "data"
      -]
  9. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "data": {}
      +  },
      +  "required": [
      +    "data"
      +  ],
      +  "type": "object"
      +}
  10. First observed

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description goes well beyond them with data-behavior caveats the agent cannot get elsewhere: null float means withheld dilution snapshot, ceiling/floor estimates are bounds not figures, null cash_runway_months needs a reason, and null dividendYield means unmeasured, not 0%. These are genuine interpretive rules for reading results, not restatements of annotations.

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

Conciseness3/5

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

The filter inventory is front-loaded and nearly every clause carries information, but the float/cash-runway discussion is delivered as one dense run-on paragraph with nested parentheticals and quotes. Bullets or separate sentences per data domain would make it far easier to scan without losing content.

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 27-parameter screening tool, the description covers the tricky cases an agent would otherwise get wrong (bounded float estimates, exhausted runway, unmeasured yield, halted rows) and an output schema exists so return shape needn't be explained. The one gap is that 'Returns matching companies with key metrics and pagination' is vague, but pagination is defined in the schema.

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?

With 100% schema coverage the baseline is 3, but the description adds real meaning beyond the schema: it flags market="otc" as the reliable OTC test because the exchange label is inconsistent, explains that minFloat/maxFloat use the estimate's value so bounded rows are kept, and clarifies that minCash/maxCash never match non-USD filers or uncovered companies. These are cross-parameter interactions the schema does not state.

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 opening clause names a specific verb and resource ('Screen companies') and enumerates the screenable dimensions, so an agent knows exactly what the tool filters on. It does not, however, differentiate itself from close siblings such as search_companies or screen_must_raise, so the agent must infer which one to pick.

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 explains filter semantics in depth but never states when this tool should be used instead of search_companies, screen_must_raise, or screen_sec_filings. There are no exclusions, prerequisites, or routing cues; the agent must derive usage from the filter list alone.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.