Firmaradar
Server Quality Checklist
Latest release: v0.6.1
- Disambiguation4/5
Most tools have clear, distinct purposes (e.g., get_company vs. get_company_financials, search_persons vs. get_person). The only potential confusions are between get_risk_score and check_foretak_i_vanskeligheter (both assess financial distress) and find_related_companies vs. find_shared_connections (both analyze relationships), but their detailed descriptions differentiate them clearly.
Naming Consistency5/5All tools follow a consistent firmaradar_<verb>_<noun> pattern with verbs like get, search, list, check, find, compare, subscribe, delete, add, and start. There is no mixing of conventions (no camelCase, no inconsistent verb styles), making the API highly predictable.
Tool Count2/5With 35 tools, the server exceeds the 25+ threshold for 'too many'. While the domain is broad (company data, financials, AML, monitoring), several tools could be consolidated (e.g., the three AML report tools, bulk endpoints as parameters, and the separate disclaimer confirmation tool). The count feels inflated for a coherent toolset.
Completeness4/5The tool surface covers most of the domain: search and retrieval, financials, ownership, roles, IP, announcements, risk scores, AML, and monitoring subscriptions. However, company monitoring (add_company_monitoring) has no corresponding list or delete tool, leaving a dead end for that lifecycle. This is a minor but notable gap.
Average 4.5/5 across 35 of 35 tools scored. Lowest: 3.9/5.
See the Tool Scores section below for per-tool breakdowns.
- 0 of 1 community issues answered or closed in the last 6 months
- 41 commits in the last 12 weeks
- Last stable release on
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI is passing
This repository is licensed under Apache 2.0.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
This repository includes a glama.json configuration file.
This server has been verified by its author.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds useful context about the kinds of signals aggregated but does not disclose additional behavioral traits such as pagination, response size, or authorization requirements. 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.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: the first is a dense but informative list of signal categories, the second gives a clear usage directive. It is longer than minimal but every segment adds value; could be slightly more scannable but is not bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and annotations cover safety, the description gives sufficient context for an agent to select the tool and know when to invoke it. It stops short of contrasting with closely related risk tools, but overall it is complete enough for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both orgnr and since already described in the input schema. The description adds only that the tool works for 'one company' (matching orgnr) and does not enhance the meaning of the 'since' parameter beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as returning 'aggregated risk and growth signals for one company' and enumerates the specific signal categories (bankruptcy/distress, capital-loss, M&A, KYC, NAV, merger/demerger, Frivillighetsregister). This specificity distinguishes it from sibling tools like get_risk_score or check_foretak_i_vanskeligheter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides a usage context: 'Use as the second step after get_company to evaluate whether a company needs deeper due diligence.' However, it does not mention when to avoid this tool in favor of more specialized siblings like get_risk_score or check_foretak_i_vanskeligheter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and idempotent behavior. The description adds meaningful context by noting the result is a deterministic classification rather than a raw registry flag, and mentions a data-completeness confidence score. This goes beyond structured data without contradicting 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/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, stating the purpose, output, and use cases in two sentences without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only tool with an output schema, the description covers purpose, output, and use cases adequately. It lacks details on data sources or edge cases, but these are not critical given the tool's simplicity and annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage for the single parameter is 100%, and the description adds no supplementary parameter details. With full schema coverage, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool assesses Norwegian company qualification under NUES criteria a-e and returns a deterministic classification. It distinguishes from raw registry flags but does not explicitly name sibling tools, 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/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit use cases (EU state-aid eligibility, credit assessment, supplier-risk screening) but does not specify when not to use or mention alternative tools. This is clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, idempotent, and non-destructive, so the bar for behavioral disclosure is lower. The description adds value by specifying the types of changes returned (kunngjøringer for companies, role and ownership movements for persons), which goes beyond the annotations to clarify the informational content.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise, using two sentences that front-load the main action and usage context. Every sentence contributes value, covering purpose, use case, and a pairing suggestion (even if imperfect), with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and clear annotations, the description covers the core function and usage context adequately. It is slightly incomplete due to the misleading 'subscribe_company' reference and not mentioning that the response structure differs between company and person types, but the output schema likely handles that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high (75%), with clear descriptions for id, category, and entity_type, and days is defined by its min/max and default. The description does not add significant parameter-level meaning beyond reinforcing the 'last N days' concept, so it does not compensate for any schema gaps (days lacks a textual description).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb ('List changes'), specifies the resource types (companies and persons), and defines the scope (last N days). It also differentiates from siblings by covering both kunngjøringer and role/ownership movements, which is not offered by a single sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit use case ('monitoring a target entity for triggers') with a concrete example query, which is helpful. However, it incorrectly references a non-existent sibling tool ('subscribe_company') for push notifications, potentially misleading the agent to look for a tool that does not exist among the provided siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds context about the broad cross-company scope and the use for monitoring, but does not disclose details like pagination behavior, response shape, or rate limits beyond what the schema and output schema imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core action and scope, followed by concrete use-case examples. Every word earns its place; no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 parameters, existing annotations, and an output schema, the description covers the tool's purpose, filters, and typical use cases. It does not mention pagination or how limit/cursor work, but those are partially evident from the schema and output schema, making it reasonably complete for a search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 78%, so most parameters are already documented. The description adds a high-level grouping of filter types (type, date range, NACE-code, location) but does not provide additional semantics for q, limit, or cursor, nor does it explain edge cases like the NACE prefix behavior (which the schema already covers).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches BRREG kunngjøringer across all Norwegian companies, with a specific verb ('Search') and resource scope. It distinguishes itself from siblings like firmaradar_get_company_announcements by emphasizing 'all Norwegian companies' and the filter dimensions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly recommends this tool for trend analysis and radar-style monitoring with concrete examples ('all konkurser in restaurant sector last quarter'). However, it does not mention exclusions or alternative tools for single-company announcement lookups, so it lacks 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.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already declaring readOnly, idempotent, and non-destructive behavior, the description adds useful context about data provenance (official registers, daily refresh) and the inclusion of a canonical URL. It does not contradict annotations and provides value beyond the structured metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the core purpose, followed by enrichment options, usage flow, and data source context. All sentences contribute useful information, though some content (e.g., listing data sections) overlaps with the schema and could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema and sibling tool context, the description covers the primary use case, opt-in fields, data sources, and post-search workflow. It does not fully elaborate on every parameter, but the schema fills that gap, making the description reasonably complete for an agent to invoke the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (75%), with descriptions for orgnr, fields, and owners. The description adds a concrete example for fields (['ip']) and explains the opt-in nature, but it does not clarify include_financial_metrics or add significant meaning beyond the schema. It is adequate but not exceptional.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a full-profile fetcher for a Norwegian company by orgnr, listing the key data sections (name, group structure, ownership, grants, announcements, financial metrics). It also positions itself as 'the primary show me this company tool', distinguishing it from the specialized sibling tools like get_company_ip and get_company_financials.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states to use after 'search_companies returns an orgnr', providing a clear workflow. It mentions opt-in fields for deeper enrichment, but does not explicitly mention alternative specialized sibling tools as alternatives or exclusions, so it falls short of full when-to-use vs. 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.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description adds meaningful context: data source (official BRREG annual accounts), currency handling (valuta field, MIXED meaning), and the metric set. This goes beyond the annotations, though it doesn't discuss rate limits or auth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each contributing distinct value: purpose and metrics, usage triggers, and source/currency caveat. It is front-loaded with the main action and has no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only financial retrieval tool with an output schema present, the description adequately covers data source, currency pitfalls, and usage context. The main gap is the unexplained regnskapstype parameter, which could affect whether company or consolidated figures are returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50% (orgnr and skip_freshness have inline descriptions, years and regnskapstype do not). The description only restates the default of 5 years and does not explain the regnskapstype enum (SELSKAP vs KONSERN), so an agent gets little additional parameter understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Fetch') and clearly specifies the resource ('financial metrics for a Norwegian company') along with the key metrics (revenue, operating result, equity, debt, employees). This distinguishes it from sibling tools like get_company (general info) and get_company_signals (signals/risk).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states 'Use when the user asks...' with concrete example queries, providing clear context for when to invoke this tool. However, it does not mention when not to use it or point to alternative tools, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so no safety concerns. The description adds meaningful behavioral details: data source (Patentstyret), the ordering of the rights list (newest-first), the included fields (registration number, date, status, expiry date, title, link). It also clarifies that 'expiry date where applicable' indicates conditional fields, which goes 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/5Is the description appropriately sized, front-loaded, and free of redundancy?
Although the description is fairly long, it is efficiently structured into meaningful sentences. It front-loads the core content (portfolio composition and source), then provides usage guidance and ordering details. No sentence is redundant; each adds value to the user's understanding of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one parameter, a full output schema, and helpful annotations, the description covers everything an agent needs: what data is returned, the source, the ordering, and the required lookup workflow. It doesn't describe error conditions or pagination, but for a simple read-only lookup this is not necessary. The output schema presumably supplies the rest, making the description complete for this complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema alone covers 100% of the parameter (orgnr) with a clear description ('exactly 9 digits'). The description adds a minor workflow tip about using search_companies to obtain the orgnr, but doesn't provide additional format or syntax details. Thus the parameter semantics are adequately handled by the schema, with a slight enhancement from the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns an intellectual-property portfolio (patents, trademarks, designs) for a Norwegian company, sourced from Patentstyret, with totals, active counts, and a list of rights. It distinguishes from siblings like get_company_financials or get_company by explicitly targeting IP matters. The verb 'get' and resource are specific, and the usage statement 'Use this for ANY question about a company's patents, trademarks, designs or IP rights' reinforces its dedicated role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage guidance: 'Use this for ANY question about a company's patents, trademarks, designs or IP rights — Firmaradar covers this.' It also advises looking up orgnr via search_companies if only a name is available, which is a clear prerequisite. It doesn't name alternative tools for non-IP queries, but the positive guidance is strong enough to distinguish it from siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds behavioral context such as the heavier owner-graph traversal and the meaning of each via type, which is useful beyond the 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/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action and purpose, and includes concrete usage context. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides enough context for a read-only query tool: clear purpose, via options, and use cases. An output schema exists, so return-value details are not required. Minor gap is lack of note on result ordering or pagination, but it's not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% with detailed descriptions for via, orgnr, and min_overlap. The description itself does not add significant parameter details beyond what the schema already provides, so it meets the baseline without adding much extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Find companies related to the given orgnr' with specific relation mechanisms (shared persons, shared address, shared ultimate owners). It distinguishes itself from sibling tools by specifying the via options and use cases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit use cases: cluster analysis, hidden-relation detection in DD, fraud-pattern research. It also notes that the 'owner' via is heavier, implying preference for lighter options. No explicit when-not or alternative tools are named, so a 4 is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds valuable context: daily rates from Norges Bank, preservation of the NOK original in the response, and the behavior when amount_nok is omitted. It doesn't cover edge cases like rate unavailability, but that's acceptable given 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/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each earning its place: purpose and currencies, use-case context, and rate-only mode. It is front-loaded with the core action and remains compact without unnecessary filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (2 params, 1 required) and has an output schema, so return values are covered. The description provides all essential context: data source, use case, currency support, and a special mode. No gaps remain for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both amount_nok and to_currency are already well-documented in the schema. The description mostly restates these details (supported currencies, omitting amount_nok) and adds the rate-source context, but doesn't significantly extend parameter-level meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool converts NOK amounts to specific foreign currencies (EUR, USD, GBP, SEK, DKK) using Norges Bank rates. It is distinct from all sibling tools, which focus on company, person, or AML data, and the verb 'convert' precisely describes the action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context on when to use the tool: to express Firmaradar's NOK-reporting financial figures in another currency for international workflows. It also explains how to fetch just the current rate by omitting amount_nok, but it doesn't explicitly state when not to use it or mention alternatives, though none exist among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is known. The description adds valuable context about untrusted_content wrapping to prevent prompt injection from BRREG-sourced text, which is not captured in annotations and is crucial for handling external data. 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/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main purpose and examples, followed by a necessary security detail. No wasted words, and the structure is clear and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a single simple parameter, an output schema (so return values are covered), and annotations covering safety. The description sufficiently covers purpose, scope, and the critical untrusted-content handling, making it complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only one parameter (orgnr) and 100% schema description coverage (stating '9-digit orgnr'), the schema fully explains the parameter. The tool description does not add param-specific details, but given the high schema coverage, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists BRREG official announcements for a Norwegian company, with concrete examples (bankruptcy, mergers, demergers, ownership changes, address changes). This specifies the verb ('List'), the resource ('BRREG kunngjøringer'), and the scope (for a company), distinguishing it from sibling tools like firmaradar_search_announcements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies usage: when you have a Norwegian orgnr and need official announcements for that specific company. It does not explicitly mention alternatives or when-not-to-use, but the context is clear and the sibling named firmaradar_search_announcements suggests a search-oriented alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds valuable behavioral context: the data comes from Skatteetaten's Aksjeeierbok, reflects the latest filed holdings, and the result contains ownership edges, percentages, and identifiers. It goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, all purposeful and front-loaded: the first states the core function, the second gives usage, the third names the source, and the fourth describes the result shape. No fluff or redundant restatement of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 params, output schema present), the description covers purpose, usage, data provenance, and result content. Annotations handle safety semantics. Nothing critical is missing for an ownership-tree lookup tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not introduce any parameter meaning beyond what the schema already provides; it only restates the direction concept. It does not add syntax, format, or additional constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Get the ownership tree for a Norwegian company' and immediately disambiguates direction: who they own (down), who owns them (up/UBO), or both. It also includes concrete use cases ('who owns X AS?') and names the data source, clearly distinguishing this from 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 Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit usage guidance is given: 'Use when the user asks "who owns X AS?" or to map a corporate group.' This clearly states when to use the tool, but it stops short of naming alternative tools or stating when not to use it, so it doesn't earn a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (read-only, idempotent), the description discloses that roles are live from BRREG, the official enterprise register, and that output includes role type and appointment/resignation dates. This adds useful context about data freshness and return content, which is beyond what annotations 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/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four tight sentences: purpose, historic flag guidance, when-to-use trigger, and live BRREG data source. Each sentence delivers distinct value, and the critical information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and simple parameters, the description covers the tool's purpose, usage trigger, data source, and return contents. It is sufficient for the agent to select and invoke the tool correctly, even among many sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides full descriptions for all three parameters (100% coverage). The description adds a usage tip for include_historic but mostly restates what the schema says. Given the high schema coverage, a score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('List') and enumerates the exact role types (board members, daglig leder, signature holders, prokura, revisor) for a Norwegian company. It also gives example user queries, making the tool's purpose unmistakable and distinguishing it from sibling tools like get_company or get_person_roles.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes an explicit trigger: "Use when the user asks 'who runs X AS?' or 'who is on the board?'" This clearly tells the agent when to invoke this tool. It doesn't explicitly mention alternatives or exclusions, so it earns a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description need not repeat safety. It adds the Norwegian scope and shareholding semantics, but no additional behavioral traits such as pagination or output details. The include_historic limitation is documented in the schema, not the description. With annotations covering safety, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no waste. The verb-action is front-loaded, followed by usage trigger and key provenance. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema, full parameter documentation, and annotations, the description provides complete context for tool selection and invocation. It covers what the tool does, when to use it, and how to obtain the required key. No critical gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so a baseline of 3 is warranted. The description adds value by explaining the person_key is obtained from search_persons, which is practical guidance beyond the schema's format description. The include_historic parameter is fully described in the schema with its future-reserved status, so no further compensation needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all Norwegian companies where the given person holds shares' with a specific verb, resource, and scope. This distinguishes it from sibling tools like get_person_roles or get_company_ownership by focusing on shareholdings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use when the user asks "what does Person A own?"' and instructs to pass the owner_person_key from search_persons. This gives clear usage context, though it does not name alternative tools for exclusion, which would have made it a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds value beyond that by disclosing PII sensitivity, the required access tier, and the structure of results (separate hit lists with stable IDs). This provides useful operational context not present in 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/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loads the core action, and includes only essential details (PII, tier, output usage). No redundant content, every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists and annotations cover safety, the description sufficiently covers the tool's complexity: it names the dataset, access constraint, PII sensitivity, result types, and downstream usage. No critical contextual gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% (q, birth_year, kommune_hint have descriptions, limit does not). The description does not add parameter-specific meaning beyond what the schema provides, so it relies on the schema's adequate descriptions. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches for Norwegian persons in the shareholder/role-holder dataset by name, distinguishing it from sibling tools like firmaradar_search_companies. It also specifies the return types (shareholder and role-holder hit lists), leaving no ambiguity about the tool's purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by noting the PII-sensitive tier requirement and that returned stable IDs can be passed to get_person_companies and get_person_roles. However, it does not explicitly state when to prefer this over alternatives like search_companies or get_person, so it stops short of full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description discloses quota unit consumption, per-org error handling ('check each result's error field'), and the max 50 restriction. These are key behavioral details not present in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences and dense with useful information, front-loading the purpose. It avoids fluff, though it is slightly longer than strictly necessary because some details repeat schema constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description correctly focuses on operational context: quota, error handling, and use cases. It is complete for a bulk-check tool with strong annotations and schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does 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 parameters. The description reinforces the quota semantics but adds little beyond what the schema provides, meriting the baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is a bulk endpoint for screening 'foretak i vanskeligheter' (distressed companies), immediately distinguishing it from the singular sibling tool. It specifies the exact domain (NUES rules a-e) and the scope (portfolio screening).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use for screening supplier lists, credit-portfolios, or EU state-aid eligibility on multiple companies at once', giving clear use cases. It does not explicitly say when NOT to use it or mention the singular alternative, but the 'bulk' framing implies the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already declaring readOnlyHint and idempotentHint, the description adds valuable context: the extension requirement, company count cap, and the output structure (weighted risk indicators, overall risk level, node/edge graph). This goes beyond what annotations provide, informing the agent about business constraints and result 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/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each serving a distinct purpose: functionality/output, use cases, and constraints. It is front-loaded with the main action and results, and avoids redundancy with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema and one well-documented parameter. The description covers the analysis scope, output elements, prerequisites, and business constraints, making it complete for the task. The extension requirement and tier cap are crucial for successful invocation and are explicitly stated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% as the orgnrs parameter is fully described with min/max items and format. The description reinforces this by mentioning '2–10 Norwegian companies' and that they are analysed 'together', but does not add new parameter-level details beyond the schema. The baseline of 3 applies due to high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Analyse' with a clear resource 'hidden connections across 2–10 Norwegian companies' and lists specific connection types (shared board members, address, owners, auditor). This distinguishes it from sibling tools like get_company_ownership or find_related_companies, which focus on single companies or simpler relations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'Use for due-diligence cluster analysis, shell-company / straw-man detection and fraud-pattern research' and provides a prerequisite ('Look up orgnrs via search_companies first'). It also notes the extension requirement and tier cap, giving clear context for when this tool is appropriate. However, it does not explicitly state when not to use it or name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive traits, but the description adds critical behavioral context: the asynchronous status states (pending/running/done/failed), what data appears in each terminal state, and the error reason on failure. This goes beyond annotations and fully informs the agent of the polling semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences: first identifies purpose, second details response states, third gives usage advice. Every sentence earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, annotations, and a parameter-rich sibling set. The description covers the full polling flow, return values in both terminal states, and polling cadence, making it complete for an agent to use without additional context. The linkage to start_aml_report completes the workflow picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes report_id as 'The report_id returned by start_aml_report,' achieving 100% coverage. The description reinforces this by saying 'Pass the report_id' but adds no new meaning beyond the schema. Baseline 3 is appropriate given schema completeness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Poll' and clearly identifies the resource: 'status and result of an asynchronous AML report started with start_aml_report.' It distinguishes itself from sibling tools like get_aml_score and check_aml_pep by focusing on the async report lifecycle.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the tool is for polling an async report initiated by start_aml_report and explicitly instructs to 'Poll periodically until the status is terminal (done/failed).' While it doesn't name alternative tools, the usage context is clear and paired with the start command, giving sufficient guidance without needing exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnlyHint=true and idempotentHint=true annotations, the description adds valuable behavioral context: it clarifies the tree structure, names the returned fields, and warns that SkatteFUNN never reports amounts, suggesting antall_prosjekter as the primary KPI and noting that total_belop_nok excludes SkatteFUNN by design. This materially helps the agent interpret results correctly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (three sentences) and front-loaded with the core purpose. Every sentence adds value: the overview, the SkatteFUNN caveat, and the use cases. No redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the return structure (selskap_stotte and konsern_aggregat), covers the critical source-data caveat, and states intended use cases. Combined with the existing output schema and annotations, the agent has enough context to use the tool effectively without additional documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter description already specifies '9-digit norwegian organization number (typically konsern-toppen).' The description adds 'and its konsern' but does not provide additional parameter-level detail beyond the schema. With such high schema coverage, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Tree-structured overview of public grants' and lists specific sources (Innovasjon Norge, SkatteFUNN, BRREG støtteregister, Prosjektbanken), clearly distinguishing it from sibling tools that cover company signals, financials, or ownership. It also specifies the scope ('for a Norwegian company and its konsern') and the two return fields, making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states use cases: 'Use for due-diligence, state-aid compliance checks, or competitive intelligence.' It does not mention when not to use it or alternatives, but the context is clear enough for an agent to decide when to invoke this tool. The SkatteFUNN note also provides interpretive guidance, shifting the score toward the higher end.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true, idempotent=true, destructive=false. The description adds valuable behavioral context beyond annotations: quota consumption ('Each orgnr counts as one unit against your quota'), per-item error handling ('Compliance-gates ... are returned per orgnr ... check each result's error field'), and output structure ('component breakdown'). This significantly enhances understanding of how the tool behaves in bulk and partial-failure scenarios.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-organized: a single sentence establishes what the tool does, followed by a second sentence covering quota, compliance gates, and use cases. Every sentence adds substantive information without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all key aspects: the purpose, the input constraints, the output scale and components, the quota behavior, the per-item error handling, and the intended use cases. With annotations and an output schema present, this description is sufficiently complete for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, as the single parameter `orgnrs` is fully documented with format, min/max items, and quota impact. The description repeats this info ('up to 50 Norwegian companies') but does not add additional parameter-level semantics beyond what the schema already provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a bulk endpoint for portfolio-screening of risk scores for up to 50 Norwegian companies, with specific output details (0-100 scale, named levels, component breakdown). It distinguishes itself from the singular risk score tool by emphasizing the bulk nature and scale.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists use cases: 'credit-decision screening, supplier-portfolio review, and KYC risk triage at scale.' It does not explicitly name alternatives or one-off exclusions, but the bulk context implies it is for multiple companies, and the sibling tool firmaradar_get_risk_score is available for single queries. This provides clear context without formal exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the bar is lower. The description adds valuable context: the exact fields returned, the fact that encrypted bearer tokens are never returned (only has_bearer_token), and scoping to the authenticated user via Bearer token. This goes beyond the annotations without 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/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each earning its place: purpose+origin, return fields, and deletion instruction+security note. It is concise and well-structured without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 params), the presence of an output schema, and annotations covering safety, the description provides sufficient extra context: lifecycle relationships, return field highlights, and auth scoping. It is complete for this use case.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema description explains 'No parameters — scoped to the authenticated user via the Bearer token.' The tool description itself doesn't add param semantics, but the baseline for 0 params is 4, and the schema description covers the rationale.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List the NACE industry-monitoring subscriptions of the authenticated Firmaradar user', using a specific verb and resource. It distinguishes itself from sibling tools like subscribe_nace, delete_subscription, and list_nace_codes by focusing on the user's subscriptions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context by noting subscriptions are 'created via subscribe_nace or the portal' and instructs to 'use the returned id with delete_subscription to remove one'. This contextualizes the tool within a subscription lifecycle, though it lacks explicit 'when not to use' or alternative-for-the-same-task guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotent, non-read-only, non-destructive behavior. The description adds valuable context beyond annotations: the upsert key '(user, nace_code)', the fact that subscribing to a parent code matches child codes, the requirement for a plan with Firmaovervakning, and that it delivers HTTPS webhooks. It doesn't describe rate limits or failure behavior, but for a subscription creation tool with strong annotations this is solid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is five sentences, each adding necessary information: purpose, prerequisites, matching behavior, filtering advice, and idempotency. It is front-loaded with the core purpose and well-structured, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 11 parameters and a rich schema plus an output schema, the description doesn't need to explain return values. It covers prerequisites, behavioral nuances (parent code matching), parameter usage strategies, and when to call it. The presence of sibling tools and the description's own clarity make this comprehensively complete for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds cross-parameter guidance that isn't in the schema, such as 'Restrict `events`... and use geographic/size filters to cut volume in large industries, or pick a digest `aggregation_mode`.' This connects parameters to practical outcomes, improving usability. It doesn't fully explain every parameter, but the schema already does.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Subscribe to industry (NACE) monitoring' and explains that Firmaradar delivers webhooks when companies in the chosen industry trigger monitored events. It distinguishes itself from sibling tools by specifying NACE/industry scope rather than individual company monitoring, and the verb 'subscribe' is specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides strong usage context: 'Call only when the user has asked to set up industry monitoring', 'Use list_nace_codes first to resolve the exact code', and 'Requires a user whose plan has Firmaovervakning enabled'. It also gives advice on restricting events and using filters to manage volume. However, it does not explicitly name alternatives like firmaradar_add_company_monitoring for company-level monitoring, so it stops short of full comparative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the idempotentHint annotation by detailing exact behaviors: one-time confirmation per user (not per agent/call), permanence, audit-logging, returning the same audit_id on repeat calls, and the embedded disclaimer text preventing confirmation of unseen versions. It also states the OAuth/plan requirement and the legal declaration content, providing full behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph but front-loads the primary purpose and then covers necessary details: scope, permissions, idempotency, legal content, and usage instruction. Every sentence contributes meaningful information, though it is somewhat dense and could be broken into bullet-like sections for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a confirmation tool with legal implications, the description is very complete. It covers when to invoke, authorization requirements, idempotency, audit behavior, the specific disclaimer content, and the version-matching mechanism. The presence of an output schema means return values need not be explained, so no gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, the baseline is 4. The description adds value by explaining that the disclaimer text and version are embedded in the tool handler, so the agent does not need to guess or hardcode them. This clarifies the purpose of having no inputs and preempts potential confusion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action ('Confirm the pre-screening disclaimer') and explicitly ties it to firmaradar_get_risk_score, clearly distinguishing this tool from its siblings. It also states the one-time, permanent nature, which adds purpose clarity beyond the title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear guidance: 'Call this tool only when the user has explicitly instructed you to confirm the disclaimer on their behalf.' It also mentions that it is 'required by firmaradar_get_risk_score' and notes prerequisites such as an OAuth token and plan with risk scoring enabled. However, it does not explicitly name alternatives or exclusion conditions, though none seem necessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description discloses the one-time disclaimer requirement, the exact error_code values that trigger the confirmation flow, the per-OAuth-user permanence, and that confirmation is audit-logged. It also notes the blocked_enk error for sole proprietorships, adding valuable behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is organized with a clear opening, bolded scope line, and a dedicated instructions paragraph. While longer than minimal, every sentence conveys operational detail (auth flow, error handling, alternative tools) without unnecessary filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Descriptions includes the output components (score, level, breakdown), error behavior, authentication prerequisite, and cross-references to related tools. With an output schema already present, the description fully covers operational and contextual needs for an agent to select and invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single 'orgnr' parameter, so the baseline applies. The description mentions 'Norwegian company' and sole-proprietorship limitations but does not add substantive details about the orgnr format beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides a structured risk score (0-100) with named levels and component breakdown for a Norwegian company's financial health. It explicitly differentiates from personal credit checks and points to firmaradar_get_aml_score for KYC pre-screening, making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool (company financial health) vs. alternatives (AML score for PEP/sanctions). It also gives precise instructions for handling 403 errors by prompting user confirmation and calling the disclaimer-confirmation tool only after explicit user instruction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds valuable context beyond those: the SN2007 format incompatibility ('we do not store SN2007'), the data source (BRREG), and the daily refresh. These disclose meaningful quirks and data provenance, though it stops short of describing pagination or output 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/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured, with a one-sentence overview, a bolded critical warning, a sibling-tool pointer, and a usage tip. Every sentence earns its place; no filler or redundancy. The markdown formatting makes the key caveat visually prominent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 9 parameters, an output schema, and rich annotations, the description provides the essential context: primary use case, format caveat, data freshness, and a targeted filter tip. It doesn't detail pagination (cursor/limit) or all filter interactions, but those are partially covered by the schema and the output schema. The most critical gotcha (SN2007) is well emphasized.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 44%, so the description must compensate. It adds a crucial format warning (trailing zero, SN2007 vs EU NACE) that is critical for correct use, and it highlights the stiftet_etter parameter for a specific query type. However, it doesn't elaborate on limit, cursor, or min/max_ansatte semantics, leaving some parameters under-explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource+scope: 'List Norwegian companies in a specific NACE industry code (or code prefix)', immediately clarifying what the tool does. It distinguishes itself from siblings like firmaradar_search_companies by focusing on NACE industry classification and from firmaradar_list_nace_codes by listing companies rather than codes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: 'Useful for sector analysis' with a concrete example. It names an alternative tool ('call firmaradar_list_nace_codes first') when code uncertainty exists, and gives a specific filter tip ('Use stiftet_etter for newly-founded-company queries'). This exceeds the 4=clear context threshold.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description reveals side effects (user alerts on announcements/status/ownership changes), idempotency, 409 and 403 error conditions, and the IP-alert behavior depending on add-on. This is rich behavioral context that annotations alone do not 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/5Is the description appropriately sized, front-loaded, and free of redundancy?
Though lengthy, each sentence carries operational value: purpose, consequences, parameter guidance, errors, prerequisites, and trigger condition. It is front-loaded with the core action and structured logically, earning its length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, behavior, parameter semantics, error handling, prerequisites, and usage conditions. With an output schema present, return values need not be described. No critical gaps exist for this tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage with detailed descriptions for orgmr and ip_alerts. The tool description mostly reiterates or paraphrases the schema text, adding no novel parameter-level semantics beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific verb+resource: 'Add a Norwegian company (by 9-digit orgnr) to the user's company-monitoring list.' It distinguishes itself from sibling tools, which are mostly read/search operations, by describing a write action (adding to monitoring).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use: 'Call only when the user has asked to monitor a specific company.' It also gives prerequisites (plan with Firmaovervakning) and error-handling guidance (409, 403 cap reached), leaving little ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior, lowering the bar. The description goes beyond annotations by warning that amounts are in each company's reporting currency (check `currencies`) and explaining that `antall_ansatte` is a current-value field with null comparison rows. These are critical behavioral caveats that prevent misinterpretation of results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences, each serving a distinct purpose: purpose/scope, use cases, currency warning, and antall_ansatte caveat. It is front-loaded with the primary action and avoids fluff. Every sentence adds value, making it appropriately sized for a tool with these complexities.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (comparison, variable years, metric subset, currency differences, headcount quirk), the description covers all key non-obvious aspects. An output schema exists, so the return structure is already documented; the description adds the necessary caveats about currencies and `antall_ansatte` that schema alone would not convey.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67% (years lacks description). The description adds meaning to `years` by clarifying it means 'last N years' and emphasizes the side-by-side comparison. It also reinforces `metrics` semantics by listing valid metric names and the special handling of `antall_ansatte`. This partially compensates for the schema gap, though not fully for `years`.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool compares key financial metrics of up to 5 Norwegian companies side-by-side over a configurable number of years. This specific verb+resource+scope distinguishes it from siblings like get_company_financials (single-company) and search_companies (search). The intended use cases (competitor analysis, benchmark research) further clarify its unique role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use for competitor analysis, benchmark research or "which of these three companies is the strongest?"' which provides clear when-to-use guidance. However, it does not explicitly mention when not to use it or name alternative tools for single-company financials, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructiveHint, idempotentHint, readOnlyHint), the description discloses that webhooks will stop, idempotent behavior returns already_absent=true, and reversibility is only via re-subscribing. It also asserts ownership requirements, adding context beyond the structured metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the core action. Each sentence adds value: purpose, side effect, idempotency, reversibility, and usage trigger. No redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple deletion tool with one parameter and an output schema, the description fully covers the behavioral contract: what happens, idempotency, reversibility, and ownership validation. It is complete without requiring the agent to infer missing context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description for subscription_id already provides full coverage (100%), including source (from list_my_subscriptions) and ownership requirement. The description adds no new parameter meaning beyond what the schema states, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Delete one NACE industry-monitoring subscription by its id,' specifying the resource and scope. It distinguishes the tool from siblings like subscribe_nace and list_my_subscriptions by focusing on deletion and the consequence of stopping webhook delivery.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: 'Call only when the user has asked to stop monitoring an industry.' It also instructs the agent to obtain the id from list_my_subscriptions, making the integration context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (all false), the description discloses significant behavioral traits: it internally screens key persons and beneficial owners against PEP/sanctions, folds that into the score, generates an auditable report stored for 60 months, and may return asynchronously with a pending state. This is rich, safety-relevant context that the annotations do not 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/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph, but every sentence adds essential information: primary use, anti-pattern avoidance, backend report generation, async behavior, and polling. It is front-loaded with the core purpose and remains readable despite its length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of the tool (async report generation, legal retention, interplay with sibling tools) and that an output schema exists, the description covers all the contextual ground needed. It addresses the likely edge case of pending results and directs the agent to the correct follow-up tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully documents both parameters (orgnr and purpose) with descriptions and an enum for purpose. The description only mentions 'by orgnr' and adds no additional parameter-level detail beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a structured COMPANY AML risk score (0-100) with a named level, keyed by orgnr. It explicitly identifies itself as the primary tool for 'what is the AML risk / AML score of company X', which differentiates it from siblings like check_aml_pep.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells the agent exactly when to use this tool, instructs to call it ONCE per company, and explicitly says not to call check_aml_pep afterwards except for ad-hoc individual screening. It also provides guidance on what to do when the result is pending: poll get_aml_report with the rapport_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds behavioral context beyond annotations by specifying that results include both current and historic roles, and by noting the dependency on a search_persons result. This is useful context, though it does not disclose pagination or output size limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the purpose, and includes a specific usage trigger. Every word earns its place; there is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with an output schema present and rich annotations, the description is complete. It states the purpose, when to use it, and the key parameter source. The output schema handles return-value details, so no further description is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%: role_person_id has a description, but include_historic does not. The description compensates by explaining the source and usage of role_person_id ('Pass the role_person_id returned by search_persons') and implicitly covers include_historic with 'current and historic.' However, it does not explicitly mention the parameter name or how to disable historic results.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'List all company roles (styreleder, daglig leder, etc.) held by a person, current and historic.' It uses a specific verb and resource, and explicitly distinguishes from sibling tools by specifying 'held by a person' and providing a sample user query.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: 'Use when the user asks 'what roles does Person A hold?'' It also provides a prerequisite and sourcing instruction: 'Pass the role_person_id returned by search_persons.' This tells the agent exactly when and how to invoke the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/idempotentHint annotations, the description adds behavioral context: returns a paginated list, revenue filtering excludes companies with no reported NOK revenue, the data source is BRREG, and each hit includes a canonical URL and matched fields. It does not contradict annotations, but could mention max limit or pagination cursor semantics, though these are covered in 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.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is five sentences with zero fluff. It front-loads the core purpose, then gives usage guidance, a critical caveat, data source, and return value summary—all in a compact, well-ordered structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter search tool with a rich input schema and an output schema present, the description covers the essential aspects: what it does, when to use it vs alternatives, pagination, data source, and the key behavioral exclusion. No significant gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 77% schema coverage, the schema already documents parameters richly (e.g., NACE prefix rules, fylke/kommune digit formats). The description adds value by explaining the non-obvious revenue exclusion rule ('see min_omsetning_nok') and by summarizing filter categories that map to the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Search Norwegian companies with filters' listing specific filter categories (name, NACE, location, status, employees, revenue, founding date), and differentiates from the sibling get_company by advising to use it once a specific orgnr is known.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Includes explicit usage guidance: 'Use when you have a description and need to find matching companies; use get_company once you have a specific orgnr.' Also mentions the revenue filter exclusion behavior and points to the relevant parameter for details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are sparse (readOnly=false, destructive=false, idempotent=false), so the description carries the burden. It fully discloses the async nature, immediate return with pending status, background processing, polling requirements, success/failure states, auditable report storage for 60 months, and legal basis (Hvitvaskingsloven §35). No contradictions 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/5Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences deliver complete information: the action and async behavior, polling instructions with statuses, and usage alternatives plus a regulatory retention note. Every sentence earns its place with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all necessary context: async operation, polling workflow, when to prefer over `get_aml_score`, parallel screening use case, and report retention. The output schema exists to define return values, so the description does not need to do so. The sibling list confirms `get_aml_report` exists, aligning with the polling reference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage with clear descriptions for both `orgnr` (9-digit Norwegian organization number) and `purpose` (Purpose of screening — recorded for audit trail). The description adds no additional parameter-level detail beyond what the schema provides, but it does reinforce the audit purpose context. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs and resources: 'Start generating an AML risk report ASYNCHRONOUSLY for a Norwegian company'. It clearly distinguishes from siblings by explicitly referencing `get_aml_score` as the synchronous alternative and `get_aml_report` for polling, making the tool's unique role evident.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: 'Use this instead of `get_aml_score` for large/complex ownership structures that may otherwise time out, or to start many screenings in parallel.' It also provides the polling workflow with `get_aml_report`, including status handling and how to interpret results.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnlyHint=false, destructiveHint=false, etc., but the description adds critical operational context: PII-sensitive, requires signed DPA, legitimate purpose per call, audit-logged for 60 months, rate-limited to 50 calls/30 min, and returns structured hits with category/sources/match-ratio. This goes far beyond the basic safety flags.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than average but every sentence contributes a distinct fact: scope restriction, alternative tools, compliance prerequisites, audit/rate limits, and output expectations. It is front-loaded with the core purpose and reads efficiently without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a PII-sensitive compliance tool with 5 parameters and no nested objects, the description fully covers usage boundaries, workflow alternatives, legal prerequisites, rate limits, and a summary of return values. The output schema handles return structure details, so the description is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does 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. It adds semantic value by explaining `name` must be a single person, `purpose` is free-text compliance justification, and `min_match_ratio` defaults to 0.85. However, it does not clarify `kategori` or `birth_year` beyond schema defaults, leaving some burden unmet.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a specific verb and resource: 'Screen ONE natural PERSON's full name against sanctions (OFAC, EU, UN) and PEP lists.' It clearly scopes the tool to natural persons and explicitly distinguishes it from sibling company-focused AML tools such as firmaradar_get_aml_score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use and when-not-to-use guidance: do NOT pass company names or orgnr, and for company-level risk use firmaradar_get_aml_score. It also prescribes a workflow for company owner/officer screening by first resolving people via get_company_roles/get_company_ownership, then screening each person.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive behavior. The description adds substantial context beyond annotations: PII-sensitive nature, required access tier, name-based matching (no national ID), and the fact that results are review flags. This discloses operational and privacy implications not visible in structured metadata. 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/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact yet information-dense. Each sentence serves a distinct purpose: core function, when to use, limitation/caveat, and access requirement. No fluff, properly front-loaded with the main verb and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and the existence of an output schema, the description fully covers what an agent needs: function, target use case, alternatives, result interpretation, PII/tier constraints, and parameter context. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by emphasizing that matching is name-based with no national ID, clarifying the 'navn' parameter's limitations and the purpose parameter's audit-trail role. This extra context justifies a slight bump above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool screens a person by name for bankruptcy exposure, specifically leadership roles in bankrupt companies, tenure-weighted. It distinguishes from siblings by explicitly mentioning historical leaders not reachable via search_persons/get_person, making the purpose specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool: for HISTORICAL leaders no longer in any role index, and names the alternatives (search_persons, get_person). It also provides important interpretation guidance (hit is a review flag, not a verdict), which is essential for proper usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnlyHint/idempotent annotations by disclosing PII sensitivity, required access tiers, purpose confirmation, minor restrictions, and the name-based matching limitation of konkurs_eksponering. 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/5Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence earns its place: an aggregated summary, a detailed caveat about name-based matching, an explicit non-screening warning with alternative, and access restrictions. Slightly long but dense and well-structured with front-loaded core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema already present and strong annotations, the description fully covers access control, data limitations, alternative tools, and matching caveats. Nothing critical is missing for an agent to decide on and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds contextual meaning by explaining the purpose parameter's audit-trail role and the source formats for person_id, reinforcing and expanding on the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Aggregated person profile' followed by concrete contents (name, birth year, active roles, shareholdings, AML/PEP hits). It also distinguishes itself from siblings by explicitly stating it does NOT run PEP/sanctions screening and directing to firmaradar_check_aml_pep.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-not-to-use guidance: 'does NOT run a PEP/sanctions screening' and names the alternative tool. It also states access requirements (search_full_enabled tier, F10.11 purpose confirmation, minor blocking), giving the agent clear conditions for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite annotations already declaring readOnlyHint=true and idempotentHint=true, the description adds valuable behavioral context: it specifies what each hit contains (Norwegian and English labels, company counts), the data source (official catalogue SSB/BRREG), and refresh frequency (daily). This goes beyond the annotations and helps the agent understand the tool's output and reliability.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the core purpose, followed by usage guidance and output details. Every sentence earns its place – no filler, redundant phrasing, or repetition of schema information. It is concise yet packed with actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 parameters, output schema exists, annotations provided), the description is remarkably complete: it covers purpose, when-to-use, three usage modes, return elements, data source, and update cycle. The only unmentioned aspect is pagination or limit behavior, but the output schema likely covers return structure, so no critical gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% (q, eu, parent have descriptions; limit does not). The description reinforces and enriches parameter meaning by explaining q as free-text search with examples, eu as a converter to Norwegian 5-digit sub-codes, and parent as a hierarchy drill-down with examples. It does not mention limit, but that parameter is self-explanatory, so the added value over the schema is solid, though not exhaustive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Search and browse the Norwegian NACE industry-code catalogue.' It uses a specific verb and resource, and distinguishes itself from sibling tools by explicitly positioning it as a precursor to subscribe_nace and list_companies_in_nace, making its role unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: 'Use this to resolve the exact code before calling subscribe_nace (industry monitoring) or list_companies_in_nace.' It also details three distinct usage modes (q, parent, eu) with examples, giving clear direction on how to invoke the tool for different scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Tiwas/firmaradar-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server