Skip to main content
Glama

Fuentio: UK, France & Spain company data from official registries

Server Details

Official UK, France and Spain company checks for AI agents

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
99.9% over 23 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
THEMAGNET-NICHEP-Lab/fuentio-mcp
GitHub Stars
0

TDQS

A4.4/5.0

Scored across 19 tools

Disambiguation4/5

Almost every tool states its purpose plus explicit 'don't use it for X, call Y' routing, which makes the cheap-read vs verify vs report tiers easy to navigate. The weak spots are real overlaps: get_company_history vs what_changed (both 'changes over time', differing mainly in identifier type) and resolve_company/explain_match both dealing with match decisions.

Naming Consistency4/5

Nearly all tools follow verb_noun snake_case (check_vat, search_companies, verify_company, get_evidence, list_coverage). The only deviation is 'what_changed', a question-phrase name sitting alongside get_company_history, which breaks the pattern for two tools that do similar things.

Tool Count4/5

19 tools is on the heavy side, but each maps to a distinct operation (identity, verification, compliance checks, history, evidence, monitoring) rather than redundant variants. A slightly tighter set could fold history/what_changed or receipt/report paths, but nothing looks like filler.

Completeness4/5

The surface covers discovery, identification, matching, verification, sanctions/insolvency/VAT/address checks, evidence, receipts and change monitoring across three countries. Gaps: watch_company has no list/unwatch companion, and there is no filing or accounts retrieval, but these are edge needs an agent can work around or that are explicitly out of scope.

Available Tools

19 tools
check_addressValidate a company's registered addressA
Read-onlyIdempotent
Inspect

Validate a company's registered address against the official address base: France via API Adresse (Base Adresse Nationale, IGN). Use it to check that an address exists and is the company's, or to geolocate it. Don't use it to find companies: call search_companies. Inputs: country and identifier, as lookup_company (e.g. 'FR', '441639465'). Returns: validated (true, false or null with a reason), normalized address, BAN ids, coordinates, precision, confidence, and how many active companies share the address. Limits: 1 unit. Spain not available yet. Read-only.

NameRequiredDescriptionDefault
countryYesISO country code: FR or ES or GB.
identifierYesOfficial ID, as lookup_company: FR SIREN (9 digits), SIRET or VAT; ES Registro Mercantil sheet, e.g. VI-23266. GB: Companies House company number, e.g. 00445790.

Output Schema

NameRequiredDescription
dataYes
metaYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover readOnly/destructive/idempotent/openWorld, but the description adds genuine context beyond them: a cost hint ('Limits: 1 unit'), an availability constraint ('Spain not available yet'), and the meaning of the 'validated' tri-state return. It stops short of full behavioral detail but clearly enriches the annotation profile.

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

Conciseness5/5

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

Front-loads purpose, then organises the rest into labeled Inputs/Returns/Limits sections. Each sentence carries information (source, routing, cost, availability) with 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?

Covers purpose, usage routing, input source, and operational limits. An output schema exists so return values needn't be re-explained, yet the description still summarizes the validated tri-state and payload fields, leaving nothing an agent needs in order to call it correctly.

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 examples, enums, and per-field descriptions, so baseline is 3. The description's only added value over the schema is the cross-reference 'as lookup_company', which is a minor semantic link rather than new format or syntax detail.

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

Purpose5/5

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

States a specific verb+resource (validate a company's registered address) and names the backing data source (API Adresse / Base Adresse Nationale). It also distinguishes itself from 'search_companies', so an agent can tell it apart from siblings without opening the schema.

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

Usage Guidelines5/5

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

Explicitly states two positive use cases (confirm an address exists/is the company's, or geolocate it) and a negative one with a named alternative: 'Don't use it to find companies: call search_companies.' Nothing is left to inference.

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

check_insolvencyInsolvency notices and state of a companyA
Read-onlyIdempotent
Inspect

Check a company's insolvency notices and state: France from BODACC (safeguard, reorganisation, liquidation, plans, closures), Spain from BORME insolvency acts. Use it for credit or supplier checks. Don't use it for sanctions: call screen_company. Inputs: country and identifier, as lookup_company (e.g. 'FR', '441639465'). Returns: state (in_procedure, under_plan, closed, notice_found, none_found, not_covered), procedure, dates, notices with official citations, covered_since. Limits: 1 unit. No notice outside the loaded years is not proof of no procedure. Read-only.

NameRequiredDescriptionDefault
countryYesISO country code: FR or ES or GB.
identifierYesOfficial ID, as lookup_company: FR SIREN (9 digits), SIRET or VAT; ES Registro Mercantil sheet, e.g. VI-23266. GB: Companies House company number, e.g. 00445790.

Output Schema

NameRequiredDescription
dataYes
metaYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive behavior, but the description adds value they don't carry: a cost/rate constraint ('Limits: 1 unit') and a critical coverage caveat ('No notice outside the loaded years is not proof of no procedure') plus the covered_since field. Return states and citations are also disclosed, though some of that overlaps the output schema.

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

Conciseness4/5

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

Labeled sections (use/don't use/Inputs/Returns/Limits) make it scannable and the routing guidance is front-loaded. Slightly long because the Returns enumeration partly restates the output schema, but nearly every sentence carries information.

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 an output schema exists, the description need not explain return values, yet it still covers usage, exclusions, cost limits, and the honest coverage-window caveat. Nothing an agent needs to call this correctly is missing.

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%, with enum and per-country identifier formats already documented, so baseline is 3. The description adds only a light cross-reference ('as lookup_company') and one example pair, which is marginal beyond what the schema provides.

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

Purpose5/5

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

States a specific verb+resource ('Check a company's insolvency notices and state') and enumerates the exact coverage sources (BODACC for France, BORME insolvency acts for Spain) and procedure types, so an agent can distinguish it from siblings like lookup_company or verify_company without opening schemas.

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 gives the intended use case ('credit or supplier checks') and a hard exclusion with the correct alternative ('Don't use it for sanctions: call screen_company'), plus a pointer to lookup_company for identifier conventions. This is the full when/when-not/alternative pattern.

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

check_supplier_listCheck a supplier list (registry check)AInspect

Check a supplier list against the official registers: which suppliers are ok, which need a look and why (e.g. in liquidation since a date, per BODACC), with a proof code each, and a private report link to share. Use it for 2 to 100 suppliers at once, or to read a batch you started. Don't use it for one company: call verify_company. Inputs: rows [{reference, company_name, country, identifier}] (an official ID is best; a name alone counts only with postal_code and street matching one company), or batch_id. Returns: counts by review_state (ok, review, could_not_confirm, not_covered, error), the review rows with reasons, share_url; 'next' when still checking. Limits: 5 units a row (+2 for a name), checks reused 24 h free. A registry check, not KYB or sanctions clearance; no person's name.

NameRequiredDescriptionDefault
rowsNoUp to 100 suppliers. Leave out to read a batch_id.
batch_idNoA batch this key started, e.g. sb_3Kq9…

TDQS

A4.9/5.0
Behavior5/5

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

Annotations only declare the operation profile (readOnlyHint false, non-idempotent, openWorld), which fits a tool that creates a batch. The description adds material context the annotations cannot carry: cost in units per row (+2 for name-only), free reuse of checks for 24 h, the asynchronous 'next' signal while still checking, and explicit scope boundaries ('a registry check, not KYB or sanctions clearance; no person's name').

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?

Front-loaded with purpose and the exclusion, then organized under explicit Inputs / Returns / Limits labels. Dense but every sentence (cost, reuse window, scope disclaimer, async indicator) carries information an agent needs to call it correctly.

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?

No output schema exists, yet the description summarizes the return shape (counts by review_state, review rows with reasons, share_url, 'next'), and it covers cost, limits, exclusions and the batch_id read path. Nothing essential for correct invocation is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, and much of the row guidance is duplicated in the SupplierRow $def. It still adds selection semantics: the mutual alternative between rows and batch_id ('Leave out to read a batch_id'), and the conditional rule that a name alone only resolves with postal_code and street matching one company.

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

Purpose5/5

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

States a specific verb and resource ('Check a supplier list against the official registers') plus the output scope (ok / need a look and why, proof code, share link). It explicitly distinguishes itself from the sibling verify_company, so an agent can route correctly without opening either schema.

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?

Gives a concrete use range ('2 to 100 suppliers at once, or to read a batch you started') and an explicit exclusion with the alternative named ('Don't use it for one company: call verify_company'). When-to-use, when-not-to-use and the substitute tool are all present.

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

check_vatA company's EU VAT number (registration not checked)A
Read-onlyIdempotent
Inspect

Give a company's EU VAT number and how it was obtained. Registration is never checked: the answer links the official VIES page. Use it to fill an invoice or a supplier file. Don't use it as proof of VAT registration: check it on VIES. Inputs: country and identifier, as lookup_company (e.g. 'FR', '441639465'). Returns: number, origin (published or computed), registration_checked false, note, check_url. Limits: 1 unit. Spain: no VAT numbers published. Read-only.

NameRequiredDescriptionDefault
countryYesISO country code: FR or ES or GB.
identifierYesOfficial ID, as lookup_company: FR SIREN (9 digits), SIRET or VAT; ES Registro Mercantil sheet, e.g. VI-23266. GB: Companies House company number, e.g. 00445790.

Output Schema

NameRequiredDescription
dataYes
metaYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations cover read-only and idempotent, but the description adds substantial behavioral context beyond them: it discloses that registration is never checked, that the answer links the official VIES page, that origin can be 'published or computed', and a note field. The 'Spain: no VAT numbers published' data-quality caveat and the '1 unit' cost are useful non-obvious context. It does not contradict the readOnly annotation.

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?

Front-loaded with purpose and non-use case, then Inputs, Returns, Limits sections. Every line earns its place with zero filler; structured labels make it scannable.

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?

Complete for a 2-param, low-complexity lookup. It covers inputs, return fields, the openWorld behavior (VIES link), data-quality limits (Spain), cost, and safety, and an output schema exists so return details needn't be exhaustive.

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% and documents both parameters in detail, so baseline is 3. The description reinforces this by naming country and identifier, giving the example pair ('FR', '441639465'), and cross-referencing sibling tool lookup_company as the source of identifier semantics, which adds navigational value.

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

Purpose5/5

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

The description states a specific verb+resource (give a company's EU VAT number) and clarifies the scope (registration NOT checked, registration_checked false). It distinguishes the tool from what a naive agent would expect, explicitly routing to 'check on VIES' for proof of registration.

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

Usage Guidelines5/5

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

Explicitly states when to use (filling an invoice or supplier file) and when not to use (as proof of VAT registration — check VIES). Names the alternative action directly. Nothing left to inference.

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

explain_matchWhy two records are (or aren't) the same companyA
Read-onlyIdempotent
Inspect

Explain why two register records are, or are not, the same company: today's decision with reason codes and evidence, stored decisions, links, and whether they share one Fuentio entity. Use it after resolve_company or lookup_company when you must justify a match or a rejection. Don't use it to find companies: call resolve_company. Inputs: left and right, Fuentio record IDs (e.g. 'FR-SIREN-441639465', 'FR-LEI-969500F7JLTX36OUI695'). Returns: same_entity, summary, decision (status, band, reasons), stored_decisions, links, uncertainty. Limits: 1 unit. Read-only.

NameRequiredDescriptionDefault
leftYesA Fuentio record ID.
rightYesAnother record ID.

Output Schema

NameRequiredDescription
dataYes
metaYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so safety is covered and the description should not be penalized for restating 'Read-only'. It adds genuinely new behavioral context: the 1-unit cost limit and the fact that stored decisions and links are retrieved, not just today's verdict. It stops short of describing auth requirements or whether stored decisions persist beyond the call.

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 the core purpose, then cleanly labeled Use/Inputs/Returns/Limits blocks with no wasted prose. The Returns enumeration is slightly redundant given a full output schema, which keeps it just short of a 5.

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

Completeness5/5

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

Covers purpose, sequencing, parameter identification, return shape and cost in a compact space. With an output schema present the Returns line is bonus rather than a gap, so nothing an agent needs to invoke the tool correctly is missing.

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% and both parameters already carry descriptions and examples ('A Fuentio record ID', 'Another record ID'). The description's 'Inputs: left and right, Fuentio record IDs' with the same example strings largely duplicates the schema, so this sits at the baseline rather than adding new meaning such as ordering effects or type/format constraints.

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?

Specific verb (explain) plus a precisely scoped resource (whether two register records are the same company), naming exactly what is returned: today's decision, reason codes, evidence, stored decisions, links, and shared-entity status. An agent can distinguish it from resolve_company and the other check_/verify_ siblings without opening any schema.

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?

Explicit sequencing ('Use it after resolve_company or lookup_company') and an explicit exclusion with the alternative named ('Don't use it to find companies: call resolve_company'). Both the when and the when-not are stated with the redirect target.

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

get_company_historySee what changed at a companyA
Read-onlyIdempotent
Inspect

See what changed at a company, and when: versions with the fields that changed (address, status), each with its official source. Use it for changes over time. Don't use it for the current state: call lookup_company. Inputs: country FR or ES or GB; identifier as for lookup_company (441639465); optional id_scheme; page. Returns: versions newest first with source, fetched_at and the fields changed; dated events where the source has them (BORME acts, Companies House filings). meta.history_since says where history starts. Limits: 1 unit; keyless 20 units a day. Read-only. France: from Fuentio's first fetch of the company. Spain: from 2 January 2009. United Kingdom: the latest filings, and every change since Fuentio first held it. Search words: historique, historial, cambios, due diligence.

NameRequiredDescriptionDefault
pageNoVersions page, 10 per page.
detailNosummary: a few key fields; standard (default): the record, long lists shortened; full: everything.standard
countryYesISO country code: FR or ES or GB.
id_schemeNoOptional: force the ID type when it is ambiguous.
identifierYesOfficial ID, as for lookup_company.

Output Schema

NameRequiredDescription
dataYes
metaYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare read-only/idempotent/non-destructive, but the description goes well beyond them: a cost model (1 unit, keyless 20 units/day) and country-specific history depth (France from Fuentio's first fetch, Spain from 2 Jan 2009, UK latest filings plus everything since first held). These are non-obvious operational constraints an agent cannot infer from the schema or 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?

Front-loaded with purpose, then alternative, inputs, returns, limits, and search words in labeled blocks, which makes it skimmable. It is on the long side and 'Read-only' restates the annotation, but nearly every line carries usable information.

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 history/versioning tool with five parameters and an output schema, nothing material is missing. It covers the sibling alternative, the quota cost, per-country history horizons, and the meaning of meta.history_since, so an agent can call it and interpret the result correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents country, identifier, id_scheme, page, and detail. The description adds only one genuinely useful link ('identifier as for lookup_company') and otherwise restates enum values; notably it never mentions the `detail` parameter at all, so it adds little beyond the structured fields.

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

Purpose5/5

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

States a specific verb and resource ('see what changed at a company, and when') and immediately names the discriminating content: versions with the changed fields plus their official source. It explicitly separates itself from lookup_company, so an agent can route between the two without opening either schema.

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?

Gives both the positive case ('Use it for changes over time') and the exclusion ('Don't use it for the current state: call lookup_company'), naming the alternative tool directly. It also lists the supported countries and identifier style, which tells the agent when this tool is even applicable.

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

get_evidenceThe evidence behind a company's factsA
Read-onlyIdempotent
Inspect

Show the evidence behind what Fuentio says about a company: for each field, the value served and every competing value with its source, record, retrieval time, source link and record hash; and the match decision behind each link. Use it to justify an answer in a review or an audit. Don't use it to look a company up: call resolve_company first for its entity_id. Inputs: entity_id (e.g. 'fu_7K3M9Q2XH4PZ'), optional field (name, status, address, legal_form, creation_date, activity), optional as_of 'YYYY-MM-DD'. Returns: evidence, links, decisions, uncertainty, how_to_check. Limits: 1 unit. Read-only.

NameRequiredDescriptionDefault
as_ofNoYYYY-MM-DD.
fieldNoOne field, e.g. status.
entity_idYesA Fuentio entity ID (from resolve_company).

Output Schema

NameRequiredDescription
dataYes
metaYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safety profile is covered. The description adds genuinely new behavioral context beyond that: a cost limit ('1 unit') and an operational constraint. It does not disclose auth needs or pagination, keeping it short of a 5.

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

Conciseness5/5

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

Front-loaded with purpose, then cleanly delimited Inputs/Returns/Limits sections. Every sentence carries distinct information with no repetition or 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?

With an output schema present, the return values need not be explained in prose, and the description still summarizes them. Inputs, usage context, and the unit limit are all covered, so nothing an agent needs to invoke it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description goes further by enumerating the accepted field values (name, status, address, legal_form, creation_date, activity) where the schema only offers 'One field, e.g. status'. It also restates the as_of format and gives an entity_id example, adding meaning 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 gives a specific verb (show) and resource (evidence behind a company's stated facts) and details exactly what that evidence comprises — served value, competing values, sources, hashes, and match decisions. This is far more precise than the sibling names alone, letting an agent distinguish it from lookup_company or explain_match.

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?

It states both when to use it ('justify an answer in a review or an audit') and when not to ('Don't use it to look a company up'), and routes the agent to the prerequisite tool resolve_company for the entity_id. Explicit when/when-not plus a named alternative.

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

get_graphA company's group: GLEIF parents and subsidiariesA
Read-onlyIdempotent
Inspect

Show a company's group: its parent and child companies from GLEIF (direct and ultimate parents), company to company, every edge with its source. Use it to map a company's group. Don't use it to look a company up: call resolve_company first for its entity_id. Inputs: entity_id (e.g. 'fu_7K3M9Q2XH4PZ'), depth 1 or 2. Returns: nodes (companies), edges (from, kind parent_of, to, source, evidence), ownership (signals only; beneficial owners not covered), uncertainty. Limits: 2 units; API key required. No people, no director links. A company without an LEI shows no links. Read-only.

NameRequiredDescriptionDefault
depthNo1 or 2.
entity_idYesA Fuentio entity ID (from resolve_company).

Output Schema

NameRequiredDescription
dataYes
metaYes

TDQS

A5/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnly, idempotent, openWorld, non-destructive), and the description adds real behavioral context on top: cost limits (2 units), API key requirement, that ownership covers only signals and not beneficial owners, that companies without an LEI show no links, and that no people/director links are returned.

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?

Front-loaded with the purpose, then clearly labeled Inputs / Returns / Limits blocks. Each sentence carries distinct information; none is filler or restatement.

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?

Even though an output schema exists, the description pre-empts the key questions for this kind of traversal tool: what nodes and edges mean, evaluation cost, auth requirements, and the LEI/people coverage gaps that would otherwise surprise an agent.

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

Parameters5/5

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

Schema description coverage is already 100% for both parameters, and the description reinforces the entity_id format example and the depth 1-or-2 constraint. The parent_of kind and edge fields it mentions describe returns rather than inputs, so it adds only modest input-side value, landing at the baseline-plus level rather than degrading.

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

Purpose5/5

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

States a specific verb and resource ('Show a company's group: its parent and child companies from GLEIF') with the edge semantics pinned down. It explicitly distinguishes itself from resolve_company by naming the sibling it is not.

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

Usage Guidelines5/5

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

Gives both when-to-use ('Use it to map a company's group') and when-not ('Don't use it to look a company up') plus the prerequisite step ('call resolve_company first for its entity_id'). Nothing is left to inference.

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

get_receiptGet a verification receipt by proof codeA
Read-onlyIdempotent
Inspect

Give back the Fuentio receipt of a verification by its proof code: outcome and reasons, status, legal form, registered office, insolvency (what was searched), source, check time, hash and the public link to check it. Use it when the user asks for a receipt or proof of a check. Always ask the user first: 'Normal or detailed receipt?', then call it. Use the proof code from verify_company. Don't use it to run a new check: call verify_company. Inputs: proof_code (e.g. 'FUE-FR-20261015-DZ7TP9', any case; a lookup's meta.receipt.request_id also works, same key), format 'normal' or 'detailed'. Returns: data.markdown, the branded receipt: show it as is; data.text, plain text. Limits: free; 30 a minute. The key that ran the check also sees its reference; anyone else, the public view. Read-only.

NameRequiredDescriptionDefault
formatYesAsk the user first: 'normal' (the receipt) or 'detailed' (also every check, the signals, changes, sources and the full hash re-checked).
proof_codeYesThe proof code verify_company returned (FUE-XX-YYYYMMDD-XXXXXX; any case or spacing), or a lookup's meta.receipt.request_id.

Output Schema

NameRequiredDescription
dataYes
metaYes

TDQS

A4.8/5.0
Behavior5/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 real context on top: a 30-per-minute rate limit, that the operation is free, and a meaningful authorization nuance ('The key that ran the check also sees its reference; anyone else, the public view'). That access-scoping detail is behavioral information an agent cannot derive from the schema or 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?

Dense but organized with Inputs/Returns/Limits labels, so an agent can scan to the part it needs. It leads with the return payload rather than the purpose action, and a few clauses restate schema content, which slightly dilutes front-loading.

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 two-parameter read tool with annotations and an output schema, the description is fully sufficient: it explains what is returned, how to render it ('show it as is'), the rate limit, and the access model. Nothing needed to call it correctly is missing.

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% and the enum already documents the two formats, so the baseline is 3. The description adds a concrete proof-code example, confirms case-insensitivity, and clarifies that a lookup's meta.receipt.request_id is 'the same key' — the equivalence claim is genuinely useful even though the schema hints at it.

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

Purpose5/5

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

States a specific verb and resource ('give back the Fuentio receipt of a verification by its proof code') and immediately enumerates the payload, so the agent knows exactly what comes back. It explicitly distinguishes itself from the sibling 'verify_company', which is the closest confusable tool.

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?

Gives when to use ('when the user asks for a receipt or proof of a check'), when NOT to use ('Don't use it to run a new check: call verify_company'), and even the required interaction step ('Always ask the user first: Normal or detailed receipt?'). The alternative is named explicitly, leaving nothing to inference.

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

list_coverageList covered countries and ID formatsA
Read-onlyIdempotent
Inspect

List the countries, ID formats and official sources Fuentio covers. Free, no key. Use it first when unsure whether a country or ID format is supported, or to explain coverage. Don't use it to check a company: call lookup_company or search_companies. Inputs: none. Example: list_coverage(). Returns: per country, status (available or planned), coverage level, ID formats with real examples and whether lookup works, regional registers, and sources with licence and update frequency. Limits: 0 units. Read-only. Covered today: France, Spain and United Kingdom. Search words: company registry, KYB, SIREN, RCS, Annuaire des Entreprises, société; BORME, Registro Mercantil, empresa, sociedad; Companies House, company number, Ltd, plc, LLP.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
dataYes
metaYes

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the annotations' readOnly/idempotent hints, it discloses cost and auth ('Free, no key'), the quota ('Limits: 0 units'), the return shape per country (status, coverage level, ID formats with real examples, regional registers, sources with licence and update frequency), and the current live coverage set (France, Spain, United Kingdom). These are exactly the traits annotations cannot convey.

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 purpose and routing, then labelled sections (Inputs, Returns, Limits, Search words) that make it scannable. The trailing multilingual keyword block is long and largely redundant for an agent reader, which costs it the top score.

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?

Even though an output schema exists, the description pre-frames its contents, adds quota and coverage-state context the schema cannot express, and leaves no ambiguity about how or when to call a zero-parameter tool. Nothing needed for correct invocation is missing.

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

Parameters4/5

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

The tool takes no parameters, so the baseline is 4. The description confirms this explicitly ('Inputs: none') and supplies a call example, which is the most an agent needs for a zero-argument tool.

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

Purpose5/5

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

States a specific verb and resource — listing the countries, ID formats and official sources covered — with a clear scope boundary ('Fuentio covers'). It explicitly disambiguates from siblings by name, so an agent can distinguish it from lookup_company or search_companies without opening either schema.

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?

Gives explicit when-to-use ('Use it first when unsure whether a country or ID format is supported, or to explain coverage') and when-not with named alternatives ('Don't use it to check a company: call lookup_company or search_companies'). This is a complete routing rule.

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

lookup_companyLook up a company by official IDA
Read-onlyIdempotent
Inspect

Look up one company in its official register by ID: status, address, legal form, activity, source and check date. Use it when you have an official ID. Don't use it with a name: call search_companies first. Inputs: country FR or ES or GB; identifier. FR: SIREN 441639465, SIRET 44163946500091, VAT FR63441639465, LEI 969500F7JLTX36OUI695. ES: Registro Mercantil sheet VI-23266, LEI 549300EEJH4FEPDBBR25 (no NIF/CIF). GB: company number 00445790, LEI 2138002P5RNKC5W2JZ46. Optional: id_scheme (if ambiguous), format (json, csv, tsv, markdown, html, xml, ndjson; xlsx or parquet as a 24 h link). Returns: the record, a one-line summary, meta with source, source_url, last_verified_at. Limits: 1 unit (also a valid ID not found); keyless 20/day. France: insolvency from BODACC since 2008. BODACC events and dated capital. Public contracts won since 2024 (DECP, weekly). Spain: BORME acts since 2 January 2009. Every BORME act as an event. UK: no officers or PSCs. ISINs and BICs from GLEIF, by LEI. No person's name in any answer. For KYB steps, supplier checks, due diligence: SIREN, RCS, Annuaire des Entreprises, société; BORME, Registro Mercantil, empresa, sociedad; Companies House, company number, Ltd, plc, LLP.

NameRequiredDescriptionDefault
detailNosummary: a few key fields; standard (default): the record, long lists shortened; full: everything.standard
formatNoAnswer format: json (default); csv, tsv, markdown, html (table), xml or ndjson come back inline, one row per company with source and fetched_at; xlsx or parquet as a download link valid 24 hours. Same units; search takes limit (up to 100 rows) with a non-json format.json
countryYesISO country code: FR or ES or GB.
id_schemeNoOptional: force the ID type when it is ambiguous.
identifierYesOfficial ID. FR: SIREN (9 digits), SIRET (14) or VAT (FR + 11). ES: Registro Mercantil sheet, e.g. VI-23266. GB: Companies House company number, e.g. 00445790.

Output Schema

NameRequiredDescription
dataYesThe record; a few key fields with detail=summary (when enabled); null when meta.export holds it.
metaYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations cover safety (readOnly/idempotent/non-destructive), yet the description adds genuinely new behavior: billing ('1 unit, also a valid ID not found'), a rate limit ('keyless 20/day'), and per-country coverage ceilings (BODACC since 2008, BORME since 2 Jan 2009, no UK officers or PSCs). The privacy rule ('No person's name in any answer') is a non-obvious output constraint that is not in any structured field.

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?

Purpose and the sibling alternative are front-loaded in the first two sentences, and the Inputs/Limits blocks are scannable. It runs long, though, and the closing keyword list ('SIREN, RCS, Annuaire des Entreprises, société; BORME...') is closer to search-term padding than operating instruction.

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 five-parameter lookup with an output schema, everything an agent needs to call it correctly is present: which countries, accepted ID schemes, format trade-offs including the 24-hour link for xlsx/parquet, cost and quota, and per-registry coverage gaps. The return-shape note is redundant with the output schema but not harmful.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3 and the description largely restates identifier formats already documented per parameter. It does add a useful ambiguity signal ('id_scheme if ambiguous'), but it also says ES has 'no NIF/CIF' while the id_scheme enum still offers ES_NIF, which muddies rather than clarifies that parameter.

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

Purpose5/5

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

States a specific verb and resource ('Look up one company in its official register by ID') and enumerates what comes back (status, address, legal form, activity, source, check date). It also draws the boundary against the sibling search_companies by requiring an official ID rather than a name, so the agent can pick without opening schemas.

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?

Explicit when-to-use ('when you have an official ID'), explicit when-not ('Don't use it with a name: call search_companies first'), and it names the correct alternative. It further maps real-world colloquialisms (SIREN, RCS, BORME, Companies House, Ltd, plc) to the tool, reducing misrouting.

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

report_issueReport a wrong or missing answerAInspect

Report an answer you believe is wrong or missing, so Fuentio checks it against the official source. Use it when a result contradicts an official document you hold. Don't use it to ask questions: call the lookup tools. Inputs: subject (entity ID, record ID such as 'FR-SIREN-441639465', or tool name), category (wrong_data, wrong_link, missing_data, wrong_status, other), message. Returns: issue_id, status 'open'. Limits: free; API key required; 20 reports per key per day.

NameRequiredDescriptionDefault
messageYesWhat you expected and what you got.
subjectYesEntity ID, record ID or tool name.
categoryYes

Output Schema

NameRequiredDescription
dataYes
metaYes

TDQS

A4.9/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses that reporting is free, requires an API key, and is rate-limited to 20 reports per key per day, plus the exact return payload (issue_id, status 'open'). The annotations only flag non-read-only, open-world, non-idempotent; the description adds the operational constraints an agent actually needs.

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?

Front-loaded purpose followed by tightly labeled Inputs/Returns/Limits blocks. No filler sentences; each line delivers a distinct fact an agent needs before calling.

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 3-param mutation with an output schema present, the definition covers trigger, exclusions, all inputs, return shape, and operational limits. Nothing required to invoke it correctly is missing.

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 67%, and the description compensates by restating all three inputs with meaning: subject accepts an entity ID, record ID (with a concrete 'FR-SIREN-441639465' example) or a tool name, and it enumerates the five category values. It adds useful disambiguation over the schema, though the category values merely repeat the enum.

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

Purpose5/5

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

States a specific verb and resource ('Report an answer you believe is wrong or missing') and names the downstream action ('Fuentio checks it against the official source'). It is immediately distinguishable from all sibling lookup/verification tools because it is a write-back channel rather than a 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/5

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

Gives an explicit trigger ('Use it when a result contradicts an official document you hold') and an explicit exclusion ('Don't use it to ask questions: call the lookup tools'). Both the when and the when-not are stated, with the alternative named.

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

resolve_companyIs this the same company? (match with evidence)A
Read-onlyIdempotent
Inspect

Decide whether a company you know (an official ID, or a name with a postcode or town) is a company in the official registers, with evidence: candidates each with a decision, linked, possible or rejected, and the reasons. Use it to match a supplier or customer record to a register record. Don't use it to read a company you already identified: call lookup_company. Inputs: country FR or ES or GB; name ('Renault', postal_code '92100') and/or identifier (441639465); optional id_scheme, locality, limit (1-10). Returns: outcome (linked, possible_match, no_match), uncertainty, best, candidates with entity_id, reason codes and evidence. Limits: 2 units. Only an official ID links: a name, even with an address, is never proof. Read-only, nothing stored.

NameRequiredDescriptionDefault
nameNoThe company's name as you have it.
limitNoCandidates.
countryYesISO country code: FR or ES or GB.
localityNo
id_schemeNoOptional: force the ID type.
identifierNoAn official ID, if you have one: the only thing that links exactly.
postal_codeNo

Output Schema

NameRequiredDescription
dataYes
metaYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already establish read-only, idempotent, open-world, and non-destructive behavior. The description adds crucial operational context beyond annotations: a 2-unit limit, the rule that only an official ID links exactly while a name plus address is never proof, and confirmation that nothing is stored.

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 purpose is front-loaded, then Inputs, Returns, and Limits are cleanly sectioned. Every part is brief and useful, with only minor overlap with the output schema.

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 7-parameter, open-world matching tool with a full output schema, the description covers country scope, input expectations, return shape, and limits. Nothing an agent needs to invoke it correctly is missing.

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 schema coverage at 71%, the description usefully groups and exemplifies the key inputs (country, name, postal_code, identifier, optional id_scheme, locality, limit) and clarifies the and/or relationship between name and identifier. It duplicates a few schema descriptions and leaves locality/id_scheme only lightly explained, so it adds value but not full compensation.

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

Purpose5/5

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

States a specific decision verb and resource: deciding whether a known company is in official registers, with evidence and candidate outcomes. It explicitly distinguishes itself from lookup_company, so an agent can select it without opening either schema.

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

Usage Guidelines5/5

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

Explicitly says to use it for matching a supplier or customer record to a register record, and says not to use it to read a company already identified, directing to lookup_company. That gives clear when, when-not, and alternative.

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

review_reportA review-ready report on a companyA
Read-onlyIdempotent
Inspect

Produce one review-ready report on a company: identity and links with reasons, facts with sources, last year's changes and gaps, and every check at once (insolvency, sanctions, address, VAT, and in France the public contracts won). Use it for the registry part of a KYB or supplier review you must file (not full KYB: no UBO, PEP or adverse-media checks). Don't use it for one quick fact: call lookup_company. Inputs: country and identifier, as lookup_company (e.g. 'FR', '441639465'). Returns: company, facts, links, decisions, changes_last_year, modules, gaps, uncertainty, sha256, markdown. Limits: 8 units; API key required. Read-only.

NameRequiredDescriptionDefault
countryYesISO country code: FR or ES or GB.
identifierYesOfficial ID, as lookup_company: FR SIREN (9 digits), SIRET or VAT; ES Registro Mercantil sheet, e.g. VI-23266. GB: Companies House company number, e.g. 00445790.

Output Schema

NameRequiredDescription
dataYes
metaYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is largely covered. The description still adds real operational context beyond them: a cost ceiling ('8 units') and an auth requirement ('API key required'). It stops short of richer behavior like latency, caching, or whether the report is persisted, so it is not a 5.

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

Conciseness5/5

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

Front-loaded with the core verb and payload, then cleanly segmented into usage, exclusion, Inputs, Returns, and Limits lines. Dense but every clause carries information, with no filler or restated title.

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?

An output schema exists, yet the description still names the top-level return fields (company, facts, links, decisions, changes_last_year, modules, gaps, uncertainty, sha256, markdown), plus the two parameters, the usage boundary, the cost limit and the auth requirement. Nothing an agent needs to decide or invoke is missing.

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% and both parameters are documented inline (enum values, SIREN/SIRET/VAT formats, examples). The description only adds a cross-reference that the inputs work 'as lookup_company' with the same format — marginal added meaning, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Produce one review-ready report on a company') and enumerates the report's contents (identity, facts with sources, changes, all checks at once). It explicitly distinguishes itself from siblings by naming lookup_company as the alternative for a single fact, so an agent can route without opening the schema.

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?

Gives explicit when-to-use ('registry part of a KYB or supplier review you must file'), explicit exclusions ('not full KYB: no UBO, PEP or adverse-media checks'), and an explicit alternative with its triggering condition ('Don't use it for one quick fact: call lookup_company'). Both the positive and negative cases are covered.

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

screen_companyScreen a company against sanctions listsA
Read-onlyIdempotent
Inspect

Screen a company's own names against sanctions lists: EU Financial Sanctions File, UK Sanctions List, OFAC SDN list, France's registre des gels. Use it as the sanctions-list step of onboarding a supplier or customer (not full KYB). Don't use it to identify a company: call resolve_company or lookup_company first. Inputs: country and identifier, as lookup_company (e.g. 'FR', '441639465'). Returns: result 'possible_match' (list, entry, score, reasons, listing date, legal act, official link), 'no_match_found' or 'not_checked', the list versions, and a note. Limits: 2 units; API key required. A possible match is not proof; no match is never 'clear'. Read-only.

NameRequiredDescriptionDefault
countryYesISO country code: FR or ES or GB.
identifierYesOfficial ID, as lookup_company: FR SIREN (9 digits), SIRET or VAT; ES Registro Mercantil sheet, e.g. VI-23266. GB: Companies House company number, e.g. 00445790.

Output Schema

NameRequiredDescription
dataYes
metaYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already cover readOnly/idempotent/non-destructive, but the description goes well beyond them: it discloses a metered cost ('2 units'), an auth requirement ('API key required'), and crucial interpretation semantics ('A possible match is not proof; no match is never clear'). That last point materially changes how an agent reports results and is not derivable from any structured field.

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?

Labeled sections (Inputs / Returns / Limits) front-load the purpose and routing rule, and every sentence carries distinct information: routing, cost, auth, output states, and interpretation caveat. No filler or restated name/title.

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 the tool's three possible result states and external list dependencies, the description covers inputs, outputs (including the 'not_checked' state and list versions), cost, auth, and the critical caveat about match interpretation. An output schema exists, and the description still summarizes results usefully rather than being redundant.

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% and the enum is documented in the schema, so the schema does the heavy lifting. The description adds only a cross-reference ('as lookup_company') and a format example, which is a marginal gain over the schema text. Baseline 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?

Starts with a precise verb+resource ('Screen a company's own names against sanctions lists') and enumerates the four specific lists consulted. It also explicitly distinguishes itself from the identification siblings (resolve_company, lookup_company), so an agent can route correctly without opening any schema.

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?

Names the exact pipeline step ('sanctions-list step of onboarding a supplier or customer'), explicitly scopes it as 'not full KYB', and gives a when-not with the alternative: 'Don't use it to identify a company: call resolve_company or lookup_company first.' This is full when/when-not/alternative coverage.

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

search_companiesSearch companies by nameA
Read-onlyIdempotent
Inspect

Find companies by name in the official registers of France, Spain and United Kingdom, 10 per page. Use it when you know a name but no ID, then call lookup_company or verify_company with an ID from the results. Don't use it when you already have an official ID. Inputs: country FR or ES or GB; query, 2 to 200 characters ('telefonica'). Optional: postal_code, locality, status, jurisdiction (regional registers), page, format; limit (up to 100 rows) with a file format. Returns: best match first, each with match.score (0-1) and reasons, name, status, address, IDs, provenance; meta.next_page. Limits: 2 units a page; files 2 per started 25 rows. Read-only. France: insolvency from BODACC since 2008. BODACC events and dated capital. Public contracts won since 2024 (DECP, weekly). Spain: BORME acts since 2 January 2009. Every BORME act as an event. UK: no officers or PSCs. ISINs and BICs from GLEIF, by LEI. No person's name in any answer. Search words: SIREN, RCS, Annuaire des Entreprises, société; BORME, Registro Mercantil, empresa, sociedad; Companies House, company number, Ltd, plc, LLP, KYB, supplier check.

NameRequiredDescriptionDefault
pageNoResults page, 10 per page.
limitNoRows in one file, up to 100, with a non-json format only. 2 units per started 25 rows (100 rows = 8 units).
queryYesCompany name, 2 to 200 characters.
formatNoAnswer format: json (default); csv, tsv, markdown, html (table), xml or ndjson come back inline, one row per company with source and fetched_at; xlsx or parquet as a download link valid 24 hours. Same units; search takes limit (up to 100 rows) with a non-json format.json
statusNoOnly companies with this status.
countryYesISO country code: FR or ES or GB.
localityNoRegistered-office town filter (Spain).
postal_codeNoRegistered-office postal code filter.
jurisdictionNoOptional ISO 3166-2 region to search in, for countries with regional registers (list_coverage lists them).

Output Schema

NameRequiredDescription
dataYes
metaYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare read-only, open-world, idempotent, and non-destructive behavior. The description adds substantial context beyond annotations: unit costs per page and per file rows, country-specific data coverage and vintage, UK limitations on officers/PSCs, GLEIF ISIN/BIC sourcing, and the no-person-name constraint.

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 front-loaded with purpose and routing, then structured as inputs, returns, limits, country caveats, and search terms. It is appropriately detailed for a complex multi-country search tool, but the trailing keyword list and some schema-repetitive details could be trimmed.

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 nine parameters, output schema, and cross-country complexity, the description is complete enough to invoke correctly. It covers when to use it, alternatives, required and optional inputs, return-shape highlights, cost limits, data coverage caveats, and privacy constraints.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters, including query length, country enum, page size, format behavior, and limit/unit rules. The description groups inputs and repeats key constraints, but adds little semantic detail 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/5

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

States a specific verb and resource: find companies by name in official registers for France, Spain, and the UK. It also distinguishes this from ID-based lookup, so an agent can tell it apart from sibling tools such as lookup_company or verify_company.

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

Usage Guidelines5/5

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

Explicitly says to use it when you know a name but no ID, then call lookup_company or verify_company with an ID from the results. It also explicitly says not to use it when an official ID is already known, which is exactly the routing guidance an agent needs.

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

verify_companyVerify a company (registry check)A
Read-only
Inspect

Verify a company against its official register, for onboarding or before paying or signing: an outcome with reasons, checks, warning signals and a proof code you can show an auditor. A registry check, not full KYB. Use it to decide about a company. Don't use it for a cheap single read (lookup_company) or with a name (call search_companies first). Inputs: country FR or ES or GB; identifier as for lookup_company (441639465); optional id_scheme; optional reference (your case id). Returns: outcome (verified, partial, unverified; open insolvency never verified) + reasons, checks, signals (present, none_found, not_covered), recent changes, provenance, proof code (FUE-…). Limits: 5 units (1 if not found); keyless 20/day. Stored 24 months. France: insolvency from BODACC since 2008. BODACC events and dated capital. Public contracts won since 2024 (DECP, weekly). Spain: BORME acts since 2 January 2009. Every BORME act as an event. UK: no officers or PSCs. ISINs and BICs from GLEIF, by LEI. No person's name in any answer. Search words: KYB, KYC, verify supplier, vérifier une société, verificar empresa.

NameRequiredDescriptionDefault
detailNosummary: a few key fields; standard (default): the record, long lists shortened; full: everything.standard
countryYesISO country code: FR or ES or GB.
id_schemeNoOptional: force the ID type.
referenceNoOptional: your own case id, stored with the result.
identifierYesOfficial ID: FR SIREN or SIRET; ES Registro Mercantil sheet from search_companies. GB: Companies House company number, e.g. 00445790. Never a name.

Output Schema

NameRequiredDescription
dataYes
metaYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, destructiveHint=false, and idempotentHint=false. The description adds substantial context beyond those annotations: outcomes such as open insolvency never verifying, rate/cost limits (5 units, keyless 20/day), 24-month storage, country-specific coverage gaps, and the no-person-name constraint.

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 dense but front-loaded: purpose first, then usage, inputs, returns, limits, and coverage. Every section adds actionable information for a complex verification tool, with no filler beyond useful search terms.

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, the description covers purpose, alternatives, required inputs, outcome semantics, limits, and country-specific coverage. Output schema exists, so the brief return summary is sufficient and appropriately augments rather than duplicates it.

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

Parameters4/5

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

Schema description coverage is 100%, so the schema already documents all five parameters. The description still adds useful semantics, especially that identifier is an official ID and "Never a name," and that reference is the caller's own case id stored with the result.

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

Purpose5/5

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

States a specific verb and resource: "Verify a company against its official register," and explicitly scopes it as "A registry check, not full KYB." It also distinguishes the tool from siblings by naming lookup_company and search_companies as alternatives for different cases.

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?

Gives explicit use cases (onboarding, before paying or signing, deciding about a company) and explicit exclusions: don't use for a cheap single read, use lookup_company; don't use with a name, call search_companies first. This is clear when-to-use and 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.

watch_companyWatch a company for changes (signed webhooks)AInspect

Watch a company: when its official records change, Fuentio POSTs the changes, signed, to your https endpoint. Use it to monitor a supplier or customer. Don't use it for a one-off check: call what_changed. Inputs: entity_id (from resolve_company), callback_url (your https endpoint; private or local addresses are refused). Returns: watch_id, signing_secret (shown once) and how to verify each POST. Limits: 1 unit; API key required; free plan 3 watches.

NameRequiredDescriptionDefault
entity_idYesA Fuentio entity ID (from resolve_company).
callback_urlYesYour https endpoint.

Output Schema

NameRequiredDescription
dataYes
metaYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare the generic profile (readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false). The description adds genuinely new behavioral context: signing_secret is shown once, private/local callback addresses are refused, API key required, 1 unit cost, and a 3-watch free-plan cap.

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-loads what the tool does, then routes to the alternative, then the Inputs/Returns/Limits blocks. Every sentence carries information, though the compressed Inputs/Returns/Limits enumeration is slightly dense rather than maximally economical.

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?

An output schema exists so return values needn't be spelled out, yet the description still flags the critical one-time secret. Covers mechanism, cost, auth, callback constraints, and the sibling alternative – nothing an agent needs to invoke it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds real meaning beyond the schema: entity_id must come from resolve_company, and callback_url carries a hard constraint (private or local addresses are refused) that the schema's 'Your https endpoint' does not state.

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

Purpose5/5

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

States a specific verb and resource ('Watch a company') plus the operational mechanism (signed POSTs to your https endpoint when official records change). It explicitly names the sibling it is not (what_changed) for one-off checks, so an agent can distinguish it without reading either schema.

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?

Gives a positive trigger ('monitor a supplier or customer') and an explicit exclusion with the alternative to use instead ('Don't use it for a one-off check: call what_changed'). Nothing is left to inference.

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

what_changedWhat changed at a company since a dateA
Read-onlyIdempotent
Inspect

List what changed at a company since a date, from every official record Fuentio holds for it: status, name, address, legal form, and the source's dated events (BORME acts), each with its source and evidence. Use it to review a supplier or customer since your last check. Don't use it for the current state: call lookup_company. Inputs: entity_id (from resolve_company, e.g. 'fu_7K3M9Q2XH4PZ'), since 'YYYY-MM-DD', optional until. Returns: changes (type, old/new or added/removed, observed_at or effective_date, source, evidence), gaps (days not loaded, sources not checked since), uncertainty. Limits: 1 unit. A gap is never reported as no change. Read-only.

NameRequiredDescriptionDefault
sinceYesYYYY-MM-DD.
untilNoYYYY-MM-DD; default today.
entity_idYesA Fuentio entity ID (from resolve_company).

Output Schema

NameRequiredDescription
dataYes
metaYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive), and the description adds substantive context beyond them: a cost limit ('1 unit'), the critical invariant that 'a gap is never reported as no change', and the fact that gaps and uncertainty are part of the response. These are exactly the operational caveats an agent needs before trusting the result.

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

Conciseness4/5

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

Uses a labeled structure (purpose, use cases, Inputs/Returns/Limits) that front-loads the action and keeps each block tight. The opening sentence is slightly overloaded with the record-type enumeration, and the Returns block partly duplicates the output schema, but there is 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?

Despite an output schema existing, the description supplies the semantics that matter most – gap handling, uncertainty signaling, and a cost unit – leaving no ambiguity about how to interpret or trust results. Complete for a read-only change-audit tool.

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% – entity_id, since, and until all carry their own descriptions and examples. The description restates the same facts (entity_id 'from resolve_company' with the fu_ prefix example, date format, until defaulting to today) without adding syntax or constraint detail beyond the schema, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource with scope ('List what changed at a company since a date') and enumerates the record types covered (status, name, address, legal form, BORME acts). It explicitly names the sibling it is not (lookup_company), so an agent can route without opening either schema.

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?

Gives an explicit when ('review a supplier or customer since your last check') and an explicit when-not ('Don't use it for the current state'), plus the alternative to call instead (lookup_company). Nothing is left to inference.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Addedcheck_supplier_list
  2. 10 tool updates
    • Changedcheck_address4 fields changed
      • changedInput schema / properties / country / description
        Previous value: -"ISO country code: FR or ES."New value: +"ISO country code: FR or ES or GB."
      • changedInput schema / properties / country / enum
        Previous value: -[
        -  "FR",
        -  "ES"
        -]New value: +[
        +  "FR",
        +  "ES",
        +  "GB"
        +]
      • changedInput schema / properties / identifier / description
        Previous value: -"Official ID, as lookup_company: FR SIREN (9 digits), SIRET or VAT; ES Registro Mercantil sheet, e.g. VI-23266."New value: +"Official ID, as lookup_company: FR SIREN (9 digits), SIRET or VAT; ES Registro Mercantil sheet, e.g. VI-23266. GB: Companies House company number, e.g. 00445790."
      • changedInput schema / properties / identifier / examples
        Previous value: -[
        -  "441639465",
        -  "VI-23266"
        -]New value: +[
        +  "441639465",
        +  "VI-23266",
        +  "00445790"
        +]
    • Changedcheck_insolvency4 fields changed
      • changedInput schema / properties / country / description
        Previous value: -"ISO country code: FR or ES."New value: +"ISO country code: FR or ES or GB."
      • changedInput schema / properties / country / enum
        Previous value: -[
        -  "FR",
        -  "ES"
        -]New value: +[
        +  "FR",
        +  "ES",
        +  "GB"
        +]
      • changedInput schema / properties / identifier / description
        Previous value: -"Official ID, as lookup_company: FR SIREN (9 digits), SIRET or VAT; ES Registro Mercantil sheet, e.g. VI-23266."New value: +"Official ID, as lookup_company: FR SIREN (9 digits), SIRET or VAT; ES Registro Mercantil sheet, e.g. VI-23266. GB: Companies House company number, e.g. 00445790."
      • changedInput schema / properties / identifier / examples
        Previous value: -[
        -  "441639465",
        -  "VI-23266"
        -]New value: +[
        +  "441639465",
        +  "VI-23266",
        +  "00445790"
        +]
    • Changedcheck_vat4 fields changed
      • changedInput schema / properties / country / description
        Previous value: -"ISO country code: FR or ES."New value: +"ISO country code: FR or ES or GB."
      • changedInput schema / properties / country / enum
        Previous value: -[
        -  "FR",
        -  "ES"
        -]New value: +[
        +  "FR",
        +  "ES",
        +  "GB"
        +]
      • changedInput schema / properties / identifier / description
        Previous value: -"Official ID, as lookup_company: FR SIREN (9 digits), SIRET or VAT; ES Registro Mercantil sheet, e.g. VI-23266."New value: +"Official ID, as lookup_company: FR SIREN (9 digits), SIRET or VAT; ES Registro Mercantil sheet, e.g. VI-23266. GB: Companies House company number, e.g. 00445790."
      • changedInput schema / properties / identifier / examples
        Previous value: -[
        -  "441639465",
        -  "VI-23266"
        -]New value: +[
        +  "441639465",
        +  "VI-23266",
        +  "00445790"
        +]
    • Changedget_company_history3 fields changed
      • changedInput schema / properties / country / description
        Previous value: -"ISO country code: FR or ES."New value: +"ISO country code: FR or ES or GB."
      • changedInput schema / properties / country / enum
        Previous value: -[
        -  "FR",
        -  "ES"
        -]New value: +[
        +  "FR",
        +  "ES",
        +  "GB"
        +]
      • changedInput schema / properties / id_scheme / anyOf
        Previous value: -[
        -  {
        -    "enum": [
        -      "FR_SIREN",
        -      "FR_SIRET",
        -      "EU_VAT",
        -      "LEI",
        -      "ES_RM_HOJA",
        -      "ES_NIF"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "enum": [
        +      "FR_SIREN",
        +      "FR_SIRET",
        +      "EU_VAT",
        +      "LEI",
        +      "ES_RM_HOJA",
        +      "ES_NIF",
        +      "GB_COMPANY_NUMBER"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedlookup_company5 fields changed
      • changedInput schema / properties / country / description
        Previous value: -"ISO country code: FR or ES."New value: +"ISO country code: FR or ES or GB."
      • changedInput schema / properties / country / enum
        Previous value: -[
        -  "FR",
        -  "ES"
        -]New value: +[
        +  "FR",
        +  "ES",
        +  "GB"
        +]
      • changedInput schema / properties / id_scheme / anyOf
        Previous value: -[
        -  {
        -    "enum": [
        -      "FR_SIREN",
        -      "FR_SIRET",
        -      "EU_VAT",
        -      "LEI",
        -      "ES_RM_HOJA",
        -      "ES_NIF"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "enum": [
        +      "FR_SIREN",
        +      "FR_SIRET",
        +      "EU_VAT",
        +      "LEI",
        +      "ES_RM_HOJA",
        +      "ES_NIF",
        +      "GB_COMPANY_NUMBER"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / identifier / description
        Previous value: -"Official ID. FR: SIREN (9 digits), SIRET (14) or VAT (FR + 11). ES: Registro Mercantil sheet, e.g. VI-23266."New value: +"Official ID. FR: SIREN (9 digits), SIRET (14) or VAT (FR + 11). ES: Registro Mercantil sheet, e.g. VI-23266. GB: Companies House company number, e.g. 00445790."
      • changedInput schema / properties / identifier / examples
        Previous value: -[
        -  "441639465",
        -  "VI-23266"
        -]New value: +[
        +  "441639465",
        +  "VI-23266",
        +  "00445790"
        +]
    • Changedresolve_company2 fields changed
      • changedInput schema / properties / country / description
        Previous value: -"ISO country code: FR or ES."New value: +"ISO country code: FR or ES or GB."
      • changedInput schema / properties / country / enum
        Previous value: -[
        -  "FR",
        -  "ES"
        -]New value: +[
        +  "FR",
        +  "ES",
        +  "GB"
        +]
    • Changedreview_report4 fields changed
      • changedInput schema / properties / country / description
        Previous value: -"ISO country code: FR or ES."New value: +"ISO country code: FR or ES or GB."
      • changedInput schema / properties / country / enum
        Previous value: -[
        -  "FR",
        -  "ES"
        -]New value: +[
        +  "FR",
        +  "ES",
        +  "GB"
        +]
      • changedInput schema / properties / identifier / description
        Previous value: -"Official ID, as lookup_company: FR SIREN (9 digits), SIRET or VAT; ES Registro Mercantil sheet, e.g. VI-23266."New value: +"Official ID, as lookup_company: FR SIREN (9 digits), SIRET or VAT; ES Registro Mercantil sheet, e.g. VI-23266. GB: Companies House company number, e.g. 00445790."
      • changedInput schema / properties / identifier / examples
        Previous value: -[
        -  "441639465",
        -  "VI-23266"
        -]New value: +[
        +  "441639465",
        +  "VI-23266",
        +  "00445790"
        +]
    • Changedscreen_company4 fields changed
      • changedInput schema / properties / country / description
        Previous value: -"ISO country code: FR or ES."New value: +"ISO country code: FR or ES or GB."
      • changedInput schema / properties / country / enum
        Previous value: -[
        -  "FR",
        -  "ES"
        -]New value: +[
        +  "FR",
        +  "ES",
        +  "GB"
        +]
      • changedInput schema / properties / identifier / description
        Previous value: -"Official ID, as lookup_company: FR SIREN (9 digits), SIRET or VAT; ES Registro Mercantil sheet, e.g. VI-23266."New value: +"Official ID, as lookup_company: FR SIREN (9 digits), SIRET or VAT; ES Registro Mercantil sheet, e.g. VI-23266. GB: Companies House company number, e.g. 00445790."
      • changedInput schema / properties / identifier / examples
        Previous value: -[
        -  "441639465",
        -  "VI-23266"
        -]New value: +[
        +  "441639465",
        +  "VI-23266",
        +  "00445790"
        +]
    • Changedsearch_companies2 fields changed
      • changedInput schema / properties / country / description
        Previous value: -"ISO country code: FR or ES."New value: +"ISO country code: FR or ES or GB."
      • changedInput schema / properties / country / enum
        Previous value: -[
        -  "FR",
        -  "ES"
        -]New value: +[
        +  "FR",
        +  "ES",
        +  "GB"
        +]
    • Changedverify_company5 fields changed
      • changedInput schema / properties / country / description
        Previous value: -"ISO country code: FR or ES."New value: +"ISO country code: FR or ES or GB."
      • changedInput schema / properties / country / enum
        Previous value: -[
        -  "FR",
        -  "ES"
        -]New value: +[
        +  "FR",
        +  "ES",
        +  "GB"
        +]
      • changedInput schema / properties / id_scheme / anyOf
        Previous value: -[
        -  {
        -    "enum": [
        -      "FR_SIREN",
        -      "FR_SIRET",
        -      "EU_VAT",
        -      "LEI",
        -      "ES_RM_HOJA",
        -      "ES_NIF"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "enum": [
        +      "FR_SIREN",
        +      "FR_SIRET",
        +      "EU_VAT",
        +      "LEI",
        +      "ES_RM_HOJA",
        +      "ES_NIF",
        +      "GB_COMPANY_NUMBER"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / identifier / description
        Previous value: -"Official ID: FR SIREN or SIRET; ES Registro Mercantil sheet from search_companies. Never a name."New value: +"Official ID: FR SIREN or SIRET; ES Registro Mercantil sheet from search_companies. GB: Companies House company number, e.g. 00445790. Never a name."
      • changedInput schema / properties / identifier / examples
        Previous value: -[
        -  "441639465",
        -  "VI-23266"
        -]New value: +[
        +  "441639465",
        +  "VI-23266",
        +  "00445790"
        +]
  3. 1 tool update
    • Addedget_receipt
  4. 1 tool update
    • Changedverify_company1 field changed
      • changedOutput schema / $defs / VerifyResult / properties / outcome / description
        Previous value: -"verified, partial, unverified or insufficient_data"New value: +"verified, partial or unverified; equals meta.outcome"
  5. 3 tool updates
    • Changedlookup_company1 field changed
      • addedOutput schema / $defs / Name / properties / privacy_note
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Privacy Note"
        +}
    • Changedsearch_companies1 field changed
      • addedOutput schema / $defs / Name / properties / privacy_note
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Privacy Note"
        +}
    • Changedverify_company1 field changed
      • addedOutput schema / $defs / Name / properties / privacy_note
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Privacy Note"
        +}
  6. 4 tool updates
    • Changedget_company_history1 field changed
      • addedOutput schema / $defs / HistoryMeta / properties / outcome
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "verified, partial, unverified, status_unknown, not_found, not_covered, ambiguous, stale or source_unavailable: https://api.fuentio.com/docs/outcomes",
        +  "title": "Outcome"
        +}
    • Changedlookup_company2 fields changed
      • addedOutput schema / $defs / LookupMeta / properties / freshness
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "source_published_at, retrieved_at, last_verified_at, from_cache, stale and the rule applied.",
        +  "title": "Freshness"
        +}
      • addedOutput schema / $defs / LookupMeta / properties / outcome
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "verified, partial, unverified, status_unknown, not_found, not_covered, ambiguous, stale or source_unavailable: https://api.fuentio.com/docs/outcomes",
        +  "title": "Outcome"
        +}
    • Changedsearch_companies3 fields changed
      • addedOutput schema / $defs / MatchInfo / properties / band
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "exact (an official ID matched), strong (same name), possible or insufficient. A name alone never identifies a company: confirm by ID.",
        +  "title": "Band"
        +}
      • changedOutput schema / $defs / MatchInfo / properties / score / description
        Previous value: -"0 to 1: how well the company's name matches the query (not data accuracy)."New value: +"0 to 1: name similarity, not confidence (and not data accuracy)."
      • addedOutput schema / $defs / SearchMeta / properties / outcome
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "verified, partial, unverified, status_unknown, not_found, not_covered, ambiguous, stale or source_unavailable: https://api.fuentio.com/docs/outcomes",
        +  "title": "Outcome"
        +}
    • Changedverify_company2 fields changed
      • addedOutput schema / $defs / VerifyMeta / properties / freshness
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": true,
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "source_published_at, retrieved_at, last_verified_at, from_cache, stale and the rule applied.",
        +  "title": "Freshness"
        +}
      • addedOutput schema / $defs / VerifyMeta / properties / outcome
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "verified, partial, unverified, status_unknown, not_found, not_covered, ambiguous, stale or source_unavailable: https://api.fuentio.com/docs/outcomes",
        +  "title": "Outcome"
        +}
  7. 1 tool update
    • Changedlist_coverage1 field changed
      • addedOutput schema / $defs / CountryCoverage / properties / datasets
        Added value: +{
        +  "default": [],
        +  "description": "Data served beside the company records (e.g. France's public contracts, in review_report), each with its source, licence and update frequency.",
        +  "items": {
        +    "additionalProperties": true,
        +    "type": "object"
        +  },
        +  "title": "Datasets",
        +  "type": "array"
        +}
  8. 17 tool updates
    • First observedcheck_address
    • First observedcheck_insolvency
    • First observedcheck_vat
    • First observedexplain_match
    • First observedget_company_history
    • First observedget_evidence
    • First observedget_graph
    • First observedlist_coverage
    • First observedlookup_company
    • First observedreport_issue
    • First observedresolve_company
    • First observedreview_report
    • First observedscreen_company
    • First observedsearch_companies
    • First observedverify_company
    • First observedwatch_company
    • First observedwhat_changed

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Enables AI assistants to look up, resolve, verify and sanctions-screen legal entities across the UK and Europe by merging company registries, GLEIF LEIs and VIES VAT data into one profile with per-field provenance. Supports KYB and due-diligence workflows through name and identifier search, officer and ownership tracing, filings and insolvency checks, and honest reporting of gaps, stale sources or unavailable data.
    9
    Elastic 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides real-time company verification and corporate intelligence by accessing global registries like UK Companies House, Singapore ACRA, and OpenCorporates. It enables AI agents to perform KYC tasks, retrieve company profiles, and conduct automated risk assessments for due diligence workflows.
    156 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.