14 tools with consistent naming (verb_noun pattern: list_, get_, search_, check_) and complete input schemas. However, descriptions are minimal (10-80 chars, well below the 194-char baseline) and lack context for LLM selection. No parameter descriptions beyond the tool docstring. Output schemas are undocumented, tools return raw JSON without field documentation. No error handling guidance, no pagination support despite potential for large result sets, and no indication of which tools are idempotent or safe to retry. Tool composition is sound (each does one thing), but descriptions do not explain WHEN to use each tool or dependencies between them.
Check if an instrument is tradeable for your account. Args: instrument_id: The instrument ID to check
Get account balances, buying power, and interest rates.
Get list of countries available on Nordnet.
Get today's transactions for an account.
Get instrument details. Supports comma-separated IDs for batch lookup. Args: instrument_id: One or more instrument IDs (comma-separated)
Get all available instrument types (stocks, ETFs, bonds, etc.).
Tool descriptions are too brief (10 - 80 chars vs. 194-char baseline). They lack context for LLM selection: no explanation of WHEN to use each tool, no dependencies, no prerequisites. E.g., 'List all Nordnet accounts with IDs and types' does not explain that this is a discovery tool to call before get_account_info.
Output schemas are completely undocumented. Tools return raw JSON (via json.dumps) with no field documentation. LLMs cannot infer what fields to expect or how to chain results to downstream tools. E.g., get_positions returns instrument_id, name, quantity, etc., but this is not documented in the tool definition.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
Get currency ledger balances for an account.
Get active orders for an account.
Get all holdings/positions for an account. Returns instrument name, quantity, average price, current value, P&L amount and percentage for each position.
Get available search filter attributes for instrument search.
Get executed trades for an account (0-7 days back). Args: account_id: The account ID days: Number of days back (0 = today only, max 7)
List all Nordnet accounts with IDs and types.
Find instrument by ISIN+currency+market or market identifier. Args: lookup_type: "isin_code_currency_market_id" or "market_id_identifier" lookup_value: For ISIN: "ISIN:CURRENCY:MARKET_ID" (e.g. "NO0010096985:NOK:15"). For market: "MARKET_ID:IDENTIFIER" (e.g. "15:2274236"). Comma-separate for batch lookup.
Search Nordnet's stock database with free text. Args: query: Search text (company name, ticker, etc.) limit: Max results (default 20)
No error handling guidance. Tools return raw API responses or json.dumps output with no recovery hints. If an account_id is invalid, the LLM receives a raw error with no suggestion to call list_accounts first. No categorization of errors as retryable, user-fixable, or fatal.
No pagination support. Tools like get_positions, get_trades, get_orders may return large result sets with no limit, offset, or cursor parameters. Large responses blow context windows and degrade LLM reasoning. No indication of result count or truncation.
No tool annotations (readOnlyHint, idempotentHint). All tools are read-only, but this is not declared in the tool definition. LLMs cannot infer safety properties and may incorrectly assume some tools have side effects or require confirmation.