Skip to main content
Glama

Server Details

Semantic search over Nordic filings, press releases, macro data and electricity prices.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
AIDataNordic/nordic_financial_mcp
GitHub Stars
0
Server Listing
Nordic Financial MCP

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.9/5 across 7 of 7 tools scored.

Server CoherenceA
Disambiguation5/5

Each tool has a clearly distinct purpose: search_filings for raw chunks, company_research for user-defined multi-query raw results, analyze_company for synthesized answers, get_company_info for registry data, get_current_power_price for power prices, parse_pdf_to_text for full documents, and ping for health check. Overlaps are explicitly addressed in descriptions.

Naming Consistency4/5

Most tools follow a consistent verb_noun snake_case pattern (analyze_company, get_company_info, etc.). The only outlier is 'ping', which is a common exception for health checks but breaks the pattern. Overall, naming is predictable.

Tool Count5/5

With 7 tools, the server is well-scoped for Nordic financial data. Each tool addresses a specific need without redundancy, covering filing search, company info, power prices, PDF parsing, and AI analysis.

Completeness4/5

The tool surface covers the main use cases: searching filings, retrieving registry data, getting power prices, reading PDFs, and conducting AI analysis. Minor gaps like historical power prices are handled by search_filings with macro_summary. A dedicated tool for historical power prices could be added, but the current set is fairly complete.

Available Tools

7 tools
analyze_companyA
Read-only
Inspect

AI-powered company analysis using semantic search over Nordic financial data.

Orchestrates multiple searches internally and returns a synthesized narrative answer with source citations. Covers annual reports, quarterly reports, press releases and macroeconomic context for Nordic listed companies.

Use this when you want a synthesized answer rather than raw search chunks. For raw data access, use search_filings or company_research instead. For a full due diligence report with AI-planned sections, use the Alfred MCP server: alfred.aidatanorge.no/mcp

Args: company: Company name or ticker question: What you want to know about the company model: 'haiku' (default) or 'sonnet'

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoModel: 'haiku' (default, fast, ~$0.07/call) or 'sonnet' (more capable, ~$0.24/call)haiku
companyYesCompany name or ticker, e.g. 'Equinor' or 'EQNR'
questionYesQuestion to answer, e.g. 'How did margins develop 2022-2024?' or 'What are the main risk factors?'

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes
Behavior5/5

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

Annotations declare readOnlyHint=true and openWorldHint=false. The description adds that it orchestrates multiple searches internally and returns a synthesized narrative with source citations. It also details model options and costs. No contradictions; description enriches what annotations already provide.

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

Conciseness5/5

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

The description is concise and well-structured: a one-sentence summary, a sentence about internal orchestration, usage guidance, and a clear parameter list. Every sentence adds value, with no redundancy.

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

Completeness5/5

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

Given the tool's complexity (AI-powered analysis with internal orchestration), the description is complete: it covers scope (Nordic financial data, various report types), behavior (synthesized narrative with citations), model options, and alternatives. Output schema exists, so return values need no explanation.

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 coverage is 100%, so the description doesn't need much, but it adds value by providing examples for company ('Equinor' or 'EQNR') and question ('How did margins develop 2022-2024?') and cost context for model parameter. This goes beyond the schema's basic descriptions.

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 it performs AI-powered company analysis using semantic search over Nordic financial data, returning synthesized answers with citations. It specifies the verb (analyze), resource (company), and domain (Nordic financial data), and distinguishes itself from sibling tools like search_filings and company_research.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use this tool ('when you want a synthesized answer rather than raw search chunks') and when not to use it, providing clear alternatives (search_filings, company_research). Also suggests an external server for full due diligence reports. This is exemplary guidance.

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

company_researchA
Read-only
Inspect

Run multiple targeted searches and return raw results grouped by section.

The caller defines all sections and queries — this tool does not decide what is relevant. Before calling, reason about which topics and data sources matter for this specific company: financial metrics, risk factors, sector-specific macro drivers (e.g. freight rates for shipping, power prices for aluminium smelters), recent press releases, peer context, etc. Formulate one query per section.

Each query is run independently as a full hybrid search (dense + sparse + rerank). Results are raw chunks — the caller is responsible for synthesis.

For a fully orchestrated due diligence report (AI-planned sections, synthesized narrative), use the Alfred MCP server instead: alfred.aidatanorge.no/mcp

IMPORTANT — use 'ticker' on company-specific sections to avoid false positives. Without a ticker filter, documents that merely mention the company (e.g. as a customer or competitor) can rank above actual filings from that company. Omit 'ticker' only for sections where cross-company results are intentional, such as sector macro context or peer comparisons.

Args: company: Company name, used for metadata only (not a filter). sections: Up to 8 sections. Example: [ {"name": "financials", "query": "Equinor revenue EBITDA operating profit 2024", "ticker": "EQNR"}, {"name": "risk", "query": "Equinor climate regulatory risk stranded assets", "ticker": "EQNR"}, {"name": "macro", "query": "Brent crude oil price energy sector Norway 2024", "limit": 3}, {"name": "news", "query": "Equinor press release dividend acquisition 2024", "ticker": "EQNR"} ]

Returns: Dict with 'company', 'generated_at', and 'sections' — one entry per requested section with its name and results (same format as search_filings). Sections with no results return an empty list.

ParametersJSON Schema
NameRequiredDescriptionDefault
companyYesCompany name to research, e.g. 'Equinor', 'Norsk Hydro', 'Aker BP'
sectionsYesList of section dicts. Each must have 'name' (str) and 'query' (str). Optional: 'ticker' (str, filters results to that company), 'limit' (int, default 5, max 10). Maximum 8 sections.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Description explains each query runs independently as hybrid search, results are raw chunks, and caller must synthesize. This adds detail beyond readOnlyHint and openWorldHint annotations, though annotations already cover basic safety.

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?

Well-structured with a clear intro, guidelines, and parameter explanations. Slightly verbose but each sentence adds value; front-loaded with purpose.

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

Completeness5/5

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

Covers all aspects: purpose, usage, parameters, return schema, edge cases (empty sections), and distinguishes from siblings. Output schema exists and is referenced appropriately.

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

Parameters5/5

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

Schema covers 100% of parameters. Description adds critical usage guidance: ticker filter reasoning, limit defaults/max, max sections, and concrete examples with 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 explicitly states 'Run multiple targeted searches and return raw results grouped by section.' It contrasts with sibling 'analyze_company' and Alfred MCP server for orchestrated reports, making the tool's unique role clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use (caller defines sections) and when-not-to-use (for orchestrated report, use Alfred). Advises on ticker usage to avoid false positives and when to omit, plus example queries.

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

get_company_infoA
Read-only
Inspect

Look up a company in the official business registry for Norway, Denmark or Finland.

Use this to retrieve authoritative registration data (legal name, status, address) for a known organisation number. Do not use for Sweden (SE) — use search_filings with country='SE' instead, as Bolagsverket integration is not yet available. Do not use to discover tickers or ISIN codes — use search_filings for that.

Args: identifier: Organisation/business/CVR number. Format varies by country: NO: 9-digit organisation number, e.g. 923609016 (Equinor) DK: 8-digit CVR number, e.g. 22756214 (Maersk) FI: Business ID with hyphen, e.g. 0112038-9 (Nokia) country: Two-letter country code: 'NO' (default), 'DK', or 'FI'.

Returns: Dict with company name, status and registered business address. Returns {'error': ''} if the company is not found, the identifier format is invalid, or the upstream registry API is unavailable.

ParametersJSON Schema
NameRequiredDescriptionDefault
countryNoTwo-letter country code: NO (default), DK, or FINO
identifierYesOrganisation number (NO: 9 digits, DK: 8 digits CVR, FI: business ID with hyphen)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, indicating a safe read operation and possibility of extra output fields. The description adds context by describing the return structure (dictionary with company name, status, address) and error handling ('Returns {'error': '<message>'} if not found...'). This provides behavioral detail beyond annotations, though the openWorldHint is not mentioned. There is no contradiction.

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 well-structured: a concise summary sentence, usage guidelines, parameter details with examples, and return value description. Every sentence adds value without redundancy. It is appropriately sized for the tool's complexity.

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

Completeness5/5

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

Given the tool's complexity (multi-country, format variations) and the presence of annotations and output schema, the description covers all necessary aspects: purpose, usage boundaries, parameter formats, and return behavior. It is complete and enables correct tool selection and invocation.

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

Parameters5/5

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

Schema coverage is 100%, with descriptions for both parameters. The description goes further by providing detailed format examples per country (e.g., 'NO: 9-digit organisation number, e.g. 923609016 (Equinor)'), which adds significant value beyond the schema alone. These examples help the agent understand correct input formats.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Look up a company in the official business registry for Norway, Denmark or Finland.' It uses a specific verb ('Look up') and resource ('company in the official business registry'). It also explicitly distinguishes itself from sibling tools by noting not to use for Sweden or for tickers/ISINs, directing to search_filings instead.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use: 'Use this to retrieve authoritative registration data (legal name, status, address) for a known organisation number.' It also clearly states when NOT to use: 'Do not use for Sweden (SE)...' and 'Do not use to discover tickers or ISIN codes.' It suggests the alternative tool 'search_filings' for those cases.

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

get_current_power_priceA
Read-only
Inspect

Fetch today's hourly day-ahead electricity spot prices for a Nordic bidding zone.

Use this for current and near-term (today/tomorrow) price queries. Do not use for historical price analysis — use search_filings with report_type='macro_summary' and a date reference in the query for that purpose. Tomorrow's prices are published by NordPool around 13:00 CET; requests before that time will return "not yet available" for the tomorrow field.

All zones return prices in EUR/kWh (NordPool day-ahead, native currency). Norwegian zones (NO1–NO5) use hvakosterstrommen.no; all other zones use ENTSO-E.

Args: zone: Bidding zone code. Options: NO1 (East/Oslo), NO2 (Southwest), NO3 (Central/Trondheim), NO4 (North), NO5 (West/Bergen), SE1–SE4, DK1, DK2, FI. include_tomorrow: Set to True to also fetch tomorrow's hourly prices if already published (default False).

Returns: Dict containing zone, date, current_hour_utc, current price, and a 'today' summary with min/max/avg and the full hourly list. Includes a 'tomorrow' key if include_tomorrow=True. Returns {'error': ''} if price data is unavailable for the requested zone or date.

ParametersJSON Schema
NameRequiredDescriptionDefault
zoneNoBidding zone: NO1–NO5, SE1–SE4, DK1, DK2, or FINO1
include_tomorrowNoAlso fetch tomorrow's prices if available (published after 13:00 CET)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Discloses key behaviors beyond annotations: return format with error handling, source differences between Norwegian zones and others, and timing of price publication. Annotations already indicate readOnlyHint=true, but description adds substantial context.

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

Conciseness5/5

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

Well-structured with clear paragraphs and bullet points for args and returns. Every sentence adds value without redundancy.

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

Completeness5/5

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

Output schema exists, and description explains return values, error cases, and zone-specific behavior. Provides complete context for agent decision-making.

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 covers both parameters fully (100%). Description adds meaning by listing zone options explicitly and explaining the behavior of include_tomorrow with respect to publication time.

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 clearly states the tool fetches today's hourly day-ahead electricity spot prices for Nordic bidding zones, with specific verb and resource. It distinguishes from sibling tool search_filings for historical analysis.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use (current/near-term) and when not (historical analysis), providing alternative tool and noting timing constraints for tomorrow's prices.

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

parse_pdf_to_textA
Read-only
Inspect

Download a PDF from a URL and extract all text content, page by page.

Use this to read the full text of a specific document — for example, an annual report PDF linked from a search_filings result. Best combined with search_filings: use search_filings to locate the document, then parse_pdf_to_text for the full text. Do not use for PDFs that are already well-represented in the database — search_filings is faster and returns pre-ranked, relevant excerpts. Not suitable for scanned (image-only) PDFs without embedded text; those pages will be returned as "(no extractable text)".

Args: pdf_url: Direct HTTPS URL to the PDF file, e.g. https://example.com/report.pdf. Must be publicly accessible; authentication-protected URLs will fail.

Returns: All text from the PDF with "--- Page N ---" separators between pages. Returns an error string if the download fails, the URL does not point to a valid PDF, or the document exceeds the 60-second download timeout.

ParametersJSON Schema
NameRequiredDescriptionDefault
pdf_urlYesDirect HTTPS URL to the PDF file

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes
Behavior5/5

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

Annotations indicate readOnlyHint=true and openWorldHint=true, and the description adds behavioral details: returns error on download failure, invalid URL, or timeout; indicates '(no extractable text)' for scanned pages. No contradiction with annotations.

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

Conciseness5/5

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

The description is concise and well-structured: clear purpose, usage guidelines, parameter details, and return value. No unnecessary sentences; every part earns its place.

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

Completeness5/5

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

Given a simple parameter set and existing output schema, the description fully covers the tool's behavior, including error cases and limitations. No gaps in context.

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 coverage is 100% with one parameter (pdf_url). The description adds value beyond the schema by specifying the URL must be publicly accessible and that authentication-protected URLs will fail, plus an example format.

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

Purpose5/5

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

The description clearly states the tool's purpose: downloading a PDF from a URL and extracting text page by page. It uses specific verbs (download, extract) and defines the resource (PDF from URL), distinguishing it from sibling tools like search_filings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance: when to use (reading full text of a specific document, e.g., from search_filings), when not to use (PDFs well-represented in database, image-only PDFs), and suggests combining with search_filings.

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

pingA
Read-only
Inspect

Connectivity check that confirms the Nordic MCP server process is responding.

Use this at the start of a session to verify the server is reachable before making other calls. Do not use as a proxy for database health — the server can respond while the Qdrant vector database is temporarily unavailable. To confirm data availability, call search_filings directly.

Returns: A greeting string: "Hello {name}! Nordic MCP server is running."

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoArbitrary label included in the response, e.g. 'healthcheck' or 'agent-1'world

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes
Behavior5/5

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

Adds important behavioral context beyond the readOnlyHint annotation: the server can respond even if Qdrant is unavailable. Also describes the return value 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?

Three short paragraphs, each focused: purpose, usage guidelines, and return value. No unnecessary words.

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

Completeness5/5

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

For a simple ping tool, the description covers all needed aspects: purpose, when to use, parameter semantics, behavioral caveats, and return value.

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 parameter 'name' is already well-described in the schema (100% coverage). The description adds context by linking the parameter to the response string ('included in the response').

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 defines the tool as a 'connectivity check' for the Nordic MCP server, using specific verb and resource. It distinguishes from sibling tools by clarifying it is not a proxy for database health.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use ('at the start of a session'), when not to use (not as proxy for database health), and which alternative to use ('call search_filings directly').

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

search_filingsA
Read-only
Inspect

Search the Nordic financial database for company filings, press releases and macroeconomic summaries.

Use this as the primary tool for any question about Nordic listed companies, markets or macro conditions. Do not use to retrieve a full document — results are chunked text excerpts; use parse_pdf_to_text for the full original document. Do not use for Swedish company registration data — use get_company_info instead.

The database contains ~1 million vectors across four Nordic markets (NO/SE/DK/FI).

COMPANY FILINGS Annual reports (XBRL/ESEF) and quarterly reports from ~1 500 listed companies across Oslo Børs, Nasdaq Stockholm, Nasdaq Helsinki, Nasdaq Copenhagen and First North markets. Covers 2020–present. Strong coverage for NO and SE; growing coverage for DK and FI.

EXCHANGE ANNOUNCEMENTS & PRESS RELEASES Regulatory filings, exchange announcements and press releases from listed companies in NO, SE, DK and FI. Covers 2020–present.

MACROECONOMIC SUMMARIES Quarterly macro summaries covering key indicators per country: Norway (NO): policy rate, FX rates, CPI, house prices, credit growth, electricity price, salmon price, GDP components Sweden (SE): policy rate, house price index, household credit Denmark (DK): policy rate, house price index, household loans, electricity price Finland (FI): house price index, household debt-to-income ratio, electricity price Use report_type='macro_summary' and country='NO'/'SE'/'DK'/'FI' to filter. Use fiscal_year and a quarter reference in your query, e.g. "Norwegian housing market Q1 2024".

Args: query: What you are looking for, e.g. 'net interest margin outlook', 'salmon price Q3', 'dividend policy', 'fleet utilization', 'Norwegian housing market 2024 Q1', 'Swedish policy rate inflation 2023' ticker: Optional — filter by company ticker, e.g. 'SALM', 'EQNR', 'NDA' fiscal_year: Optional — filter by year, e.g. 2024 report_type: Optional — one of: 'annual_report' – Nordic XBRL/ESEF annual reports 'quarterly_report' – Quarterly/interim reports 'press_release' – Exchange announcements and press releases 'macro_summary' – Quarterly macroeconomic summaries sector: Optional — filter by sector: 'seafood' – seafood companies 'energy' – energy / oil & gas 'shipping' – shipping companies country: Optional — filter by country code: 'NO', 'SE', 'DK' or 'FI' limit: Number of results after reranking (default 5, max 20)

Returns: List of relevant text excerpts with metadata, reranked by relevance. Each result includes rerank_score, hybrid_score, vector_score, company, ticker, country, fiscal_year, report_type, period, filing_date and the full text chunk. Returns an empty list if no relevant results are found or if the Qdrant database is temporarily unreachable.

ParametersJSON Schema
NameRequiredDescriptionDefault
fastNoSkip reranking and return results ranked by hybrid score only. Faster but less precise.
limitNoNumber of results to return (1–20)
queryYesNatural language search query, e.g. 'Equinor dividend 2024' or 'Norwegian housing market Q3'
sectorNoFilter by sector, e.g. 'energy', 'financials', 'salmon'
sourceNoFilter by data source, e.g. 'xbrl_esef', 'newsweb', 'mfn_nordics', 'nasdaq_se'
tickerNoFilter by company ticker, e.g. 'EQNR', 'SALM', 'NDA'
countryNoFilter by country: NO, SE, DK, or FI
fiscal_yearNoFilter by fiscal year, e.g. 2024. Use 0 for no filter
report_typeNoFilter by type: annual_report, quarterly_report, press_release, exchange_announcement, macro_summary
max_chunk_indexNoOnly return chunks with chunk_index <= this value. Use 3 to target introductory sections of long documents. Use 0 for no filter.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes
Behavior5/5

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

Annotations declare readOnlyHint=true, and the description adds extensive behavioral context: database size (~1 million vectors, four markets), coverage periods, return format (chunked text excerpts reranked), and edge cases (empty list or Qdrant unreachable). No contradictions.

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?

Well-structured with headings and bullet points. Front-loaded with purpose and usage guidelines. Each section earns its place; no wasted text despite length.

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

Completeness5/5

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

Given 10 parameters (1 required), 100% schema coverage, and presence of an output schema, the description covers all aspects: purpose, usage, parameter details, return format, and edge cases. It is fully complete.

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 coverage is 100%, so baseline is 3. The description's Args section adds meaningful examples and elaborates on parameter usage (e.g., query examples, sector values, report_type options) that go beyond the schema's brief descriptions.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Search the Nordic financial database for company filings, press releases and macroeconomic summaries.' It distinguishes from siblings like get_company_info (for Swedish registration data) and parse_pdf_to_text (for full documents).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use: 'Use this as the primary tool for any question about Nordic listed companies, markets or macro conditions.' Also provides exclusions: 'Do not use to retrieve a full document' and 'Do not use for Swedish company registration data', with alternative tools named.

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

Discussions

No comments yet. Be the first to start the discussion!

Try in Browser

Your Connectors

Sign in to create a connector for this server.