Skip to main content
Glama
luimu64

nordnet-mcp

by luimu64

nordnet-mcp

A Model Context Protocol server exposing Nordnet's public market data — quotes, charts, news, trade tape, fund/ETF/ stock profiles and FX rates — via the nordnet-sdk.

No account. No API key. No login. This talks to the same API Nordnet's website uses for anonymous visitors, so it runs anywhere, needs zero configuration, and holds no secrets.

Install

pip install nordnet-mcp
# or with pipx for an isolated runtime:
pipx install nordnet-mcp

Requires Python 3.10+.

Related MCP server: borsdata-mcp-server

Run

nordnet-mcp            # console script
python -m nordnet_mcp  # or module form

The server speaks MCP over stdio — wire it into any MCP client.

Configuration

Configuration is read from environment variables; defaults target Nordnet's Finnish site and the public market-data host:

Variable

Default

Purpose

NORDNET_BASE_URL

https://www.nordnet.fi

main site host (.se/.dk/.no also work)

NORDNET_MARKET_DATA_BASE_URL

https://api.prod.nntech.io

charts, indices, screening host

NORDNET_LOCALE

fi-FI

sent as x-locale on the market-data host

Client wiring

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "nordnet": {
      "command": "nordnet-mcp"
    }
  }
}

Hermes Agent (~/.hermes/config.yaml):

mcp_servers:
  nordnet:
    command: /path/to/nordnet-mcp

Generic stdio MCP client:

{ "mcpServers": { "nordnet": { "command": "uvx", "args": ["nordnet-mcp"] } } }

Tools

Tool

Returns

search(query, limit)

free-text search grouped by asset class

instrument(instrument_id)

full snapshot: identity, quote, returns, key ratios

quote(instrument_id)

latest price block with identity context

trades(instrument_id, count)

recent executed trades (the tape)

stocklist(limit, sort_attribute, sort_order, risers_only)

market overview (risers/fallers)

fund(instrument_id)

fund snapshot: NAV, fees, risk class, SFDR article

fund_profile(instrument_id) / fund_profile_by_slug(slug)

full fund screening profile

etf_profile(instrument_id) / etf_profile_by_slug(slug)

full ETF screening profile

stock_profile(instrument_id) / stock_profile_by_slug(slug)

full stock screening profile

chart(instrument_id, period) / chart_by_identifier(identifier, period)

price time series (8 periods)

news(instrument_id, limit, offset)

paginated news feed

indicators(list_id)

index/FX quotes for a market list

indicator(slug)

single indicator / FX quote (e.g. eurusd)

market_hours(instrument_id) / market_hours_for_order_book(order_book_id)

trading sessions; null when none

Chart periods: DAY_1, WEEK_1, MONTH_1, MONTH_3, MONTH_6, YTD, YEAR_1, ALL.

Instrument IDs are Nordnet's internal numeric IDs (e.g. 16100884 = Wärtsilä B, 17794251 = Nordnet One Rohkea EUR). Find them with search, or read them from instrument pages on nordnet.fi.

Public data boundary

Everything served here is data Nordnet shows to anonymous visitors. The one notable exception: full order book depth (the multi-level bid/ask ladder) is login-only — anonymously you only get top-of-book (best bid/ask with resting volumes). This server respects that boundary by design.

Development

pip install -e ".[dev]"
pytest           # offline — runs against a local fixture server
uv build         # wheel + sdist

Unofficial, not affiliated with or endorsed by Nordnet. Only reads public data; please be polite to the API (the SDK retries transient failures with backoff). Use at your own risk; market data may be delayed. MIT licensed.

Available Tools

19 tools
chartA

Price time series for an instrument (resolves the order book id automatically).

Periods: DAY_1, WEEK_1, MONTH_1, MONTH_3, MONTH_6, YTD, YEAR_1, ALL. Returns price points (open/high/low/last/volume), previous close and returns.

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoYEAR_1
instrument_idYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It explains a key behavior: automatically resolving the order book id from the instrument_id. It also discloses the return content (price points, previous close, returns). While it doesn't mention rate limits or error conditions, it is transparent about the core behavior for a read-only chart 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 concise and front-loaded: the first sentence states the main purpose, the second lists allowed periods, and the third describes returns. Every sentence earns its place with no filler or redundancy. It is well-structured and easy to scan.

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 2-parameter tool with no output schema and no annotations, the description provides a solid amount of context: purpose, period options, and return fields. It does not explain edge cases like what 'ALL' means or timezone behavior, but it is largely complete for the likely use case. The absence of an output schema is partially compensated by the explicit list of return fields.

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 0%, so the description must compensate. It explicitly lists all valid period values (DAY_1, WEEK_1, MONTH_1, etc.), adding meaning beyond the schema's bare string type. It also clarifies that instrument_id identifies an instrument, and the 'resolves the order book id' note adds context for how this parameter is used. This is adequate for the two parameters.

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 purpose: 'Price time series for an instrument.' It specifies the resource (instrument), the data type (price time series), and adds a unique detail (resolves the order book id automatically) that distinguishes it from siblings like chart_by_identifier. This is a specific, non-tautological description.

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: to get price time series for an instrument, provide an instrument_id and optionally select a period. However, it does not explicitly state when to use this tool over alternatives like chart_by_identifier or indicators, nor does it mention any exclusions. The guidance is implied but not explicit.

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

chart_by_identifierC

Price time series for a raw order book identifier (UUID from an instrument snapshot).

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoYEAR_1
identifierYes

TDQS

C2.7/5.0
Behavior2/5

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

Since no annotations are provided, the description must carry the full burden of behavioral disclosure. It only states the core purpose and does not mention any parameters, return format, limitations, or whether it is a read operation, leaving the agent without critical context.

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, front-loaded sentence that efficiently states the primary purpose without any filler or unnecessary words. It earns a high score for conciseness, though it could benefit from additional context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of annotations and output schema, the description is too sparse. It does not explain the period parameter, return value structure, or usage scenarios, making it incomplete for an AI agent to confidently invoke the tool.

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

Parameters2/5

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

The description adds meaning to the 'identifier' parameter by explaining it as a UUID from an instrument snapshot, but it completely ignores the 'period' parameter despite it having a default and being present in the schema. With 0% schema coverage, this is insufficient.

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 indicates the tool returns price time series for a raw order book identifier, which distinguishes it from sibling tools like 'chart' that likely use symbols. However, the verb is implied rather than explicit, leaving it just short of the highest clarity rating.

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 such as 'chart' or 'quote'. There is no mention of when not to use it or which other tools to consider based on the identifier type.

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

etf_profileB

Full ETF screening profile: fees, distribution type, holdings, sector/region exposures, sustainability, risk statistics.

ParametersJSON Schema
NameRequiredDescriptionDefault
instrument_idYes

TDQS

B3.1/5.0
Behavior3/5

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

No annotations exist, so the description carries the burden of behavior disclosure. It lists the profile components (fees, holdings, risk, etc.), which gives an idea of the return content, but it does not state whether the operation is read-only, whether authentication is required, or any potential limitations.

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, compact sentence that front-loads the tool's purpose ('Full ETF screening profile') and efficiently lists the included data categories. Every phrase adds value, and there is no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has only one parameter and no output schema, the description provides a useful overview of return content but lacks critical context about parameter usage and differentiation from similar profile tools. The agent would need additional information to reliably invoke it.

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

Parameters2/5

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

The input schema has only one parameter, instrument_id, with 0% description coverage. The description does not explain the meaning of instrument_id, how to obtain it, or its format (e.g., internal ID vs. exchange ticker). This leaves the agent to infer semantics from the parameter name alone.

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 tool as providing a full ETF screening profile, enumerating key data categories like fees, holdings, and risk statistics. It distinguishes from stock or fund profiles but does not explicitly differentiate from the sibling etf_profile_by_slug, which accepts a slug instead of an ID.

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?

There is no guidance on when to use this tool versus alternatives such as etf_profile_by_slug or fund_profile. The description implies usage for ETF screening but does not specify prerequisites, ID usage, or exclusion criteria.

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

etf_profile_by_slugA

Full ETF screening profile for a display slug (e.g. spdr-sp-500-ucits-spyl-xeta).

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden for behavioral disclosure, but it only says 'Full ETF screening profile' without detailing return format, whether it is read-only, or any side effects. The example slug is helpful but does not cover behavioral traits.

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, front-loaded sentence that communicates the core purpose and provides an example. No fluff, each word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (one param, no output schema), and the description provides a clear purpose and example. However, it lacks details on what a 'screening profile' contains, how to obtain a slug, or any relationship to sibling tools, leaving the agent with some gaps for full understanding.

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 has minimal info ('Slug' string), and schema description coverage is 0%. The description compensates by giving a realistic example slug format (spdr-sp-500-ucits-spyl-xeta), which clarifies the expected structure of the slug parameter better than the bare 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 states a clear, specific resource: 'Full ETF screening profile' for a display slug, with a concrete example slug. This distinguishes it from siblings like etf_profile (likely by ticker) and stock_profile_by_slug, making the tool's 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 on when to use this tool versus alternatives like etf_profile or fund_profile_by_slug. It does not mention that this is for slug-based lookups or provide context about identifiers. Usage context is entirely absent.

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

fundB

Fund snapshot: NAV, fund metadata (yearly fee, risk group, SFDR article, dividend strategy, min investment).

ParametersJSON Schema
NameRequiredDescriptionDefault
instrument_idYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the burden of disclosing behavioral traits. It implies a read-only 'snapshot' operation and lists the returned fields, but does not explicitly state read-only semantics, authentication requirements, or error conditions. It adds some value but not extensive transparency.

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 sentence that front-loads the key phrase 'Fund snapshot' and then enumerates the included data fields. Every word contributes meaning, with no redundancy or filler.

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 no output schema, the description does well to enumerate the return fields (NAV, yearly fee, risk group, etc.). For a tool with a single parameter, this is largely complete. However, it could clarify that NAV is the latest snapshot or specify any limitations, so slightly short of full completeness.

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

Parameters2/5

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

Schema description coverage is 0%, so the description should compensate by explaining the parameter. It does not mention 'instrument_id' at all. The parameter name is somewhat self-explanatory as an identifier, but no context is given on where to obtain it or its format beyond the schema's integer type.

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 it returns a fund snapshot with NAV and specific metadata fields. The term 'snapshot' suggests a concise overview, which helps differentiate from sibling tools like 'fund_profile' and 'fund_profile_by_slug' that likely provide more detailed profiles. However, it does not explicitly name these 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?

No guidance is provided on when to use this tool versus the sibling profile tools. The description only lists what data is returned, leaving the agent to infer context. There is no mention of prerequisites or exclusions.

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

fund_profileB

Full fund screening profile: NAV history, holdings, fund managers, fees, minimum investment, returns.

ParametersJSON Schema
NameRequiredDescriptionDefault
instrument_idYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It lists the included content but does not mention whether any authentication is required, rate limits, potential pagination, or the return format. Since it is a read-only profile tool, the lack of any explicit statement about its safety or constraints leaves a gap.

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, front-loaded sentence that immediately conveys the tool's purpose and enumerates its content. Every word adds value, with no fluff or repetition. It is appropriately concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lists many returned fields, giving a sense of completeness, but it lacks usage guidance and does not describe the return structure or any limitations. With no output schema, it could provide more context about data shape or timeframes. It is adequate for a simple profile tool but has clear gaps in alternative differentiation and parameter explanation.

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

Parameters2/5

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

The schema describes instrument_id as an integer but provides no description, and schema description coverage is 0%. The tool description does not mention instrument_id at all, nor does it explain how to identify the fund or what the parameter means. Since the param name is intuitive, it earns a minimal score, but the description fails to add any meaningful semantics beyond the raw 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 identifies the tool as providing a 'Full fund screening profile' and enumerates specific data points (NAV history, holdings, fund managers, fees, minimum investment, returns). This is specific and distinguishes it from sibling tools like fund_profile_by_slug or etf_profile by emphasizing the comprehensive fund-focused scope.

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 explicit guidance is given on when to use this tool versus alternatives. The description implies using it for a full fund profile, but it does not mention that fund_profile_by_slug exists for slug-based lookups or any other exclusions. Lacks any when/when-not guidance.

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

fund_profile_by_slugC

Full fund screening profile for a display slug (e.g. nordnet-one-rohkea-eur-c39cc36b).

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It only says 'full fund screening profile' without disclosing return format, error behavior, authorization needs, or any operational details. This is minimal behavioral information.

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 sentence with an example, no waste, and the most critical information is front-loaded. It is appropriately concise for a one-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema, no annotations, and only one parameter, the description does not explain what constitutes a 'full' profile, what data it returns, or any relevant operational context. Given the existence of sibling tools for different asset types, the description is insufficient for an agent to confidently 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?

The schema provides no description for the 'slug' parameter, and schema coverage is 0%. The tool description compensates by clarifying the parameter is a 'display slug' and provides a realistic example, which adds meaning beyond the schema. However, no further details about slug format or accepted values are given.

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 tool as returning a 'full fund screening profile' keyed by a 'display slug', with a concrete example. It clearly indicates the resource and identifier type, distinguishing it from sibling tools that use different identifiers, though it lacks an explicit verb like 'get' or 'retrieve'.

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 provided on when to use this tool versus alternatives such as fund_profile or fund. The example slug implies the need for a display slug, but there is no explicit statement of prerequisites, exclusions, or comparison to sibling tools.

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

indicatorA

Single indicator/FX quote by display slug (e.g. eurusd, eursek, usdjpy, OMXHelsinki).

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes

TDQS

A3.7/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states that a single quote is returned, but does not mention response format, update frequency, authentication requirements, or any side effects. This is minimal and leaves significant gaps for an agent to predict behavior.

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, front-loaded sentence that instantly communicates the core purpose. It uses compact, precise wording with examples, and no unnecessary words or repetition, making it highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has only one parameter, no output schema, and no annotations, the description is adequate for a simple lookup but lacks additional context such as return value structure, error behavior, or relationship to sibling tools (e.g., how it differs from 'quote' or 'indicators'). It provides the essential gist but not enough for an agent to fully anticipate the tool's behavior.

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?

The input schema provides only a 'slug' string with no description. The tool description compensates by explaining that it is a 'display slug' and supplies multiple concrete examples (eurusd, eursek, usdjpy, OMXHelsinki). This adds meaningful semantic context beyond the bare schema, though it does not fully define the accepted format or list all possible slugs.

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 returns a single indicator/FX quote by display slug, with concrete examples (eurusd, eursek, usdjpy, OMXHelsinki). This distinguishes it from the plural 'indicators' sibling and other quote-related tools by specifying the resource and lookup key.

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 when you have a display slug for a specific indicator/FX pair, and gives examples. However, it does not explicitly state when to use this tool versus siblings like 'indicators' or 'quote', nor does it provide exclusions or alternatives, leaving some ambiguity.

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

indicatorsA

Index/FX quotes for a market list (e.g. FI_INDEX_GLOBAL, CURRENCY_GLOBAL), with sparkline data.

ParametersJSON Schema
NameRequiredDescriptionDefault
list_idNoFI_INDEX_GLOBAL

TDQS

A3.5/5.0
Behavior3/5

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

Without annotations, the description carries the burden. It does disclose that the tool returns quotes and sparkline data, implying read-only behavior, but it doesn't elaborate on error handling, rate limits, or what invalid list IDs do. This is sufficient for a simple quote tool but not exhaustive.

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, front-loaded sentence with no filler words. It efficiently conveys the domain, purpose, and extra data (sparkline).

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 tool with one simple optional parameter and no output schema, the description provides enough context to understand the tool's role. It doesn't detail the return structure, but the mention of quotes and sparklines gives a reasonable picture. However, it could clarify the relationship to the sibling 'indicator' tool.

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?

The description adds meaning to the 'list_id' parameter by giving concrete examples (FI_INDEX_GLOBAL, CURRENCY_GLOBAL) and framing it as a market list selector. Since the schema has no parameter descriptions, these examples are valuable, though the description does not enumerate all possible list IDs or explain the default behavior.

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 tool as providing Index/FX quotes for a market list, with examples of valid list IDs. It distinguishes itself from the singular 'indicator' sibling by focusing on lists and including sparkline data, though it lacks an explicit verb like 'retrieves'.

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 provided for when to use this tool over alternatives like 'indicator' or 'quote'. There is no mention of exclusions, prerequisites, or contrasting use cases.

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

instrumentB

Full instrument snapshot: identity, quote, trading status, historical returns, key ratios, NNX metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
instrument_idYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It only describes the output contents ('snapshot', list of data types) without disclosing any behavioral traits such as authentication requirements, rate limits, potential errors, or the fact that it's a read-only operation. The term 'snapshot' implies a static point-in-time view, but this is implicit and not elaborated.

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, front-loaded sentence that effectively communicates the tool's purpose. It is concise with no redundant wording, and the data categories are presented in an easy-to-scan list.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description provides an outline of the return content (six categories) which helps set expectations. However, it lacks details on return structure, possible errors, or usage prerequisites. It is adequate for understanding the tool's scope but leaves gaps for a comprehensive context.

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

Parameters2/5

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

Schema description coverage is 0% and the description does not mention the instrument_id parameter at all. It adds no meaning beyond the schema's own type and required flag. The parameter name is self-explanatory, but the description fails to compensate for the lack of schema 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 clearly indicates the tool provides a comprehensive snapshot of an instrument, listing specific data categories (identity, quote, trading status, historical returns, key ratios, NNX metadata). This distinguishes it from more focused sibling tools like quote or stock_profile, though it lacks an explicit verb like 'get' or 'retrieve'.

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 word 'full' implies the tool is appropriate when comprehensive instrument data is needed, and the listed categories suggest when it might be used. However, there is no explicit guidance on when to choose this over sibling tools, nor any exclusions or alternatives mentioned.

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

market_hoursB

Trading sessions and status for an instrument; null when the API has no hours for it.

ParametersJSON Schema
NameRequiredDescriptionDefault
instrument_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It adds the key detail that the tool returns null when the API has no hours, which is useful. However, it does not explain what 'status' entails, potential error conditions, or any other behavioral traits beyond the null case.

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, compact sentence that conveys the core purpose and a critical edge case. It is appropriately sized, with no redundant words or padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with one parameter and an output schema, so the description need not detail return values. However, it lacks usage context, such as which instruments are supported or how it differs from the similar 'market_hours_for_order_book' tool. The null mention adds edge-case context, but overall completeness is moderate.

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

Parameters2/5

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

The input schema has only one parameter with no description (0% coverage). The description mentions 'an instrument' but does not explicitly elaborate on the instrument_id parameter's meaning or expected format, leaving the agent with minimal semantic guidance beyond the parameter's title.

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 provides trading sessions and status for an instrument, which is a specific resource. However, it lacks a strong verb like 'get' or 'retrieve', and doesn't explicitly differentiate from the sibling tool 'market_hours_for_order_book', though 'for an instrument' implies general use.

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 provided about when to use this tool versus alternatives. It does not mention the existence of 'market_hours_for_order_book' or any other selection criteria, leaving the agent to infer usage context.

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

market_hours_for_order_bookA

Trading sessions and status for a raw order book UUID; null when the API has none.

ParametersJSON Schema
NameRequiredDescriptionDefault
order_book_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It does disclose the null return behavior ('null when the API has none'), which is useful. However, it does not mention error handling, validity requirements for the UUID, or whether this is a read-only operation beyond the obvious retrieval nature.

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, compact sentence that front-loads the core purpose. Every word contributes meaning, with no redundancy or filler.

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 low complexity (one parameter) and the presence of an output schema (which explains return values), the description covers the essential purpose and the key null behavior. It is adequate, though it could add minimal usage context or a note about when it applies.

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?

The description adds meaning to the single parameter by clarifying it is a 'raw order book UUID', which the schema does not provide (coverage 0%). This helps agents understand what to pass, though it could be more explicit by directly naming the parameter.

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 returns 'Trading sessions and status for a raw order book UUID', which specifies the resource and scope. It distinguishes from sibling tools like market_hours by indicating it operates on a raw order book UUID, but lacks an explicit verb like 'get' or 'retrieve'.

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 provided on when to use this tool versus alternatives. Sibling tools like market_hours likely serve similar purposes, but the description does not compare or mention preferred contexts, prerequisites, or exclusions.

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

newsC

Paginated news feed for an instrument: headline, agency, type, published timestamp.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
instrument_idYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It discloses pagination and the output fields, but does not mention ordering, authentication, rate limits, error handling, or behavior with invalid instrument IDs.

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?

A single concise sentence front-loads the tool's purpose and output fields. No wasted words or redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description must cover returns; it lists the major fields. However, it lacks details on pagination mechanics, ordering, and error conditions, making it adequate but not complete for a production tool.

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

Parameters2/5

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

The schema has no descriptions for limit, offset, or instrument_id (0% coverage). The description only implies instrument_id via 'for an instrument' and pagination via 'paginated', but does not explain limit/offset semantics or defaults beyond what the schema already shows.

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 this is a paginated news feed for an instrument and lists the output fields (headline, agency, type, published timestamp). It is distinct from sibling tools like quote or trades, though it doesn't explicitly differentiate them.

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 provided on when to use this tool versus alternatives, and no exclusions or prerequisites are mentioned. The description only states what the tool does, not when it should be chosen.

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

quoteA

Latest price block for an instrument, with identity context.

Includes last, bid/ask with resting volumes, open/close, high/low, spread, turnover, diff and diff_pct. Note: only top-of-book is public — the full order book depth ladder requires a login.

ParametersJSON Schema
NameRequiredDescriptionDefault
instrument_idYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and does well by disclosing that only top-of-book is public, full order book depth requires login, and listing the included fields. This is meaningful behavioral context beyond the bare 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?

The description is three sentences, front-loads the main purpose, and includes only useful details: field list and access limitation. No filler or redundancy.

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 simple one-parameter tool with no output schema, the description adequately covers the return contents, access constraints, and primary use, making it sufficiently complete for an agent to invoke correctly.

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

Parameters2/5

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

Schema coverage is 0% and the description does not add meaningful explanation for instrument_id beyond what the schema's name and type already convey. The single parameter is self-evident, but the low coverage is not compensated.

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: returning the latest price block for an instrument, and enumerates the key fields (last, bid/ask, high/low, etc.), which distinguishes it from sibling tools like trades or chart.

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 is implied: this is the tool for a current price snapshot. It notes that full depth requires login, but it does not explicitly state when to use quote over alternatives like trades or chart, nor does it list when-not-to-use scenarios.

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

stocklistA

Market overview list of stocks (risers/fallers, most traded).

Default sorts by one-day change descending. Set risers_only=true to list only advancing stocks. Rows are lightweight snapshots plus company_info (report date, market cap).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
sort_orderNodesc
risers_onlyNo
sort_attributeNodiff_pct

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals the default sort order (one-day change descending), the lightweight nature of rows, and the inclusion of company_info fields (report date, market cap). This provides meaningful context beyond what the schema shows, though it does not explicitly state whether the operation is read-only (which is obvious from context).

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 compact and front-loaded with the main purpose in the first sentence. It uses three concise sentences to convey purpose, default behavior, and row structure without any extraneous information. Every sentence adds value.

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 that there is no output schema, the description provides a useful summary of the return rows (lightweight snapshots plus company_info). It covers default sorting and the risers_only filter. However, it does not mention how the limit parameter works, other possible sort attributes, or pagination, leaving some gaps in a simple list context.

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 description coverage is 0%, so the description must compensate. It explains the risers_only parameter and the default sort attribute (one-day change/descending), but it does not explain the 'limit' parameter or valid values for 'sort_order' and 'sort_attribute'. The description adds partial clarity but leaves gaps for several parameters.

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 'Market overview list of stocks' with specific categories (risers/fallers, most traded). It uses a specific verb (list) and resource (stocks), and its focus on a broad market overview distinguishes it from sibling tools like stock_profile or chart, which target individual instruments.

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 for market-wide overviews and mentions how to filter for risers (risers_only=true), but it does not explicitly compare with alternatives or state when not to use this tool. The lack of explicit exclusions or alternative tool references makes the guidance only implied rather than definitive.

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

stock_profileC

Full stock screening profile: company identity, market cap, key figures with fiscal-year history, earnings reports, dividends, news.

ParametersJSON Schema
NameRequiredDescriptionDefault
instrument_idYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of disclosing behavioral traits. It only lists content categories and does not state whether the operation is read-only, if authentication is required, if there are rate limits, or what the return structure looks like. The absence of this context makes it difficult for an agent to anticipate side effects or constraints.

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, concise sentence that quickly communicates the tool's scope. It front-loads the core purpose and lists content areas without unnecessary detail. The structure is efficient, though it could be slightly more structured to separate the purpose from the contents.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is insufficient for a tool with no output schema and no parameter documentation. It lists broad categories but not the specific fields or data format, and it does not explain the input parameter or how to use the tool correctly. Sibling tools and the need for instrument IDs are not addressed, leaving significant gaps.

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

Parameters2/5

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

Schema coverage for parameters is 0%, and the description does not compensate by explaining what instrument_id represents or how to obtain it. The parameter name is self-explanatory to a degree, but the tool's focus on stocks and the existence of a generic 'instrument' sibling suggest ambiguity. The description should clarify that instrument_id refers to the stock instrument identifier.

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 indicates the tool provides a comprehensive stock profile, listing key content areas such as company identity, market cap, financial history, earnings, dividends, and news. However, it lacks a specific verb and does not differentiate from the sibling tool stock_profile_by_slug, which likely serves a similar purpose.

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 use this tool versus alternatives like stock_profile_by_slug, indicators, or quote. There is no mention of prerequisites, such as how to obtain the instrument_id, or scenarios where this tool is preferred.

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

stock_profile_by_slugA

Full stock screening profile for a display slug (e.g. wartsila-b-wrt1v-xhel).

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states that the tool returns a 'full stock screening profile' without detailing response structure, whether it is strictly read-only, error behavior, or any limitations. For a tool with no annotations, this is a significant gap.

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 sentence that front-loads the main purpose and includes a relevant example. Every word earns its place, with no unnecessary filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool, the description adequately identifies the input and result type. However, with no output schema and no annotations, it does not explain what fields or sections are included in the 'full stock screening profile', nor does it address edge cases like invalid slugs. It is minimally viable but has clear gaps.

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?

The input schema provides only the parameter name 'slug' with zero description coverage. The description compensates by explaining it is a 'display slug' and giving a concrete example ('wartsila-b-wrt1v-xhel'), which conveys both meaning and format. More detail on slug patterns would be useful, but the example is meaningful.

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 as a 'full stock screening profile' and scopes it to a 'display slug', with a concrete example. It lacks an explicit verb like 'retrieves' or 'gets', but the intent is clear and it distinguishes from sibling 'stock_profile' by the slug-based key.

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 phrase 'for a display slug' provides clear context for when this tool should be used: when a display slug like 'wartsila-b-wrt1v-xhel' is available. It does not explicitly name alternatives or exclusions, but the slug-specific usage is explicit enough to guide selection among siblings.

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

tradesB

Recent executed trades (the trade tape) for an instrument: price, volume, type, timestamps.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNo
instrument_idYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It mentions 'Recent' and specifies return fields, adding some behavioral context. However, it does not disclose ordering, pagination behavior, or whether it represents real-time delayed data.

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 main purpose and lists key return fields. Every word adds value with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter retrieval tool with no output schema, the description is adequate but incomplete. It describes the return content but omits parameter semantics (especially 'count') and lacks any usage context to make it fully self-sufficient.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It only indicates the instrument via 'for an instrument' but completely omits the 'count' parameter and its meaning. No parameter details are provided beyond the schema itself.

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 returns 'Recent executed trades' with specific fields (price, volume, type, timestamps) for an instrument. It distinguishes itself from siblings like 'quote' or 'chart' by focusing on trade-level 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?

No guidance is provided on when to use this tool versus alternatives. It implies use for trade data but lacks explicit context like 'Use when you need raw trade tape' or exclusions. Sibling tools are not referenced.

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. 19 tool updatesv0.1.0
    • First observedchart
    • First observedchart_by_identifier
    • First observedetf_profile
    • First observedetf_profile_by_slug
    • First observedfund
    • First observedfund_profile
    • First observedfund_profile_by_slug
    • First observedindicator
    • First observedindicators
    • First observedinstrument
    • First observedmarket_hours
    • First observedmarket_hours_for_order_book
    • First observednews
    • First observedquote
    • First observedsearch
    • First observedstock_profile
    • First observedstock_profile_by_slug
    • First observedstocklist
    • First observedtrades

TDQS

B3.4/5.0

Scored across 19 tools

Disambiguation3/5

Several tools have overlapping names or similar purposes: 'indicator' vs 'indicators' differ only in pluralization, and pairs like 'chart'/'chart_by_identifier' and 'market_hours'/'market_hours_for_order_book' are distinguished only by input format. Descriptions clarify the differences, but an agent could easily select the wrong tool without careful reading.

Naming Consistency4/5

Tool names follow a consistent snake_case noun pattern (e.g., instrument, quote, trades, stock_profile), with suffixes like _by_slug and _by_identifier used systematically. The naming is predictable, though the lack of verb prefixes and the close similarity between 'indicator' and 'indicators' slightly reduce consistency.

Tool Count4/5

With 19 tools, the server covers a broad range of market data needs—quotes, charts, news, profiles, market hours, and search—without becoming unwieldy. The count is on the higher end but well-justified for a comprehensive financial data server.

Completeness5/5

The tool surface is comprehensive, covering search, quotes, charts, news, trades, market hours, and detailed profiles for stocks, funds, and ETFs. Both slug and raw identifier variants ensure no dead ends for different input formats, and there are no obvious gaps in public market data coverage.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Real-time financial market data MCP server. Stocks, crypto, technicals, sentiment, FDA calendar. No API keys required.
    -
  • A
    license
    A
    quality
    D
    maintenance
    MCP server that exposes the Borsdata financial data API as tools and resources for Claude, covering Nordic and Global stocks, financial reports, KPIs, stock prices, holdings, and calendars.
    30
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Exposes TradingView data including quotes, technical ratings, historical OHLCV, and market screening through an MCP server using unofficial libraries.
    -
  • F
    license
    A
    quality
    C
    maintenance
    MCP server for read-only access to Charles Schwab market data and account information. It provides quotes, price history, technical indicators, fundamentals, option chains, market hours, movers, and account/transaction data via the official Schwab API.
    10
    -