Skip to main content
Glama
Hamid-K

Avanza-MCP

by Hamid-K

Avanza-MCP

WARNING

This is an experimental project. Use it at your own risk.

Always start in read-only mode and paper trading mode first. Do not enable live write/trading until you have validated behavior end-to-end in paper mode.

Notes below explain what paper trading mode is for and how to use it safely.

Single-script CLI + Textual TUI for Avanza portfolio monitoring, regular buy/sell orders, stop-loss management, MCP integration, and paper trading.

Provider-neutral agent context starts at INSTRUCTIONS/PROVIDER_ENTRYPOINT.md. The root AGENTS.md, CLAUDE.md, and GEMINI.md files are symbolic links to that single source, so Codex, Claude Code, and Gemini CLI receive the same repository rules. Cross-client work is handed off through the ignored local INSTRUCTIONS/SESSION_HANDOFF.md; see LLM Client Interoperability.

Trading-assistant context lives in:

  • INSTRUCTIONS/INSTRUCTIONS.md: standing operating rules and safety constraints.

  • INSTRUCTIONS/MEMORY.md: timestamped lessons, mistakes, strategy updates, and checklist changes. This is historical context, not live portfolio state.

  • INSTRUCTIONS/WARMUP.md: prompt for starting a fresh Codex trading session with the right context.

The INSTRUCTIONS/ folder is kept visible in git, but its private contents are ignored and should remain local-only.

For trading analysis, always refresh live Avanza MCP data. Do not treat markdown memory as current holdings, orders, prices, account IDs, or stop-loss IDs.

Credentials are prompted at runtime:

  • username: visible prompt, unless passed with --username

  • password: masked

  • current TOTP code: masked

Alternatively, pass --onepassword-item ITEM and optional --onepassword-vault VAULT to read the Avanza username, password, and current TOTP code through the 1Password CLI (op). The TUI has a matching Login with 1Password path. The tool does not store these secrets; op will ask you to authorize access through the local 1Password app.

The current TOTP code is passed to avanza-api as totpToken, which is the field name expected by the installed library version.

TUI Demo:

Quick Start

# 1. Install uv (once), then dependencies
curl -LsSf https://astral.sh/uv/install.sh | sh
uv sync

# 2a. Run the terminal UI ...
uv run python avanza_cli.py tui

# 2b. ... or the browser UI (prints a one-time access token — paste it
#     into the login form that opens; then sign in to Avanza from there)
uv run python avanza_cli.py web

# 2c. ... or scriptable console commands
uv run python avanza_cli.py accounts
uv run python avanza_cli.py portfolio summary

Log in with your Avanza username, password, and current TOTP code (or via the 1Password CLI). Paper trading mode is on by default — order and stop-loss tickets go to a local paper ledger until you explicitly switch to live mode. The TUI and Web UI are mutually exclusive: run one at a time.

To expose the MCP tools to an agent: log in (TUI or Web), enable the MCP toggle, then register python avanza_cli.py mcp in your MCP client — see "MCP Server Registration & Run" below.

Related MCP server: tastytrade-mcp

Setup

uv sync --dev
chmod +x scripts/verify.sh .githooks/pre-commit .githooks/pre-push
git config core.hooksPath .githooks

If uv is not installed yet, install it first:

curl -LsSf https://astral.sh/uv/install.sh | sh

Command examples below can be run either inside an activated environment or by prefixing with uv run. For example: uv run python avanza_cli.py tui.

Run the full quality gate at any time:

scripts/verify.sh

The quality gate also validates the private review artifacts without granting trade authority. The instrument strategy master derives its current instrument and exact account-position counts from row identities, binds them with SHA-256 identity digests, and requires matching objective, factor, and portfolio-control scope. No historical instrument or position count is completion authority. Buy-back governance has two separate evidence layers: the August 6 daily ledger remains a fixed historical snapshot, while the latest dated live-coverage artifact is rebuilt from the current dynamic universe and has no fixed candidate count. The live validator derives account, one-share, low-exposure, full-exit, state, and percentage-coverage totals from its rows and rejects copied percentage vectors across different instruments. It also checks the authoritative factor, pending-order, capital-displacement, and risk-governance overlays and ensures the objective-completion audit remains explicitly open while live and forward evidence are missing. It also checks the 12-measure forward KPI coverage audit and refuses to infer current returns, benchmark results, drawdown, participation, or lifecycle outcomes from stale or mixed-session snapshots. Generated portfolio artifacts are analysis context, not broker instructions. Every strategy-master account row also carries exact tenant/account/orderbook scope. The clean-sheet, factor, pending-order, displacement, risk, and live reconciliation overlays are checked for the same scope and authority flags. They also carry explicit STAMPED_ANALYSIS_SNAPSHOT freshness metadata and cannot claim current live state or authorize action without a new exact scoped refresh. Every current buy-back row carries an explicit protection classification, coverage state, low-exposure decision, and exact next gate. Unsupported stages remain PERCENTAGE_NOT_SET; an ordinary broker BUY row is not promoted into a ladder. The fixed historical ledger still carries explicit promotion and rejection/hold evidence and is never presented as current coverage. Transaction history is audited independently: historical summary coverage, manual sold slices, raw-source availability, and same-day BUY attribution are kept separate, with missing recent/raw evidence failing closed. The latest ignored PORTFOLIO_FULL_HISTORY_CANONICAL_* and PORTFOLIO_FULL_DYNAMIC_GOVERNANCE_MIRROR_* artifacts additionally preserve every current source identity, effective lineage, immutable sale lot, recovery allocation, terminal closure, and official-close reachability row. Their validator checks current raw-boundary parity and rejects omissions, duplicate or mutated transaction identities, over-allocation, mixed attributed/unattributed sources, stale terminal decisions, and rebounds that conceal an unserved crossing. These files are audit evidence only and never authorize an order. The scheduler ledger is separately checked for its 18-row Approval C queue, non-terminal check windows, and explicit active/archive gaps. Catalyst coverage separately prevents estimated dates or stale scanner labels from being treated as verified issuer publication.

Commands

Console commands print human-readable Rich tables and summaries, not raw API payloads.

Show running app version:

python avanza_cli.py --version

Launch the browser trading console (see the Web UI section):

python avanza_cli.py web

Show account overview:

python avanza_cli.py accounts

Show portfolio summary:

python avanza_cli.py portfolio summary

Show detailed portfolio positions:

python avanza_cli.py portfolio positions

Show transaction history (executed orders by default):

python avanza_cli.py transactions list

Pull broader history:

python avanza_cli.py transactions list --all --max-elements 5000

Search for a stock/order book:

python avanza_cli.py search-stock "VOLV B"

List active stop-loss orders:

python avanza_cli.py stoploss list

Dry-run a trailing/gliding sell stop-loss:

python avanza_cli.py stoploss set \
  --account-id ACCOUNT_ID \
  --order-book-id ORDER_BOOK_ID \
  --trigger-type follow-upwards \
  --trigger-value 5 \
  --trigger-value-type % \
  --order-type sell \
  --order-price 1 \
  --order-price-type % \
  --volume 10

Place the order for real by adding --confirm after reviewing the dry-run output. If --valid-until is omitted, avanza_cli automatically uses the longest currently allowed date (today + 90 days). If --order-valid-days is omitted, avanza_cli uses the current Avanza-safe default (1). Dry-run/preview now shows both trigger validity and derived triggered-order expiry (if triggered today). For live non-SEK/foreign instruments, order_valid_days > 1 is blocked to prevent Avanza Ogiltigt giltighetsdatum trigger failures.

Delete a stop-loss order dry-run:

python avanza_cli.py stoploss delete \
  --account-id ACCOUNT_ID \
  --stop-loss-id STOP_LOSS_ID

Delete for real by adding --confirm.

List open regular orders:

python avanza_cli.py orders list

Dry-run a regular buy/sell order:

python avanza_cli.py orders set \
  --account-id ACCOUNT_ID \
  --order-book-id ORDER_BOOK_ID \
  --order-type buy \
  --price 100 \
  --valid-until 2026-05-28 \
  --volume 10 \
  --condition normal

Delete an order dry-run:

python avanza_cli.py orders delete \
  --account-id ACCOUNT_ID \
  --order-id ORDER_ID

Textual TUI

Run the terminal UI from the same script:

python avanza_cli.py tui

The TUI masks password and TOTP inputs, clears those fields after a successful login, and hides the login screen. You can also enter a 1Password item name/ID and optional vault, then use Login with 1Password to let the local op CLI fetch username, password, and TOTP after your 1Password approval. Use Review Only first to validate and log an order request without creating a paper or live order.

Use the Reload TUI top-button to hard-restart python avanza_cli.py tui with the same arguments and load latest code changes without manually quitting/relaunching. The bottom status bar includes an automatic GitHub update checker indicator; when a newer release exists, it flashes a warning status. Controls: AVANZA_UPDATE_CHECK_ENABLED=0 disables checks, AVANZA_GITHUB_REPO=owner/repo overrides source.

After login, the largest account by total value is selected by default. The top panel groups account metrics into colored cards, keeps action buttons together, and shows a live clock plus a weekday OMXS open/close countdown. The P/L metric cycles through 1D P/L, 1W P/L, 1M P/L, 1Y P/L, Since Start P/L, and Total P/L, with SEK and % values colored separately. The main table shows the selected account's stocks with day movement, profit state, a distinct header row, and a real-time quote indicator: green dot for real-time, yellow dot for delayed or unresolved status. The order ticket searches as you type by stock name, ticker, or ISIN, so it supports opening new positions as well as trading current holdings. The lower table shows stop-losses and open orders for the selected account, with trigger and price values labeled as SEK or %; its cancel column opens a guarded cancellation ticket. Buy/sell side cells are color-coded green/red. Click any table column header to sort by that column; click the same header again to reverse the order. Drag the horizontal divider between tables, the vertical divider beside Active Trades, or the left edge of the order/stop-loss ticket to resize panes. Position and order state refreshes live every 5 seconds.

Multi-session mode: use Login extra account to add more authenticated Avanza sessions without leaving TUI. The session selector lets you switch tenant context quickly; account drop-down and all tables follow the selected session. Background refresh keeps inactive tenant/account snapshots warm without visibly switching the active TUI context.

Web UI

Run the browser-based trading console from the same script:

python avanza_cli.py web            # 127.0.0.1:8787, opens the browser
python avanza_cli.py web --port 9000 --no-browser

The Web UI has feature parity with the TUI — portfolio with live 5-second updates, order and stop-loss tickets (dry-run → review → typed PLACE), guarded cancellations, multi-tenant session switching with re-auth, MCP bridge management (bridge/R-W/live-authorization controls, token and proxy command, streaming tool log), a dedicated Paper trading workspace, TradingView lists, source-ranked research candidates, performance charting, orders/transactions history, and a full-page configured stop-loss view beside the compact dashboard stop-loss pane. When using 1Password CLI login, the Web UI can remember browser-local profiles containing only the 1Password item name, optional vault, and display label, so future primary or extra-session logins can pull credentials from 1Password without retyping the item name. The dashboard keeps view and trade actions in a second top-toolbar row; Activity and MCP Live logs sit under Ongoing Orders, scroll independently, and the main/side, portfolio/order/log, and Activity/MCP splits can be drag-resized and are remembered locally. It binds 127.0.0.1 only and is protected by a startup access token, cookie session, CSRF header, and a strict CSP (self + two pinned CDN files with SRI). See docs/web.md for the full security model, endpoint table, and smoke checklist.

The Web UI and the TUI are mutually exclusive: one at a time per checkout (enforced via .avanza_ui.lock). Both manage the same MCP bridge contract, so python avanza_cli.py mcp works identically against either.

MCP Server Registration & Run

This project exposes MCP through python avanza_cli.py mcp (stdio transport).

1) Start and authenticate the TUI

python avanza_cli.py tui

Log in, then enable the MCP tick box in the TUI. This starts the localhost bridge and writes .avanza_mcp_session.json. By default, the MCP bridge token is saved to macOS Keychain (security CLI) and only metadata is written to the dotfile; if keychain is unavailable, it falls back to file storage. Override with AVANZA_MCP_SESSION_BACKEND=keychain|file|auto (default auto).

2) Register the MCP server in your client

Codex, Claude Code, and Gemini CLI all support the same local stdio proxy. The recommended absolute-path command is:

uv run --project /ABSOLUTE/PATH/TO/avanza-mcp \
  python /ABSOLUTE/PATH/TO/avanza-mcp/avanza_cli.py mcp

Registration commands and the provider-neutral handoff workflow are documented in LLM Client Interoperability.

3) Run from your MCP client

After registration, start or reload the selected MCP client. It will launch the same proxy regardless of provider:

python avanza_cli.py mcp

The MCP proxy forwards tool calls to the authenticated TUI session through the localhost bridge. MCP starts read-only. Enable Live R/W in the TUI for live mutations; live stop-loss/order placement, edit, or deletion still requires MCP arguments to include confirm: true. MCP activity is shown in the lower-right log console.

For multi-session setups:

  • use avanza_sessions to inspect loaded tenant sessions,

  • use avanza_select_session to switch active context,

  • account/session-context avanza_* tools accept optional tenant_session_id for explicit tenant routing.

  • or pass account_id and the bridge auto-scopes to the session owning that account.

  • paper-ledger tools use session_id for paper ledger grouping; use tenant_session_id when explicit tenant routing is required.

Available MCP Tools

Tool

Purpose

avanza_status

Show TUI MCP bridge status, selected account, and current safety mode.

avanza_capabilities

Return consolidated MCP safety/capability status for automation loops (paper/live guards, account context, and tool availability).

avanza_live_session_authorize

Explicitly enable live mutation permission for this active MCP or TUI session.

avanza_live_session_revoke

Disable live mutation permission for this MCP or TUI session and force paper-only mode.

avanza_accounts

List Avanza accounts currently visible to the authenticated TUI session.

avanza_sessions

List loaded authenticated Avanza tenant sessions in the running TUI.

avanza_select_session

Switch active MCP/TUI tenant session context.

avanza_select_account

Safely switch MCP or TUI selected account context.

avanza_account_performance

Read Avanza account performance/development for the selected or supplied account_id over a chosen period.

avanza_instrument_chart

Read authenticated daily or intraday Avanza OHLC history for one order book; read-only analysis input.

avanza_account_cost_attribution

Replay cash-flow-adjusted account return with posted commission and modeled FX removed; read-only and fail-closed on truncated history.

avanza_frozen_holdings_attribution

Reconstruct a frozen starting-holdings path from authenticated daily prices and account history; read-only and fail-closed on missing identity, prices, cash events, or truncated history.

tv_scrape_symbol_analytics

Fetch TradingView symbol analytics and technical recommendation barometers from public scanner data.

tv_scrape_symbol_full

Fetch rich TradingView symbol payload (scanner analytics + technical labels + symbol profile metadata) in LLM-friendly JSON.

tv_auth_session_start

Open TradingView login page in browser and show session setup instructions for authenticated MCP usage.

tv_auth_session_set

Persist TradingView session cookie for authenticated tv_auth_* MCP tools.

tv_auth_session_login_auto

Open instrumented browser, let user log in normally, and automatically capture/save TradingView session cookies.

tv_auth_session_status

Show saved TradingView authenticated session status used by tv_auth_* tools.

tv_auth_session_clear

Delete saved TradingView authenticated session cookie.

tv_auth_symbol_analytics

Fetch TradingView symbol analytics in authenticated mode (inherits account entitlements from supplied TradingView cookie/session).

tv_auth_symbol_full

Fetch rich TradingView symbol payload in authenticated mode (scanner analytics + technical labels + profile metadata + entitlement context).

tv_preopen_symbol_snapshot

Return a compact TradingView pre-open/extended-hours snapshot for one symbol.

tv_preopen_batch_snapshot

Return TradingView pre-open snapshots for a symbol list with per-symbol error isolation.

tv_scrape_heatmap

Fetch TradingView market heatmap rows with exchange, OTC, liquidity, market-cap, price, and sort filters.

avanza_tv_preopen_portfolio_bundle

Read-only bundle that merges Avanza portfolio state with TradingView context; exact SELL targets are optional and never inferred from full holdings.

tv_auth_watchlist

Best-effort TradingView watchlist monitor in authenticated mode (cookie/session required for private list context).

tv_auth_custom_lists

Load authenticated TradingView custom tracking lists and rows from your TradingView profile session.

zacks_scrape_symbol

Fetch Zacks rank via quote-feed and scrape symbol/report pages for Earnings ESP plus visible analysis text (best effort; HTML may be blocked).

fmp_analyst_recommendations

Fetch analyst recommendation history for a symbol from Financial Modeling Prep (requires FMP API key).

polygon_analyst_insights

Fetch analyst insights/ratings for a symbol from Polygon Benzinga feed (requires Polygon API key).

sec_filings_recent

Fetch recent SEC EDGAR filings by ticker or CIK (official SEC data).

fred_series

Fetch FRED macro observations (requires a free FRED API key via FRED_API_KEY or api_key input).

data_source_status

Return current health, freshness, and safety flags for Avanza, TradingView, Zacks, FMP, Polygon, SEC, and FRED source integrations.

signal_context_bundle

Build a compact cross-source signal bundle (TradingView technicals + SEC filings + optional Zacks/FMP/Polygon + optional FRED macro).

avanza_portfolio

List portfolio positions, optionally filtered by one instrument and compact mode.

avanza_stoplosses

List stop-loss orders with durable strategy intent and missing/mismatch metadata audit, optionally filtered by instrument, side, status, and compact mode.

avanza_stoploss_strategy_audit

Refresh active broker stops and verify that each exact row reloads with matching durable local strategy metadata.

avanza_stoploss_strategy_register_batch

Dry-run or atomically register reviewed intent for exact active broker rows; changes only the local registry, never Avanza.

avanza_position_strategy_audit

Refresh exact holdings plus aggregate active-stop/open-order exposure, return the read-only event_protection_screen, and fail closed when a reviewed per-position plan or explicit protection classification is missing, stale, contradictory, or marked REPAIR_REQUIRED.

avanza_position_strategy_register_batch

Dry-run or atomically register reviewed per-position plans and instrument-specific protection reasons against exact live account state; an explicit preservation flag can update semantics without rebaselining a holding-only exception, and changes only the local registry, never Avanza.

avanza_open_orders

List live open/pending regular orders, optionally filtered by instrument, side, or status.

avanza_open_orders_raw

Debug tool for normalized open orders plus optional raw Avanza order payload.

avanza_ongoing_orders

List ongoing orders for the selected account: live stop-losses + live open orders, with optional paper active orders.

avanza_transactions

List executed orders/history with optional account/date/type/instrument filters; include_raw opt-in preserves the unnormalized broker payload for read-only evidence.

avanza_live_snapshot

Read a decision-ready polling snapshot, with optional compact instrument filtering.

avanza_position

Read one account position by orderbook ID.

avanza_instrument_stoplosses

Read stop-loss rows for one instrument/account.

avanza_instrument_open_orders

Read open/pending regular orders for one instrument/account.

avanza_instrument_transactions

Read transactions for one instrument/account.

avanza_instrument_state

Read one instrument's quote, position, stops, orders, transactions, and mechanical full-holding diagnostic.

avanza_protection_gaps

Audit exact strategy SELL targets, failed SELL stops, and overcoverage without inferring a full-core exit.

avanza_sold_today_buyback_state

Summarize same-day sold instruments using fail-closed recovery attribution; same-day BUY fills offset sales, while pre-existing/generic BUY stops and unattributed regular BUY orders remain conditional exposure rather than assumed repair.

avanza_recovery_reachability

Audit every active BUY row for practical fixed-price distance, secondary/deep residuals, reversal-trigger width, and recovery coverage, while separately reconciling explicit named, locked, secondary, or dormant position-plan semantics; raw issues remain visible and thresholds are never placement advice.

avanza_recent_fills_needing_protection

Review recent BUY fills; report a SELL gap only against an explicit percentage or exact strategy target.

avanza_verify_no_raw_failed_orders

Compact post-mutation check for failed/rejected open orders.

avanza_verify_protection

Verify exact strategy SELL targets; default mode checks failed SELL rows and overcoverage only.

avanza_realtime_quotes

Fetch real-time quote snapshot for selected account holdings (best with a 5s polling loop).

avanza_orderbook_quotes

Fetch arbitrary quote snapshots for supplied orderbook IDs (supports 5s polling loops for 20-50 symbols).

avanza_market_movers

Fetch Avanza market movers (gainers/losers) with optional country/market/turnover filters.

avanza_index_constituents

Fetch index constituents (default OMXS30) with optional quote/spread enrichment for building a liquid scalp universe.

avanza_fee_estimate

Estimate courtage/FX costs and break-even move for a planned trade (conservative assumptions when exact class data is unavailable).

avanza_search_stock

Search Avanza stock/order book data by name, ticker, or ISIN.

avanza_paper_stoploss_set

Create a local paper stop-loss order.

avanza_paper_orders

List local paper-trading orders and events for the selected account, or a supplied account_id.

avanza_paper_positions

List paper positions for a selected account/session, with optional active-only filter.

avanza_paper_trades

List completed paper trades (entry+exit ledger rows) for account/session.

avanza_paper_session_summary

Return P/L summary for a paper trading session/account.

avanza_paper_order_set

Create a local paper buy/sell order.

avanza_paper_order_exit

Close an open paper position by position_id or orderbook_id and create a completed paper trade entry.

avanza_paper_risk_state

Evaluate paper-session guardrails before allowing a new trade entry.

avanza_scalp_watchlist_set

Store/update a named scalp watchlist (orderbook IDs + optional labels) in local paper session state.

avanza_scalp_watchlist_get

Load a named scalp watchlist and optionally include current quotes for all members.

avanza_paper_cancel

Cancel a local paper order.

avanza_stoploss_set

Dry-run or place a stop-loss order; live MCP placement requires an auditable strategy intent and reason.

avanza_stoploss_set_batch

Place multiple stop-loss orders with per-item strategy-intent validation and final readback.

avanza_order_set

Dry-run or place a regular buy/sell order.

avanza_order_edit

Dry-run or update an existing open order (price/volume/valid_until).

avanza_open_order_edit

Dry-run or update an existing open/pending regular order.

avanza_order_delete

Dry-run or delete a regular open order.

avanza_open_order_cancel

Dry-run or cancel an existing open/pending regular order.

avanza_stoploss_delete

Dry-run or delete a stop-loss order; live deletion requires intent/reason matching the exact durable stop metadata.

avanza_stoploss_edit

Dry-run or edit an existing stop-loss (delete old + place new).

Canonical naming note:

  • use avanza_open_orders

  • use avanza_stoplosses

Stop-loss strategy metadata is stored locally in .avanza_stoploss_strategy.json with owner-only permissions. The registry is keyed by account and stop ID and fingerprints the complete broker row. Missing or changed broker fields produce MISSING or STALE_MISMATCH; the old intent is not trusted or silently transferred. This registry records why an order exists, but never authorizes a broker mutation.

Reviewed whole-position plans are stored separately in .avanza_position_strategy.json, also with owner-only permissions. Each account-plus-orderbook record binds the intended thesis, horizon, priority, strategy gate, and reviewed aggregate holding/stop/open-order exposure to exact live state. A fill, holding change, stop edit, leftover order, missing plan, or stale plan makes avanza_position_strategy_audit fail closed until the change is reviewed. Rebaselining records a decision; it never authorizes a trade.

Intentional holding-only drift may be documented with an audit_exception whose kind is USER_CONTROLLED_ALLOCATION or POST_MANUAL_EXIT_DRIFT, with an owner, reason, review point, and allowed_mismatches: ["holding"]. The audit must still remain incomplete, rebaseline_authorized is always false, and stop, order, or other exposure drift is never acknowledged by this mechanism.

For an existing reviewed holding-only exception, avanza_position_strategy_register_batch may set preserve_audit_exception_fingerprint: true on that exact row to update only semantic plan fields. The request must still match current live state exactly; the stored fingerprint must differ only in holding; the existing exception must explicitly set rebaseline_authorized: false; and supplied exception metadata must be unchanged. Missing exceptions, no actual holding drift, or any stop/open-order mismatch are rejected atomically. This remains a private registry write and never mutates or authorizes Avanza.

Every reviewed row also requires one exact protection_classification: CALIBRATED_STOP_PROFIT_LADDER, CORE_HOLD_EXCEPTION, MARKER_EXCEPTION, NAMED_EXCEPTION, NON_STOP_ELIGIBLE, or REPAIR_REQUIRED, plus an instrument-specific protection_reason. The registry validates the class against current SELL exposure and live holding size. Missing or contradictory metadata is rejected; REPAIR_REQUIRED is durable but blocks governance completion. A valid acknowledged holding-only exception can therefore remain strictly fingerprint-incomplete while still being governance-complete, without silently changing its stored fingerprint.

The private output/PORTFOLIO_GOVERNANCE_REVIEW_STREAK.json ledger records each scheduled twice-daily review. Validate it with:

python3 scripts/verify_governance_review_streak.py

The verifier rejects duplicate windows, missing account or gate evidence, late backfills, false eligibility flags, premature completion claims, and any review whose exact-account authorization state is not explicitly off. An existing malformed historical attempt may be preserved only by appending a current annotation bound to its immutable review ID, index, and canonical SHA-256 hash; annotations cannot change an attempt to eligible or rewrite the review. Goal completion additionally requires ten eligible morning/evening reviews across five regular market sessions; use --require-complete only when asserting that terminal condition.

Mechanical registry equality does not prove that analysis sources carry the same meaning. Use avanza-strategy-audit to compare every account-position semantic field and live fingerprint across an instrument master, clean sheet, and private registry. The command exits nonzero on missing coverage or any field contradiction and includes source SHA-256 hashes in its JSON result.

avanza-strategy-sync is a separate guarded analysis-only maintenance command. It defaults to dry-run, requires a documented --reason, and refuses to synchronize semantics unless holdings and active BUY/SELL fingerprints already match. --confirm changes only the supplied clean sheet and master; it never changes Avanza or the private registry and never grants trade authority.

Run avanza_recovery_reachability separately for each exact account after refreshing holdings and stops. Its default 8% fixed-distance band is practical participation; 8-15% is secondary review only, 15%+ is deep review, and 4% is the maximum default reversal width. These are review boundaries, not entry recommendations. A deep- or secondary-only row without practical participation is blocked as recovery coverage. Event, thesis, technical, risk, factor, capacity, and full-friction gates still determine whether a correction is a nearer row or an explicit dormant review with no active BUY.

The raw complete, review_required, issue_count, and per-instrument issues fields remain mechanical and are never suppressed. The separate governance_complete result is true only when every active BUY instrument has a current exact-account position plan with a matching active-BUY fingerprint and every raw issue is explicitly classified as a named exception, locked residual, secondary review, or dormant review. Missing or stale plans, REPAIR_REQUIRED, unclassifiable rows, live cleanup requirements, and plan-versus-distance contradictions remain unresolved and fail closed. An explained issue is review inventory, not practical recovery coverage and not order authority.

avanza-strategy-audit \
  --master output/PORTFOLIO_INSTRUMENT_STRATEGY_MASTER_20260731.json \
  --clean-sheet output/PORTFOLIO_CLEAN_SHEET_POST_MINI_20260731.json \
  --registry .avanza_position_strategy.json \
  --account-map Personal=5227886 \
  --account-map DarkCell=7616265

SEC EDGAR access identity

sec_filings_recent uses a provider-specific declared identity for official SEC requests. It does not reuse the browser-style user agent required by TradingView. By default, Avanza-MCP derives the contact address from the local git config user.email value without writing that address into the repository.

For a machine without Git contact configuration, set either a contact email or the complete SEC user agent before starting the TUI/MCP bridge:

export AVANZA_SEC_CONTACT_EMAIL="admin@example.com"
# Or provide the complete declared identity:
export AVANZA_SEC_HTTP_USER_AGENT="Avanza-MCP/0.2.31 Example Company admin@example.com"

The ticker-to-CIK index is cached for 24 hours per process and SEC requests are serialized below the official 10-requests-per-second ceiling. Advanced local overrides are AVANZA_SEC_TICKER_INDEX_CACHE_SECONDS and AVANZA_SEC_REQUEST_MIN_INTERVAL_SECONDS; the latter is always clamped to at least 0.1 seconds. Restart the bridge after changing any of these settings.

TradingView/Zacks scrape mode notes

  • These tools are intentionally marked experimental.

  • tv_scrape_* runs in free anonymous mode.

  • tv_auth_* supports three auth paths:

    • explicit tool input (cookie or sessionid + sessionid_sign),

    • environment variables (TRADINGVIEW_SESSIONID, optional TRADINGVIEW_SESSIONID_SIGN),

    • saved local session via tv_auth_session_set.

  • Saved TradingView session storage defaults to macOS Keychain (security CLI) when available, with metadata in .avanza_tradingview_session.json (ignored by git). Fallback is file-only storage.

  • Optional override: AVANZA_TV_SESSION_BACKEND=keychain|file|auto (default auto).

  • Preferred path: tv_auth_session_login_auto to open an instrumented browser and capture cookies automatically after login.

  • Browser-assisted flow:

    1. call tv_auth_session_login_auto,

    2. log in normally in opened browser window,

    3. wait for auto-capture confirmation, then run tv_auth_session_status,

    4. use tv_auth_* tools with no repeated cookie input.

  • The TUI TradingView Lists tab uses the same authenticated profile and provides a dedicated custom-list monitor with list switching.

  • The Web UI Research candidates view uses /api/recommendations/stocks to assemble a bounded, read-only candidate list from TradingView movers/technicals and Zacks rank/analysis summaries. Its source controls filter the loaded table instantly without another server request and report compact per-source enrichment health. It is research input only, not an order instruction.

  • If auto mode is unavailable, fallback is tv_auth_session_start + manual tv_auth_session_set.

  • If Codex or another agent does not expose tv_* tools as direct native calls, keep using the registered avanza_cli MCP server and call the tools through the local stdio/TUI bridge. The bridge command remains python avanza_cli.py mcp; it forwards to the authenticated TUI localhost session.

  • Pre-open workflow:

    1. start and authenticate the TUI, then enable MCP,

    2. confirm tv_auth_session_status if authenticated TradingView data is needed,

    3. call tv_preopen_batch_snapshot for watchlist/candidate symbols or avanza_tv_preopen_portfolio_bundle for an Avanza account review,

    4. use tv_scrape_heatmap with filters such as exchanges=["NASDAQ","NYSE","AMEX"], exclude_otc=true, min_market_cap, min_price, and min_volume to avoid OTC/microcap noise.

  • Performance notes: tv_preopen_batch_snapshot uses bounded bulk TradingView scanner chunks for normal multi-symbol reviews, preserving per-symbol error isolation for large or mixed-exchange requests; Avanza MCP read tools keep a short in-process account cache to avoid repeated full portfolio/stop/order pulls during focused workflows; avanza_orderbook_quotes deduplicates IDs and can skip metadata enrichment when fields contains only price fields.

  • TradingView extended-hours fields depend on TradingView entitlement/session and scanner availability. premarket_close, postmarket_close, update_mode, and quote freshness warnings are reported explicitly; missing fields are returned as null instead of inferred from Avanza.

  • zacks_scrape_symbol is best effort; it uses Zacks quote-feed data for rank when available, then attempts the quote page and free Zacks equity-report page for visible analysis text. It returns rank_source, quote_feed, analysis_summary, analysis_sources, and blocked_sources. Zacks HTML pages can still return bot-protection pages unless a valid browser session/cookie is provided.

  • Treat scrape output as decision support only. Keep live mutations behind Avanza read/write + explicit confirm: true.

  • API-key tools:

    • fmp_analyst_recommendations: pass api_key or set FMP_API_KEY.

    • polygon_analyst_insights: pass api_key or set POLYGON_API_KEY.

MCP Transaction History Quick Use

Use avanza_transactions to retrieve executed order history (BUY/SELL by default).

  • Most recent 15 rows:

    • {"max_elements": 15}

  • Include dividends and interest:

    • {"types": ["BUY", "SELL", "DIVIDEND", "INTEREST"], "max_elements": 200}

  • Full export window:

    • {"transactions_from": "2026-01-01", "transactions_to": "2026-12-31", "executed_only": false, "max_elements": 5000}

avanza_transactions is read-only and works while MCP remains read-only.

When preserving transaction evidence, pass include_raw: true and verify the response contains raw_payload. avanza_capabilities also reports contract_features.transactions_include_raw; a missing feature indicates that the loaded MCP runtime must be reloaded before raw-source evidence can be accepted. Also verify mcp_contract_revision after a reload; the package version alone is not sufficient to distinguish an older long-running bridge process.

4) Remote-only client note

ChatGPT developer mode currently expects remote MCP apps/connectors over SSE or streaming HTTP, so it cannot directly register this local stdio proxy.

For auto-trading experiments, use avanza_live_snapshot as the polling tool. It returns a decision-ready account snapshot and is safe to call every 5 seconds. Paper trading is available in read-only MCP mode through avanza_paper_stoploss_set, avanza_paper_order_set, avanza_paper_orders, and avanza_paper_cancel; paper state is stored in .avanza_paper_session.json and never places an Avanza order. The TUI's Paper tick box is on by default; while it is on, the order and stop-loss form submit buttons create local paper orders. Turn Paper off only when you intend to use live Avanza placement, which still requires typing PLACE. Regular live buy/sell orders are also exposed through avanza_order_set and avanza_order_delete, gated by MCP R/W mode and confirm: true.

TUI sessions write structured JSONL logs under avanza-cli/logs/: a timestamped session log plus persistent app.jsonl, mcp.jsonl, and trading.jsonl.

Safety

This uses the unofficial avanza-api package. Start with stoploss list and dry-runs. Verify Avanza's live interpretation of % and gliding stop-loss fields with very small size before trusting it for meaningful orders.

Stop-losses are not guaranteed earnings-gap or overnight protection. A tight Kurs 99% can avoid a bad normal-session fill, but it can also fail, remain unfilled, or show ERROR if price gaps through the trigger after hours, before open, during a halt, or in a fast market. Treat ERROR rows as unprotected, and handle after-close/before-open catalysts with explicit sizing, trim, sell, hedge, or hold-and-accept decisions.

If an ERROR row reason contains Ogiltigt giltighetsdatum, the failure is usually triggered-order validity, not trigger logic or slippage. Set order_valid_days=1 and replace the stop-loss.

Credits

Creators: Hamid Kashfi and Codex (OpenAI).

This project builds on the Python avanza-api library by fama93:

Available Tools

82 tools
avanza_account_cost_attributionB

Replay one account's Avanza cash-flow-adjusted return with posted commission and modeled FX removed. Read-only and fail-closed on truncated history.

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoTHREE_MONTHS
account_idNo
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
start_dateNo
fx_fee_rateNo
include_dailyNo
top_cost_daysNo
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.

TDQS

B3.2/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It explicitly discloses that the tool is read-only and fails closed on truncated history, which are meaningful behavioral traits. However, it does not cover other behaviors such as authorization requirements, rate limits, or output format.

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 two tight sentences with no filler. The core action is front-loaded, and the safety note is placed immediately after, making it easy to parse quickly.

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 8 parameters, no output schema, no annotations, and a large sibling toolset, the description is too sparse. It gives the tool's essence but not enough detail about parameters, return value, or how it relates to other account-level Avanza tools.

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 only 25%, so the description must compensate for undocumented parameters. It loosely maps 'one account' to account_id and 'modeled FX removed' to fx_fee_rate, but leaves period, start_date, include_daily, top_cost_days, and session parameters effectively unexplained.

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 states a specific verb ('Replay') and resource ('one account's Avanza cash-flow-adjusted return') with concrete modifications ('posted commission and modeled FX removed'). It is clear about the tool's function, though it does not explicitly differentiate itself from sibling attribution/performance tools.

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 like avanza_account_performance or avanza_frozen_holdings_attribution. The fail-closed note hints at a constraint, but no explicit when-to-use or when-not-to-use conditions are given.

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

avanza_account_performanceB

Read Avanza account performance/development for the selected or supplied account_id over a chosen period.

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoSINCE_START
account_idNo
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral burden. It explicitly says 'Read', making the non-mutating nature clear, and reveals useful stateful behavior: the account may come from a prior selection or be supplied directly. It does not disclose session/auth prerequisites, error behavior, or output shape, but the core read-only behavior is present.

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 one compact sentence that front-loads the verb and resource and contains no filler. The phrasing 'performance/development' is slightly awkward, but the structure is efficient and easy to scan.

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 annotations, no output schema, and four optional parameters, this description is thin. It does not describe what the performance output contains, what happens if neither a selected account nor an account_id is available, or whether session context is required. Given the large family of Avanza session and account tools, an agent would still need to infer several invocation details.

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 leaves account_id undocumented, and the description adds meaning by saying it can be 'selected or supplied', which clarifies that the parameter is optional when a selected account exists. It also confirms period is user-chosen, though it adds little beyond the schema's enum and default. Session parameters are already described in the schema, so the description only partially compensates for the low schema coverage.

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 states a clear verb ('Read') and a specific resource ('Avanza account performance/development'), and it identifies the controlling variables: account_id and period. It is clear enough to convey the tool's primary job, but it does not explicitly differentiate it from nearby account tools such as avanza_accounts or avanza_portfolio.

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 when the tool should be used: to retrieve account-level performance over a period. It also gives one useful practical rule: account_id can be the currently selected account or an explicitly supplied ID. However, it does not state exclusions, prerequisites, or alternatives among the many Avanza sibling tools.

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

avanza_accountsB

List Avanza accounts currently visible to the authenticated TUI session.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNo
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.

TDQS

B3.3/5.0
Behavior3/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 does disclose the key trait that results are scoped by what is 'currently visible to the authenticated TUI session,' which is genuinely useful and non-obvious. However, it does not state what happens when no session is authenticated, whether the operation is read-only, or anything about the return structure.

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 10-word sentence with zero filler. The verb and resource are front-loaded, and the scoping constraint is delivered immediately rather than buried in later clauses. Every word earns its place.

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 list tool with two optional parameters and no output schema, the description is almost sufficient, but it leaves gaps: it does not describe the expected return shape (list of account IDs, names, types?), nor behavior when no authenticated session exists. Given zero annotations and no output schema, some expectation-setting about failure modes would round it out.

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 coverage is 50%, with tenant_session_id documented in the schema while session_id is not. The phrase 'authenticated TUI session' indirectly gives meaning to session_id by tying it to the session whose account visibility is being listed, adding some value beyond the bare property name. However, the description does not directly explain either parameter or their optionality, so it only partially compensates for the coverage gap.

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 states a specific verb ('List') and resource ('Avanza accounts') with a scoping qualifier ('currently visible to the authenticated TUI session'). This clearly distinguishes it from siblings like avanza_select_account and avanza_account_performance, though it does not name them explicitly. The only shortfall is the lack of an explicit sibling differentiation statement.

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 such as avanza_select_account or avanza_account_performance. The session-scoping phrase obliquely implies it is for enumerating session-visible accounts, but there are no explicit when/when-not conditions or alternative routing. An agent would have to infer the intended use case from the name alone.

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

avanza_capabilitiesA

Return consolidated MCP safety/capability status for automation loops (paper/live guards, account context, and tool availability).

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of explaining behavior. It communicates that this is a read-oriented reporting tool and names the consolidated categories returned, which is useful. However, it does not disclose the output shape, whether any session/live state is affected, or whether authorization is required.

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, front-loaded sentence with no filler. The main purpose comes first, followed by parenthetical specifics that clarify scope without bloating the text.

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 status-reporting tool with only optional session-scope parameters and no output schema, the description adequately summarizes the returned concept areas. It could be more complete by detailing the status values or whether live and paper contexts are both covered, but the core invocation context is clear.

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 input schema documents both parameters completely, including the legacy alias relationship and multi-session routing intent. The description adds no parameter-level insight, so the baseline score of 3 applies.

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 a specific action ('Return consolidated... status') and resource ('MCP safety/capability status'), with useful subcategories: paper/live guards, account context, and tool availability. It is clear enough to distinguish from most siblings, though it does not explicitly contrast itself with avanza_status or other status-like tools.

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 phrase 'for automation loops' implies target usage, but the description does not explicitly say when to prefer this tool over avanza_status, data_source_status, or tv_auth_session_status. There are no stated exclusions or alternative routing conditions.

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

avanza_fee_estimateB

Estimate courtage/FX costs and break-even move for a planned trade (conservative assumptions when exact class data is unavailable).

ParametersJSON Schema
NameRequiredDescriptionDefault
sideYes
priceYes
marketNo
currencyNo
quantityYes
account_idYes
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
orderbook_idYes
brokerage_classNo
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It does disclose the conservative-assumptions behavior when exact class data is unavailable, but it does not mention side effects, whether it fetches live data, or how the estimate output is structured.

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. It communicates the core purpose immediately and the parenthetical adds a useful caution without bloating the text.

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?

With 10 parameters, no output schema, and no annotations, one sentence is insufficient. The description leaves the agent uninformed about return values, parameter relationships, session/account context, and what 'break-even move' means operationally.

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 only 20% across 10 parameters, and the description does not compensate. It gives no semantics for required fields like account_id, orderbook_id, side, price, or quantity, and does not explain how market, currency, or brokerage_class affect the estimate.

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 states a specific action ('estimate'), a concrete resource ('courtage/FX costs and break-even move'), and a clear context ('planned trade'). It is distinguishable from execution and post-trade attribution tools, though it does not explicitly name a sibling alternative.

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?

'For a planned trade' provides a clear use context, and the parenthetical hints at when conservative assumptions apply. However, it does not explicitly say when to prefer this tool over alternatives or when not to use it.

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

avanza_frozen_holdings_attributionB

Reconstruct an account's frozen starting-holdings path using authenticated Avanza daily prices, transactions, and cash events. Read-only and fail-closed on missing history or unsupported cash events.

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoTHREE_MONTHS
account_idNo
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
start_dateYes
include_dailyNo
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.

TDQS

B3.2/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral disclosure burden. It clearly states the operation is read-only and that it fails closed on missing history or unsupported cash events, which is valuable safety-relevant context. It does not elaborate on other behaviors such as output format or authentication requirements, but the key safety and failure semantics are disclosed.

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, dense sentence that front-loads the main purpose and then adds safety and failure behavior. Every phrase earns its place, and there is no redundant repetition of the tool name or schema fields.

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 there is no output schema, no annotations, and sparse parameter documentation, the description is not sufficient for an agent to confidently invoke the tool correctly. It would need more detail about how parameters affect behavior, what the return value looks like, and what conditions make it appropriate to call.

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 only 33%, and the description does not explain the meaning of start_date, period, account_id, include_daily, or how they map to the reconstruction logic. The description's mention of prices, transactions, and cash events gives some context but does not compensate for the largely undocumented parameters.

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 states a specific verb ('Reconstruct'), a clear resource ('an account's frozen starting-holdings path'), and the inputs used (daily prices, transactions, cash events). It is distinct from most sibling tools, though it does not explicitly contrast itself with related attribution or portfolio tools such as avanza_account_cost_attribution.

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 about when to use this tool versus alternatives, no mention of prerequisites like requiring an active session or selected account, and no exclusion criteria. The description implies its use case but leaves the when-to-use decision entirely to the agent.

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

avanza_index_constituentsB

Fetch index constituents (default OMXS30) with optional quote/spread enrichment for building a liquid scalp universe.

ParametersJSON Schema
NameRequiredDescriptionDefault
index_idNo19002
index_nameNoOMXS30
include_quotesNo
include_spreadNo

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 disclosure burden. It clearly indicates a read operation (fetch) and the optional quote/spread enrichment, but it does not mention session/auth requirements, rate limits, pagination, or the structure of the returned data. Core behavior is transparent; deeper behavioral context is missing.

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

Conciseness5/5

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

A single sentence that front-loads the action, states the defaults, and adds the use case. There is no filler or redundancy; every phrase contributes meaning.

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?

This tool has no output schema and no annotations, so the description needs to explain return values and selector behavior. It neither describes what the returned constituents look like nor clarifies how index_id and index_name interact. An agent could invoke it with defaults but would be guessing about the output and index selection semantics.

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 0%, so the description's mention of 'default OMXS30' and 'optional quote/spread enrichment' adds meaning for index_name, include_quotes, and include_spread. However, index_id is not explained at all, and the relationship or precedence between index_id and index_name is absent, so the compensation is incomplete.

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 states a specific action ('Fetch index constituents') and resource, includes the default index (OMXS30), and mentions optional quote/spread enrichment. It is clear and distinct, though it does not explicitly differentiate from sibling tools like avanza_market_movers or avanza_search_stock.

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 phrase 'for building a liquid scalp universe' implies a use case, but there is no explicit guidance on when to use this tool versus alternatives, no when-not-to-use conditions, and no mention of related tools. The context is present but shallow.

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

avanza_instrument_chartA

Read authenticated Avanza OHLC history for one order book and period. Read-only; intended for auditable performance and counterfactual analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoTHREE_MONTHS
resolutionNoDAY
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
orderbook_idYes
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the behavioral burden. It does disclose that the tool is read-only and requires authentication, which is useful. However, it does not describe return shape, session behavior, data availability caveats, or how it behaves for different periods/resolutions, so transparency is only modest.

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

Conciseness5/5

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

Two sentences with no filler: the first defines the operation and scope, the second adds safety and intent. Every phrase earns its place, and the most important information is front-loaded.

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 has no output schema and no annotations, and the description omits detailed return-value information and any caveats about sessions or data availability. Still, 'OHLC history' combined with the schema's enums and defaults provides enough basic context for an agent to make a plausible call; it is adequate but not fully complete.

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 only 40%, and the description adds no parameter-level meaning beyond implying that orderbook_id identifies the order book and period controls the history window. The parameter names and enums carry most of the meaning; undocumented semantics for orderbook_id, period, and resolution are not compensated for.

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 names a specific operation ('Read'), a specific resource ('Avanza OHLC history'), and a clear scope ('for one order book and period'). This makes it immediately distinguishable from chart-adjacent siblings such as avanza_instrument_state, avanza_instrument_transactions, or avanza_realtime_quotes.

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 description frames the intended context: authenticated historical OHLC data for auditable performance and counterfactual analysis. It does not explicitly list alternatives or exclusions, but the use-case framing strongly implies this is the historical-data tool rather than the real-time or state-oriented ones.

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

avanza_instrument_open_ordersB

Read open/pending regular orders for one instrument/account, with optional raw payload diagnostics.

ParametersJSON Schema
NameRequiredDescriptionDefault
sideNo
statusNo
compactNo
refreshNo
account_idYes
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
include_rawNo
orderbook_idYes
order_book_idNo
instrument_nameNo
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.

TDQS

B3/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. The verb 'Read' does convey a non-mutating operation, and 'optional raw payload diagnostics' discloses that output may include raw payloads. However, it does not explain behaviors tied to refresh, compact, include_raw's default, or what 'diagnostics' actually contains, and it does not clarify that this excludes stoploss orders beyond the word 'regular'.

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 well-structured sentence with zero filler. The core purpose is front-loaded, and the optional diagnostics behavior is appended as a secondary clause. Every word earns its place.

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?

This is an 11-parameter tool with no output schema, no annotations, and no title, yet the description does not explain return values, parameter interactions, or the relationship to overlapping siblings. The alias parameters, status values, and the compact/refresh/include_raw interplay are all left to the agent to discover, making the description inadequate for reliable invocation.

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 only 18%, so the description must compensate for 9 undocumented parameters. It adds meaning for account_id/orderbook_id ('one instrument/account') and include_raw ('raw payload diagnostics'), but leaves side, status, compact, refresh, order_book_id, and instrument_name semantically unexplained. The orderbook_id vs order_book_id alias relationship is not clarified, and status is a free string with no value hints.

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?

States a specific verb ('Read'), a resource ('open/pending regular orders'), and a scope ('one instrument/account'). The qualifier 'regular' helps distinguish from stoploss siblings, and 'raw payload diagnostics' hints at the include_raw behavior. However, it does not explicitly differentiate from near-identical siblings like avanza_open_orders, avanza_open_orders_raw, and avanza_ongoing_orders.

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 when-to-use or when-not-to-use guidance is provided, and no alternatives are named. Given a sibling list containing avanza_open_orders, avanza_open_orders_raw, and avanza_ongoing_orders, an agent has no basis for choosing this tool over those. The scope phrase 'one instrument/account' only weakly implies the per-instrument use case.

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

avanza_instrument_stateC

Read one instrument's quote, position, active/error stops, open orders, recent transactions, and protection summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNo
dateNo
fromNo
account_idYes
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
include_rawNo
orderbook_idYes
changed_sinceNo
transactions_toNo
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.
transactions_fromNo

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 only says 'Read', implying a safe read operation, but does not disclose aggregation behavior, default include_raw=true, filter semantics, raw output behavior, or any side effects. For an 11-parameter tool this is a significant transparency 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 names the core action and every major data category with zero filler. It is appropriately concise for a high-level tool summary.

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?

Despite high complexity (11 parameters, no output schema, no annotations), the description provides only a high-level inventory. It does not explain return shape, how filters interact with the listed data groups, or how this relates to the many sibling tools.

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

Parameters1/5

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

Schema description coverage is only 18%, and the description adds no parameter-level meaning. It never explains account_id, orderbook_id, to/from/date ranges, changed_since, include_raw, or the transactions_from/to pair, leaving the agent unable to correctly construct queries.

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?

Description states a specific verb ('Read') and a clearly bounded resource ('one instrument's ... state'), then enumerates the aggregated facets: quote, position, stops, open orders, transactions, and protection summary. This distinguishes it from narrower siblings like avanza_instrument_stoplosses and avanza_instrument_transactions.

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 given on when to use this aggregate tool versus the many sibling tools that cover individual facets. The description implies a one-stop read for a single instrument but does not state exclusions, prerequisites, or alternatives.

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

avanza_instrument_stoplossesB

Read stop-loss rows for one instrument/account with optional side/status filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
sideNo
statusNo
compactNo
refreshNo
account_idYes
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
orderbook_idYes
order_book_idNo
instrument_nameNo
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.

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 only says 'Read', giving no detail on auth/session requirements, potential refresh/caching side effects, filter semantics, or what the returned rows contain. The presence of a 'refresh' parameter suggests a non-trivial behavior that is completely unexplained.

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. It communicates the action, resource, scope, and filters efficiently. While more detail would be useful elsewhere, the structure itself is ideal.

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 10 parameters, no output schema, and low schema coverage, the description is too sparse. It does not explain return shape, filter behavior, authentication/session expectations, or the effects of refresh and compact. It is minimally usable but leaves many important gaps for the agent to guess.

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 only 20%, and the description does not compensate. It identifies 'side/status filters' but does not explain allowed status values, the duplicate side enum casing, the meaning of compact/refresh, or the relationship between orderbook_id, order_book_id, and instrument_name.

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 states a specific action ('Read'), a specific resource ('stop-loss rows'), and a clear scope ('one instrument/account') with optional filters. It is distinguishable from broader sibling tools like avanza_stoplosses, though it does not explicitly name the sibling it differs from.

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 description provides clear context: this is for reading stop-loss rows scoped to a specific instrument/account, which implies it should be used when targeted data is needed rather than a portfolio-wide view. It does not explicitly name alternatives or exclusion conditions, but the scoping is strong enough to guide selection.

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

avanza_instrument_transactionsB

Read recent transactions for one instrument/account without dumping unrelated history.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNo
dateNo
fromNo
sideNo
statusNo
compactNo
refreshNo
account_idYes
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
include_rawNoInclude the unnormalized broker transaction payload for read-only evidence preservation.
max_elementsNo
orderbook_idYes
changed_sinceNo
executed_onlyNo
order_book_idNo
instrument_nameNo
transactions_toNo
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.
transactions_fromNo

TDQS

B3/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 disclosure burden. Its word 'Read' signals a read-only operation, but it discloses nothing about the default executed_only=true filter (which hides pending orders), the side-effecting refresh parameter, the max_elements cap of 20000, or that 'recent' is adjustable via date parameters. These are behavioral traits beyond bare parameter names, and they are left unexplained.

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 12-word sentence with the verb and resource front-loaded and zero filler. Every word earns its place, and the key differentiator ('without dumping unrelated history') is packed efficiently into the same sentence.

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 19-parameter tool with no annotations and no output schema, this description is far too sparse. It establishes scope and recency but omits default filter behavior, date-range semantics, the relationship between transactions_from/transactions_to and from/to, and the alternate order_book_id spelling, leaving agents to guess at most of the tool's behavior.

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 only 16% (3 of 19 parameters documented), so the description must compensate but barely does. It does add meaning to the two required scope parameters (account_id, orderbook_id) via 'one instrument/account', and 'recent' loosely hints at date filtering, yet 16 parameters including side, status, compact, refresh, executed_only, and the duplicate order_book_id spelling remain undocumented in both schema and description.

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 uses a clear verb ('Read') and a specific scoped resource ('transactions for one instrument/account'), and 'without dumping unrelated history' implicitly differentiates it from the broader avanza_transactions sibling. It falls short of 5 because 'instrument/account' is ambiguous about whether both identifiers are needed, and the schema shows both account_id and orderbook_id are required.

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 phrase 'without dumping unrelated history' implies this tool is for scoped reads rather than full transaction dumps, which hints at a contrast with avanza_transactions. However, no alternative is named and no explicit when-to-use / when-not-to-use conditions are given, leaving the agent to infer selection among overlapping siblings like avanza_transactions, avanza_open_orders, avanza_ongoing_orders, and avanza_recent_fills_needing_protection.

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

avanza_live_session_authorizeA

Explicitly enable live mutation permission for this active MCP/TUI session. Requires read_write mode and acknowledge=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNo
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
acknowledgeNo
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral burden. It does disclose the core side effect (enabling live mutation permission) and preconditions, but it does not mention what happens on success, whether the permission persists, or how failures surface. This is adequate but not deeply transparent.

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 two short sentences with no redundant phrasing. The core action and the critical prerequisite are front-loaded, making it easy for an agent to parse quickly.

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 lack of output schema and annotations, the definition is somewhat thin. It explains what the tool does and its prerequisites, but it does not describe expected results, session-scope behavior, or edge cases around session_id/tenant_session_id. This is sufficient for a simple authorization gate, though more context would help.

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 description adds important meaning by requiring acknowledge=true, which goes beyond the schema's default false. However, it does not clarify the purpose of reason or the relationship/session scoping details beyond what the schema already provides, leaving one parameter undocumented.

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 uses a specific verb ('enable'), a clear resource ('live mutation permission'), and scopes it to the active MCP/TUI session. It is easily distinguishable from the sibling revoke tool and other session tools without requiring schema inspection.

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 description provides clear usage context by stating the required read_write mode and acknowledge=true prerequisite. It does not explicitly name the alternative (revoke) or state when not to use it, but the enabling action is unambiguous enough for an agent to select it correctly.

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

avanza_live_session_revokeA

Disable live mutation permission for this MCP/TUI session and force paper-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.

TDQS

A3.7/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 effects. It transparently states the state transition to paper-only mode, but does not mention reversibility, whether existing live orders are affected, whether the change is immediate, or what response the agent should expect. This is adequate but not rich behavioral disclosure for a mutation-like 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 a single tightly worded sentence with no filler. It front-loads the core action and immediately clarifies the resulting mode. Every word contributes meaning.

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 session control action with no output schema and no annotations, the description gives the essential effect but omits operational details such as session scoping behavior, reversibility, and post-call state confirmation. The schema covers parameters, but the description alone would leave an agent uncertain about side effects and how to verify success.

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 input schema already documents both parameters and the legacy alias relationship. The description does not add extra meaning about when to supply session_id or tenant_session_id, which is fine because the schema fully covers the semantics. Baseline 3 applies.

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

Purpose5/5

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

The description states a specific action, 'Disable live mutation permission for this MCP/TUI session and force paper-only mode,' which clearly identifies the resource and the outcome. This distinguishes it from the sibling avanza_live_session_authorize by being the inverse operation, and from paper-only tools by explicitly controlling live mutation permission.

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 intended use is implied by the description: call this when you need to revoke live trading ability and switch the session to paper-only. However, it does not explicitly contrast with avanza_live_session_authorize or state conditions such as 'use this instead of X' or 'use when Y'. There is no exclusion guidance or prerequisite information.

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

avanza_live_snapshotB

Read a decision-ready snapshot for polling loops; supports compact instrument filtering to reduce payload size.

ParametersJSON Schema
NameRequiredDescriptionDefault
sideNo
statusNo
compactNo
refreshNo
account_idNo
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
orderbook_idNo
order_book_idNo
instrument_nameNo
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.

TDQS

B3.3/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 behavior. It does indicate a read operation and implies repeated safe use via 'polling loops,' and it mentions payload-reduction behavior. But it does not disclose return contents, staleness, session/auth requirements, or error behavior, so transparency is only partial.

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 short and front-loads the core action and use case in a readable sentence. It earns its place but uses the somewhat vague phrase 'decision-ready' and could use that space to name the snapshot contents or key routing parameters.

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 10 optional parameters, no output schema, and no annotations, this description is too thin. An agent cannot determine what fields the snapshot contains, how instruments are selected, what refresh does, or how the various session/account/orderbook identifiers relate. The description leaves too much to inference.

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 only 20%, and the description does not compensate. It vaguely references 'compact instrument filtering,' which maps to compact and possibly instrument_name, but the other eight parameters—side, status, refresh, account_id, orderbook_id, order_book_id, session_id, and tenant_session_id—receive no semantic guidance.

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 states a clear action and resource: 'Read a decision-ready snapshot for polling loops.' It conveys that this is a read-only snapshot tool and gives a use case. It does not explicitly differentiate itself from sibling snapshot/quote tools such as avanza_realtime_quotes or avanza_orderbook_quotes, so it falls short of full clarity.

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 polling loops' provides a clear context for when to use this tool, and 'compact instrument filtering to reduce payload size' gives concrete guidance for the compact option. However, it does not mention alternatives or when not to use this tool, despite the large sibling set.

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

avanza_market_moversB

Fetch Avanza market movers (gainers/losers) with optional country/market/turnover filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
min_priceNo
countryCodesNo
marketPlacesNo
min_total_value_tradedNo

TDQS

B3.4/5.0
Behavior2/5

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

There are no annotations, so the description carries the full behavioral burden. It only names the resource and filters. It does not disclose pagination, default limit, maximum limit, what the response payload is, whether movers are sorted by percent change or absolute change, or whether the endpoint can fail when no market data is available. This is too thin for a data-fetching tool with five optional parameters.

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?

One compact sentence with the core resource up front and the optional filters appended. No filler, no repetition of schema types, and every phrase adds some value. It is appropriately sized for a tool with only five parameters.

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 straightforward market-movers fetch with no required parameters, this is close to adequate: the agent knows what it returns and what knobs exist. However, it lacks any statement about default pagination or output fields, and it doesn't explain the semantics of each filter (especially 'turnover'). No output schema exists, so the description has more responsibility than it meets.

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 for all five parameters. It names country/market/turnover filters, which maps to countryCodes, marketPlaces, and min_total_value_traded, and the phrase 'gainers/losers' implies limit and min_price are used for filtering the list. That said, the mapping is partial: 'turnover' is not self-explanatory as min_total_value_traded, and 'market' may be ambiguous with marketPlaces vs countryCodes.

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 uses a specific verb ('Fetch') and a clear resource ('Avanza market movers (gainers/losers)'), which distinguishes it from most sibling tools focused on orders, positions, or pricing. However, it does not explicitly differentiate from other market-data siblings like avanza_index_constituents or avanza_search_stock, so it is clear but not fully differentiated.

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 context: use it when you need gainers/losers in a market, and the optional filters signal how to narrow results. But it gives no explicit guidance on when to prefer this over alternatives (e.g., avanza_index_constituents, tv_preopen_symbol_snapshot, or avanza_live_snapshot) and no exclusions.

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

avanza_ongoing_ordersB

List ongoing orders for the selected account: live stop-losses + live open orders, with optional paper active orders.

ParametersJSON Schema
NameRequiredDescriptionDefault
sideNo
statusNo
compactNo
refreshNo
account_idNo
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
orderbook_idNo
include_paperNo
order_book_idNo
instrument_nameNo
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.

TDQS

B3.3/5.0
Behavior3/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 it does add meaningful behavioral context by stating that the result combines live stop-losses, live open orders, and optionally paper active orders. However, it does not disclose what 'ongoing' excludes, how filters like side, status, compact, or refresh affect results, or what the response contains.

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. It states the main purpose immediately and uses a colon to efficiently enumerate the components of the result.

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 an 11-parameter tool with no output schema and no annotations, a one-sentence description is not enough. Missing context includes how account selection works, what the compact flag changes, when refresh matters, and what the returned order/stop-loss data looks like, so an agent would have to guess at most of the invocation details.

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 only 18%, and the description compensates for only two aspects: 'selected account' maps to account_id and 'optional paper active orders' maps to include_paper. The remaining nine parameters, including compact, refresh, orderbook_id/order_book_id, instrument_name, and status, receive no explanation in either the schema or the description.

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 names a specific verb ('List') and a concrete resource ('ongoing orders') and immediately disambiguates what that resource contains: live stop-losses plus live open orders, with optional paper active orders. This composition clearly separates it from sibling tools like avanza_open_orders and avanza_stoplosses.

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 given about when to use this tool instead of avanza_open_orders, avanza_stoplosses, avanza_open_orders_raw, or avanza_paper_orders. The phrase 'selected account' implies account-level scope, but there are no explicit exclusions, prerequisites, or alternative-routing hints.

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

avanza_open_order_cancelA

Dry-run or cancel an existing open/pending regular order (alias of avanza_order_delete). Live cancellation requires TUI R/W mode and confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
order_idYes
account_idYes
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.

TDQS

A4/5.0
Behavior4/5

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

With no annotations present, the description must carry behavioral disclosure itself. It does so by explaining the dry-run vs live-cancel distinction and the R/W mode requirement. It does not mention idempotency, whether the dry-run returns a preview, or what failure modes exist, but for a cancellation tool the key behavioral risks are addressed.

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

Conciseness5/5

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

Two sentences deliver all necessary information with the core action front-loaded. There is no filler, and the alias and prerequisite are placed efficiently in the second sentence.

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 is adequate for selecting the tool but less complete for invoking it correctly in all cases. It omits how to discover order_id (e.g., via avanza_open_orders), does not distinguish paper vs live orders, and provides no return-value expectations. Still, the core conditions for live cancellation and the alias relationship are stated.

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 only 40%, so the description must compensate for undocumented parameters. It adds useful meaning for confirm (live cancellation requires confirm=true) and implies dry-run when false, but it does not explain account_id, order_id, or how to obtain a valid order_id. The required parameters are left to inference, which is a significant gap given the low schema coverage.

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 specific verb ('cancel'), the exact resource ('existing open/pending regular order'), and explicitly identifies itself as an alias of avanza_order_delete, which distinguishes it from the sibling tool. It is immediately clear what this tool acts on and how it relates to nearby alternatives.

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 description gives concrete conditions for live use: 'TUI R/W mode and confirm=true'. It also makes the dry-run default evident. It does not explicitly name alternatives like avanza_paper_cancel or explain when to prefer them, but the alias note and regular-order qualifier provide enough routing context for most cases.

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

avanza_open_order_editB

Dry-run or update an existing open/pending regular order (alias of avanza_order_edit). Live update requires TUI R/W mode and confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
priceYes
volumeYes
confirmNo
order_idYes
account_idYes
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
valid_untilYes
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.

TDQS

B3.4/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 behavioral burden. It transparently discloses that the tool can dry-run or live-update, that live updates mutate state, and that confirm=true plus TUI R/W mode are required for a real change. It does not describe return values or reversibility, but the core safety-relevant behavior is clearly stated.

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

Conciseness5/5

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

Two dense sentences with no filler. The primary purpose and the critical confirmation requirement are front-loaded, and the alias note is concise and useful.

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 an 8-parameter mutation tool with no annotations and no output schema, this description is too sparse. It omits expected formats for valid_until and price, what dry-run actually returns, likely error conditions, and post-update behavior. The agent would need to inspect sibling tools or external docs to call this 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 description coverage is only 25%, and the description does not compensate for the undocumented fields. It usefully ties confirm to live updates, but leaves price, volume, and valid_until semantics unexplained, forcing the agent to guess formats and units.

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 uses a specific verb and resource: 'update an existing open/pending regular order,' with a clear dry-run versus live-update distinction. It also states it is an alias of avanza_order_edit, which orients the agent, though it does not fully distinguish behavior from that sibling.

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 the tool is for editing existing open/pending orders and states the necessary condition for a live update: TUI R/W mode and confirm=true. However, it does not explicitly say when to prefer this over avanza_order_edit, avanza_order_set, or avanza_open_order_cancel.

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

avanza_open_ordersA

List live open/pending regular orders, optionally filtered by instrument, side, or status, with stable IDs for edit/cancel flows.

ParametersJSON Schema
NameRequiredDescriptionDefault
sideNo
statusNo
compactNo
refreshNo
account_idNo
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
orderbook_idNo
order_book_idNo
instrument_nameNo
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It communicates that the tool lists live data and returns stable IDs, and the verb 'List' implies a non-mutating operation. However, it does not disclose staleness/refresh behavior, session or account scope requirements, or behavior for empty results, so the transparency is only partial.

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?

One efficient sentence front-loads the verb and resource, then adds the filter options and the edit/cancel use case. There is no filler and no redundant restatement of the input schema.

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 tool is relatively complex: 10 optional parameters, no output schema, no annotations, and a dense sibling list. The description covers the core listing purpose and filter options, but omits routing among raw/ongoing/instrument-scoped siblings, parameter semantics, and return behavior, so an agent cannot fully determine correct invocation 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 only 20%, covering just the two session-related parameters, so the description must compensate for the other eight. The description only mentions filters by instrument, side, or status, and leaves compact, refresh, account_id, orderbook_id/order_book_id, and session scoping unexplained. This is insufficient for a 10-parameter tool.

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 opens with a specific verb, 'List', and a precise resource: 'live open/pending regular orders'. It also narrows scope with 'regular' and highlights 'stable IDs for edit/cancel flows', which separates it from siblings like avanza_open_orders_raw and avanza_instrument_open_orders.

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 phrase 'stable IDs for edit/cancel flows' implies when to use this tool: before editing or canceling an order. However, it does not explicitly route the agent away from sibling tools such as avanza_open_orders_raw, avanza_ongoing_orders, or avanza_instrument_open_orders, leaving some comparison to inference.

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

avanza_open_orders_rawC

Debug tool: return normalized open orders plus raw Avanza order payload for schema diagnostics.

ParametersJSON Schema
NameRequiredDescriptionDefault
sideNo
statusNo
compactNo
refreshNo
account_idNo
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
include_rawNo
orderbook_idNo
order_book_idNo
instrument_nameNo
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.

TDQS

C2.9/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 disclosing side effects and safety. It reveals this is a debug/diagnostic read and that it returns both normalized and raw payloads, but it is silent on whether a session is required, whether refresh mutates state, the potential size of the raw payload, or any auth/rate-limit 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 with no filler; 'Debug tool' immediately sets expectations. Every word contributes to identifying the tool's purpose and unique output.

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 11 optional parameters, no output schema, and no annotations, this one-sentence description is inadequate. It omits how parameters filter the orders, what 'schema diagnostics' means in practice, and how the raw payload should be handled. An agent would struggle to construct a correct first invocation.

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

Parameters1/5

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

Schema description coverage is only 18%, so the description must compensate for 11 parameters, but it mentions none of them. The term 'raw' hints at include_raw, but it is ambiguous whether raw is always returned or gated by the boolean. No meaning is added beyond the schema for side, status, compact, refresh, account_id, orderbook_id, or instrument_name.

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 specific verb ('return'), a clear resource ('normalized open orders plus raw Avanza order payload'), and a distinct purpose ('schema diagnostics'). The 'Debug tool' label differentiates it from sibling tools like avanza_open_orders by signaling this is not the normal trading path.

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 the many sibling order tools. No explicit alternatives, no conditions, and no exclusion like 'use avanza_open_orders for production calls'. The label 'Debug tool' weakly implies diagnostic usage, but that is not enough.

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

avanza_orderbook_quotesB

Fetch arbitrary quote snapshots for supplied orderbook IDs (supports 5s polling loops for 20-50 symbols).

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNo
refreshNo
orderbook_idsYes

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 discloses a key behavioral trait: it is snapshot-oriented and polling-friendly. However, it does not mention whether a live session is required, any rate limits, or what fields are returned, leaving important behavioral gaps for a no-annotation 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 a single sentence with no filler. The primary action and the most relevant usage constraint (polling loops) are front-loaded, making it easy for an agent to parse quickly.

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 zero schema descriptions, no annotations, and no output schema, the description leaves critical context unresolved: what fields can be requested, the effect of refresh, response format, and session/auth prerequisites. It is enough to attempt a call but not enough to configure parameters correctly or interpret results.

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 for the three parameters. It only hints at 'orderbook_ids' and the 20-50 symbol scale; 'fields' and 'refresh' remain entirely unexplained, and no default or value semantics are clarified. The compensation is minimal.

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 uses a specific verb ('Fetch') and resource ('quote snapshots for supplied orderbook IDs'), making the core action clear. It does not explicitly differentiate from siblings like avanza_realtime_quotes or avanza_live_snapshot, but the wording is specific enough to convey a batch snapshot operation.

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 'supports 5s polling loops for 20-50 symbols' clause gives concrete usage context, implying this is meant for repeated lightweight polling of a moderate set of orderbooks. It does not explicitly name alternatives or state when not to use it, but the polling support is a useful situational signal.

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

avanza_order_deleteA

Dry-run or delete a regular open order. Live deletion requires TUI R/W mode and confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
order_idYes
account_idYes
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations present, the description carries the behavioral burden and clearly discloses the key destructive-operation gate: live deletion only happens with TUI R/W mode and confirm=true. It does not describe dry-run output or reversibility, but the essential safety behavior is communicated.

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 front-loaded sentence states the operation and the critical execution condition with no filler. Every phrase earns its place.

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 destructive tool with no annotations and no output schema, the description covers the essential mode and confirmation behavior. It remains incomplete on what a dry-run returns, how ambiguous order targets are handled, and how this tool relates to sibling order/cancel tools.

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 only 40%, and account_id, order_id, and confirm have no schema documentation. The description adds meaning only to confirm in the live-deletion context, leaving the other core parameters to be inferred from names.

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 states a specific action ('delete') and a specific resource ('regular open order') and introduces the dry-run mode. It does not explicitly contrast with related siblings such as avanza_open_order_cancel or avanza_stoploss_delete, so sibling differentiation is incomplete.

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 description gives actionable usage conditions: live deletion requires TUI R/W mode and confirm=true, which also implies dry-run is the safe fallback. It does not name alternative tools or edge cases beyond the 'regular open order' scope.

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

avanza_order_editA

Dry-run or update an existing open order (price/volume/valid_until). Live update requires TUI R/W mode and confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
priceYes
volumeYes
confirmNo
order_idYes
account_idYes
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
valid_untilYes
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.

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 behavioral burden. It discloses that the tool supports dry-run versus live update, that confirm=true gates the live update, and that TUI R/W mode is a prerequisite. This goes well beyond a bare 'edit order' statement, though it does not detail response behavior or failure modes.

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 dense sentence that front-loads the core action, then adds the critical condition for live execution. Every clause carries meaningful information; there is no filler or redundancy.

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?

The definition covers the essential behavioral modes and prerequisites despite lacking annotations and an output schema. It does not describe return values or error conditions, but for selecting and invoking the tool, the required parameters and the dry-run/live distinction are sufficiently specified.

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 only 25%, but the description compensates for the key editable fields by naming price/volume/valid_until and explaining confirm's role in switching from dry-run to live update. However, account_id and order_id semantics are left implicit, and valid_until's format is unspecified.

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 edits an existing open order's price/volume/valid_until, and distinguishes 'dry-run' from 'live update'. The phrase 'existing open order' differentiates it from siblings like avanza_order_set (creating orders) and avanza_open_order_cancel/avanza_order_delete (removing orders).

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?

It gives explicit context: this is for editing existing open orders, and live execution requires TUI R/W mode plus confirm=true. It does not explicitly name alternative tools for exclusion, but the intended use case is clear enough for an agent to route correctly.

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

avanza_order_setB

Dry-run or place a regular buy/sell order. Live placement requires TUI R/W mode and confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
priceYes
volumeYes
confirmNo
conditionNonormal
account_idYes
order_typeNobuy
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
valid_untilYes
order_book_idYes
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.

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 behavioral disclosure burden. It reveals a critical safety gate for live orders: R/W mode plus confirm=true. But it does not describe what a dry-run returns, what happens on validation failure, or other execution-side behaviors.

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

Conciseness5/5

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

Two dense sentences, front-loaded with the primary purpose and followed by the essential safety condition. There is no filler or repetition of schema content.

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 10-parameter mutating order tool with no annotations and no output schema, this is incomplete. It omits dry-run output behavior, valid_until format, and routing guidance to the paper-trading sibling avanza_paper_order_set.

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 only 20%, so the description must compensate for the undocumented required parameters. It clarifies confirm's role and order side, but leaves account_id, order_book_id, price, valid_until, volume, and condition without added meaning.

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 states a clear verb and resource: dry-run or place a regular buy/sell order. It is specific enough to distinguish it from stoploss and order-management siblings, though it does not explicitly differentiate from avanza_paper_order_set.

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?

It provides actionable context: dry-run is available generally, while live placement requires TUI R/W mode and confirm=true. However, it does not explicitly state when to prefer this tool over alternatives such as avanza_paper_order_set or avanza_order_edit.

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

avanza_paper_cancelA

Cancel a local paper order. This never changes Avanza and is allowed in MCP read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
paper_order_idYes

TDQS

A4.2/5.0
Behavior4/5

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

The description discloses that the operation never changes Avanza and is safe in read-only mode, which is important behavioral context beyond the schema. With no annotations present, it carries the burden and does so well, though it omits details about failure behavior or return values.

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

Conciseness5/5

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

Two short sentences, front-loaded purpose and then the read-only safety note; no fluff.

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 single-parameter local cancellation tool, the description covers purpose, scope, and side-effect profile in just two sentences. It lacks an explicit return-value description and prerequisites, but given the low complexity and absence of output schema, it is adequately complete.

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 only parameter, paper_order_id, has no schema description (0% coverage), but the description's phrase 'local paper order' clarifies that the ID identifies an order in the local paper-trading system, adding context beyond the bare schema. Still, no explicit guidance about where to obtain the ID is provided.

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 ('Cancel'), a specific resource ('local paper order'), and clarifies its scope as local/paper, distinguishing it from real-order cancellation tools like avanza_open_order_cancel and avanza_order_delete.

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 frames the tool as canceling a local paper order and notes it is allowed in MCP read-only mode, signaling when it is appropriate. It does not explicitly name sibling cancellation tools, but the 'local paper order' phrase provides a clear usage context.

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

avanza_paper_order_exitA

Close an open paper position by position_id or orderbook_id and create a completed paper trade entry.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYes
exit_priceYes
session_idNo
exit_reasonNo
position_idNo
orderbook_idNo
tenant_session_idNo

TDQS

A3.5/5.0
Behavior3/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 disclose a meaningful non-obvious side effect: the call creates a completed paper trade entry, not just a position close. But it is silent on whether both identifiers can be supplied, which takes precedence, prerequisites like an existing open position, error behavior, or reversibility.

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 dense sentence with the action front-loaded and zero filler. Every clause earns its place: the verb, the target, the identifier options, and the side effect.

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 mutating financial tool with no annotations, no output schema, and 0% parameter documentation, the description leaves critical gaps: the meaning of exit_price, which identifier to prefer, what the completed trade entry contains, and what happens on failure. It is not complete enough for safe, correct invocation without additional lookup.

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 explains only position_id and orderbook_id, while the two required parameters, account_id and exit_price, are entirely unexplained, along with exit_reason, session_id, and tenant_session_id. An agent cannot tell what exit_price represents or why account_id is mandatory.

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 uses a specific verb (close), a precise resource (open paper position), and a stated targeting mechanism (by position_id or orderbook_id), plus a side effect (create a completed paper trade entry). It clearly distinguishes this exit action from siblings like avanza_paper_cancel (cancel) and avanza_order_delete (delete).

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 the use context: it closes an open paper position and offers two identifier paths (position_id or orderbook_id). However, it never explicitly states when to prefer this over alternatives like avanza_paper_cancel, nor does it give exclusions or conditions such as 'only for open paper positions.'

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

avanza_paper_ordersB

List local paper-trading orders and events for the selected account, or a supplied account_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNo
active_onlyNo

TDQS

B3/5.0
Behavior2/5

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

With no annotations, the description must carry behavioral disclosure, and it only says 'List', implying a read-only operation, and 'local paper-trading', hinting this does not hit live order state. It does not disclose the effect of active_only, how account selection resolves, or whether any state is modified. This is below the bar for an unaided description.

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 definition is one front-loaded sentence with no filler: 'List' comes first, the resource and account scope follow immediately. It earns a high mark for efficiency even though it omits details captured under other dimensions.

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 tool is simple, but without annotations or an output schema, the description leaves important gaps: active_only is undefined, 'events' is not explained, and there are many sibling paper/order tools that this description does not disambiguate. It is minimally sufficient for a simple list call but not complete enough for confident selection.

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 prose must explain parameters. It addresses account_id ('or a supplied account_id') but says nothing about active_only or its default false value. The meaning of account_id when omitted is only implied via 'selected account'.

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 uses a specific verb ('List') and a concrete resource ('local paper-trading orders and events'), and it clarifies account selection. It is not a tautology and is distinguishable from real-order tools. However, 'events' is vague and it does not explicitly separate this from closely related paper_* siblings, so it stops short of a 5.

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?

It gives a clear usage context: the tool can run against the currently selected account or an explicit account_id. There is no when-not-to-use guidance or named alternatives among the many paper_* read tools (e.g., avanza_paper_trades, avanza_paper_positions). Usage is implied rather than explicit.

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

avanza_paper_order_setA

Create a local paper buy/sell order. This never places an Avanza order and is allowed in MCP read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
priceYes
volumeYes
conditionNonormal
account_idYes
instrumentNo
order_typeNobuy
session_idNo
stop_priceNo
valid_untilYes
entry_reasonNo
target_priceNo
order_book_idYes
fill_immediatelyNo
tenant_session_idNo

TDQS

A3.7/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 clearly states that no Avanza order is placed and that the operation is allowed in MCP read-only mode, which is a critical safety trait. It does not describe local state persistence, validation behavior, or order lifecycle, so it is not a 5.

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

Conciseness5/5

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

Two sentences with no filler. The core action is front-loaded, and the most important safety distinction—'never places an Avanza order'—appears in the second sentence with maximum clarity.

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 14-parameter tool with no output schema and no parameter documentation, this description is too thin. It provides useful safety context but leaves the agent to infer required field formats, how paper orders are handled, how this relates to paper exits/stoplosses, and what a successful call returns.

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

Parameters1/5

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

Schema description coverage is 0%, and the description adds no parameter-level meaning. The phrase 'buy/sell' hints at order_type, but the agent gets no help with price, volume, valid_until, stop_price, target_price, session_id, condition, or fill_immediately.

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 specific verb and resource: 'Create a local paper buy/sell order.' It also explicitly distinguishes itself from real-order tools like avanza_order_set by saying 'This never places an Avanza order,' and it is clearly distinct from paper stoploss and paper exit siblings.

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 description gives clear context: use this for local paper orders, not live Avanza orders, and it is safe in MCP read-only mode. However, it does not explicitly name the live-order alternative or state when not to use it beyond the 'never places an Avanza order' exclusion.

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

avanza_paper_positionsB

List paper positions for a selected account/session, with optional active-only filter.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNo
session_idNo
active_onlyNo
tenant_session_idNo

TDQS

B3.3/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 states this is a listing operation, but does not mention whether session/account selection is required, what data is returned, whether any state changes occur, or any error conditions. For a tool with zero annotation coverage, 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 with no filler. It front-loads the verb and resource, then adds the key optional qualifier about active-only filtering. Every word earns its place.

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 4 optional parameters, no output schema, no annotations, and many related sibling tools, this description is too thin. It omits parameter semantics, expected return shape, prerequisite session/account selection behavior, and any guidance on how this relates to the broader paper-trading tool family.

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 only adds meaning for 'active_only' via the phrase 'optional active-only filter'. The parameters account_id, session_id, and tenant_session_id remain unexplained in both schema and description, so the description does not adequately 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.

Purpose5/5

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

The description clearly identifies the action ('List'), the resource ('paper positions'), and the scope ('for a selected account/session'). It is immediately distinguishable from siblings like avanza_position or avanza_paper_trades because it specifically targets paper positions.

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 phrase 'for a selected account/session' implies a prerequisite of account/session selection, but the description does not explicitly state when to use this tool versus alternatives such as avanza_position for live positions or avanza_paper_trades for trade history. Usage context is implied, not explicit.

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

avanza_paper_risk_stateB

Evaluate paper-session guardrails before allowing a new trade entry.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYes
session_idNo
max_open_tradesNo
tenant_session_idNo
max_session_loss_sekNo
max_loss_per_trade_sekNo
max_trade_notional_sekNo
stop_after_consecutive_lossesNo

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 disclosing behavior, but it only says 'Evaluate guardrails.' It does not state whether the tool is read-only, what it returns, how the guardrail result is represented, or whether calling it affects session state. This leaves significant behavioral ambiguity for an agent deciding how to use the result.

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. It communicates the core purpose and timing in as few words as possible while remaining clear.

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 eight parameters, no output schema, and no annotations, the description is too thin. It does not explain what the returned evaluation looks like, how an agent should interpret pass/fail conditions, or what side effects (if any) the call has. This leaves important operational context missing.

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 adds no parameter-level meaning. While the parameter names and defaults are mostly self-explanatory, the relationship between account_id, session_id, and tenant_session_id is ambiguous, and the description does not clarify which of these are required or how the limit parameters interact.

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 states a specific action ('Evaluate'), a specific resource ('paper-session guardrails'), and the timing ('before allowing a new trade entry'). This clearly distinguishes the tool from paper-order execution and session summary tools, though it does not explicitly name a sibling as an alternative.

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 'before allowing a new trade entry' gives clear contextual guidance on when this tool should be invoked. It implies this is a pre-trade gate rather than a post-trade reporting tool, though it stops short of explicitly listing when-not-to-use cases or alternative tools.

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

avanza_paper_session_summaryC

Return P/L summary for a paper trading session/account.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNo
session_idNo
tenant_session_idNo

TDQS

C2.4/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 behavioral disclosure. It implies a read-only operation with 'Return', but does not explain how account_id, session_id, and tenant_session_id interact, whether a session must be active, or whether the summary covers current or historical data.

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 sentence with no redundant words, and the main action is front-loaded. It is appropriately concise, though it omits essential details.

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

Completeness1/5

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

With three undocumented optional parameters, no output schema, and no annotations, the description is far too sparse. An agent lacks the information needed to invoke the tool correctly or interpret its result.

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

Parameters1/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 clarify any of the three parameters. An agent cannot determine which identifier is needed or how they relate to a 'paper trading session/account'.

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 states a specific verb ('Return') and resource ('P/L summary for a paper trading session/account'), which distinguishes it from related paper-account tools like avanza_paper_trades or avanza_paper_positions. However, 'session/account' is ambiguous about whether the summary is for a session, an account, or both.

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 given on when to use this tool versus alternatives such as avanza_paper_trades, avanza_paper_positions, avanza_sessions, or avanza_account_performance. There is also no mention of prerequisites like selecting a paper account or session first.

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

avanza_paper_stoploss_setA

Create a local paper stop-loss order. This never places an Avanza order and is allowed in MCP read-only mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
volumeYes
account_idYes
instrumentNo
order_typeNosell
order_priceYes
valid_untilNo
trigger_typeNo
order_book_idYes
trigger_valueYes
strategy_intentYes
strategy_reasonYes
order_price_typeNo%
order_valid_daysNo
trigger_value_typeNo%
short_selling_allowedNo
trigger_on_market_maker_quoteNo

TDQS

A3.6/5.0
Behavior4/5

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

There are no annotations, so the description carries full responsibility for behavioral disclosure. It clearly discloses the key behavior that no Avanza order is placed and that the tool is safe in read-only mode. It does not elaborate on persistence, cancellation, or side effects of repeated calls, but the most important safety trait is explicit.

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 short, front-loaded, and contains no filler. Both sentences earn their place by stating the core purpose and the critical no-real-order constraint. It is arguably too terse for such a complex parameter set, but as a structural matter it is clean and direct.

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 16-parameter tool with no annotations, no output schema, and zero schema description coverage, this description is far too minimal. It establishes high-level purpose and safety but leaves essential context unexplained, such as the meaning of strategy_intent values, how trigger/price percentage types work, what 'local' implies for persistence, and what the tool returns.

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

Parameters1/5

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

Schema description coverage is 0% and the tool has 16 parameters, yet the description provides no parameter-level guidance. Required fields such as strategy_intent, trigger_value, order_price, and order_price_type are left entirely to the schema, and the description does not explain their meaning, defaults, or relationships.

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 uses a specific verb and resource: 'Create a local paper stop-loss order.' It clearly distinguishes this from real Avanza orders by stating 'This never places an Avanza order,' which separates it from sibling tools like avanza_stoploss_set and avanza_order_set.

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 description provides clear context by positioning the tool as a paper-only, local operation and explicitly notes it is allowed in MCP read-only mode. It does not name alternatives or explicitly list when-not-to-use cases, but the paper/local framing strongly implies the boundary against real order placement.

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

avanza_paper_tradesB

List completed paper trades (entry+exit ledger rows) for account/session.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNo
session_idNo
tenant_session_idNo

TDQS

B3.3/5.0
Behavior3/5

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

The word 'List' implies a read-only operation, and 'completed paper trades' communicates that only closed/fully paired trades are returned. However, with no annotations, the description carries the full burden and does not mention authorization needs, failure behavior, or whether an active session/account is required.

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 that front-loads the action and resource. Every word adds meaning without redundancy.

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 tool has no annotations and no output schema, and its parameters are undocumented. The description covers the core function but omits necessary context about parameter usage, authorization prerequisites, and edge cases, making it insufficiently complete for confident invocation.

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, but it only vaguely references 'account/session'. It does not explain account_id, session_id, or tenant_session_id individually, nor their optionality or relationships. This leaves an agent guessing how to populate the parameters correctly.

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 uses a specific verb ('List') and resource ('completed paper trades') and clarifies the data shape as 'entry+exit ledger rows'. This clearly distinguishes it from siblings like avanza_paper_orders, avanza_paper_positions, and avanza_paper_session_summary.

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 avanza_paper_orders or avanza_transactions. The phrase 'for account/session' implies a scoping requirement but does not explain when an agent should prefer this tool or when it should not be used.

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

avanza_portfolioC

List portfolio positions for the selected account, optionally filtered by one instrument.

ParametersJSON Schema
NameRequiredDescriptionDefault
sideNo
statusNo
compactNo
refreshNo
account_idNo
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
orderbook_idNo
order_book_idNo
instrument_nameNo
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.

TDQS

C2.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 says 'List,' which implies a read operation, but does not explain the meaning of side, status, compact, refresh, or orderbook_id parameters, nor what happens when no account_id is provided or what the response contains.

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 with no filler. It front-loads the core action and includes a meaningful optional qualifier, though it does not expand on important parameters.

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 10 parameters, no annotations, and no output schema, the description is too sparse to fully guide an agent. It lacks information about how the selected account is determined, what side/status/compact/refresh do, and what the returned portfolio position data looks like.

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 only 20%, so most of the 10 parameters are undocumented. The description adds minimal semantic value by mentioning account scope and optional filtering by one instrument, but it does not clarify the many unexplained fields or their relationships.

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 states a clear action and object: 'List portfolio positions for the selected account, optionally filtered by one instrument.' It conveys the verb, resource, and scope. However, it does not explicitly differentiate from siblings like avanza_position or avanza_paper_positions, leaving some ambiguity about live vs. paper context.

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 such as avanza_position or avanza_paper_positions. It implies a selected account is needed but does not state prerequisites, exclusions, or conditions that would route an agent to a sibling tool.

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

avanza_positionA

Read one account position by orderbook_id without dumping the full portfolio.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYes
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
orderbook_idYes
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.

TDQS

A4.1/5.0
Behavior3/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. The word 'Read' and the scoping statement about not dumping the full portfolio convey that this is a safe, targeted read operation. But it does not disclose auth/session requirements, behavior when the position is not found, or any pagination/response details.

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 12-word sentence with zero filler. The core action, resource, and distinguishing constraint are all front-loaded and immediately actionable.

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 single-position lookup, the description covers the essential 'what' and 'which'. However, with no output schema and no annotations, it omits return-format details, authentication/session prerequisites, and error behavior, which an agent might need to fully trust the invocation.

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

Parameters4/5

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

Schema description coverage is only 50%, and the two required parameters (account_id, orderbook_id) lack schema descriptions. The description clarifies that account_id identifies the account and orderbook_id identifies which position to read. The session-related parameters already have schema descriptions, so the description reasonably compensates for the gaps.

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 uses a specific verb ('Read'), names the exact resource ('one account position'), and identifies the lookup key ('orderbook_id'). The contrast with 'dumping the full portfolio' clearly distinguishes it from broader position tools like avanza_portfolio.

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 'without dumping the full portfolio' implies this tool is for targeted single-position lookups rather than full portfolio reads. However, it never explicitly names an alternative tool or states when not to use it, leaving some selection logic to inference.

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

avanza_position_strategy_auditA

Refresh exact holdings, active stop exposure, regular open orders, and stop-intent metadata for one account, then fail closed on any missing or stale reviewed position plan, missing/contradictory protection classification, or REPAIR_REQUIRED row. Read-only at Avanza.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYes
session_idNo
tenant_session_idNo

TDQS

A3.8/5.0
Behavior4/5

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

There are no annotations, so the description carries the full burden. It clearly states the tool is read-only at Avanza and explains the fail-closed behavior for missing/stale reviewed plans, contradictory protection classifications, and REPAIR_REQUIRED rows. It does not detail error modes, rate limits, or session authorization behavior, but the core behavioral traits are well disclosed.

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 dense sentence with no filler. It front-loads the main action ('Refresh exact holdings...'), states the validation behavior, and closes with the read-only guarantee. Every clause earns its place.

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 gives strong behavioral context, especially the fail-closed criteria and read-only nature. However, there is no output schema and no description of the return value or result shape, and the session/account parameter semantics remain unresolved. For an audit tool with this complexity, a bit more about expected outputs and prerequisites would make it complete.

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 only says 'for one account', which clarifies account_id at a high level. It provides no additional meaning for session_id or tenant_session_id, their relationship, format, or why they are optional. Since the schema itself has no parameter descriptions, the agent is left without sufficient guidance for the non-account 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 names a specific action, resource, and scope: refresh holdings, stop exposure, open orders, and stop-intent metadata for one account. It also differentiates itself from the sibling avanza_stoploss_strategy_audit by covering the broader position strategy and protection classification. The fail-closed clause further clarifies that this is a validation/audit tool, not a generic data fetch.

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 the tool is appropriate when an account-level position strategy audit is needed, and it mentions 'for one account' as the scope. However, it does not explicitly say when to prefer this tool over avanza_stoploss_strategy_audit, avanza_protection_gaps, or avanza_portfolio, nor does it list exclusions or prerequisites such as an authorized session.

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

avanza_position_strategy_register_batchA

Dry-run or atomically register reviewed strategy plans for exact live account-position states. Changes only the private local registry, never Avanza; confirm=true requires MCP R/W but not live-trading authorization. An explicit per-row preservation flag can update semantics without rebaselining a reviewed holding-only exception, but refuses every stop/order or other mismatch. Every row requires an explicit protection classification and instrument-specific reason.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYes
confirmNo
account_idYes
session_idNo
prune_staleNo
tenant_session_idNo

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full safety burden and does it well: it discloses that the tool only mutates the private local registry, never Avanza, explains the confirm authorization boundary, and describes strict refusal behavior for stop/order or other mismatches plus the preservation flag semantics. It does not describe dry-run return shape or error behavior, but the disclosed behavioral traits are substantive and go well beyond the schema.

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?

Four dense sentences, front-loaded with the core purpose and safety boundary. Each sentence introduces a distinct and necessary constraint, and there is no filler, though the heavy jargon around 'rebaselining a reviewed holding-only exception' slightly reduces immediate clarity for an agent.

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 batch registration tool with six top-level parameters, a very large item schema, no output schema, and no annotations, the description covers the most critical selection and safety decisions. It omits dry-run return semantics, prune_stale behavior, session parameter usage, and the specific difference from the stoploss registration sibling, so it is not fully complete for confident invocation.

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?

Top-level schema description coverage is 0%, so the description must compensate. It adds real meaning to confirm (R/W auth requirement), preserve_audit_exception_fingerprint (update without rebaselining, refuses mismatches), and protection_classification/protection_reason (explicit per-row requirement). However, session_id, tenant_session_id, and prune_stale receive no explanation at all, so compensation is only partial.

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 specific verb and resource: 'register reviewed strategy plans for exact live account-position states' and clearly scopes it as local-registry-only, 'never Avanza.' It distinguishes itself from live order/stoploss mutators and audit siblings by emphasizing dry-run or atomic local registration, so an agent can tell what this tool does.

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 gives clear operational context: dry-run or commit behavior, confirm=true requiring MCP R/W but not live-trading authorization, and no Avanza side effects. However, it never explicitly tells an agent when to choose this over closely related siblings such as avanza_stoploss_strategy_register_batch or avanza_position_strategy_audit, so part of the selection decision is left to inference.

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

avanza_protection_gapsB

Audit exact strategy-classified SELL targets, failed SELL stops, and overcoverage. By default it preserves current active SELL volume as the baseline and does not infer full-holding protection for core positions.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNo
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
exclude_ethNo
coverage_targetsNoExact strategy-classified SELL targets. Non-zero targets require intent and reason.
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.
exclude_orderbook_idsNo
coverage_target_percentNoExplicit mechanical percentage target. Omit unless a full/partial holding coverage audit is intentionally requested.
exclude_non_stop_eligibleNo

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are present, so the description carries the full behavioral burden. It does disclose an important trait: it preserves current active SELL volume as the baseline and does not infer full-holding protection for core positions. However, it does not explicitly state whether the tool is read-only, what happens when optional overrides are supplied, or what the audit output contains.

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 two sentences with no filler. The core purpose is front-loaded, and the default-baseline caveat is placed immediately after it, where it has the most value for an agent deciding whether to call the 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?

With no output schema, no annotations, and 8 parameters, the description is too thin to be complete. It does not describe the audit result shape, the effect of coverage_target_percent versus the default baseline, or any failure/safety behavior, so an agent cannot fully predict the tool's behavior from the definition alone.

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 only 50%, and the description does not compensate for the undocumented fields. It loosely ties 'strategy-classified SELL targets' to coverage_targets, but it says nothing about account_id, exclude_eth, exclude_orderbook_ids, or exclude_non_stop_eligible, leaving meaningful parameter semantics unexplained.

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 uses a specific verb ('Audit') and names three concrete audit targets: strategy-classified SELL targets, failed SELL stops, and overcoverage. It also clarifies a distinguishing default behavior, making the tool easy to tell apart from sibling audit tools.

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 given about when to use this tool versus related siblings such as avanza_stoploss_strategy_audit, avanza_verify_protection, or avanza_recent_fills_needing_protection. The default-behavior note explains how it operates, not when an agent should select it over alternatives.

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

avanza_realtime_quotesB

Fetch real-time quote snapshot for selected account holdings (best with a 5s polling loop).

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNo
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.

TDQS

B3.2/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 disclosure burden. It reveals the tool is a snapshot suitable for polling and hints that holdings must be 'selected', but it does not disclose authentication/session needs, rate-limit behavior, side effects, or failure modes. This is minimal for a real-time financial data 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 a single sentence with a front-loaded verb, a clear object, and a parenthetical polling tip. There is no filler, and every phrase earns its place.

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?

With no output schema and no annotations, the description should explain what the snapshot contains, how account selection works, and how this tool differs from similar quote tools. It provides none of those, so an agent may know how to invoke it but not how to interpret results or choose it confidently among siblings.

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 67%, with session_id and tenant_session_id described, but account_id has no schema description. The phrase 'selected account holdings' loosely implies account_id maps to an account, but it does not clarify optionality or how selection interacts with the parameter, so the description only partially compensates.

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 uses a specific verb ('Fetch') and identifies a clear resource ('real-time quote snapshot for selected account holdings'), making the core action understandable. However, it does not differentiate from closely related siblings such as avanza_live_snapshot or avanza_orderbook_quotes, so it stops short of a 5.

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 only usage guidance is 'best with a 5s polling loop', which provides a cadence but no explicit statement of when to use this tool versus alternative quote/orderbook tools. It implies a near-real-time monitoring use case but leaves selection among the many siblings to inference.

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

avanza_recent_fills_needing_protectionA

Review recent BUY fills without assuming they require full-holding SELL stops. Missing SELL coverage is reported only against an explicit percentage or exact strategy-classified target.

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceNo
account_idNo
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
exclude_ethNo
coverage_targetsNoExact strategy-classified SELL targets. Non-zero targets require intent and reason.
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.
coverage_target_percentNoExplicit mechanical percentage target. Omit unless a full/partial holding coverage audit is intentionally requested.

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the disclosure burden. It does reveal an important behavioral trait: BUY fills are not automatically assumed to need full-holding SELL stops, and missing coverage is only reported against explicit targets. It does not, however, state whether the operation is read-only, describe the output shape, or mention session/auth prerequisites.

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 two sentences with no filler. The primary action and key behavioral caveat are front-loaded in the first sentence, and the reporting condition is placed in the second. Every phrase earns its place.

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 tool with seven parameters, no annotations, and no output schema, the description captures the core invocation policy but leaves gaps: output format, time-window semantics for 'since', account/session requirements, and routing against sibling protection tools are not addressed. It is minimally viable but not fully self-contained.

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 coverage is 57%, leaving 'since', 'account_id', and 'exclude_eth' undocumented. The description reinforces the meaning of the two target-related parameters by tying missing-COVERAGE reporting to an explicit percentage or strategy-classified target, but it adds no meaning for the undocumented 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 states a specific action ('Review recent BUY fills') and a specific scope, then adds the distinguishing policy: it does not assume full-holding SELL stops and reports missing coverage only against explicit targets. This differentiates it from generic protection-gap or audit siblings even without naming them.

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 wording implies when the tool is appropriate: it should be used when the caller has an explicit percentage or strategy-classified coverage target, and not as a default full-coverage audit. However, it does not name alternative tools or provide explicit when-not-to-use guidance, so the usage direction remains implicit.

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

avanza_recovery_reachabilityA

Read-only fail-closed audit of active BUY reachability. Flags fixed rows beyond the review-distance limit, overly wide reversal gliders, and deep-only recovery designs without treating the thresholds as placement advice.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNo
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.
max_fixed_distance_percentNo
max_reversal_trigger_percentNo
max_practical_fixed_distance_percentNo

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description itself discloses the key behavioral traits: read-only, fail-closed, flagging rather than recommending, and not treating thresholds as placement advice. It doesn't cover failure modes or session/auth requirements, but the core side-effect and safety profile is unusually explicit.

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

Conciseness5/5

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

Two dense sentences front-load the safety profile and audit nature, then list the flagged conditions and end with the placement-advice caveat. Every clause contributes meaning and there is no 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?

The definition is adequate for an expert: it gives purpose, side-effect profile, and criteria. However, with no output schema and most parameters undocumented, an agent is left to infer the exact return shape, how account/session scoping works, and what fail-closed means operationally.

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 coverage is only 33%, so the description must compensate for undocumented parameters. It frames the numeric thresholds as audit-only limits and references the review-distance limit and reversal gliders, but it never explicitly maps those concepts to the parameter names, nor does it explain account_id's role.

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 names a specific verb and resource: a read-only audit of active BUY reachability, and then enumerates the exact conditions it flags. This distinguishes it clearly from order-execution and general status tools in the sibling list.

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?

It establishes clear usage context as a fail-closed, read-only audit and explicitly warns that thresholds are not placement advice, which is a useful when-not boundary. It does not name alternative tools or state when to prefer this audit over related audit siblings, so it stops short of full routing guidance.

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

avanza_scalp_watchlist_getA

Load a named scalp watchlist and optionally include current quotes for all members.

ParametersJSON Schema
NameRequiredDescriptionDefault
watchlist_idYes
include_quotesNo

TDQS

A3.5/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 disclosing side effects and prerequisites. It does not state whether this is a read-only operation, whether current quotes require an active Avanza live session, or what happens on failure; 'load' is the only signal that it is non-mutating.

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, front-loaded sentence with no filler; every phrase adds information about the operation or its optional behavior. This is appropriately concise for a two-parameter retrieval tool.

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 covers the core load-and-maybe-quotes behavior and is adequate for a simple getter, but with no output schema or annotations it leaves the return shape, prerequisite session/auth state, and failure semantics unstated. An agent can select the tool but may not know exactly what to expect from the response.

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?

With 0% schema description coverage, the description at least maps watchlist_id to a named scalp watchlist and include_quotes to returning current quotes, which adds meaning beyond the bare type names. However, it gives no details on watchlist_id format/source or the precise behavior/limitations of the quotes inclusion.

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 names a concrete resource ('a named scalp watchlist'), a specific action ('load'), and the optional behavior of including quotes for all members. This makes it easy to tell apart from the sibling avanza_scalp_watchlist_set and from generic quote tools.

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 phrase 'optionally include current quotes' gives some context for deciding on include_quotes, but the description never states when to prefer this tool over alternatives or when not to use it. The get/set sibling relationship is only implicit, so the agent must infer usage.

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

avanza_scalp_watchlist_setA

Store/update a named scalp watchlist (orderbook IDs + optional labels) in local paper session state.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYes
watchlist_idYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It usefully discloses that this writes to local paper session state rather than live broker state and that the operation is an upsert ('Store/update'). However, it does not disclose whether an existing watchlist is fully replaced or merged, whether a paper session must be active, or what the function returns.

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 one tight sentence with the action front-loaded. It contains no filler and each phrase adds meaningful context: action, resource, payload shape, and storage scope.

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 two-parameter local-state write tool, the description gives enough for an agent to make a correct call: what to store, where, and the required payload. The main omissions are replacement semantics and return behavior, but the tool's complexity is low and the sibling getter clarifies the overall workflow.

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 0%, but the description partially compensates: 'named scalp watchlist' maps to watchlist_id, and 'orderbook IDs + optional labels' maps to the items array. It does not explain orderbook_id format/source or the semantics of watchlist_id beyond being a name, so parameter understanding remains incomplete.

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 uses a specific verb phrase ('Store/update') and names the exact resource: a named scalp watchlist containing orderbook IDs and optional labels. It also specifies the scope ('local paper session state'), clearly distinguishing this setter from the sibling avanza_scalp_watchlist_get.

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 as the write-side of a get/set watchlist pair, but it never explicitly names the sibling avanza_scalp_watchlist_get or states when not to use this tool. Some inference is required, which is a moderate gap.

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

avanza_search_stockA

Search Avanza stock/order book data by name, ticker, or ISIN.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral burden. 'Search' and 'data' indicate a read-only lookup and the identifier types define scope, but it does not disclose output shape, match behavior, or authentication prerequisites. This is adequate but thin.

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?

One short, front-loaded sentence that names the action, object, and acceptable inputs. There is no filler and no unnecessary repetition of schema details.

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 search tool, the essential call details are present: the query semantics and the optional limit. However, with no output schema and no annotations, the agent is left to infer the return format and whether an active session is required, so completeness is only partial.

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 schema has no property descriptions, so the description must clarify parameters. It clarifies that 'query' accepts a name, ticker, or ISIN, which is the critical semantic. The 'limit' parameter is not described but is already well-specified by the schema's default, minimum, and maximum.

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 states a specific verb ('Search'), a resource ('Avanza stock/order book data'), and acceptable identifier types ('name, ticker, or ISIN'). This makes the tool's role clear even among many Avanza siblings, though it does not explicitly differentiate it from similar lookup tools.

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 identifier types imply a use case: when the agent needs to resolve a stock by name, ticker, or ISIN. However, the description does not mention alternatives or conditions for choosing another sibling, so usage guidance is only implied rather than explicit.

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

avanza_select_accountA

Safely switch MCP/TUI selected account context. Read-only context switch; no order mutations.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYes
session_idNo
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral disclosure burden. It clearly discloses that the operation is a read-only context switch and that no order mutations occur, which is valuable safety-relevant information for an agent invoking the 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 only two sentences and front-loads the core purpose first. Every phrase earns its place, with the safety clarification adding useful information without redundancy.

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 selection tool with one required parameter and no output schema, the description is minimally adequate. However, it does not describe what happens after the context switch, how it interacts with session/tenant routing, or what a successful result looks like.

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 only 33%, with account_id and session_id lacking descriptions. The description does not explain how account_id selects the context, how session_id relates to session routing, or how tenant_session_id should be used beyond the minimal schema note.

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 states a specific verb and resource: switching the MCP/TUI selected account context. The phrase 'Read-only context switch; no order mutations' helps distinguish it from order-mutating tools and implies account selection rather than session selection, though it does not explicitly name sibling alternatives.

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: select an account context for subsequent MCP/TUI operations. The 'no order mutations' clause signals when not to use it, but the description does not explicitly contrast it with avanza_select_session, avanza_accounts, or other context-selection tools.

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

avanza_select_sessionA

Switch active MCP/TUI session context to a loaded tenant session (read-only context switch).

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes

TDQS

A3.6/5.0
Behavior3/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 adds useful information by labeling the operation 'read-only' and noting the session must be 'loaded', which suggests a safety profile. However, it does not explain stateful side effects, behavior for invalid session_id, or whether the context switch persists across calls, leaving only partial 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 compact sentence with the core action front-loaded. Every phrase adds meaning, and there is no filler or redundant information. It is appropriately sized for a one-parameter tool.

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 context-switch tool, the description states the action and read-only nature, which covers the primary behavior. But it does not explain how the agent should discover valid session IDs, what happens if the session is not loaded, or what 'MCP/TUI session context' means operationally. With no output schema and no annotations, these gaps make the description only partially complete.

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 provides only type: string for session_id with no description, and schema coverage is 0%. The tool description never names session_id or explains its format, value range, or how to obtain a valid one. The description only vaguely implies the parameter identifies the loaded tenant session, which is insufficient given the schema provides no guidance.

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?

Description uses the verb 'Switch' and identifies both the resource ('active MCP/TUI session context') and the target ('a loaded tenant session'). The qualifier 'read-only context switch' clarifies that this is a selection operation rather than a mutation. It is clearly distinguishable from listing tools like avanza_sessions and account selection tools like avanza_select_account.

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 phrase 'to a loaded tenant session' implies a precondition: the session must already be loaded or available. However, the description does not explicitly mention alternatives, when not to use this tool, or that the agent should first call avanza_sessions to discover valid session IDs. Usage guidance is only implied, not explicit.

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

avanza_sessionsA

List authenticated Avanza tenant sessions currently loaded in TUI.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It does indicate the operation is a read-only listing and adds the 'currently loaded in TUI' qualifier, which clarifies the source of data. However, it does not disclose what a session represents, whether any precondition exists, or what the returned session objects contain.

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 is front-loaded with the action and resource. Every word contributes value, and there is no redundant or vague 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?

For a zero-parameter, read-only listing tool, this description is nearly complete. It names the exact scope of the listing and implies the return is a list of sessions. It could add slightly more context about what constitutes a 'session' or how this relates to selecting one, but the minimal surface area makes this a minor gap.

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 tool has zero parameters and the schema is an empty object, so the baseline is 4. There are no input semantics the description needs to explain, and adding parameter detail would be irrelevant.

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 a specific verb ('List') and resource ('authenticated Avanza tenant sessions currently loaded in TUI'), making the tool's purpose immediately understandable. It conveys that this is a read-only enumeration of locally loaded sessions rather than an authorization or selection action, though it does not explicitly contrast with sibling tools.

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 such as avanza_select_session, avanza_live_session_authorize, or avanza_live_session_revoke. It only states what it lists, leaving the agent to infer that it is likely useful for inspecting currently active sessions before selecting one.

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

avanza_sold_today_buyback_stateB

Summarize same-day sold instruments and fail closed on economic recovery coverage. Same-day BUY fills offset sold volume; active BUY stops count only with durable sold-slice recovery attribution, and regular BUY orders remain unattributed exposure.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
account_idNo
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.
tight_trigger_percent_maxNo

TDQS

B3.3/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden, and it does disclose meaningful rules: same-day BUY fills offset sold volume, active BUY stops require durable sold-slice recovery attribution, and regular BUY orders are unattributed exposure. Concrete behavioral detail is present, though failure/error behavior and output shape remain undisclosed.

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 appropriately short and front-loaded, with the main purpose in the first sentence and rule elaboration in the second. It earns its sentences but uses dense, jargon-heavy phrasing that could be clearer for an automated agent.

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, five parameters, and 60% of parameters undocumented, the description leaves important context missing: what the summary returns, what tight_trigger_percent_max controls, and how date/account/session scoping is intended to work.

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 only 40%, so the description needed to compensate for date, account_id, and tight_trigger_percent_max. It does not explain any of these parameters or their formats, and only loosely implies date/account through 'same-day' and 'sold instruments' without connecting them to the schema.

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 names a specific operation ('Summarize same-day sold instruments') and explains the tool's distinguishing angle: same-day BUY fills offset sold volume and BUY stops only count under specific attribution. It stops short of a 5 because 'fail closed on economic recovery coverage' is jargon and no sibling tool is explicitly contrasted.

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 intended use is implied: call this when you need a summary of same-day sold instruments and buyback coverage. However, it provides no explicit when-to-use guidance versus the many overlapping sibling tools such as avanza_recovery_reachability or avanza_protection_gaps, and no exclusions or prerequisites are stated.

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

avanza_statusA

Show TUI MCP bridge status, selected account, and current safety mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the full disclosure burden. 'Show' makes the read-only nature evident, which is the key behavioral trait for a status tool. However, it does not disclose whether an active session/authorization is required, whether the call reflects live state, or any side effects or limitations, leaving meaningful behavioral gaps for a tool with zero annotation coverage.

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 front-loaded sentence with zero filler. The verb comes first and each listed item ('bridge status,' 'selected account,' 'safety mode') earns its place by enumerating a distinct output category. Nothing could be trimmed without losing 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?

For a simple tool with 0 required parameters and no nested objects, the description adequately names the three output areas, which partially compensates for the missing output schema. However, it does not clarify the response shape, explain how the two optional session parameters affect the result, or disambiguate from similarly named siblings like data_source_status and avanza_sessions.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both optional parameters, including session_id being a legacy alias for tenant_session_id (non-paper tools only). The tool description adds nothing about parameters, which is acceptable per the baseline-3 rule since the schema carries the full explanatory weight.

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 uses a specific verb ('Show') with three concrete resources: TUI MCP bridge status, selected account, and current safety mode. These elements are distinctive enough to implicitly separate it from siblings like avanza_sessions, avanza_accounts, and data_source_status, but it never explicitly names an alternative or states what it is not, so differentiation remains implicit.

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?

Usage is only implied: the 'Show' verb tells an agent to call this when it needs bridge status, selected account, or safety mode information. There is no explicit guidance on when to prefer it over similar siblings (data_source_status, avanza_sessions, avanza_live_snapshot), no exclusions, and no stated prerequisites or conditions.

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

avanza_stoploss_deleteA

Dry-run or delete a stop-loss order. Live deletion requires TUI R/W mode, confirm=true, strategy_intent, strategy_reason, and an exact match to durable stop metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo
account_idYes
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
stop_loss_idYes
strategy_intentNo
strategy_reasonNo
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.

TDQS

A4.1/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 meaningfully disclose that live deletion is gated by mode, confirmation, strategy fields, and metadata matching, while dry-run is available without those. It does not fully explain TUI R/W mode, exact-match semantics, or error/return behavior, but it clearly communicates the destructive path's prerequisites.

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

Conciseness5/5

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

Two sentences with no filler. The core purpose is front-loaded, and the conditions for live deletion are compactly listed without redundancy.

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 covers the most important operational constraints for a destructive tool, but leaves gaps: what TUI R/W mode means, what 'exact match to durable stop metadata' implies, and what a dry-run returns or how failures are reported. With no output schema and no annotations, these are material gaps for an agent deciding whether the tool can be safely invoked.

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 only 29%, so the description must compensate. It adds meaning to confirm (dry-run vs live), strategy_intent, and strategy_reason by tying them to live deletion, and hints at stop_loss_id matching via 'exact match to durable stop metadata.' However, account_id and stop_loss_id still lack explicit semantic explanation, and the description does not clarify the enum values or the purpose of the strategy fields.

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 names a specific action (delete) and resource (stop-loss order), and also identifies the dry-run mode. It clearly distinguishes itself from stop-loss creation/editing tools like avanza_stoploss_set and avanza_stoploss_edit.

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?

It provides clear context for when live deletion is possible: TUI R/W mode, confirm=true, strategy_intent, strategy_reason, and exact metadata matching. It does not explicitly name alternatives or exclusions, but the conditions sufficiently guide when the tool can actually perform a live delete versus a dry-run.

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

avanza_stoploss_editB

Dry-run or edit an existing stop-loss (place new + delete old). Live MCP placement requires strategy_intent and strategy_reason.

ParametersJSON Schema
NameRequiredDescriptionDefault
volumeYes
confirmNo
account_idYes
order_typeNosell
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
order_priceYes
valid_untilNo
stop_loss_idYes
trigger_typeNo
order_book_idYes
trigger_valueYes
strategy_intentNo
strategy_reasonNo
order_price_typeNo%
order_valid_daysNo
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.
trigger_value_typeNo%
short_selling_allowedNo
trigger_on_market_maker_quoteNo

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 full burden. It is transparent that editing is implemented as placing a new stop-loss and deleting the old one, and it flags a compliance gate for live MCP placement. Still, it does not explain the behavior of the confirm flag, whether the old stop-loss deletion is immediately destructive, or what happens on dry-run.

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 two sentences with no filler. The core operation is front-loaded, and the live-placement requirement is a separate, valuable addition.

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 mutation tool with 19 parameters, no output schema, no annotations, and a conditional live-placement requirement, this description is too sparse. It does not explain how dry-run is triggered, which parameters are required only for live edits, or the implications of the delete-old step, leaving significant gaps for an agent trying to invoke it safely.

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 only 11%, so the description should compensate, but it only names strategy_intent and strategy_reason without explaining their meaning or enum values. Most critical parameters such as stop_loss_id, account_id, order_book_id, trigger_value, order_price, and volume are left entirely to inference from their names and the schema.

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 states a specific verb and resource: dry-run or edit an existing stop-loss, with the mechanism 'place new + delete old' adding useful clarity. It does not explicitly compare itself to sibling tools like avanza_stoploss_set or avanza_stoploss_delete, so it doesn't fully differentiate, but the 'existing stop-loss' phrasing makes the core purpose clear.

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 the tool is for editing existing stop-losses, and the live-placement requirement for strategy_intent and strategy_reason gives an important condition. However, it does not explicitly state when to prefer this over avanza_stoploss_set, avanza_stoploss_delete, or open_order_edit, nor does it explain the dry-run vs. live distinction beyond the existence of a confirm-related requirement.

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

avanza_stoplossesC

List stop-loss orders with durable strategy intent and missing/mismatch metadata audit, optionally filtered by instrument, side, or status.

ParametersJSON Schema
NameRequiredDescriptionDefault
sideNo
statusNo
compactNo
refreshNo
account_idNo
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
orderbook_idNo
order_book_idNo
instrument_nameNo
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.

TDQS

C2.9/5.0
Behavior3/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 adds some behavioral context by indicating this is a read-style listing operation that audits missing/mismatched metadata, but it does not disclose how the 'refresh' parameter alters behavior, whether any side effects occur, pagination, or session/auth requirements.

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?

A single sentence with the verb and resource front-loaded, containing no filler. The phrase 'durable strategy intent and missing/mismatch metadata audit' is dense but compact; it could be clearer without being longer.

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 10 params, no required params, no output schema, no annotations, and multiple overlapping siblings, the description is far from complete. It does not clarify output shape, describe the audit result, disambiguate from avanza_instrument_stoplosses, or explain the ambiguous param names — an agent would be guessing on critical invocation details.

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?

With only 20% schema description coverage, the description must compensate, and it only maps three params (instrument, side, status) to filter semantics. Seven of ten params remain unexplained, including the ambiguous orderbook_id/order_book_id pair and the meaningful compact/refresh flags, leaving the agent to guess.

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 names a specific verb and resource ('List stop-loss orders') plus a distinctive scope ('durable strategy intent and missing/mismatch metadata audit') and filter options. This mostly separates it from the sibling avanza_instrument_stoplosses, though the jargon phrase 'durable strategy intent' is vague and the dual list+audit framing blurs the tool's primary purpose slightly.

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 when-to-use guidance, exclusions, or alternative tool names are given. Given a sibling list containing closely overlapping tools like avanza_instrument_stoplosses, avanza_stoploss_strategy_audit, and avanza_open_orders, an agent has no way to decide which one to invoke.

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

avanza_stoploss_setB

Dry-run or place a stop-loss order. Live placement requires TUI R/W mode, confirm=true, strategy_intent, and strategy_reason.

ParametersJSON Schema
NameRequiredDescriptionDefault
volumeYes
confirmNo
account_idYes
order_typeNosell
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
order_priceYes
valid_untilNo
trigger_typeNo
order_book_idYes
trigger_valueYes
strategy_intentNo
strategy_reasonNo
order_price_typeNo%
order_valid_daysNo
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.
trigger_value_typeNo%
short_selling_allowedNo
trigger_on_market_maker_quoteNo

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are present, so the description carries the disclosure burden. It adds meaningful constraints by specifying that live placement requires TUI R/W mode and specific confirm/strategy fields, implying dry-run otherwise. It does not explain what dry-run returns, whether any state changes occur in dry-run, or other side effects and authorization details.

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

Conciseness5/5

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

Two short sentences, each adds a distinct point: what the tool does and what live placement requires. No filler or repetition of schema defaults, and the main purpose is front-loaded.

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?

Despite 18 parameters and no output schema or annotations, the description provides none of the following: what a dry-run result contains, how trigger and order price types are interpreted, valid_until/order_valid_days semantics, or how this tool relates to paper/batch/edit stop-loss siblings. It is inadequate for correct invocation in most non-trivial scenarios.

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 only 11%, but the description only adds semantics for confirm, strategy_intent, and strategy_reason by tying them to the live-placement condition. The many other parameters (trigger_value, order_price, volume, trigger_type, valid_until, etc.) receive no semantic explanation, so agents must guess their meaning and valid combinations.

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 states the core operation (set a stop-loss) and its two modes (dry-run or live placement), using the specific verb 'place' with the resource 'stop-loss order'. However, it does not explicitly differentiate from close siblings like avanza_stoploss_set_batch, avanza_stoploss_edit, or avanza_paper_stoploss_set, so the agent must infer which tool fits the current intent.

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 description gives an explicit precondition for live placement: TUI R/W mode, confirm=true, strategy_intent, and strategy_reason, which tells the agent how to trigger live versus dry-run. It does not name alternative tools or say when not to use this tool, so routing guidance remains partial.

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

avanza_stoploss_set_batchA

Place multiple stop-loss orders with per-item validation/readback. Every live item requires strategy_intent and strategy_reason in addition to TUI R/W mode, live authorization, and confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYes
confirmNo
account_idYes
session_idNo
tenant_session_idNo

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It discloses per-item validation and readback, plus required authorization and confirmation flags, but it does not explain failure behavior, partial success, or the response/return format despite being a mutating operation.

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

Conciseness5/5

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

Two sentences, no filler, with the main action front-loaded and the prerequisites packed into a compact second sentence. Every clause adds relevant information.

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 tool is a complex batch operation with a nested items schema, no output schema, and no annotations, yet the description omits return behavior, partial-failure handling, and definitions of domain jargon like TUI R/W mode. It is not complete enough for an agent to invoke it confidently without external 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%, so the description must compensate. It explains confirm=true and the live-item requirements for strategy_intent and strategy_reason, but leaves account_id, items structure, trigger_value, order_price, volume, and other fields semantically unexplained.

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 specific action ('Place multiple stop-loss orders') and adds a distinguishing trait ('per-item validation/readback'). This clearly differentiates it from the singular avanza_stoploss_set and paper-order siblings like avanza_paper_stoploss_set.

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?

It gives clear preconditions for live usage: strategy_intent, strategy_reason, TUI R/W mode, live authorization, and confirm=true. It does not explicitly name alternatives or state when not to use it, but the live/batch prerequisites provide practical usage context.

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

avanza_stoploss_strategy_auditA

Refresh active broker stop-losses and audit whether every exact row has matching durable local strategy metadata. Read-only at Avanza.

ParametersJSON Schema
NameRequiredDescriptionDefault
compactNo
account_idYes
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose 'Read-only at Avanza', which clarifies there is no mutation of broker-side state. However, the term 'Refresh' leaves ambiguity about local side effects, and there is no mention of auth requirements, rate limits, or what happens with mismatches.

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

Conciseness5/5

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

Two sentences, no wasted words. The core action and audit purpose are front-loaded, with the read-only caveat appended efficiently. Every word earns its place.

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 has no output schema and no annotations, so the description should clarify return values and usage context. It states the audit goal but does not explicitly say what the tool returns (e.g., mismatched rows or a status report), nor does it clarify how it relates to sibling audit tools. Still, the core invocation conditions are clear enough for a basic call.

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 only 50%; session_id and tenant_session_id are documented in the schema, but account_id and compact are not. The description itself adds no parameter-level meaning, and the 'compact' boolean's effect on output is entirely unexplained. The description does not compensate for the schema's gaps.

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 uses specific verbs and resources: 'Refresh active broker stop-losses' and 'audit whether every exact row has matching durable local strategy metadata.' This clearly distinguishes the tool from siblings like avanza_stoplosses (which likely just lists stop-losses) and avanza_stoploss_strategy_register_batch (which registers metadata).

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 context is implied: it is for verifying consistency between live broker stop-losses and local strategy metadata. However, there is no explicit guidance on when to use it versus similar audit tools such as avanza_position_strategy_audit, nor any exclusion criteria or alternative routing.

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

avanza_stoploss_strategy_register_batchA

Dry-run or atomically register strategy metadata for exact active broker stop rows. This changes only the local registry, never Avanza; confirm=true requires MCP R/W but not live-trading authorization.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYes
confirmNo
account_idYes
session_idNo
prune_staleNo
tenant_session_idNo

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations at all, the description carries full behavioral burden. It clearly discloses that the write is local-only, never touches Avanza, and that confirm=true is the atomic commit gate. It also flags the authorization distinction (MCP R/W but not live-trading). It does not disclose failure/rollback behavior on partial items, but it says 'atomically,' which implies all-or-nothing.

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

Conciseness5/5

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

Two dense sentences with no wasted words. The first sentence states the operation and scope; the second provides the crucial safety/authorization guardrail. Key decision-relevant facts are front-loaded.

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 nontrivial batch tool, the description explains the operation, its local side effect, confirmation semantics, and authorization. Given the rich schema that already documents required item fields, and the absence of an output schema, a brief note about return/success reporting would round it out, but the essential calling context is present.

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 0%, but the description names the key conceptual parameters: dry-run vs confirm, strategy metadata, exact active broker stop rows, and prune_stale is implied by 'exact active broker stop rows.' It does not add details about session_id or tenant_session_id semantics, which remain ambiguous for an agent selecting which session context to use.

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 names a very specific verb ('register'), resource ('strategy metadata for exact active broker stop rows'), and scope ('dry-run or atomically... batch'). It explains it only changes the local registry, never Avanza, which sharply distinguishes it from live-trading mutation siblings like avanza_stoploss_set_batch or avanza_order_set.

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 description tells the agent when confirmation is needed ('confirm=true') and what prerequisites it carries ('requires MCP R/W but not live-trading authorization'). It clearly implies a dry-run default for safe validation. It doesn't explicitly say 'use this instead of avanza_position_strategy_register_batch when...' but its local-only registry framing makes the batch-level use case apparent.

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

avanza_transactionsB

List executed orders/history (BUY/SELL by default) with optional account/date/type filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNo
dateNo
fromNo
isinNo
sideNo
typesNo
statusNo
compactNo
refreshNo
account_idNo
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
include_rawNoInclude the unnormalized broker transaction payload for read-only evidence preservation.
max_elementsNo
orderbook_idNo
changed_sinceNo
executed_onlyNo
order_book_idNo
instrument_nameNo
transactions_toNo
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.
transactions_fromNo

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the read-only nature is reasonably inferable from the verb 'List', but the description stops there. It does not disclose behavior such as default executed_only=true, pagination via max_elements, refresh semantics, include_raw evidence preservation, or how date filters are interpreted.

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. It states the core action, the resource, the default scope, and the available filter types in a compact form that is easy to scan.

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?

With 21 parameters, no annotations, and no output schema, this short description is not sufficient for reliable invocation. It omits return format, date format expectations, default filtering behavior, pagination, account/session selection, and how the tool differs from several closely related siblings in the same toolset.

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 only 14%, so the description must compensate, but it only summarizes 'account/date/type filters' and the default BUY/SELL. The majority of the 21 parameters remain unexplained, including changed_since, status, executed_only, compact, refresh, include_raw, session scope, orderbook_id variants, and instrument_name, leaving an agent to guess their semantics.

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 uses a clear verb ('List') and a specific resource ('executed orders/history'), and it conveys the default BUY/SELL scope plus optional account/date/type filters. It can be distinguished from open-order siblings like avanza_open_orders, but it does not explicitly differentiate itself from similar history tools such as avanza_instrument_transactions or avanza_paper_trades.

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 provides useful context: it is about executed/historical orders and supports optional filters. However, it gives no explicit guidance on when to choose this tool over alternatives, no exclusions, and no mention of instrument-scoped or paper-trading transaction tools among the siblings.

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

avanza_tv_preopen_portfolio_bundleC

Read-only Avanza portfolio protection state merged with TradingView pre-open market/technical snapshots.

ParametersJSON Schema
NameRequiredDescriptionDefault
cookieNo
marketNoamerica
compactNo
sessionidNo
account_idNo
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
authenticatedNo
sessionid_signNo
include_symbolsNo
coverage_targetsNoExact strategy-classified SELL targets. Non-zero targets require intent and reason.
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.
coverage_target_percentNoExplicit mechanical percentage target. Omit unless a full/partial holding coverage audit is intentionally requested.

TDQS

C2.9/5.0
Behavior3/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 it does disclose the core safety trait ('Read-only') plus the fact that it composes two data sources. However, it stays silent on session/auth dependencies despite five auth-related parameters (cookie, sessionid, sessionid_sign, authenticated, account_id), does not reveal the coverage-audit behavior triggered by coverage_targets/coverage_target_percent, and says nothing about cross-service latency or partial-failure risk from hitting TradingView.

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 single sentence is tightly written and front-loaded with 'Read-only' before the resource list, with no wasted words. It is scannable at a glance, though arguably thin for a 12-parameter composite tool; that under-specification is a completeness problem better penalized in other dimensions.

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 zero annotations, no output schema, 12 parameters, and an extremely dense sibling list of roughly 80 tools, a one-sentence description is inadequate. It omits the output bundle's contents, the session/auth requirements implied by the parameters, when to choose it over signal_context_bundle or tv_preopen_batch_snapshot, and the coverage-target semantics that make it an audit tool rather than a passive snapshot.

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 only 33%, so the tool description must compensate for the eight undocumented parameters (cookie, market, compact, sessionid, account_id, authenticated, sessionid_sign, include_symbols) — it adds nothing. The description contains zero parameter information, leaving an agent to guess at valid market values, the meaning of the compact flag, and include_symbols filtering 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 names two concrete resources (Avanza portfolio protection state, TradingView pre-open market/technical snapshots) and states the operation ('merged'), with 'Read-only' upfront. The composite nature is clear and reasonably distinct from a plain avanza_portfolio or tv_preopen_symbol_snapshot call. However, it does not specify what fields the output bundle contains or explicitly differentiate itself from the similarly composite signal_context_bundle.

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 when-to-use guidance is provided. The description does not state when to prefer this bundle over siblings such as tv_preopen_batch_snapshot, signal_context_bundle, or avanza_protection_gaps, nor does it mention prerequisites, exclusions, or contexts in which a narrower tool would be better. An agent must infer applicability entirely from the name.

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

avanza_verify_no_raw_failed_ordersC

Compact post-mutation check for failed/rejected open regular orders.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNo
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
orderbook_idsNo
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.

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 behavioral burden. It says it is a 'check' but doesn't state whether it is read-only, what it returns, whether failures are reported as a list/count/boolean, or whether the tool errors when failed orders are found.

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 with no filler and front-loads the key 'compact post-mutation check' concept. It is appropriately short, though some brevity comes at the cost of behavioral detail.

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?

There is no output schema and no annotations, so the description alone must explain the check's behavior and context. It doesn't state what a successful check returns, how 'regular orders' relates to paper or stoploss variants, or what the optional parameters actually scope.

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 no parameter-level meaning. With 50% schema description coverage and undocumented parameters like account_id and orderbook_ids, the description should help clarify invocation scope but doesn't mention any parameters.

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 a specific resource ('failed/rejected open regular orders') and a clear purpose ('post-mutation check'), reinforced by the tool name's 'verify no'. It is reasonably distinguishable from raw listing tools like avanza_open_orders_raw, though it doesn't explicitly contrast with them.

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 phrase 'post-mutation' gives a general timing cue for when to run the tool, but it doesn't specify which mutations should be followed or when to prefer alternatives such as avanza_open_orders_raw or avanza_verify_protection. There is no explicit when-not-to-use guidance.

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

avanza_verify_protectionB

Compact post-mutation check against exact strategy SELL targets. Without explicit targets, it checks failed SELL rows and overcoverage without inferring a full-holding exit.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNo
session_idNoLegacy alias for tenant_session_id (non-paper tools only).
exclude_ethNo
full_holdingNo
orderbook_idsNo
coverage_targetsNoExact strategy-classified SELL targets. Non-zero targets require intent and reason.
tenant_session_idNoOptional tenant session scope id for multi-session TUI/MCP routing.
exclude_orderbook_idsNo
coverage_target_percentNoExplicit mechanical percentage target. Omit unless a full/partial holding coverage audit is intentionally requested.
exclude_non_stop_eligibleNo

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 full behavioral burden. It usefully discloses the fallback behavior and the boundary of not inferring a full-holding exit. However, it does not state whether the check is read-only, what output is produced, or any session/auth requirements, leaving major behavioral gaps.

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 two compact sentences with no filler. The primary purpose is front-loaded, and the fallback behavior is stated economically. Every clause adds information.

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 no annotations, no output schema, and 10 parameters, the description is too thin for reliable invocation. It conveys high-level verification semantics but omits return shape, parameter dependencies, how coverage_target_percent interacts with coverage_targets, and required session/account context. It supports tool selection but not confident invocation.

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 only 40%, so the description needed to compensate. It adds meaning to the core concepts of 'exact strategy SELL targets' and 'without inferring a full-holding exit', but it does not map these to specific parameters or explain significant ones like account_id, orderbook_ids, exclude_orderbook_ids, exclude_eth, or exclude_non_stop_eligible. The fallback behavior is also not tied to any 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 states a specific action ('post-mutation check') and resource ('exact strategy SELL targets'), then elaborates with fallback behavior ('failed SELL rows and overcoverage'). It also distinguishes itself by explicitly not inferring a full-holding exit. It does not name a sibling tool, so full differentiation is slightly incomplete, but the purpose is clear.

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 after a mutation and explains the fallback when explicit targets are absent. However, it gives no explicit guidance on when to prefer this tool over closely related siblings such as avanza_protection_gaps or avanza_verify_no_raw_failed_orders, and it lacks exclusions or alternative routing.

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

data_source_statusC

Return current health, freshness, and safety flags for Avanza, TradingView, Zacks, FMP, Polygon, SEC, and FRED source integrations.

ParametersJSON Schema
NameRequiredDescriptionDefault
marketNoamerica
symbolNoAAPL
exchangeNoNASDAQ

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are present, so the description carries the full burden of behavioral disclosure. It mentions 'health, freshness, and safety flags' but does not state whether this triggers live external API calls, whether it is a pure read operation, or what side effects or rate-limit implications exist. The output categories are named but their meaning and behavior are 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.

Conciseness4/5

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

The description is a single, front-loaded sentence with no filler. It efficiently names the action, the output categories, and the covered sources. It could have added brief parameter context without losing conciseness, but as structured it is appropriately brief.

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?

With no output schema, no annotations, and 0% parameter documentation, the description is too thin to give an agent a complete picture. It explains what the tool returns at a high level but omits how the optional parameters affect results, what 'safety flags' means, and what the response structure looks like. This is inadequate for a tool with three undocumented parameters.

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

Parameters1/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 'market', 'symbol', or 'exchange' parameters at all. Since all three are optional with defaults, an agent has no idea how they filter or affect the status response. The description provides zero compensation for the complete lack of schema-level documentation.

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 names a specific verb ('Return'), a specific resource ('current health, freshness, and safety flags for... source integrations'), and explicitly lists the seven covered sources. This clearly distinguishes it from per-source sibling tools like avanza_status or zacks_scrape_symbol, as it is the only multi-source status/health tool.

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 states what the tool returns but gives no guidance on when to choose it over alternatives. With siblings like avanza_status and tv_auth_session_status, an agent would benefit from an explicit 'use this for multi-source health checks, use avanza_status for Avanza-only status' type of direction. No such when/when-not context is present.

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

fmp_analyst_recommendationsC

Fetch analyst recommendation history for a symbol from Financial Modeling Prep (requires FMP API key).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
symbolYes
api_keyNo

TDQS

C2.9/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden. It discloses the external source and API-key prerequisite, but does not mention return shape, whether the response is a list or object, pagination, rate limits, or error behavior. Fetch implies a read, but little else is transparent.

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?

A single efficient sentence that leads with the core action and includes the key prerequisite. It is appropriately sized for the information it provides, though it could use additional structured details without becoming verbose.

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 tool has no output schema, so the description should describe return values; it does not. It also omits how the API key is supplied, what limit represents, and what the response contains, leaving meaningful gaps for an agent deciding whether and how to call it.

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

Parameters3/5

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

With 0% schema description coverage, the description must compensate. It adds meaning for symbol (the entity to fetch) and api_key (required FMP key), but the limit parameter is left undocumented despite having a default and bounds that suggest it controls the number of history entries returned.

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 a specific action (Fetch), resource (analyst recommendation history), target (a symbol), and source (Financial Modeling Prep). It is specific enough to distinguish from many sibling tools by source, though it does not explicitly contrast sibling 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?

The only usage-related information is that an FMP API key is required. It gives no guidance on when to choose this tool over polygon_analyst_insights, zacks_scrape_symbol, or other analyst-related siblings, and no exclusions or alternative routing.

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

fred_seriesB

Fetch FRED macro observations (requires a free FRED API key via FRED_API_KEY or api_key input).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
api_keyNo
series_idYes
sort_orderNodesc

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 full burden for behavioral disclosure. It usefully reveals that a free FRED API key is required and can be supplied either via an environment variable or the api_key parameter. However, it does not disclose rate limits, error behavior, output shape, or whether the operation is read-only, leaving notable gaps.

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 leads with the core action and resource, then adds the critical API key requirement. There is no filler or redundant restatement of the tool name.

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 no property descriptions in the input schema, the one-line description is insufficient. It does not explain parameter semantics, return format, or how to interpret FRED series observations, so an agent would have to guess at several operational details.

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 addresses the api_key parameter (and only indirectly via 'FRED_API_KEY or api_key input'), while series_id, limit, and sort_order are left unexplained. The phrase 'macro observations' hints at the return value but not at what each parameter controls.

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 states a specific verb ('Fetch') and resource ('FRED macro observations'), clearly distinguishing it from the trading-focused sibling tools. It does not explicitly mention that the tool fetches observations for a given series_id, but the required parameter makes that implicit.

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 given on when to use this tool versus alternatives, and no exclusions or preferred scenarios are described. The only usage-related note is the API key requirement, which is a prerequisite rather than a selection criterion.

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

polygon_analyst_insightsB

Fetch analyst insights/ratings for a symbol from Polygon Benzinga feed (requires Polygon API key).

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
limitNo
symbolYes
api_keyNo

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. 'Fetch' signals a non-mutating read and the API-key note discloses an auth prerequisite. However, it does not mention failure behavior for missing/invalid keys, rate limits, data freshness/caching, or response shape — all relevant for a tool with zero annotation coverage.

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 front-loaded sentence: the verb and resource come first, and the parenthetical API-key prerequisite is the only extra information. Every word earns its place with zero wasted content.

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?

Adequate for a simple read tool — it states the resource, source, and key requirement. But with no output schema and 0% schema coverage, the agent is left guessing about return values and the date parameter's meaning. The relationship to the competing fmp_analyst_recommendations sibling is also unaddressed.

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 adds meaning to symbol ('for a symbol') and api_key ('requires Polygon API key'), but leaves date (format, optionality, filtering semantics) and limit (beyond the schema's self-explanatory default/min/max) completely unexplained. Half the parameters are undocumented in both schema and description.

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 names a specific verb ('Fetch'), a concrete resource ('analyst insights/ratings for a symbol'), and a data source ('Polygon Benzinga feed'), plus a key prerequisite. It does not explicitly contrast with similarly-purposed siblings like fmp_analyst_recommendations, though the Benzinga source naming gives implicit differentiation.

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?

Usage is implied — call this when analyst insights for a symbol are needed and a Polygon API key is available. The 'requires Polygon API key' note is a real precondition, but no alternatives are named and no when-not-to-use conditions are given, especially given the obvious competing sibling fmp_analyst_recommendations.

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

sec_filings_recentA

Fetch recent SEC EDGAR filings by ticker or CIK (official SEC data).

ParametersJSON Schema
NameRequiredDescriptionDefault
cikNo
limitNo
tickerNo

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 behavioral burden. It adds useful context by noting the data source is official SEC data and that results are 'recent', but it does not disclose output shape, rate limits, authentication requirements, or behavior when neither ticker nor CIK is provided.

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. Every phrase adds information: action, resource, recency, lookup method, and data source.

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 no annotations, no output schema, and low schema description coverage, this one-liner is not complete enough for confident invocation. It leaves unresolved whether ticker/CIK is mandatory, what 'recent' means, and what fields or format the returned filings will have.

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 clarifies that ticker and CIK are the lookup identifiers, but it does not explain their expected formats, whether at least one is required, or anything about the 'limit' parameter, which is entirely undocumented.

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 names a specific verb ('Fetch'), a precise resource ('recent SEC EDGAR filings'), and the two lookup keys ('ticker or CIK'). The 'official SEC data' qualifier clearly separates it from the Avanza, TradingView, FMP, and Polygon siblings, none of which offer SEC EDGAR filings.

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 the primary use case: retrieve recent SEC filings when you have a ticker or CIK. However, it does not explicitly state when not to use it, nor does it name any alternative tools or conditions that would favor a sibling.

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

signal_context_bundleC

Build a compact cross-source signal bundle (TradingView technicals + SEC filings + optional Zacks/FMP/Polygon + optional FRED macro).

ParametersJSON Schema
NameRequiredDescriptionDefault
marketNoamerica
symbolNo
compactNo
symbolsNo
exchangeNoNASDAQ
fmp_api_keyNo
include_fmpNo
include_secNo
fred_api_keyNo
include_zacksNo
fred_series_idNo
include_polygonNo
polygon_api_keyNo
include_tradingviewNo

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 the full burden of behavioral disclosure, but it only states that the tool 'builds' a bundle. It does not mention that this likely fetches external data from multiple APIs, whether any default sources are always included, what happens when optional sources are enabled without API keys, or whether the operation is read-only. The 'compact' qualifier implies a trimmed output but its behavioral implications are unexplained.

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 sentence with the action front-loaded: 'Build a compact cross-source signal bundle.' The parenthetical source list is efficient and easy to scan. It loses a point because the terseness obscures several important operational details, but as a structural matter it is compact and well-ordered.

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 high complexity (14 parameters, no annotations, no output schema), the description is far from sufficient for correct invocation. It does not clarify which parameters are required versus optional in practice, how to specify the target symbol, what 'compact' changes, what output shape to expect, or how defaults like include_sec=true and include_zacks=true affect the bundle. The one-sentence overview gives the tool's role but not enough to use it reliably.

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% across 14 parameters, so the description must compensate, but it only maps high-level source categories to the include_* flags. It provides no guidance on the critical parameters: compact, symbol vs symbols, exchange/market defaults, fred_series_id, or the API key fields. The phrase 'optional FRED macro' is misleading because the schema has no include_fred parameter, leaving the trigger for FRED inclusion unclear.

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 uses a specific verb ('Build') and a clear resource ('compact cross-source signal bundle'), and enumerates the bundled sources (TradingView, SEC, Zacks/FMP/Polygon, FRED), which distinguishes it from single-source sibling tools. It stops short of a 5 because it never clarifies what a 'signal bundle' concretely contains or produces, and 'optional FRED macro' is ambiguous given the schema has no include_fred flag.

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 a multi-source, cross-source signal bundle is desired, and the source list hints at when this might be preferred over single-source siblings like tv_scrape_symbol_full or sec_filings_recent. However, it gives no explicit guidance on when NOT to use it, no comparison to alternative bundle tools like avanza_tv_preopen_portfolio_bundle, and no conditions or prerequisites such as API keys needed.

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

tv_auth_custom_listsB

Load authenticated TradingView custom tracking lists and rows from your TradingView profile session.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
list_idNo
list_nameNo

TDQS

B3/5.0
Behavior3/5

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

The description explicitly indicates that the data is 'authenticated' and sourced from the user's 'TradingView profile session,' implying a prior session is required and that this is a read operation. However, it does not disclose failure modes, rate limits, data freshness, or how the optional filters affect behavior, and no annotations are available to fill that 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, tightly worded sentence with no filler: verb, resource, and source are front-loaded. Every phrase adds meaning, making it easy to parse quickly.

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?

With no output schema and no annotations, the description leaves the return shape and selection semantics undefined. It also lacks usage guidance relative to sibling tools, making this a bare-minimum description that supports a first guess but not confident invocation of the optional parameters.

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 explain 'limit,' 'list_id,' or 'list_name.' The schema offers only type and default bounds, so an agent cannot tell whether list_id and list_name are mutually exclusive, how limit applies, or what 'rows' refers to.

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 opens with the specific verb 'Load' and the resource 'authenticated TradingView custom tracking lists and rows,' with the source 'from your TradingView profile session.' This makes the operation clear and distinguishes it from session-management or symbol-level siblings, though it does not explicitly name any alternative tool.

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 sibling tools like tv_auth_watchlist or other list-related tools. There are no exclusions, prerequisites, or alternative routing cues, so the agent must infer usage from the name alone.

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

tv_auth_session_clearA

Delete saved TradingView authenticated session cookie.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/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 does clearly convey the destructive nature of the operation ('Delete'), which is important for an irreversible action. However, it does not disclose side effects such as whether the live session is also invalidated server-side, whether subsequent authenticated calls will fail until re-authentication, or whether the deletion is permanent.

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 sentence with zero wasted words. The verb 'Delete' is front-loaded, immediately signaling the destructive nature, and the rest of the sentence precisely scopes the target. Every word earns its place.

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 zero-parameter tool with no output schema and no annotations, the description is nearly complete — it fully states the action and the target. The only notable gap is the absence of post-condition context, such as whether re-authentication will be required afterward, which would help the agent reason about follow-up steps.

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 tool has zero parameters and 100% schema description coverage, so the baseline of 4 applies. The description adds meaningful context by naming the exact object being acted upon ('saved TradingView authenticated session cookie'), which effectively identifies the implicit target even without 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 states a specific verb ('Delete') and a precise resource ('saved TradingView authenticated session cookie'), making the tool's action unambiguous. This clearly differentiates it from sibling tools like tv_auth_session_start, tv_auth_session_set, and tv_auth_session_status, which create, set, or check sessions rather than remove them.

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 verb 'Delete' makes the intended use context implicitly clear — use it to remove the saved auth cookie, presumably before re-authenticating or when a session is invalid. However, there is no explicit when-to-use guidance, no stated exclusions, and no mention of alternatives such as tv_auth_session_set for overwriting the cookie instead of clearing it.

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

tv_auth_session_login_autoB

Open instrumented browser, let user log in normally, and automatically capture/save TradingView session cookies.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeout_secondsNo

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It does disclose the main flow: a browser opens, user interaction occurs, and cookies are saved. However, it omits side effects, prerequisites, whether the call blocks until login completes, and what happens on timeout or failure.

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, tight sentence that front-loads the action and contains no filler. Every clause contributes useful behavioral 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?

The core flow is adequately described for a relatively simple tool, but gaps remain: no mention of return values, session-state implications, or the timeout parameter's role. Given the absence of annotations and an output schema, more detail would make the tool easier 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 description coverage is 0%, and the description does not mention the only parameter, timeout_seconds. The agent is left to infer meaning from the parameter name and schema constraints alone, with no added context about how the timeout applies to the login flow.

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's operation: opening an instrumented browser, letting the user log in, and capturing/saving TradingView session cookies. This is a specific verb-resource pairing that conveys the core purpose, though it does not explicitly differentiate itself from tv_auth_session_start or tv_auth_session_set.

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 about when to use this tool versus the sibling auth session tools. The interactive login scenario is implied by 'let user log in normally,' but no alternatives, exclusions, or preconditions are stated.

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

tv_auth_session_setC

Persist TradingView session cookie for authenticated tv_auth_* MCP tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
cookieNo
sourceNomanual
sessionidNo
sessionid_signNo

TDQS

C2.8/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 says 'persist' and does not disclose whether the call overwrites an existing session, validates inputs, or has side effects such as clearing previous auth state.

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 sentence with an active verb and no filler. The core message is front-loaded and every word earns its place.

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 no annotations, no output schema, and four undocumented parameters, the description is too sparse for an agent to invoke correctly without additional external knowledge. It does not clarify parameter relationships, defaults, or expected outcomes.

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 for the undocumented parameters. It only generically maps to 'cookie' and leaves source, sessionid, and sessionid_sign entirely unexplained, leaving the agent uncertain about what values to pass.

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 names the action (persist), the resource (TradingView session cookie), and the audience (authenticated tv_auth_* tools), which distinguishes it from siblings like tv_auth_session_start or tv_auth_session_clear. It is clear about the core operation, though it does not enumerate the exact session fields being stored.

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 choose this tool over the many tv_auth_* siblings such as tv_auth_session_start, tv_auth_session_status, or tv_auth_session_clear. The description implies a persistence use case but does not state prerequisites, ordering, or alternatives.

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

tv_auth_session_startA

Open TradingView login page in browser and show session setup instructions for authenticated MCP usage.

ParametersJSON Schema
NameRequiredDescriptionDefault
open_browserNo

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of disclosing behavior. It does disclose the immediate action—opening a browser and showing instructions—and signals an authentication requirement. However, it does not mention potential side effects such as stored session state or what happens when open_browser is false.

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. It communicates the primary action and purpose efficiently.

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-boolean-parameter setup tool, the description is mostly adequate. The main gaps are the undocumented open_browser parameter and the lack of explicit guidance on side effects or alternatives, leaving some uncertainty for an agent deciding whether this is the right entry point.

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 never explains the open_browser parameter. The phrase 'in browser' hints at the default behavior, but an agent cannot infer what setting open_browser to false does or how the parameter affects the flow.

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 specific verb and resource: 'Open TradingView login page in browser and show session setup instructions.' It clearly distinguishes this tool from sibling session-management tools like tv_auth_session_status or tv_auth_session_clear by describing an interactive setup action.

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 phrase 'for authenticated MCP usage' gives context and implies this is the manual authentication setup step. However, it does not explicitly compare to alternatives like tv_auth_session_login_auto or tv_auth_session_set, so the agent must infer when to prefer this tool.

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

tv_auth_session_statusA

Show saved TradingView authenticated session status used by tv_auth_* tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full disclosure burden. 'Show' signals a read-only operation, and 'saved session' hints that it inspects persisted credentials rather than performing live authentication. However, it does not disclose what happens without a saved session, whether it makes network calls, or what the returned status looks like.

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 sentence with no filler. The verb, resource, and tool family are all front-loaded, and every word contributes to selecting and invoking the tool.

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 zero-parameter status tool, this is mostly complete: it names the subject, the operation, and the relevant tool family, and there is no invocation syntax to explain. It is slightly thin on return semantics—what 'status' actually contains—and has no annotation safety context, but the low complexity keeps this gap modest.

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 tool has zero parameters and an empty schema, so there is nothing for the description to document. Baseline 4 applies; the description adds useful context by identifying exactly whose session status this reports, which is all the semantic enrichment needed here.

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 uses a specific verb ('Show') and a specific resource ('saved TradingView authenticated session status'), and ties the tool to the tv_auth_* family. This clearly distinguishes it from the many session-mutation siblings like tv_auth_session_start, tv_auth_session_clear, and the generic status tools in the sibling list.

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 phrase 'used by tv_auth_* tools' implies this is the status check to consult before relying on those tools, but there is no explicit when-to-use guidance or mention of alternatives such as data_source_status or avanza_sessions. The usage context is present but only implied.

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

tv_auth_symbol_analyticsB

Fetch TradingView symbol analytics in authenticated mode (inherits account entitlements from supplied TradingView cookie/session).

ParametersJSON Schema
NameRequiredDescriptionDefault
cookieNo
marketNoamerica
symbolYes
exchangeNoNASDAQ
sessionidNo
sessionid_signNo

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It usefully discloses that authentication is inherited from a supplied TradingView cookie/session, which is important behavioral context. However, it does not state whether the operation is read-only, what happens when credentials are missing or invalid, or any rate-limit/session requirements.

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, tightly scoped sentence with no filler. It front-loads the primary action and adds the key auth context parenthetically, which is an efficient structure for an agent to parse.

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?

There is no output schema and no annotations, so the description must provide more operational completeness. It does not explain what 'analytics' includes, whether cookie or session parameters are required in practice despite being optional in the schema, what defaults like market='america' and exchange='NASDAQ' imply, or how failures manifest. This is not enough for reliable tool selection and invocation.

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 for six undocumented parameters. It only alludes to cookie/session inputs and gives no explanation of symbol, market, exchange, or how the auth parameters relate to each other. This leaves an agent unable to confidently construct correct arguments.

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 action ('Fetch TradingView symbol analytics') and the key differentiator ('authenticated mode'), which helps distinguish it from the unauthenticated tv_scrape_symbol_analytics sibling. However, it does not explicitly distinguish it from tv_auth_symbol_full or other TradingView auth siblings, so it falls short of full differentiation.

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 description gives clear context: use this when a TradingView cookie/session is available and account entitlements should be inherited. It does not explicitly state when not to use it or name alternatives, but the authenticated-mode framing strongly implies the appropriate context relative to the unauthenticated scrape siblings.

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

tv_auth_symbol_fullB

Fetch rich TradingView symbol payload in authenticated mode (scanner analytics + technical labels + profile metadata + entitlement context).

ParametersJSON Schema
NameRequiredDescriptionDefault
cookieNo
marketNoamerica
symbolYes
exchangeNoNASDAQ
sessionidNo
sessionid_signNo

TDQS

B3.1/5.0
Behavior3/5

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

There are no annotations, so the description carries the full burden. It discloses that this is a read-style fetch and lists what kinds of data are included, which adds useful behavioral context. However, it does not explain whether a prior session login is required, what happens on invalid credentials or missing entitlements, or how the response is structured.

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 with a parenthetical list of payload categories. It is compact and avoids filler, though the parenthetical list is slightly dense and could be split for readability.

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 six parameters, no output schema, and no annotations, the description leaves important gaps: it does not explain authentication prerequisites, how parameters relate to the 'authenticated mode', how the returned payload is organized, or what distinguishes this from tv_scrape_symbol_full. The listed content categories are helpful but not sufficient for reliable invocation.

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 for six undocumented parameters. It adds only a weak contextual hint that cookie/sessionid/sessionid_sign relate to 'authenticated mode', and symbol is implied by 'symbol payload'. It provides no meaningful detail about market, exchange, cookie, sessionid, or sessionid_sign semantics beyond their names.

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 states a specific action ('Fetch rich TradingView symbol payload') and enumerates the payload contents: scanner analytics, technical labels, profile metadata, and entitlement context. It is clear about what the tool returns but does not explicitly contrast it with siblings like tv_scrape_symbol_full or tv_auth_symbol_analytics, leaving some differentiation to inference from the name.

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 phrase 'in authenticated mode' implies this tool should be used when an authenticated TradingView session is available, but the description does not explicitly say when to choose this over tv_scrape_symbol_full, tv_auth_symbol_analytics, or tv_auth_symbol_analytics. Usage context is implied rather than stated with clear conditions or alternatives.

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

tv_auth_watchlistB

Best-effort TradingView watchlist monitor in authenticated mode (cookie/session required for private list context).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cookieNo
marketNoamerica
exchangeNoNASDAQ
sessionidNo
sessionid_signNo
reference_symbolNoAAPL

TDQS

B3.3/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 convey that the operation is best-effort and requires cookie/session credentials for private data. However, it does not clarify whether the operation is read-only, what happens on missing or invalid credentials, or what the returned data represents.

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 focused sentence with no redundant phrasing; 'best-effort' and the auth requirement are front-loaded. It is concise, though the brevity comes at the cost of missing parameter detail rather than being deliberately minimal in the right places.

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?

This tool has 7 optional parameters and no output schema, so the description needs to explain what the watchlist monitor returns and how the parameters shape it. It covers only the auth requirement and omits output, selector semantics, and failure behavior, leaving a substantial gap.

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%, yet the description only vaguely alludes to cookie/session parameters. It provides no meaning for limit, market, exchange, or reference_symbol, so an agent cannot determine how to set or combine these parameters from the description.

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 TradingView watchlist monitor and specifies the authenticated mode, with 'best-effort' hinting at behavior. It is clear enough about the tool's domain, but it does not explicitly contrast with siblings such as tv_auth_custom_lists, so full differentiation is left to inference.

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 parenthetical 'cookie/session required for private list context' provides clear guidance on when authentication inputs are needed. It does not name alternative tools or state when another endpoint should be preferred, but the context is specific enough for a basic selection decision.

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

tv_preopen_batch_snapshotA

Return TradingView pre-open snapshots for a symbol list with per-symbol error isolation.

ParametersJSON Schema
NameRequiredDescriptionDefault
cookieNo
marketNoamerica
compactNo
symbolsYes
exchangeNoNASDAQ
sessionidNo
authenticatedNo
sessionid_signNo
max_concurrencyNo

TDQS

A3.5/5.0
Behavior3/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 it does disclose one genuinely non-obvious behavioral trait: per-symbol error isolation, meaning one symbol's failure won't abort the whole batch. However, it omits other significant behaviors such as authentication requirements (cookie, sessionid, sessionid_sign, authenticated parameters imply session dependency) and the bounded concurrency behavior (max_concurrency).

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 13-word sentence with zero filler. The primary purpose is front-loaded ('Return TradingView pre-open snapshots for a symbol list') and the distinguishing behavioral trait ('per-symbol error isolation') comes second. Every word earns its place.

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 9-parameter tool with zero schema descriptions, no annotations, and no output schema, the description carries a heavy burden and covers only the core purpose. Missing context includes auth/session prerequisites, the meaning of market/exchange/compact, return format, and the boundary against the singular tv_preopen_symbol_snapshot sibling.

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, but it only adds meaning to one parameter: 'symbol list' maps to the `symbols` array. The remaining eight parameters (cookie, market, compact, exchange, sessionid, authenticated, sessionid_sign, max_concurrency) are left entirely unexplained in both the schema and the description.

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 specific verb ('Return'), a concrete resource ('TradingView pre-open snapshots'), and a scope ('for a symbol list'). It clearly distinguishes itself from the singular sibling tv_preopen_symbol_snapshot, and 'per-symbol error isolation' adds a distinctive batch trait no other sibling claims.

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 phrasing 'for a symbol list' implies the intended use case (multiple symbols in one call), and 'per-symbol error isolation' implies a benefit over single-symbol calls. However, there is no explicit when-to-use/when-not-to-use guidance or naming of alternatives such as tv_preopen_symbol_snapshot for single symbols or avanza_tv_preopen_portfolio_bundle.

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

tv_preopen_symbol_snapshotB

Return a compact TradingView pre-open/extended-hours review snapshot for one symbol.

ParametersJSON Schema
NameRequiredDescriptionDefault
cookieNo
marketNoamerica
symbolYes
exchangeNoNASDAQ
sessionidNo
authenticatedNo
sessionid_signNo

TDQS

B3.1/5.0
Behavior2/5

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

With zero annotations, the description carries the full behavioral burden, but it only discloses that the result is 'compact' (a summarized response). It is silent on the clear auth expectations hinted at by the cookie/sessionid/sessionid_sign/authenticated parameters, on rate-limit or scraping-failure risks of a TradingView data pull, and on the return shape. This is a significant disclosure gap for a tool with no annotation safety profile.

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 12-word sentence that is front-loaded with the verb and includes zero filler. Every token earns its place: source (TradingView), data scope (pre-open/extended-hours), content type (review snapshot), size (compact), and granularity (one symbol).

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?

Despite its low complexity of a single required parameter, the tool has no output schema, no annotations, and several auth-related optional parameters whose roles are obscure. The description is complete enough to initiate a call but not complete enough for an agent to know whether a session must be established first, what the snapshot contains, or how it differs from tv_preopen_batch_snapshot and tv_auth_symbol_full. A cross-reference to those siblings is missing.

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

Parameters1/5

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

Schema description coverage is 0% across 7 undocumented parameters, so the description must compensate — and it barely does. It only loosely maps 'symbol' (one symbol) and the broader pre-open context to market/session, leaving cookie, exchange, market, authenticated, sessionid, and sessionid_sign completely unexplained. An agent cannot know that session/auth fields likely must be populated from a tv_auth_session_* call.

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 uses a specific verb ('Return'), a precise resource ('compact TradingView pre-open/extended-hours review snapshot'), and a clear scope ('for one symbol'). The qualifiers 'compact' and 'pre-open/extended-hours' plus 'one symbol' differentiate it from siblings like tv_preopen_batch_snapshot and tv_auth_symbol_full without needing to open their schemas.

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?

Usage context is only implied by the phrasing 'compact... for one symbol' — an agent can infer it is for a quick single-symbol pre-market check rather than a batch or full export. However, it never explicitly names alternatives like tv_preopen_batch_snapshot, nor gives when-to-use / when-not-to-use conditions, so the routing decision is left to inference.

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

tv_scrape_heatmapC

Fetch TradingView market heatmap rows (top movers) using free scanner data.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
marketNoamerica
sectorNo
sort_byNochange
industryNo
exchangesNo
min_priceNo
min_volumeNo
exclude_otcNo
min_market_capNo
include_premarketNo

TDQS

C2.8/5.0
Behavior2/5

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

Annotations are absent, so the description carries the full burden of behavioral disclosure. It reveals only that the tool relies on 'free scanner data,' implying no paid auth, but says nothing about data freshness, rate limits, endpoint stability (notable given 'scrape' in the name), or whether results are real-time, delayed, or snapshot-based.

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?

One tightly worded sentence with zero filler; the verb and resource are front-loaded and 'using free scanner data' earns its place as a method qualifier. The brevity causes under-specification, but that deficiency is more appropriately penalized in other dimensions.

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 11 optional parameters, zero schema descriptions, no annotations, and no output schema, a single sentence is insufficient. The agent is left without valid value sets for market or sort_by, with no sense of the response shape, and with no information about data characteristics such as real-time vs. delayed — all of which matter for a market-movers 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?

Schema description coverage is 0% across 11 parameters, so the description must compensate but barely does. The phrase '(top movers)' loosely frames the default sort_by='change' and the heatmap concept, yet no parameter's valid values are hinted at — market, sector, sort_by, exchanges, and the numeric filters remain entirely unexplained.

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 states a specific verb ('Fetch'), a specific resource ('TradingView market heatmap rows'), and clarifies the row semantics with '(top movers)' while identifying the data source as 'free scanner data.' It is implicitly distinguished from symbol-level siblings like tv_scrape_symbol_full and tv_preopen_batch_snapshot by being market-wide, though it does not explicitly name a sibling it is not.

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. The sibling list includes avanza_market_movers (also a 'market movers' tool) and several TradingView symbol-level scrape tools, yet the description never states when the heatmap view is preferable or which use cases it is not suited for, leaving routing to inference from the tool name alone.

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

tv_scrape_symbol_analyticsC

Fetch TradingView symbol analytics and technical recommendation barometers from public scanner data.

ParametersJSON Schema
NameRequiredDescriptionDefault
marketNoamerica
symbolYes
exchangeNoNASDAQ

TDQS

C2.8/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 hints at 'public' data access, but discloses nothing about scraping behavior — rate limits, blocking risk, data freshness, whether an existing auth session is required or ignored, or what the returned 'barometer' structure looks like. For a scrape-style tool, these are material traits an agent should know before invoking it.

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 14-word sentence with zero filler. The verb and primary resource are front-loaded, and every word contributes meaning. This is efficient writing, even though the brevity leaves content gaps scored elsewhere.

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?

Moderate complexity (3 params, no output schema, no annotations) places a heavy burden on the description, which it does not meet. It names the data category returned but omits output format, parameter interaction, and selection context relative to the auth-based sibling. An agent has enough to attempt a call but not enough to reliably interpret results or choose correctly among siblings.

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 compensates for none of the three parameters. 'symbol' is inferable from the tool name, but 'market' (default 'america') and 'exchange' (default 'NASDAQ') are completely unexplained — an agent cannot tell whether exchange overrides market, how the two interact, or what valid values exist. The description adds no parameter meaning beyond the raw schema.

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 states a specific verb ('Fetch'), a concrete resource ('TradingView symbol analytics and technical recommendation barometers'), and a source ('public scanner data'). The phrase 'public scanner data' loosely distinguishes it from the auth-based sibling tv_auth_symbol_analytics, though it does not explicitly name any sibling it is not.

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 given on when to use this tool versus the closely related tv_auth_symbol_analytics or tv_scrape_symbol_full. The phrase 'public scanner data' mildly implies an unauthenticated path, but there is no explicit 'use this when...' or 'use X instead when...' guidance. An agent must infer the selection criteria from the tool name alone.

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

tv_scrape_symbol_fullC

Fetch rich TradingView symbol payload (scanner analytics + technical labels + symbol profile metadata) in LLM-friendly JSON.

ParametersJSON Schema
NameRequiredDescriptionDefault
marketNoamerica
symbolYes
exchangeNoNASDAQ

TDQS

C2.6/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 mentions the output is 'LLM-friendly JSON' and lists payload contents, but it does not disclose whether authentication is required, whether it makes live network calls, rate-limit implications, failure behavior, or data freshness. The 'scrape' verb hints at external fetching but not the consequences.

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 with no wasted words. The main verb and resource appear immediately, followed by a parenthetical detail list. The phrase 'LLM-friendly JSON' is slightly vague, but overall the structure is clean and efficient.

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?

There is no output schema, no annotations, and no explanation of parameters or usage context. The description gives a high-level summary of the payload but omits the operational details an agent needs to correctly invoke the tool and interpret results, especially given the large sibling family that overlaps in purpose.

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

Parameters1/5

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

Schema description coverage is 0%, and the description says nothing about the three parameters: symbol, market, or exchange. It does not explain the required symbol format, the meaning of market defaults, or how exchange interacts with market. The agent must infer all parameter semantics from bare schema names.

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 uses a specific verb ('Fetch') and names the resource ('TradingView symbol payload'), enumerating its components: scanner analytics, technical labels, and symbol profile metadata. This differentiates it from the sibling tv_scrape_symbol_analytics, though it does not explicitly name that alternative.

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 given about when to use this tool versus the many related siblings such as tv_scrape_symbol_analytics, tv_auth_symbol_full, or tv_preopen_symbol_snapshot. The word 'full' implies a broader fetch, but the description never states a selection criterion or when not to use it.

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

zacks_scrape_symbolB

Fetch Zacks rank via quote-feed and scrape symbol/report pages for Earnings ESP plus visible analysis text (best effort; HTML may be blocked without valid browser session/cookies).

ParametersJSON Schema
NameRequiredDescriptionDefault
cookieNo
symbolYes

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 behavioral disclosure burden. It usefully discloses that the scrape is 'best effort' and that HTML may be blocked without a valid browser session/cookies. However, it does not describe failure behavior, whether the cookie parameter is required, network implications, or what the tool returns on partial success.

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 main purpose and a key caveat without padding. It is slightly dense because of the parenthetical 'best effort' clause and the mention of 'quote-feed', but every element contributes useful information.

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 scraping tool with no annotations and no output schema, the description leaves significant gaps: it does not explain the return value shape, how to interpret failure, whether results include raw HTML or parsed data, or how the optional cookie interacts with the scraping flow. The provided caveat helps but is not enough for confident autonomous invocation.

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. 'symbol' is inferable from the tool name, and 'cookie' is only indirectly referenced via 'valid browser session/cookies'. The description does not clearly explain how the cookie parameter should be supplied, its format, or whether it is required for different use cases.

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 names a specific action ('Fetch Zacks rank', 'scrape symbol/report pages') and concrete data targets ('Earnings ESP', 'analysis text'). It clearly identifies the resource (Zacks) and distinguishes it from the many non-Zacks sibling tools without needing to reference them.

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 makes the tool's context clear: it is for retrieving Zacks rank, Earnings ESP, and visible analysis text. However, it does not explicitly state when to use this tool over other data-source tools, nor does it mention when not to use it or what alternatives exist.

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. 82 tool updatesv0.2.42
    • First observedavanza_account_cost_attribution
    • First observedavanza_account_performance
    • First observedavanza_accounts
    • First observedavanza_capabilities
    • First observedavanza_fee_estimate
    • First observedavanza_frozen_holdings_attribution
    • First observedavanza_index_constituents
    • First observedavanza_instrument_chart
    • First observedavanza_instrument_open_orders
    • First observedavanza_instrument_state
    • First observedavanza_instrument_stoplosses
    • First observedavanza_instrument_transactions
    • First observedavanza_live_session_authorize
    • First observedavanza_live_session_revoke
    • First observedavanza_live_snapshot
    • First observedavanza_market_movers
    • First observedavanza_ongoing_orders
    • First observedavanza_open_order_cancel
    • First observedavanza_open_order_edit
    • First observedavanza_open_orders
    • First observedavanza_open_orders_raw
    • First observedavanza_order_delete
    • First observedavanza_order_edit
    • First observedavanza_order_set
    • First observedavanza_orderbook_quotes
    • First observedavanza_paper_cancel
    • First observedavanza_paper_order_exit
    • First observedavanza_paper_order_set
    • First observedavanza_paper_orders
    • First observedavanza_paper_positions
    • First observedavanza_paper_risk_state
    • First observedavanza_paper_session_summary
    • First observedavanza_paper_stoploss_set
    • First observedavanza_paper_trades
    • First observedavanza_portfolio
    • First observedavanza_position
    • First observedavanza_position_strategy_audit
    • First observedavanza_position_strategy_register_batch
    • First observedavanza_protection_gaps
    • First observedavanza_realtime_quotes
    • First observedavanza_recent_fills_needing_protection
    • First observedavanza_recovery_reachability
    • First observedavanza_scalp_watchlist_get
    • First observedavanza_scalp_watchlist_set
    • First observedavanza_search_stock
    • First observedavanza_select_account
    • First observedavanza_select_session
    • First observedavanza_sessions
    • First observedavanza_sold_today_buyback_state
    • First observedavanza_status
    • First observedavanza_stoploss_delete
    • First observedavanza_stoploss_edit
    • First observedavanza_stoploss_set
    • First observedavanza_stoploss_set_batch
    • First observedavanza_stoploss_strategy_audit
    • First observedavanza_stoploss_strategy_register_batch
    • First observedavanza_stoplosses
    • First observedavanza_transactions
    • First observedavanza_tv_preopen_portfolio_bundle
    • First observedavanza_verify_no_raw_failed_orders
    • First observedavanza_verify_protection
    • First observeddata_source_status
    • First observedfmp_analyst_recommendations
    • First observedfred_series
    • First observedpolygon_analyst_insights
    • First observedsec_filings_recent
    • First observedsignal_context_bundle
    • First observedtv_auth_custom_lists
    • First observedtv_auth_session_clear
    • First observedtv_auth_session_login_auto
    • First observedtv_auth_session_set
    • First observedtv_auth_session_start
    • First observedtv_auth_session_status
    • First observedtv_auth_symbol_analytics
    • First observedtv_auth_symbol_full
    • First observedtv_auth_watchlist
    • First observedtv_preopen_batch_snapshot
    • First observedtv_preopen_symbol_snapshot
    • First observedtv_scrape_heatmap
    • First observedtv_scrape_symbol_analytics
    • First observedtv_scrape_symbol_full
    • First observedzacks_scrape_symbol

TDQS

C2.8/5.0

Scored across 82 tools

Disambiguation2/5

Many tools overlap in scope: avanza_status, avanza_capabilities, and data_source_status all report state, while multiple order and audit tools have near-identical names such as avanza_open_orders vs avanza_ongoing_orders and avanza_open_order_cancel vs avanza_order_delete. The descriptions help, but an agent would frequently struggle to pick the correct tool.

Naming Consistency3/5

The server broadly uses avanza_* and tv_* prefixes with readable verb_noun names, but consistency breaks down with aliases like avanza_open_order_cancel vs avanza_order_delete, adjective-noun names like avanza_live_snapshot, and mixed provider prefixes like zacks_scrape_symbol vs fmp_analyst_recommendations.

Tool Count1/5

82 tools is far beyond the typical well-scoped MCP server and includes many aliases, per-instrument read variants, and overlapping audit helpers. Even with multiple integrations, the tool surface feels inflated rather than carefully pruned.

Completeness4/5

Core workflows are well covered: live and paper order lifecycle, stop-loss management, portfolio/position reads, quotes, transactions, account selection, multi-source market data, and strategy audits. Minor gaps exist, such as no dedicated single-order status fetch or paper stop-loss edit tool, but the main strategy-protection workflow has no obvious dead ends.

Maintenance

ActivityActive
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    MCP server for Angel One SmartAPI. Lets AI clients trade Indian stocks, manage orders and GTT rules, read holdings/positions/funds, fetch quotes/candles/OI/Greeks, and estimate margin/brokerage with TOTP login and built-in safety guards.
    32
    33
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    MCP server for the tastytrade brokerage API, providing tools for account management, market data, and order execution.
    18
    -
  • A
    license
    A
    quality
    B
    maintenance
    MCP server for the Trading 212 public API, enabling account, portfolio, order, pie, and history access with read tools always available and trading tools opt-in.
    13
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for Tradernet/Freedom24 trading platform API, enabling portfolio management, order placement, quotes, ticker search, and price alerts via AI assistants.
    49
    MIT