Skip to main content
Glama

Server Details

Company, KYB, VAT, sanctions, LEI and address data for 15 EU countries.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
Mnymann/nordic-data-mcp
GitHub Stars
0

Glama MCP Gateway

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

MCP client
Glama
MCP server

Full call logging

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

Tool access control

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

Managed credentials

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

Usage analytics

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

100% free. Your data is private.
Tool DescriptionsA

Average 4.4/5 across 11 of 11 tools scored. Lowest: 3.8/5.

Server CoherenceA
Disambiguation5/5

Each tool targets a distinct data domain or operation: address autocomplete, basic company lookup, enriched company data, French history, full KYB report, LEI lookup, sanctions screening, VAT validation, and three discovery meta-tools. No two tools overlap in purpose.

Naming Consistency4/5

All tool names use snake_case and are descriptive, but patterns vary: some follow verb_noun (autocomplete_address, lookup_company, validate_vat), while others are noun_adjective (company_enriched) or abbreviation_noun (kyb_full, fr_history). A few more verb_noun names would improve consistency.

Tool Count5/5

With 11 tools covering company data, LEI, sanctions, VAT, address autocomplete, and discovery endpoints, the count is well-scoped. It provides essential functionality without overwhelming the user, and the discovery tools offer extensibility.

Completeness5/5

The tool set covers core business data needs across 15 countries: basic and enriched company info, full KYB reports, historical data, LEI lookup, sanctions screening, VAT validation, and address autocomplete. The discovery meta-tools provide access to 230+ additional endpoints, ensuring no critical gaps.

Available Tools

11 tools
autocomplete_addressA
Read-onlyIdempotent
Inspect

Address autocomplete using each country's authoritative register: DAWA (DK), Kartverket (NO), BAN (FR official), MML (FI), and Nominatim (others). Returns ranked address suggestions with coordinates. Supports 15 countries (DK, NO, SE, FI, IE, UK, FR, DE, CZ, PL, LV, EE, NL, BE, LU). Tier note: NL and DE require a Starter+ subscription — free-tier API keys receive HTTP 402 'upgrade_required'; do NOT retry on 402.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesPartial address — street name, postcode, city, or any combination. Min 2 characters.
countryYesISO 3166-1 alpha-2 country code, lowercase.

Output Schema

ParametersJSON Schema
NameRequiredDescription
suggestionsNoRanked address candidates, best match first.
Behavior5/5

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

Annotations (readOnlyHint, idempotentHint, destructiveHint) already indicate safe, idempotent read. Description adds key behaviors: returns ranked suggestions with coordinates, covers 15 countries, and discloses subscription limitation for NL/DE with 402 error handling. No contradictions.

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

Conciseness5/5

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

Compact paragraph with clear flow: data source claim, output description, supported countries list, and critical tier note. Every sentence adds value with no redundancy or weak language.

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

Completeness4/5

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

Given the complexity of multi-country autocomplete and presence of an output schema, the description covers sources, countries, output type (ranked with coordinates), and error handling for upgraded subscriptions. Could mention pagination or rate limits but overall sufficient for agent usage.

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

Parameters3/5

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

Input schema already documents both parameters (query and country) with 100% coverage. Description adds minimal extra semantics beyond schema, such as clarifying query is partial address and country is ISO alpha-2 lowercase. Baseline 3 is appropriate as schema carries the burden.

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

Purpose5/5

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

Clearly describes the tool as an address autocomplete using authoritative registers per country. Distinguishes itself from sibling tools (all company/KYB/sanctions/VAT related) by focusing on address lookup with specific country-level data sources.

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

Usage Guidelines4/5

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

Explicitly states when to use (address autocomplete), lists supported countries, and provides a critical usage constraint: NL/DE require a Starter+ subscription and 402 errors should not be retried. Lacks explicit when-not-to-use or alternatives, but siblings are unrelated, so context is clear.

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

call_endpointAInspect

Discovery meta-tool. Executes a real HTTP request against the Nordic Data API for any non-admin endpoint discovered via list_endpoints, and returns the response. Authenticates with the same scoped API key as the curated tools. Only HTTP methods declared in the spec for the given path are permitted; /admin endpoints are always refused. Use list_endpoints and get_endpoint_schema first to find the correct path, method, and parameters.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesConcrete endpoint path, e.g. '/api/company/dk/22756214'. Path templates with {placeholders} are also accepted when you supply the values in `params`.
methodNoHTTP method to use, e.g. GET or POST. Must be a method the endpoint actually supports (see get_endpoint_schema). Defaults to GET.GET
paramsNoParameters for the call. Values whose keys match {placeholders} in the path are substituted into the path. Remaining values become query-string params for GET/DELETE, or the JSON request body for POST/PUT/PATCH.
Behavior4/5

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

Discloses key behaviors: executes real HTTP requests, authenticates with scoped API key, refuses /admin endpoints, and only permits declared HTTP methods. This adds context beyond annotations, though it could be more explicit about potential side effects given readOnlyHint=false.

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

Conciseness5/5

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

Two concise sentences that efficiently convey purpose, prerequisites, and restrictions. No superfluous words, and key information is front-loaded.

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

Completeness4/5

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

For a dynamic meta-tool without output schema, the description covers major aspects: authentication, path/method constraints, and prerequisite tools. Could mention return format or error handling, but adequate for open-world tool.

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

Parameters4/5

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

With 100% schema description coverage, the description adds value by explaining path template substitution, method default, and how params are interpreted (placeholder substitution, query/body). This clarifies usage beyond the schema.

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

Purpose5/5

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

The description clearly identifies the tool as a 'Discovery meta-tool' that executes real HTTP requests against the Nordic Data API for non-admin endpoints, distinguishing it from sibling tools by referencing list_endpoints and get_endpoint_schema as prerequisites.

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

Usage Guidelines4/5

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

Explicitly instructs to use list_endpoints and get_endpoint_schema first, and states that only non-admin endpoints and declared HTTP methods are permitted. While it does not list alternatives among curated tools, it provides clear guidance on when and how to use this tool.

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

company_enrichedA
Read-onlyIdempotent
Inspect

Enriched company data: basic registry data + DAWA-validated address with lat/lng + industry statistics (DST for DK, SSB for NO, etc.) + Wikidata enrichment (website, employees, CEO, ticker, logo, Wikipedia URL). One call, multiple sources. Supports 15 countries (DK, NO, SE, FI, IE, UK, FR, DE, CZ, PL, LV, EE, NL, BE, LU). Tier note: NL and DE use paid upstream registries — free-tier API keys receive HTTP 402 'upgrade_required'; do NOT retry on 402. On paid tiers, NL costs 5x quota and DE costs 3x.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesNational company identifier — same format as lookup_company.
countryYesISO 3166-1 alpha-2 country code, lowercase.

Output Schema

ParametersJSON Schema
NameRequiredDescription
addressNoDAWA-validated address with lat/lng (or country equivalent).
registryNoSame shape as lookup_company output.
wikidataNoPublic profile from Wikidata.
industry_statsNoNational industry statistics (DST for DK, SSB for NO, etc.).
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint as true/true/false, indicating a safe, idempotent read operation. The description adds behavioral details beyond annotations: it explains the multi-source aggregation, the specific data sources (DAWA, DST, SSB, Wikidata), and the error handling for paid upstream registries (HTTP 402). This provides useful context that annotations alone do not cover.

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

Conciseness4/5

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

The description is four sentences, each adding value: first sentence lists data types and sources, second emphasizes efficiency, third enumerates countries, fourth provides a critical usage note. It is front-loaded with the main purpose. Some minor redundancy (e.g., 'One call, multiple sources' is already implied) but overall concise and well-structured.

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

Completeness4/5

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

Given the tool has an output schema (so return values are documented separately), the description covers the key aspects: what data is aggregated, which countries are supported, and a notable error handling case (402 on NL/DE). It does not mention rate limits or authentication requirements, but annotations cover safety and idempotency. For a read-only data retrieval tool with good schema support, 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/5

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

Input schema has 100% description coverage: 'id' is described as 'National company identifier — same format as lookup_company' and 'country' as 'ISO 3166-1 alpha-2 country code, lowercase.' The description adds a cross-reference for 'id' to the sibling tool 'lookup_company', which aids understanding. Baseline is 3 due to high schema coverage, but the cross-reference and clarity justify a 4.

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

Purpose5/5

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

The description explicitly states 'Enriched company data' and enumerates the specific data types included (basic registry, validated address, industry statistics, Wikidata enrichment). It distinguishes from the sibling tool 'lookup_company' by emphasizing the multi-source aggregation and broader scope. The purpose is clear 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 Guidelines4/5

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

The description provides context for use: 'One call, multiple sources' implies this tool is for comprehensive data retrieval. It also includes a critical usage note about paid tiers for NL and DE, advising against retrying on HTTP 402. However, it does not explicitly state when to use this versus alternative sibling tools like 'lookup_company' or 'kyb_full', so usage guidance is present but not exhaustive.

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

fr_historyA
Read-onlyIdempotent
Inspect

French company history timeline. Returns one event per change to the company's name, activity (NAF code), status (active/closed), legal form, or social-economy flag, derived from INSEE Sirene 3.11's bitemporal periodesUniteLegale array. Includes 'initial:' events that show the state at company creation (date, name, NAF code, etc.). Input: 9-digit SIREN number. Cost: 1 quota unit; free tier supported (France is not tier-gated, unlike NL and DE). Cache: 24h server-side. Errors: 400 invalid_id_format (not 9 digits), 403 non_diffusible (SIREN exists but is privacy-protected under art. R123-232-1), 404 not_found, 503 upstream_unavailable.

ParametersJSON Schema
NameRequiredDescriptionDefault
sirenYes9-digit French SIREN number. Examples: 652014051 (Carrefour), 775670417 (LVMH). No spaces or punctuation.

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNoNumber of history events derived.
sigleNoAcronym / short name, if any.
sirenNo9-digit SIREN echoed back.
eventsNoChronologically ordered events. Each event has 'initial:<field>' type for the baseline period or a plain field name for subsequent changes.
sourceNoUpstream data source — 'api.insee.fr'.
fetchedAtNoISO-8601 timestamp when the data was fetched upstream.
sourceNoteNoProvenance note describing the upstream API and field set used.
periodCountNoNumber of bitemporal periods returned by INSEE.
dateCreationNoISO-8601 date the legal entity was created.
categorieEntrepriseNoINSEE company size category: PME, ETI, GE.
Behavior4/5

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

Annotations already indicate read-only, idempotent, non-destructive. Description adds behavioral details: cache duration, quota cost, error conditions, and data source (INSEE Sirene bitemporal array). No contradictions.

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

Conciseness4/5

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

Description is somewhat verbose but well-structured, each sentence provides distinct information. Could be slightly shortened without losing clarity, but overall efficient.

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

Completeness4/5

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

Given the presence of an output schema (not shown but exists), the description adequately covers purpose, input, errors, caching, and data scope. It explains the types of events ('initial:' fields) and underlying array, providing sufficient context for an agent.

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

Parameters4/5

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

Schema covers the parameter with description and pattern (100% coverage). Description adds value with concrete examples (Carrefour, LVMH) and explicit formatting rules (no spaces/punctuation).

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

Purpose4/5

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

Description clearly states it provides a timeline of French company history events, covering changes to key attributes. It does not explicitly differentiate from sibling tools like lookup_company or company_enriched, but the purpose is specific and well-defined.

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

Usage Guidelines3/5

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

Description includes input format, cost, cache, and error codes, providing some guidance. However, it lacks explicit when-use vs alternatives (e.g., when to use history vs current snapshot), so usage context is partial.

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

get_endpoint_schemaA
Read-onlyIdempotent
Inspect

Discovery meta-tool. Returns the full parameter and response schema for a single Nordic Data API endpoint (path + method), read from the backend's live OpenAPI spec with $refs resolved inline. Use after list_endpoints to learn exactly which parameters an endpoint takes before calling it with call_endpoint. Admin endpoints are rejected.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesEndpoint path from list_endpoints, e.g. '/api/company/{country}/{id}'. Concrete paths like '/api/company/dk/22756214' are also accepted.
methodNoHTTP method for the endpoint (e.g. GET, POST). Defaults to GET. Must be a method the endpoint actually defines.GET
Behavior4/5

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

Annotations already indicate read-only, idempotent, non-destructive behavior. Description adds context about live OpenAPI source, inline $ref resolution, rejection of admin endpoints, and its role as a meta-tool. No contradictions.

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

Conciseness5/5

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

Four short, front-loaded sentences with zero fluff. Every sentence adds essential information: purpose, source, usage context, and restriction.

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

Completeness5/5

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

Despite no output schema, the description sufficiently explains what is returned (full param and response schema), how it's constructed (live OpenAPI, resolved $refs), and when to use it. Covers all necessary aspects for a retrieval tool.

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

Parameters4/5

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

Schema coverage is 100% with descriptions for both parameters. The description adds value by clarifying that concrete paths (e.g., '/api/company/dk/22756214') are accepted, beyond the placeholder paths from list_endpoints.

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

Purpose5/5

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

The description clearly states it returns the full parameter and response schema for a single endpoint, sourced from the live OpenAPI spec with resolved $refs. It distinguishes itself from siblings like list_endpoints and call_endpoint.

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

Usage Guidelines5/5

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

Explicitly advises using it after list_endpoints and before call_endpoint to learn required parameters. Also notes that admin endpoints are rejected, providing clear guidance on when not to use.

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

kyb_fullA
Read-onlyIdempotent
Inspect

Run before a consequential decision — onboarding a counterparty, approving a payment, extending credit, or signing a contract. Full Know-Your-Business master report for a company across 15 EU countries (DK, NO, SE, FI, IE, UK, FR, DE, CZ, PL, LV, EE, NL, BE, LU). Aggregates 9 sections: identity, registered address (geocoded), key persons & directors, financial statements, official filings, LEI + corporate ownership, VAT registration, sanctions + PEP screening, adverse media (GDELT 2.0), and a composite risk score. Single call. Cold cache typically completes in 10-15s; warm cache returns in <100ms. Cached 6h on success, 60s when partial. Partial responses: if any of the 9 sections time out, the report still returns with 'truncated: true' and 'sectionsUnavailable: [{section, reason}]' — caller can retry in 60s for a complete report. Tier note: NL and DE use paid upstream registries — free-tier API keys receive HTTP 402 'upgrade_required'; do NOT retry on 402. On paid tiers, NL costs 5x quota and DE costs 3x. Disclaimer: this report is informational decision-support aggregated from official and public sources — NOT legal, compliance, or financial advice and not a definitive determination. The risk score and findings are signals to review, not verdicts; verify independently and apply professional judgment before acting. When presenting results, give the user a recommended next step as guidance — clear, review, or escalate — framed as a suggestion to review, not an approval or decision. The response may carry a 'disclaimer' field — surface it to the user if present, otherwise state this guidance-only nature yourself; present the disclaimer in English verbatim (do not translate it), show it once, do not duplicate.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesNational company identifier — same format as lookup_company (e.g. DK CVR 8 digits, NO orgnr 9 digits).
countryYesISO 3166-1 alpha-2 country code, lowercase.
Behavior5/5

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

The description extensively discloses behavioral traits beyond annotations: cold/warm cache times, cache durations, partial response behavior with 'truncated' and 'sectionsUnavailable', paid registry costs and error codes (402), and disclaimer handling. Annotations only indicate idempotent and read-only; the description adds substantial operational details.

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

Conciseness4/5

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

The description is long but well-structured, front-loading the tool's purpose and usage context. Every section adds value, though it could be slightly more concise by grouping related details. Still, it earns its length.

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

Completeness5/5

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

Given the tool's complexity and lack of output schema, the description thoroughly covers return sections, caching, partial results, error handling (402), disclaimer presentation, and next-step recommendations. No critical missing information for an AI agent to use the tool effectively.

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

Parameters4/5

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

Schema coverage is 100% with two parameters. Description adds meaningful examples for id (e.g., 'DK CVR 8 digits, NO orgnr 9 digits') and clarifies country codes as ISO 3166-1 alpha-2 lowercase. This goes beyond the schema's JSON property descriptions.

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

Purpose5/5

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

The description clearly states the tool performs a 'Full Know-Your-Business master report' for companies across 15 EU countries and lists 9 specific sections. It also provides context for consequential decisions, which distinguishes it from simpler lookup tools like lookup_company or screen_sanctions.

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

Usage Guidelines4/5

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

Explicitly states 'Run before a consequential decision — onboarding a counterparty, approving a payment, extending credit, or signing a contract.' It also advises not to retry on HTTP 402 for NL and DE. However, it does not explicitly name alternative tools or scenarios where alternatives are preferred.

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

list_endpointsA
Read-onlyIdempotent
Inspect

Discovery meta-tool. Lists ALL available Nordic Data API data endpoints (HTTP method, path, short description) by reading the backend's live OpenAPI spec at runtime — far beyond the curated high-level tools. Use this to discover capabilities the dedicated tools do not cover, then call get_endpoint_schema for parameter details and call_endpoint to execute one. Admin endpoints are never returned. Supports an optional search keyword filter. The catalog has 230+ endpoints.

ParametersJSON Schema
NameRequiredDescriptionDefault
searchNoOptional case-insensitive keyword filter, matched against each endpoint's path, summary, and tags. Examples: 'sanction', 'address', 'cvr', 'history', 'vat', 'lei'. Omit to list every available data endpoint.
Behavior5/5

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

Annotations declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive. The description adds runtime behavior (reads OpenAPI spec, supports search filter, 230+ endpoints) 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/5

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

The description is concise, front-loaded with purpose, and each sentence adds value. No filler or redundancy.

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

Completeness5/5

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

For a list tool with one optional parameter and strong annotations, the description covers purpose, usage, behavior, and limitations completely.

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

Parameters4/5

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

Schema provides full parameter description with examples. The description adds context by stating the parameter is optional and reinforcing its filtering role.

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

Purpose5/5

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

The description clearly identifies the tool as a 'Discovery meta-tool' that lists all available API endpoints via the backend's live OpenAPI spec, distinguishing it from the curated 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 Guidelines5/5

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

Explicitly describes when to use (discover capabilities beyond dedicated tools) and what to do next (use get_endpoint_schema and call_endpoint). Also notes admin endpoints are never returned.

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

lookup_companyA
Read-onlyIdempotent
Inspect

Call before onboarding a supplier or customer to confirm the legal entity exists and is active. Look up basic company data (name, address, status, industry, VAT registration, founding date) from official European business registries. Supports 15 countries: DK (CVR), NO (Brønnøysund), SE (Bolagsverket), FI (YTJ/PRH), IE (CRO), UK (Companies House), FR (INSEE Sirene), DE (Handelsregister), CZ (ARES), PL (KAS+KRS), LV (Uzņēmumu reģistrs), EE (Ariregister), NL (KvK), BE (KBO), LU (RCSL). Tier note: NL and DE use paid upstream registries (KvK and Handelsregister). Free-tier API keys will receive HTTP 402 with error 'upgrade_required' — do NOT retry on 402; surface the upgrade URL from the error message to the user. On paid tiers, NL calls cost 5x quota units and DE calls cost 3x; all other countries cost 1x.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesNational company identifier. DK=CVR (8 digits), NO=orgnr (9), SE=orgnr (10), FI=Y-tunnus (NNNNNNN-D), IE=CRO (1-7), UK=8 chars, FR=SIREN (9), DE=HRB number, CZ=IČO (8), PL=NIP (10) or KRS (10), LV=11 digits, EE=8 digits, NL=KvK (8 digits), BE=BCE/KBO (10 digits), LU=RCSL (B + digits).
countryYesISO 3166-1 alpha-2 country code, lowercase. One of: dk, no, se, fi, ie, uk, fr, de, cz, pl, lv, ee, nl, be, lu.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoNational company identifier as supplied.
vatNoVAT registration metadata (number, registered flag).
nameNoRegistered legal name.
sourceNoUpstream registry name (CVR, Brønnøysund, etc.).
statusNoRegistry status, e.g. active, dissolved, bankrupt.
addressNoRegistered address as returned by the source registry.
countryNoISO 3166-1 alpha-2 country code (lowercase).
foundedNoISO-8601 founding date.
industryNoIndustry classification (NACE / national code + label).
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint. The description adds critical context: reliance on official registries, country-specific behavior, paid registry interactions, error handling for 402. It does not contradict annotations. Minor omission: could mention data freshness or update frequency.

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

Conciseness4/5

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

Front-loaded with core use case and action. The description is detailed but organized (countries list, tier notes, error handling). Every sentence adds necessary information, though the country list could be more compact.

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

Completeness5/5

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

Fully covers tool usage context: when to call, supported countries, quota differences, error handling, and what data is returned. With output schema present, doesn't need to detail every field. No gaps identified.

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

Parameters4/5

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

Input schema covers 100% of parameters with detailed descriptions (e.g., ID formats per country). The description adds value by explaining the overall use context and listing expected output fields, helping agents understand what parameters return.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'look up basic company data' from official European registries, with a specific use case ('Call before onboarding a supplier or customer'). It distinguishes itself from siblings by focusing on company registration data, not LEIs or VAT validation.

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

Usage Guidelines5/5

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

Explicitly tells when to use ('before onboarding a supplier or customer'), and when not to retry (HTTP 402 for free-tier NL/DE queries). Provides alternative action: surface the upgrade URL. Also details paid-tier quota costs for NL and DE.

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

lookup_leiA
Read-onlyIdempotent
Inspect

Look up a Legal Entity Identifier (LEI) via GLEIF — the global standard for entity identification. Returns legal name, registered address, status, parent + ultimate parent relationships, and child entities (subsidiaries). Also supports reverse lookup from a national company number to LEI across 15 countries (DK, NO, SE, FI, IE, UK, FR, DE, CZ, PL, LV, EE, NL, BE, LU). Tier note (reverse mode only): NL and DE use paid upstream registries — free-tier API keys receive HTTP 402 'upgrade_required'; do NOT retry on 402.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoNational company ID. Required when mode='reverse'.
leiNo20-character ISO 17442 Legal Entity Identifier. Required when mode='lei'.
modeYes'lei' = look up by LEI directly. 'reverse' = look up LEI from national company number.
countryNoISO 3166-1 alpha-2 country code, lowercase. Required when mode='reverse'.
include_relationshipsNoIf true, also fetch parent and child entities. Only applies when mode='lei'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
leiNo20-character ISO 17442 identifier.
statusNoISSUED / LAPSED / RETIRED / etc.
legal_nameNo
registrationNoGLEIF registration metadata (initial date, last update, status).
legal_addressNo
relationshipsNoOnly present when include_relationships=true.
headquarters_addressNo
Behavior5/5

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

Discloses behavioral traits beyond annotations: returns relationships, supports reverse lookup across 15 countries, and explains 402 behavior. Annotations already indicate read-only, idempotent, non-destructive; description adds valuable nuance 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.

Conciseness4/5

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

The description is slightly verbose but well-organized: purpose first, then data returned, then modes, then a critical note. Every sentence provides useful information; no filler.

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

Completeness5/5

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

For a tool with 5 parameters (1 required), 100% schema coverage, and output schema present, the description adequately covers usage, modes, return values, and error handling. No gaps remain.

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

Parameters4/5

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

Input schema has 100% coverage, so baseline is 3. Description adds value by explaining the reverse lookup scope (15 countries), the tier-dependent behavior for NL/DE, and the conditional nature of include_relationships (only applies when mode='lei').

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

Purpose5/5

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

Clearly states the tool looks up a Legal Entity Identifier (LEI) via GLEIF and lists specific data returned (legal name, address, status, parent/child relationships). Distinguishes from siblings on the same server (e.g., lookup_company, company_enriched) by focusing on the global LEI standard.

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

Usage Guidelines5/5

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

Explicitly describes two modes (lei and reverse) with required parameters for each. Provides critical guidance: a tier note warns that NL and DE use paid upstream registries and advises against retrying on HTTP 402, preventing wasted API calls.

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

screen_sanctionsA
Read-onlyIdempotent
Inspect

Call before onboarding a counterparty or processing a payment. Screen one or more names against UN, EU, OFAC and PEP sanctions lists (768K+ entries via OpenSanctions). Returns match scores with source attribution. Disclaimer: matches are informational decision-support, NOT legal or compliance advice and not a definitive determination — a hit is a signal to investigate (confirm identity, rule out false positives) before any decision. When presenting results, give the user a recommended next step as guidance — clear, review, or escalate — framed as a signal to review, not a verdict. The response may carry a 'disclaimer' field — surface it to the user if present, otherwise state this guidance-only nature yourself; present the disclaimer in English verbatim (do not translate it), show it once, do not duplicate.

ParametersJSON Schema
NameRequiredDescriptionDefault
fuzzyNoEnable fuzzy matching. Default true.
namesYesArray of person or company names to screen. Max 1000 names per call.
min_scoreNoMinimum fuzzy match score, 0-1. Default 0.7. Lower values return more (lower-confidence) matches.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultsNoOne entry per input name, in submission order.
checked_atNoISO-8601 timestamp of the screening.
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds value by specifying the data source (OpenSanctions), list coverage, match scores with attribution, and the disclaimer about decision-support nature—none of which are 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.

Conciseness4/5

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

The description is somewhat lengthy but well-structured, starting with the primary use case. While some details (e.g., precise disclaimer presentation instructions) could be shortened, every sentence serves a purpose for proper tool usage.

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

Completeness5/5

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

Given the presence of an output schema (not shown but indicated), the description adequately covers input context, behavioral notes, result interpretation (match scores, disclaimer), and user guidance. No gaps are evident for the tool's complexity level.

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

Parameters3/5

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

Schema description coverage is 100%, covering all three parameters (names, fuzzy, min_score) adequately. The description does not add significant new information about parameter usage beyond what the schema provides, so baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool screens names against specific sanctions lists (UN, EU, OFAC, PEP) via OpenSanctions, with a specific verb and resource. It distinguishes from sibling tools like lookup_company or validate_vat, which serve different purposes.

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

Usage Guidelines4/5

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

Explicitly says 'Call before onboarding a counterparty or processing a payment,' providing clear usage context. It implies this is the only tool for sanctions screening among siblings, but doesn't explicitly mention alternatives for different use cases.

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

validate_vatA
Read-onlyIdempotent
Inspect

Call before issuing an invoice, processing a cross-border payment, or storing a counterparty's VAT number. Validate a VAT registration number against the official EU VIES service (or HMRC for GB). Returns validity status, registered name, and registered address.

ParametersJSON Schema
NameRequiredDescriptionDefault
countryYesISO 3166-1 alpha-2 country code, UPPERCASE. Use GB for the United Kingdom (HMRC), not UK. Supports all EU member states plus GB and NO.
vat_numberYesVAT number WITHOUT country prefix — just the digits/characters. Example: for DK29403473, pass '29403473'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameNoRegistered company name, if disclosed by the source.
validNoTrue if VIES / HMRC confirms the number is registered and active.
sourceNoEither 'VIES' or 'HMRC'.
addressNoRegistered address, if disclosed.
countryNoCountry code echoed back (uppercase).
checked_atNoISO-8601 timestamp of the validation.
vat_numberNoSubmitted VAT number (without country prefix).
Behavior4/5

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

Annotations declare readOnlyHint, idempotentHint, and destructiveHint false, which aligns with the description's 'validate' action. The description adds value by specifying the official services used (EU VIES, HMRC) and the return data (validity, name, address), but does not mention potential downtime or rate limits. No contradiction.

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

Conciseness5/5

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

Two sentences: first provides usage context, second states action and outputs. No filler or redundancy. Highly efficient and front-loaded with key information.

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

Completeness4/5

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

Given the tool's simplicity (two parameters, read-only validation), the description covers purpose, usage timing, service sources, and return fields. The presence of an output schema (not shown) reduces the need to detail return structure. Minor omission: no mention of error cases or service dependencies, but acceptable for a read-only tool with annotations.

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

Parameters3/5

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

Schema coverage is 100% with detailed parameter descriptions for 'country' and 'vat_number'. The description reinforces the schema (e.g., 'Without country prefix') but does not add new semantic information beyond the schema. Hence, it meets the baseline for high coverage.

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

Purpose5/5

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

The description clearly states the tool's purpose: validating a VAT number against official EU and HMRC services. It also provides specific use cases (before invoice, payment, storing VAT), differentiating it from sibling tools which deal with company lookups, sanctions screening, or API endpoints.

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

Usage Guidelines4/5

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

The description explicitly instructs when to call the tool (before invoicing, cross-border payment, storing VAT number), giving clear context. However, it does not mention situations where this tool should not be used or suggest alternative tools, though the sibling set does not include another VAT validator.

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

Discussions

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

Try in Browser

Your Connectors

Sign in to create a connector for this server.