Skip to main content
Glama
stockscreen-mcp

stockscreen-mcp

describe_fields

Read-only

Defines scan fields and counts rows holding values so you can check units, meaning, and aliases before quoting or filtering fields with misleading names.

Instructions

Define scan fields and count what a market's rows hold for them.

Call it before quoting or filtering on a field you have not used, because names mislead: volume is traded value rather than shares, and pct_day is a percentile rank rather than a percent change.

Each field returns its group, type, unit and meaning. note says what a reader would otherwise get wrong, range appears only where the code guarantees a hard bound, and alias_of names the row field this name reads.

rows_with_value counts this market's rows with a non-null, non-empty value. At 0 the field supports no claim here. It is null for fields the tools drop, which exist only in the published JSON. true_rows appears on boolean fields and counts the rows that are true. values appears on text and list label fields as {label: rows}, most common first, unless the market has more than 15 distinct labels. Filters can test only the text ones. These counts say what this publish holds and not why. They cannot separate a field that cannot be computed from a result where nothing qualified.

Internal fields, which are bookkeeping fields and rule names, appear only when named in fields. fields and group together keep the named fields that are in the group.

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": "describe_fields"
  }
}

Input Schema

NameRequiredDescriptionDefault
groupNoOnly the fields in this group, e.g. fundamentals. The response lists every group.
fieldsNoExact field names to define, internal ones included; defaults to every public field.
marketNoMarket code, e.g. US, HK, JP, IN, DE. See list_markets.US

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.1.2

TDQS

A4.1/5.0
Behavior4/5

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

Annotations only declare readOnlyHint and openWorldHint; the description goes well beyond them. It discloses that rows_with_value counts non-null non-empty rows, that 0 means no claim is supported, that null marks drop-tool fields, that true_rows applies to booleans, and that values lists are capped past 15 distinct labels. It even flags an epistemic limit — counts cannot distinguish an uncomputable field from 'nothing qualified' — which is exactly the kind of caveat annotations cannot carry. Capped at 4 only because the description itself is the sole behavioral source and is slightly redundant in places.

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?

Purpose and the when-to-call rule are front-loaded, which is good. But the middle section is a run-on enumeration ('At 0 the field supports no claim here. It is null for fields the tools drop, which exist only in the published JSON. true_rows appears... values appears...') with awkward line breaks and some restatement. The content earns its place; the packaging could be tighter and better grouped.

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 3-parameter, zero-required, read-only introspection tool with an output schema, everything an agent needs is present: when to invoke, what each returned property means, edge cases (0, null, the 15-label cap), and the interaction between `fields` and `group`. Return-value explanation is arguably redundant given the output schema, but it is additive rather than 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 baseline is 3. The description does add one genuinely new semantic: '`fields` and `group` together keep the named fields that are in the group' — an intersection rule the schema does not state — plus the note that internal fields appear only when named in `fields`. That is a modest but real increment over 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 and resource: 'Define scan fields and count what a market's rows hold for them.' It is unmistakably a metadata/coverage-inspection tool, distinct from the screening and lookup siblings (run_screen, get_stock, market_overview). The two concrete field examples (volume = traded value, pct_day = percentile rank) cement what kind of information it produces.

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?

Explicitly says when to call it: 'Call it before quoting or filtering on a field you have not used,' and justifies it with the misleading-name examples. It also states the group parameter's behavior ('The response lists every group'). It stops short of naming an alternative sibling or an explicit when-not-to-call condition, so not a 5.

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