Sirenic
Server Details
Official French and European company data for AI agents, paid per call (x402) or by API key.
- Status
- Healthy
- Uptime
- 74.9% over 75 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 120 tools
Many tools overlap heavily around the same French company: get_french_company_profile, get_french_company_file, get_french_company_briefing, get_french_company_intelligence, get_french_company_kyb_file, get_french_company_pdf_report and get_french_company_health_summary all package identity/financial/risk data with different scopes and prices. Search and identity tools also overlap (suggest_company_names, search_french_companies, detect_company_identifiers, get_french_company_identity_batch), so an agent must read long descriptions to choose correctly.
Almost all tools use snake_case verb_noun naming with clear country or domain qualifiers, e.g. get_french_company_profile, list_uk_company_accounts, search_european_companies. Minor deviations such as prospect_french_companies and the very long country-specific names are readable but slightly less predictable.
With 120 tools, the server is far beyond the typical 3-15 well-scoped range and beyond the 50+ threshold for extreme mismatch. Even for a broad European company-intelligence domain, this surface is too large for an agent to navigate efficiently.
The set covers a wide range of due-diligence blocks (identity, financials, officers, insolvency, procurement, sanctions, monitoring, VAT/IBAN, invoicing) across many European countries. However, country coverage is uneven: several countries have only partial profile/officer/accounts support, and generic European equivalents are missing for some domains, creating notable gaps.
Available Tools
120 toolscheck_french_regulator_alertsFrench regulator alerts (AMF)ARead-onlyInspect
French financial regulator (AMF) alerts and registers (scam check): screen a name against the official AMF blacklists (unauthorized investment websites, scams, AMF impersonation) and look up PSAN crypto-provider registrations and licensed asset-management companies (SGP) by name or SIREN. Use before trusting an investment site, a crypto provider or an asset manager operating in France. Official AMF open data, refreshed daily. Paid via x402 ($0.01 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| nom | No | Name to screen (site, brand, company), required unless siren is given | |
| siren | No | 9-digit SIREN for PSAN/SGP register lookup, required unless nom is given | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial context beyond the read-only/open-world annotations: the data is official AMF open data refreshed daily, the tool is paid via x402 at $0.01 in USDC or EURC, and results should be cited verbatim. These are operationally important traits not present in the annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded with the core purpose, then adds usage timing, data freshness, payment model, and citation requirement. Every sentence carries useful information for selecting and invoking the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of a full output schema and annotations, the description covers what the tool does, when to use it, source freshness, cost, and citation expectations. An agent has enough information to decide whether and how to call it without needing return-value details in the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameter meanings are already well documented. The description reinforces the two lookup paths, name screening versus SIREN-based register lookup, but does not add much beyond the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states specific verbs and resources: screening names against AMF blacklists and looking up PSAN/SGP registrations by name or SIREN. It clearly distinguishes this French regulator-specific check from broad company search or generic sanctions screening tools in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear trigger: use before trusting an investment site, crypto provider, or asset manager operating in France. It does not explicitly name when not to use it or which alternatives to prefer, so it falls short of a full 5 under the rubric.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_french_companiesCompare French companiesARead-onlyInspect
Use when asked to compare, rank or choose between 2 to 5 French companies (customers, prospects, suppliers, competitors). Returns a cross-table (identity, deterministic default-risk score, latest filed accounts with their accounting scope, BODACC legal alerts, sanctions screening of the legal name), per-axis rankings and, importantly, an explicit comparabilite block stating when the companies are NOT comparable (different sectors, different sizes, a holding in the batch). NEVER returns an overall winner: a holding with no debt outranks a large industrial group on default risk, which would be misread as a verdict on quality. Since 2026-09-08 nine rankings (risk, revenue, net result, EBITDA margin, lowest debt ratio, liquidity, revenue growth, cash vs short-term debt, seniority) each carry a status in eligibilite_classements (statut autorise/interdit with raison, type evaluatif/descriptif, donnee, perimetre, exercices, couverture): the evaluative risque_le_plus_faible is served ONLY when the batch is comparable for a score and the ranked scores rest on exactly the same axes (axes_communs); amounts are forbidden across different fiscal years, ratios also across different sectors or sizes; a forbidden ranking is absent from classements, never rank companies from solidite.score_risque or the ratios yourself when it is interdit. solidite.classement_risque repeats per company whether it is eligible, ranked, and why not (score_non_concluant, axes_differents); the score stays served with its couverture_axes. Billed per company at $0.12 via x402, the amount is the unit price times the number of SIREN. A batch holding such a SIREN (sole proprietorship, restricted diffusion, group without legal personality) is refused whole: 400, never charged, sirens_refuses gives each refused SIREN and its code; replay without them. When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| sirens | Yes | List of 2 to 5 nine-digit SIRENs | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes far beyond the readOnlyHint: discloses per-company pricing ($0.12 × SIREN count via x402), the all-or-nothing 400 refusal that is never charged plus the sirens_refuses payload and replay guidance, and the deliberate design decision to never return a winner. These are exactly the operational facts an agent cannot get from annotations or schema and that change how it plans 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loading is good — trigger sentence first, output shape second, caveats after. But the middle section is a single 150-word sentence riddled with nested French identifiers (eligibilite_classements, axes_communs, statut/raison/type/donnee/perimetre/exercices/couverture) that is hard to parse on first read and repeats the eligibility idea twice (once in rankings, once in solidite.classement_risque).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite an output schema already existing, the description still orients the agent on the response's shape and the comparability/eligibility contract, and it covers the payment, refusal and citation obligations. Nothing needed to call it correctly or interpret it responsibly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description still adds real meaning by tying cost to the SIREN count and by explaining that a single invalid SIREN (sole proprietorship, restricted diffusion, group without legal personality) rejects the whole batch rather than that item. The api_key and x_payment parameters are handled entirely by their schema descriptions, which is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb set (compare, rank, choose) against a specific resource (2-5 French companies as customers/prospects/suppliers/competitors) and enumerates what comes back (cross-table, per-axis rankings, comparability block). This is clearly distinguishable from single-company siblings like get_french_company_default_risk or get_french_company_financials.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use when asked to compare, rank or choose between 2 to 5 French companies" gives a clear trigger, and it explicitly forbids a wrong path ("NEVER rank companies from solidite.score_risque or the ratios yourself when it is interdit"), routing the agent to the internal ranking output instead. It does not name sibling tools to prefer for single-company lookups or batch-only identity/risk endpoints, so the boundary with the ~30 other French tools 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.
create_surveillance_watchCreate a company watchAInspect
Company monitoring for France, for when the relationship OUTLASTS the check (customer, borrower, supplier, portfolio company): create a 30, 90 or 365-day watchlist over French companies and/or directors. Sirenic checks every target DAILY (BODACC filings, status & officer changes, sanctions and AMF-blacklist matches, PSAN/SGP status, Seveso/ICPE changes, new French & EU procurement awards, and since 2026-09-24 commercial-court decisions newly linked to the company, event decision_tcom_rattachee; for directors: new/ended public offices, diffed only on a complete list, a name matching more companies than one page being marked mandats_partiels from creation) and delivers events via Ed25519-signed webhook and/or e-mail digest, always pollable with the returned bearer token, plus an expiry reminder 7 days ahead. No account. Paid via x402, per target AND per duration: $0.05 for 30 days, $0.135 for 90 days, $0.50 for 365 days (amount = that unit price × number of targets, so up to $50.00 for 100 targets over a year). No pro-rata refund. A full-size request quotes up to $50.00, above the $1.00 single-payment cap that x402 clients apply BY DEFAULT since @x402/core 2.23 (spendControls): raise spendControls.maxAmountPerPayment, or set spendControls: false, before signing; otherwise your own client rejects the quote without ever calling us. When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| duree | No | Watch duration in days (default 30). Sets the unit price per target: 30 = $0.05, 90 = $0.135 (-10%), 365 = $0.50 (-17.8% vs the monthly rate). | |
| No | Optional e-mail address for digests | ||
| cibles | Yes | 1-100 comma-separated targets: 9-digit SIRENs, RNA numbers (W + 9, associations: JOAFE notices) and/or dirigeant:Name entries | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| webhook | No | Optional public https URL for signed event batches | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes far beyond the annotations: daily polling cadence, exact event categories (BODACC, sanctions/AMF, PSAN/SGP, Seveso/ICPE, procurement awards, decision_tcom_rattachee), Ed25519-signed webhook plus e-mail digest, bearer-token polling, and a 7-day expiry reminder. It also discloses the non-obvious cost model (per target × per duration, no pro-rata refund) and the client-side x402 spend-cap trap that would otherwise silently block the call — exactly the kind of context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One enormous paragraph with deeply nested parentheticals enumerating every event subtype, mixed with pricing and payment-client mechanics. The purpose is front-loaded, but the single block is hard to scan and several clauses (e.g. the mandats_partiels edge case) belong in docs rather than a tool description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paid, stateful, open-world mutation tool this covers everything an agent needs: what it creates, how events arrive, how to poll, when it expires, what it costs, how payment is authorized, and the instruction to cite the returned `citation` verbatim. An output schema exists, so return-shape detail is correctly omitted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents each field, but the description adds a formula not present in schema: total = unit price × number of targets, with the resulting $50 ceiling at 100 targets and its consequence for spendControls. It also reinforces the target-count bounds and the company-vs-director targeting split.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('create a 30, 90 or 365-day watchlist over French companies and/or directors') with an explicit scope restriction to France and to relationship-driven monitoring. An agent can immediately distinguish this recurring subscription tool from the one-off lookup siblings like check_french_regulator_alerts or get_french_company_profile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear selection criterion: use it 'when the relationship OUTLASTS the check', with concrete role examples (customer, borrower, supplier, portfolio company). It does not name the lifecycle siblings (get_surveillance_watch, renew_surveillance_watch, stop_surveillance_watch) that an agent would need to manage or cancel a watch, so the routing is implicit rather than exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_company_identifiersDetect company identifiers in text (free)ARead-onlyInspect
FREE. Paste any text (email, invoice, contract, web page) and detect French/EU company identifiers: SIREN, SIRET (Luhn-checked), EU VAT numbers, LEI (ISO 17442 checksum), each with the recommended Sirenic call and its price. Use this FIRST whenever a company appears in your workflow (customer onboarding, prospect list, supplier invoice, due diligence) to know exactly what to verify and what it costs. Deterministic pattern matching; the text is never stored or logged.
| Name | Required | Description | Default |
|---|---|---|---|
| texte | Yes | Raw text to scan (max 10,000 chars) |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnlyHint/openWorldHint annotations: it discloses that matching is deterministic, that checksums are actually validated (Luhn, ISO 17442), that the output includes the recommended next call and its price, and that text is never stored or logged. That privacy guarantee is exactly the kind of context an agent needs before pasting sensitive text.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with 'FREE.' and organized around purpose, usage, and behavior in three tight sentences. Slightly dense with parenthetical lists, but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 explained, and the annotations cover the safety profile. Combined with the privacy, determinism, and cost-signaling details, an agent has everything needed to call this correctly as a first step.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is documented, but the description adds useful meaning by naming the kinds of input to paste (email, invoice, contract, web page). The 10,000-char limit is left to the schema, so it adds value without fully duplicating.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (detect) and resource (French/EU company identifiers), then enumerates the identifier types (SIREN, SIRET, EU VAT, LEI) with their validation methods. It is clearly distinguishable from siblings like validate_eu_vat_number or verify_french_invoice, which each target a single identifier rather than scanning free text for all of them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this FIRST whenever a company appears in your workflow' and lists concrete scenarios (onboarding, prospect list, supplier invoice, due diligence). It implies the downstream path ('each with the recommended Sirenic call') but does not name specific sibling tools as alternatives, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_french_company_documentDownload French company documentARead-onlyInspect
Download an official company document (PDF) from the INPI RNE registry. Use IDs from list_french_company_documents. Filed annual accounts (type bilans): any payer, x402 or api_key. Legal deeds (type actes: statutes, general-meeting minutes) are RESERVED to identified Sirenic accounts since 2026-09-19 because they carry personal data: pass api_key, otherwise 401 compte_requis and nothing is charged. Returns the PDF as base64; documents typically weigh 1-10 MB. $0.10 (x402 in USDC or EURC, or account credits). A filing of a unit the INSEE publishes partially (a sole trader who objected to the publication of their data) that is not proven to be a legal person returns 404 diffusion_partielle, not charged: its PDF carries the person and is not served.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Document family from the list tool | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. | |
| document_id | Yes | Document `id` from list_french_company_documents |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only and open-world, but the description adds substantial operational detail: returns base64 PDF (1-10 MB), charges $0.10 via x402 or API key, requires api_key for actes (else 401 compte_requis, nothing charged), and returns 404 diffusion_partielle without charge for partially published sole traders. This is rich beyond structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first sentence, and subsequent sentences carry necessary payment, auth, and error details. The final sentence about diffusion_partielle is dense and could be split, but every sentence earns its place given the tool's legal and billing complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers prerequisites (IDs from list tool), payment methods, authentication differences by document type, return format and size, and specific error outcomes with charge implications. No output schema exists, but the description sufficiently explains what an agent needs to invoke and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 meaning beyond the schema: it explains that type=bilans is annual accounts open to any payer, type=actes is legal deeds reserved to identified Sirenic accounts, and clarifies api_key necessity and payment precedence. This materially helps parameter selection.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Download an official company document (PDF) from the INPI RNE registry.' It also names the sibling tool that supplies IDs, so an agent can distinguish it from list_french_company_documents without inspecting schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use IDs from list_french_company_documents and explains eligibility by document type (bilans vs actes) with authentication requirements. It does not compare against other document-fetching siblings like get_french_company_pdf_report, so it falls short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_expiring_french_public_contractsExpiring French public contractsARead-onlyInspect
Tender anticipation for France: public contracts EXPIRING within a window (1-24 months, default 12): it surfaces opportunities BEFORE any notice is published. Filter by CPV prefix (45 = construction, 9091 = cleaning) and department. Returns buyer, incumbent holders, amounts, lot number when stated, whether the amount is a firm price or an ENVELOPE (call-off orders, subsequent contracts, optional tranches), declared subcontracting, framework-agreement flag (its amount is a MAXIMUM CEILING over the duration, not spend), estimated end dates (date_fin_estimee: notification + declared duration, amended where the historical DECP regime publishes it; duree_mois is the initial duration). From official DECP open data. Paid via x402 ($0.05 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| cpv | No | Optional CPV prefix, 2-8 digits (45 = construction works) | |
| page | No | Page, 50 per page | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. | |
| departement | No | Optional French department code (69, 2A, 971...) | |
| fenetre_mois | No | Window in months, 1-24 (default 12) |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly and openWorld annotations, the description discloses payment via x402 at $0.05 in USDC or EURC, the official DECP data source, and detailed output semantics such as framework-agreement amounts being maximum ceilings and envelope versus firm-price amounts. It also instructs the agent to cite the `citation` field verbatim.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The most important information is front-loaded: what the tool finds and why it matters. The description is dense and long, but most clauses earn their place by clarifying output fields, payment, or citation requirements.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paid, read-only search tool with a full output schema, the description covers purpose, filtering, result semantics, payment, and citation expectations. Nothing essential is missing for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all six parameters. The description reinforces CPV prefix and month-window usage but adds little parameter meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it surfaces French public contracts expiring within a defined window. It clearly distinguishes itself from procurement-history siblings by emphasizing that it finds opportunities BEFORE any notice is published.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes a clear use case ('tender anticipation for France') and gives filtering guidance via CPV prefix and department. It does not explicitly name alternative tools such as get_french_company_public_procurement or get_eu_procurement_awards, so the when-not-to-use guidance is limited.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_french_lookalike_companiesFind French lookalike companiesARead-onlyInspect
Find French companies that look like your best customers: give 2 to 5 customer SIRENs and, optionally, a region or a departement; Sirenic deduces their profile from the official registries (NAF codes, workforce brackets, legal forms, creation dates, common area) and returns the first page of 100 active legal persons matching it, the customers excluded, with the exact total ($0.02 in USDC or EURC). Under 50 results the profile widens one step at a time, each step stated in profil.elargissements; an example set aside is stated by its rank in profil.ecarts, never by its SIREN. profil.criteres reads the next pages through query_french_companies (mode lister, page 2 and on). No ranking by likeness, no person. A refusal is a 400 from the closed list (parametre_inconnu, exemples_invalides, zone_invalide, profil_impossible), never charged; beyond the 15 s budget, requete_trop_large, never charged. Paid via x402. When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | INSEE region code (84 = Auvergne-Rhone-Alpes), exclusive with departement; never widened | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| exemples | Yes | 2 to 5 distinct customer SIRENs (9 digits, valid Luhn key) | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. | |
| departement | No | Departement code (69, 2A, 971), exclusive with region; never widened |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and openWorldHint annotations, the description discloses pricing ($0.02 in USDC or EURC, paid via x402), widening behavior under 50 results, how set-aside examples are represented by rank rather than SIREN, refusal error codes that are never charged, a 15-second timeout error, and the requirement to cite `citation` verbatim. These are substantial behavioral details not present in the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and the dense single paragraph contains little filler, with each clause adding operational detail about cost, widening, errors, pagination, and citation. However, the run-on structure with multiple semicolons and parentheticals makes it harder to scan than a more structured description would be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity—paid lookalike search, profile widening, pagination, and output fields—the description covers what an agent needs to invoke it correctly, including payment, error handling, pagination routing, and citation requirements. Since an output schema exists, the description need not explain return values in full, and its brief references to profil fields are sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the description largely restates what the schema already documents: 2 to 5 customer SIRENs, an optional region or departement, and the exclusivity of those geographic filters. It does not add new syntax, format, or edge-case meaning for the parameters beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: find French companies that resemble given customer SIRENs, with the customer set excluded from results. It clearly distinguishes this from plain company search by the lookalike profiling logic and explicitly names query_french_companies only for pagination. An agent can identify the tool's unique purpose without opening sibling schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear usage condition: provide 2 to 5 customer SIRENs, optionally a region or departement, and it explains that next pages are read through query_french_companies (mode lister, page 2 onward). It does not explicitly state when to prefer search_french_companies, prospect_french_companies, or compare_french_companies over this tool, so alternatives are only partially covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_belgian_company_filingBelgian annual accounts (NBB)ARead-onlyInspect
One Belgian annual-account deposit as filed (NBB CBSO Authentic Data): Belgian company financial statements as the official PDF, returned base64-encoded. Reference comes from list_belgian_company_filings. Deposits are immutable. A sole proprietorship or a legal form in doubt in the KBO copy is refused (404, not charged), like an enterprise number the KBO copy does not hold or whose name is under objection (the profile's 404); an empty KBO copy answers 503 collecte_en_cours. The structured JSON-XBRL, when the NBB publishes one, is on the REST route with ?format=json (sorted: directors and shareholders removed and counted). Paid via x402 ($0.15 in USDC or EURC).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | 10-digit Belgian enterprise number (KBO/BCE) | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| reference | Yes | Deposit reference taken from the filings list, e.g. 2026-00123205 | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say read-only and open-world; the description adds material beyond that — deposits are immutable, the exact refusal semantics (404 for sole proprietorships, uncertain legal forms, unknown enterprise numbers, objection-listed names), the 503 collecte_en_cours case, and the payment model ($0.15 via x402 in USDC/EURC). This is precisely the failure-mode and cost information an agent cannot get from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded in the first sentence, but the remaining text is one dense run of parentheticals and semicolon chained clauses; phrases like 'the profile's 404' are cryptic and cost the reader without adding clear signal. Information is valuable but the packaging is over-compressed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, two-required-parameter tool with no output schema, the description covers return format (base64 PDF), prerequisites, immutability, error codes, and billing — enough to call it correctly. It does not describe how the base64 payload is wrapped in the response envelope or size limits, which is the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 adds genuine meaning: it explains the provenance of `reference` (must come from the filings list) and introduces the payment/pricing context behind `api_key` and `x_payment`. It does not restate the 10-digit or reference patterns, which the schema already handles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: retrieves one Belgian annual-account deposit as filed (NBB CBSO Authentic Data), returned as the official PDF base64-encoded. It also explicitly separates itself from the sibling list_belgian_company_filings (which supplies the reference) and from the REST JSON-XBRL variant, so an agent can pick it out of a crowded country-filing family.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Reference comes from list_belgian_company_filings' establishes the prerequisite call ordering, and the ?format=json note tells the agent when to prefer the REST route for structured data. What is missing is an explicit statement of when not to use this tool (e.g., versus get_belgian_insider_transactions or other Belgian siblings), so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_belgian_insider_transactionsBelgian insider transactionsARead-onlyInspect
Insider transactions at a Belgian listed company (managers transactions under MAR Article 19, as notified to the FSMA): are its managers buying or selling? Issuer-level aggregate over a rolling 12 months: notification counts, gross buy and sell amounts, net flow, breakdown by declarer category, plus the underlying notifications. No individual is ever named, and the breakdown is withheld when it would single someone out. A day of the window that the FSMA listing could not return whole is named in collecte_incomplete (counts are then lower bounds). Use it as a governance signal before investing in or contracting with a listed Belgian company. Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | 10-digit Belgian enterprise number (KBO/BCE) | |
| depuis | No | Start date YYYY-MM-DD (default: rolling 12 months; never earlier than five years back: older notifications are deleted, and periode.depuis_demande says when a request was bounded) | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnlyHint/openWorldHint annotations: it discloses that output is aggregated at issuer level, that no individual is ever named, that breakdowns are suppressed for small groups, that incomplete FSMA days are flagged in collecte_incomplete making counts lower bounds, and that the call is paid via x402 at $0.02. It also mandates verbatim citation of the `citation` field. That is exactly the extra context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core question and scope in the first sentence, then layers on privacy caveats, completeness caveats, use case, pricing and citation duty. Dense and mostly earning its space, though the payment and citation notes could be compressed into a single trailing line.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return structure needn't be described, yet the description still explains the two response traits an agent must interpret correctly (unnamed/withheld breakdowns, collecte_incomplete lower bounds) and the citation obligation. Nothing needed to call and report it responsibly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description reinforces the default window ('rolling 12 months') and mentions the periode.depuis_demande bounding behaviour, but the per-parameter meaning of id, depuis, api_key and x_payment is already fully specified in the schema and is not extended here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource and scope: insider transactions (MAR Art. 19 manager notifications) at a Belgian listed company, with an issuer-level 12-month aggregate. The framing question ('are its managers buying or selling?') plus the Belgian qualifier makes it easily distinguishable from get_german_insider_transactions and from the Belgian filing siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the intended decision context ('use as a governance signal before investing in or contracting with a listed Belgian company'), which tells the agent when to reach for it. It does not name a sibling alternative or state when NOT to use it (e.g. single-notification lookup or non-listed entities), so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_company_licencesFrench regulatory authorisationsARead-onlyInspect
Regulatory authorisations of a French company by SIREN: payment institution, e-money institution, account-information provider, payment agent or exempt entity (EBA PSD2 register, refreshed daily), insurance undertaking (EIOPA), entry in ARCEP's list of electronic-communications identifiers (not proof of operator status), with authorisation dates, licensed PSD2 services, EEA passporting and withdrawals. Use it before paying, onboarding or contracting with a regulated counterparty. Not authorised is an answer too. Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| siren | Yes | 9-digit SIREN | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld annotations, the description discloses data sources and freshness (EBA PSD2 register refreshed daily, EIOPA, ARCEP), an important interpretation caveat (ARCEP listing is 'not proof of operator status'), what fields are returned (dates, PSD2 services, passporting, withdrawals), payment mechanics, and a citation requirement. This is rich context that materially affects how an agent should use and report 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Despite being dense, it is front-loaded with the resource and scope, then moves to use case, caveat, payment, and citation guidance. The long first sentence earns its length by enumerating the covered authorisation regimes and data sources that define the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value structure need not be explained. The description covers scope, sources, freshness, interpretation caveats, use case, payment, and citation behavior, leaving no material gap for an agent deciding whether and how to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including detailed documentation of api_key and x_payment, so the schema carries the parameter burden. The description only reinforces that lookup is by SIREN and mentions the x402 payment path; it adds little parameter-level meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Regulatory authorisations of a French company by SIREN') and enumerates the covered authorisation regimes and registers, making the scope unusually clear. It does not explicitly distinguish itself from overlapping siblings such as search_eu_financial_authorisations or check_french_regulator_alerts, which keeps it short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete when-to-use context: 'before paying, onboarding or contracting with a regulated counterparty', and clarifies that a negative result is meaningful ('Not authorised is an answer too'). It does not name when to prefer a sibling tool or when this tool is not appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_company_procurement_competitorsFrench procurement competitorsARead-onlyInspect
Competitive intelligence on French public procurement: who wins contracts on the SAME CPV segments as a given company (SIREN): top rival contractors over the last 3 years with counts, amounts and shared segments. From official DECP open data. Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| siren | Yes | 9-digit SIREN | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover readOnly/openWorld; the description adds genuinely non-obvious behavior: paid via x402 ($0.02 USDC or EURC), sourced from official DECP open data, and an instruction to cite the `citation` field verbatim. It stops short of describing the quote/payment handshake or result-shape constraints, but the value beyond annotations is substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: what the tool returns is front-loaded, the data source and price follow, and the citation instruction closes it. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 explained, and the citation directive covers the one reporting obligation. Minor gap: the payment flow (when a quote is returned versus a result) is only implied by the parameter descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already defines siren, api_key and x_payment in detail. The description adds the framing that SIREN anchors the CPV-segment comparison but no additional parameter semantics, which is the correct baseline-3 outcome.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb-and-resource: identifies rival contractors winning on the SAME CPV segments as a given SIREN over the last 3 years, with counts, amounts and shared segments. This is clearly distinguishable from siblings like get_french_company_public_procurement (that company's own awards) and get_eu_procurement_awards (cross-EU awards).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The scope (same CPV segments, 3-year window) strongly implies when to use it, but there is no explicit 'use this instead of X' routing nor any when-not guidance against the many procurement siblings. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_croatian_company_accountsCroatian company annual-accounts filingsARead-onlyInspect
Croatian company annual-accounts filings recorded at the Sudski registar (daily snapshot): per financial year, the filing type (GFI-POD report, statement of inactivity, statement of correction), consolidation flag, period covered and filing date, newest first; metadata only, never the document. aucun_depot: true is a measured fact. A sole trader (trgovac pojedinac, t.p.) or an undecided legal form returns 404, not billed; so does a name covered by an objection. Paid via x402 ($0.01 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| oib | Yes | 11-digit Croatian OIB (e.g. 92803032010); an 8- or 9-digit MBS court-register number is accepted too | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and openWorldHint annotations, the description discloses what is returned (metadata only, never the document), the 404-not-billed edge cases, 'aucun_depot: true' semantics as a measured fact, x402 pricing ($0.01 USDC/EURC), and the obligation to cite the `citation` verbatim. This is a lot of behavioral context an agent cannot get from annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource and return fields, then the pricing and citation caveats. It is information-dense and earns most of its clauses, but the semicolon-chained phrasing and the pricing/citation bundle make it slightly unwieldy for a single paragraph.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 need no explanation; the description still covers pricing, error behavior, and the citation requirement. For a 1-required-param lookup with a full output schema and read-only annotations, nothing an agent needs is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so oib, api_key, and x_payment are already documented with examples and precedence rules. The description adds no parameter-level detail (the 'aucun_depot' reference is a return field, not an input). Baseline 3 is appropriate when the schema does all the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (Croatian company annual-accounts filings at the Sudski registar, daily snapshot) and enumerates exactly what is returned (filing type, consolidation flag, period, filing date, newest first). It clearly differentiates from siblings like get_croatian_company_events and get_croatian_company_insolvency by naming the filing domain and contrasting 'metadata only, never the document' with the document-oriented siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when-not conditions: a sole trader (t.p.), an undecided legal form, or a name under objection returns 404 and is not billed. However, it never names a sibling alternative or tells the agent to prefer this over get_croatian_company_events when in doubt, so it falls short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_croatian_company_eventsCroatian company court-register entriesARead-onlyInspect
Croatian company statutory entries from the official Sudski registar (daily snapshot): every typed entry in register order (108 types: founding act, statute, legal form, capital changes, mergers and divisions, enterprise contracts, dissolution grounds, court decisions). The published text is served only for a closed list of entry types without natural persons (texte_retenu: true otherwise); court decisions come as court, reference and date. A sole trader (trgovac pojedinac, t.p.) or an undecided legal form returns 404, not billed; so does a name covered by an objection. Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| oib | Yes | 11-digit Croatian OIB (e.g. 92803032010); an 8- or 9-digit MBS court-register number is accepted too | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only readOnlyHint and openWorldHint in annotations, the description carries substantive extra context: the closed list governing whether published text is served (`texte_retenu`), the shape of court-decision output, the not-billed 404 behavior, and the payment mechanism and cost. These are behaviors 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the resource and source register, then layers the retention rule, failure modes, and payment tail. Dense but nearly every clause carries operational value; the parenthetical type enumeration is long but justified by the '108 types' claim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, return-value explanation is not needed, and the description still covers source, coverage, retention constraints, failure modes, pricing, and the citation obligation. Nothing needed 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.
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 oib, api_key, and x_payment in detail. The description adds no parameter-level detail beyond implying the entity scope, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource and source register (Sudski registar statutory entries) and enumerates the entry types covered, which is far beyond restating the tool name. It stops short of explicitly distinguishing itself from Croatian siblings such as get_croatian_company_accounts or get_croatian_company_insolvency, even though the mention of dissolution grounds and court decisions overlaps with the insolvency tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the resource scope; there is no explicit 'use this when / use X instead' routing versus the many sibling event and Croatian registry tools. The 404 conditions (sole trader, undecided legal form, objected name) do give useful negative conditions, but they describe failure modes rather than when to select this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_croatian_company_insolvencyCroatian company insolvency (Sudski registar)ARead-onlyInspect
Croatian company insolvency status from the official Sudski registar (court register, daily snapshot of the open API, Otvorena dozvola): running procedure (bankruptcy or stečaj, liquidation, pre-bankruptcy stages, bankruptcy or liquidation estate) and every published court decision with its extracted facts (court, case reference, date), never the decision text. aucune_procedure: true is a measured fact on the complete snapshot. Unknown OIB/MBS = 404 (deleted subjects are not published by the API). A sole trader (trgovac pojedinac, t.p.) or an undecided legal form returns 404, not billed; so does a name covered by an objection. Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| oib | Yes | 11-digit Croatian OIB (e.g. 92803032010); an 8- or 9-digit MBS court-register number is accepted too | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnlyHint/openWorldHint annotations: discloses data freshness (daily snapshot), the exact negative behavior (decision text is never included), the meaning of `aucune_procedure: true` as a measured fact over the complete snapshot, that deleted subjects are unpublished, which misses are free, the billing channel and price ($0.02 USDC/EURC via x402), and a citation obligation. That is precisely the kind of cost, coverage, and caveat context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads what the tool returns, then tightly packs caveats, pricing, and the citation instruction into a compact block with no filler sentences. It is dense to the point of being clause-heavy, which costs a point, but every clause carries distinct operational information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paid single-identifier lookup with an output schema and readOnly annotations, the description covers the remaining gaps: what the payload contains and excludes, how completeness is signalled, when a 404 occurs and whether it is billed, and how payment works. Nothing an agent needs before calling is missing, and return-shape explanation is appropriately left to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents the OIB pattern, MBS acceptance, the api_key credit path, and x_payment precedence. The description adds little parameter-level meaning — `aucune_procedure` is a response field, not an input — so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource (Croatian company insolvency status) and pins it to a named source (Sudski registar, daily snapshot of the open API). The scope is sharpened with what is returned ('running procedure … and every published court decision with its extracted facts') and what is explicitly not ('never the decision text'), which lets an agent separate it from get_croatian_company_accounts and get_croatian_company_events 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete call preconditions and failure routing: unknown OIB/MBS returns 404, a sole trader (t.p.) or undecided legal form returns 404 and is not billed, as is a name covered by an objection — useful for deciding whether a query is even valid. It does not, however, explicitly route the agent to a sibling (e.g. accounts or events) when insolvency is not what is needed, so the alternative-selection guidance is implicit rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cypriot_company_officersCypriot company officers (DRCOR)ARead-onlyInspect
Cypriot company officers from the Registrar of Companies open data (DRCOR, data.gov.cy, CC BY 4.0, monthly national snapshot): every mandate published for the company (directors, alternate directors, company secretaries, assistant and deputy secretaries, authorised persons of overseas companies), with the register's Greek role label and a closed-list family (role.famille), sorted by family then name; aucun_mandat_publie is measured on the complete snapshot. Name and role only: the source publishes no birth date, address, nationality or appointment date, and does not tell natural persons and corporate officers apart. Legal persons only: HE (company) and AE (overseas company); business names, partnerships and BN are refused before payment. Beyond 45 days without a new DRCOR publication the answer stays served and dated (sans_publication_neuve, data_freshness, perime in provenance; a zero is then non-conclusive); 503 fail-closed only when the snapshot is missing or our collection has not re-read the source for 45 days. Paid via x402 ($0.01). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Cypriot registration number with its prefix: HE (company) or AE (overseas company), e.g. HE165 or AE1 (ΗΕ 165 accepted) | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond readOnlyHint/openWorldHint: discloses the paid x402 path ($0.01) and prepaid-credit alternative, the 45-day staleness contract (`sans_publication_neuve`, `perime` in provenance), the exact 503 fail-closed condition, and that `aucun_mandat_publie` is measured against the complete snapshot. It also names concrete data gaps (no birth date, address, nationality, appointment date; natural vs corporate persons indistinguishable), which directly shapes how an agent should interpret results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what is returned, then constraints, then failure/freshness semantics, then payment and citation — a sensible progression. The sentences are extremely dense with parenthetical stacks (Greek role labels, `role.famille`, provenance keys), so it reads as a spec dump rather than clean prose, but little is genuinely expendable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return shape need not be described, and the description instead covers everything an agent cannot infer: source provenance and licence, coverage limits, staleness and 503 behaviour, cost, and the citation obligation. Nothing material for correct invocation or interpretation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the `id` pattern already encodes the HE/AE prefix rule with an example, so the description mostly restates it. The added value is the rationale — non-legal-person identifiers are rejected before payment — plus the note that `api_key` is ignored when `x_payment` is supplied, but the schema itself carries that too. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Cypriot company officers from the Registrar of Companies open data'), enumerates the mandate types returned (directors, alternates, secretaries, authorised persons) and the sort order. The jurisdiction plus source identifier (DRCOR, data.gov.cy) cleanly separates it from the many sibling *get_*_company_officers tools 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the eligibility gate: legal persons only (HE/AE), with business names, partnerships and BN 'refused before payment' — strong when-to-use guidance. It also tells the agent when a zero result is non-conclusive. It does not name a fallback tool for refused entity types, so it stops short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_czech_company_insolvencyCzech company insolvency (ISIR)ARead-onlyInspect
Insolvency record of a Czech company from the official ISIR register (Insolvenční rejstřík, Ministry of Justice), history since 2008: every proceeding with its case number (spisová značka), court, published status (úpadek, konkurs, reorganizace, oddlužení...), opening and closing dates, claim-filing deadline and its event trail with official document links, Czech labels as published. The event list is capped at the 100 MOST RECENT events per case: nombre_evenements carries the real total and evenements_tronques says whether it is truncated. Publication is compulsory by Czech law, so a company with no proceeding gets an explicit positive answer (aucune_procedure: true), dated by collecte_le (last complete collection; a stale stock returns 503 rather than a stale clean answer). LEGAL-PERSON debtors only: natural persons are excluded at ingestion (GDPR minimisation), so a sole trader's or other natural person's IČO (the majority of Czech IČOs) is refused (404) rather than reported as clean. Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| ico | Yes | 8-digit Czech IČO (company identification number), e.g. 45274649 | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes far beyond readOnlyHint/openWorldHint: discloses the 100-event cap with the exact fields that signal truncation (nombre_evenements, evenements_tronques), the compulsory-publication rule that makes a clean result meaningful, the collecte_le freshness marker with a 503 on stale stock, the 404 for natural persons under GDPR minimisation, and the $0.02 x402 cost. Error behaviors and response semantics are all disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and source, then progressively adds scope limits, truncation semantics, and legal exclusions. Dense but nearly every clause carries information an agent needs. The first sentence is a long run-on that packs many field names together, costing a little readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema and annotations already present, the description still covers everything an agent must know to call and interpret this tool: coverage period, truncation signaling, the positive-answer field for no proceedings, freshness marker, jurisdiction restriction, and the citation obligation. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 adds genuine meaning: an IČO belonging to a natural person is rejected rather than returned clean, which changes how an agent should interpret a 404 for the `ico` parameter. It says nothing extra about api_key/x_payment beyond the schema text, keeping it at 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+source: insolvency record of a Czech company from the official ISIR register (Ministry of Justice), since 2008. This clearly distinguishes it from the many sibling insolvency tools (Croatian, Latvian, Polish, UK, etc.) by jurisdiction and register, and from get_czech_company_officers/shareholders by data domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the exclusion condition (legal persons only; natural-person IČOs are refused with 404 rather than reported clean), which is a real when-not-to-use rule. Payment mechanics (x402 vs api_key) are also spelled out. It stops short of naming alternative tools for excluded cases or for related Czech queries, so not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_czech_company_officersCzech company officers (public register, ISVR)ARead-onlyInspect
Officers of a Czech company from the official public register open data (ISVR, Ministry of Justice, dataor.justice.cz, daily snapshot): statutory body, board of directors, supervisory board, control and arbitration commissions, prokura and liquidators, in force. Legal persons are NAMED with their IČO (or foreign id and country), with the published function and the number of natural persons representing them. Natural persons are COUNTED per body and role (closed list: president, vice_president, membre, gerant, non_precise, autre), never named, with no date or identity (GDPR, rule R1): most Czech boards hold natural persons only, and that answer is still served and billed. A legal person's name covered by an objection (GDPR art. 21) is served as null and counted in ecartes.opposition; a company whose own name is covered returns the same 404 as an unknown IČO (not billed). Sole traders and undecided forms are refused 404 (not billed); a stock older than 7 days returns 503. Paid via x402 ($0.01 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| ico | Yes | 8-digit Czech IČO of a LEGAL PERSON (leading zeros included), e.g. 27232433 | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint and openWorldHint already declaring safety and openness, the description adds substantial behavioral detail: GDPR rule R1 anonymization of natural persons, legal-person naming with IČO, objection handling via null and ecartes.opposition, 404/503 error conditions, and billing only when served. This is far beyond what annotations alone convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the primary purpose and data source, then layers in GDPR, error, and billing conditions. It is dense but mostly earns its length; minor improvement would come from breaking the single paragraph into structured clauses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists and annotations cover safety, the description still supplies the critical non-schema context an agent needs: GDPR anonymization rules, null handling for objections, 404/503 conditions, payment method, and citation requirements. Nothing essential appears missing for correct invocation and reporting.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 ico, api_key, and x_payment with patterns and examples. The description reinforces that ico must refer to a legal person but adds little parameter-level syntax or format guidance beyond the schema, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource (officers of a Czech company) and enumerates the covered bodies and roles. It clearly distinguishes itself from siblings such as get_czech_company_shareholders and get_czech_company_insolvency by focusing on statutory officers and the ISVR source.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear usage context: sole traders and undecided forms return 404, stale data returns 503, and billing behavior is explained. However, it does not explicitly route the agent to or away from sibling tools like get_czech_company_shareholders or get_uk_company_officers, so it falls short of full when/when-not/alternatives guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_danish_company_filingDanish annual accountsARead-onlyInspect
One Danish fiscal year: financial statements decoded from the company's XBRL annual report (Erhvervsstyrelsen): revenue (null = not published, never zero), gross result, operating result, pre-tax and net result, equity, total assets, debts, average employees, plus prior-year comparatives as published in the same filing. Amounts in the filing currency (mostly DKK); the official XBRL document URL is included. Closing date comes from list_danish_company_filings. Same form check as that tool: a sole proprietorship, an estate or an undecided CVR form returns 404, not billed, as does a number unknown to the CVR or a name under objection (GDPR art. 21). The year's entity name under objection (GDPR art. 21) is served null and counted in ecartes.opposition (block partial in provenance). Paid via x402 ($0.05 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | 8-digit Danish CVR number | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. | |
| date_cloture | Yes | Fiscal-year closing date, YYYY-MM-DD, e.g. 2025-12-31 |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/openWorld annotations: 404 cases that are specifically NOT billed, null-vs-zero semantics for revenue, GDPR art. 21 nulling plus the ecartes.opposition counter and 'block partial' provenance flag, x402 pricing ($0.05 USDC/EURC), API-key vs payment precedence, and the requirement to cite the `citation` verbatim. This is exactly the behavioral context 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and return contents are front-loaded, and nearly every clause carries operational value (error cases, GDPR, billing, citation). It is a dense run-on sentence that could be broken into a field list and a rules block for readability, which keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 clarifies the pitfalls (null vs zero, prior-year comparatives, currency, source document URL) and covers billing, failure modes and compliance obligations. Nothing an agent needs to call and interpret this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already defines id (8-digit CVR), date_cloture format, api_key and x_payment. The description adds only the provenance rule for date_cloture (source it from list_danish_company_filings); the revenue null semantics apply to outputs, not inputs. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('financial statements decoded from the company's XBRL annual report') and enumerates the exact fields returned (revenue, gross/operating/pre-tax/net result, equity, assets, debts, employees). It explicitly separates itself from list_danish_company_filings by noting the closing date comes from there, so the agent can distinguish it from siblings 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing: the closing date must come from list_danish_company_filings, so the agent knows the prerequisite step. It also spells out when the call fails (sole proprietorship, estate, undecided CVR form, unknown number, GDPR objection). No direct comparison to alternative financial-statement tools for other countries, but the country scoping makes that largely unnecessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_danish_company_officersDanish company officers (CVR)ARead-onlyInspect
Danish company officers and directors, live from CVR, the official Danish company registry (Erhvervsstyrelsen): executive board (Direktion), board of directors (Bestyrelse) with deputies and how each member was elected, fully liable partners of an I/S or K/S, and auditors: name, body, role and mandate dates. Active mandates by default; inclure_anciens adds ended mandates, which is where founders (stiftere) normally are. Long boards are capped at 300 active / 200 ended mandates, flagged by tronque (the counts stay exact). Beneficial owners (reelle ejere) are NOT exposed by this access and are never guessed. GDPR minimisation: no address, no personal identifier, and the register publishes no date of birth here. A sole proprietorship (ENK, PMV), an estate (DØD) or an undecided CVR form returns 404, not billed: neither the entity nor its owner is served. Paid via x402 ($0.01 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| cvr | Yes | 8-digit Danish CVR number, e.g. 24256790 | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. | |
| inclure_anciens | No | Also return ended mandates, each with its end date |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnly and openWorld; the description adds substantial context beyond them: truncation caps (300 active / 200 ended) flagged by `tronque`, 404-not-billed semantics, x402 pricing, GDPR minimization of fields, and the citation requirement. This is rich behavioral disclosure that materially helps invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what the tool returns, then defaults, limits, exclusions, and payment. Dense but largely purposeful; a couple of trailing items (payment, citation) could be compressed, but no sentence is pure filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and 100% param coverage, the description fills the remaining gaps: truncated-result signaling, 404 edge cases, GDPR field omissions, and payment model. 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.
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: it explains that inclure_anciens is specifically where founders usually appear, which is not in the schema field description. Payment-parameter interplay and cvr format are left to the schema, so it falls just short of 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Danish company officers and directors, live from CVR') and enumerates exactly what is returned (Direktion, Bestyrelse, partners, auditors). An agent can distinguish this from get_danish_company_filing or get_uk_company_officers 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear operational context: active mandates by default, inclure_anciens to include ended mandates where founders typically sit, and explicit 404 behavior for ENK/PMV/DØD forms. It does not name the sibling alternative for beneficial owners, but it does state they are 'NOT exposed by this access', which effectively routes the agent away.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_estonian_company_accountsEstonian annual accountsARead-onlyInspect
Estonian company annual accounts: annual-report key figures from the official e-Business Register open data (RIK, CC BY 4.0, refreshed MONTHLY): EVERY published financial year since 2019 in one call: balance sheet (assets, equity, current/non-current liabilities, cash), revenue, employee expense, depreciation, operating profit, profit before tax, net profit and average FTE headcount, in EUR as published (null = not published, never zero). Statutory and consolidated figures kept apart. Filings submitted as PDF only carry no structured figures and are not served. A sole proprietorship (FIE) or an unrecognised legal form returns 404, not billed. No default-risk score is computed for this country yet: the response carries score_defaillance (statut non_evaluable, closed-list reasons explained by GET /v1/lecture); never read it as a low score. Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. | |
| registrikood | Yes | 8-digit Estonian registry code (registrikood, e-Business Register), e.g. 10003666 |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint and openWorldHint, and the description adds substantial context beyond them: monthly refresh cadence, licence/attribution (RIK, CC BY 4.0), null-means-not-published semantics, statutory vs consolidated figures kept apart, 404 not billed, pricing and payment mechanics, and the caveat that score_defaillance is non_evaluable rather than a low score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The lead clause front-loads country, resource and source before the field list, and every later sentence carries operational information. It is dense with parentheticals and could be split into short bullets without losing content, but there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paid, single-identifier data retrieval with an output schema present, the description covers what is returned, what is not (PDF-only filings, FIE 404), how nulls should be read, and how to treat the non-evaluable default-risk field. An agent has everything needed to 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all three parameters (registrikood with an 8-digit pattern, api_key, x_payment) are documented in the schema itself, so the baseline of 3 applies. The description adds nothing about the registry-code format or the payment parameters beyond the pricing sentence, which is about billing rather than parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+scope: annual-account key figures from the Estonian e-Business Register, and enumerates the exact line items returned (balance sheet, revenue, employee expense, net profit, FTE). The country qualifier plus the accounts content cleanly separates it from the Estonian officers/shareholders/registry_rulings siblings and from other countries' *_company_accounts tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear conditions of applicability: every published financial year since 2019 in one call, PDF-only filings are not served, FIE/unrecognised legal forms return 404 and are not billed, and the call is paid via x402 ($0.02). It does not say when to prefer a sibling instead (e.g. registry rulings or officers) nor how this differs from default-risk tools, so no explicit alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_estonian_company_officersEstonian company officers and governanceARead-onlyInspect
Officers and governance of an Estonian company from the official e-Business Register open data (RIK, CC BY 4.0), refreshed daily from the national photo: management board members, procurators, liquidators, bankruptcy trustees, general and limited partners, contact persons, share-register keepers (persons entered on the registry card), plus supervisory board members and chair, audit firms, auditors and bankruptcy committee members recorded beside the card. organe and role are closed lists with the register's code and wording (GET /v1/lecture); current mandates only (the source publishes no end date or history), with the registration date; standard representation rules (statutory template texts) and special conditions (type only). GDPR: natural persons come with first name, last name and role only, never the published identifier hash, birth date, address or e-mail. Legal persons only: sole proprietorships (FIE) are refused (404, payment cancelled). A known legal person with no registered role gets aucun_mandat_inscrit: true; one known only from the monthly identity copy, not covered by the daily photo, is refused (404 mandats_non_couverts, payment cancelled). Paid via x402 ($0.01 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. | |
| registrikood | Yes | 8-digit Estonian registry code (registrikood, e-Business Register), e.g. 10003666 |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and openWorldHint annotations, the description discloses extensive behavioral details: data freshness, GDPR field restrictions, 404 refusal cases with payment cancellation, payment mechanics via x402, and citation requirements. This is unusually thorough and gives the agent full operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a dense paragraph that front-loads the scope but could be better structured for scanning. While most sentences carry useful information, the length and lack of segmentation reduce readability and conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity, annotations, and output schema, the description is complete. It covers the data source, refresh cadence, covered roles, refusal cases, GDPR constraints, payment model, and citation requirement—everything an agent needs to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaningful constraints tied to the input: legal-person-only restriction for the registrikood, refusal for uncovered identities, and payment-via-x402 semantics for x_payment. It does not add new syntax or format details but meaningfully supplements the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies the verb and resource clearly: retrieving officers and governance of an Estonian company from the official e-Business Register. It enumerates the exact roles covered (management board, procurators, liquidators, etc.) and distinguishes the tool from siblings like get_estonian_company_shareholders and get_estonian_company_accounts by its scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear when-to-use context (legal persons only) and explicit when-not conditions (sole proprietorships refused with 404, uncovered identity copies refused). However, it does not explicitly name sibling tools as alternatives or state which tool to use instead for shareholders/accounts, leaving a small gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_estonian_company_registry_rulingsEstonian registry rulingsARead-onlyInspect
Registry rulings (määrused) of an Estonian company from the official e-Business Register open data (RIK, CC BY 4.0, DAILY national photo): registry entries, orders to remedy defects, warnings of striking-off for an unfiled annual report, warnings of compulsory dissolution for insufficient net assets, and annual-report fines, each with its date, extra deadline, status and force date, Estonian codes and labels as published. An alerte flag marks the CLOSED list of warning/fine types returned with the answer; nombre_alertes excludes only rulings whose etat_code is EXPLICITLY known as resolved (currently L only): a qualified ruling later resolved that way keeps alerte: true but no longer counts, while every other state (including J, K, or any code not yet seen) still counts, fail-closed on the unknown. types_non_qualifies lists this entity's other rule types, so a zero is never read as “no warning”. A still-registered entity with no ruling returns an explicit positive answer, dated with the photo actually served (photo_le); a struck-off entity leaves the open data entirely and returns 404 instead of a false clean sheet; so does a sole proprietorship (FIE), an unrecognised legal form, or a legal person the daily photo no longer covers (evenements_non_couverts), not billed. Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. | |
| registrikood | Yes | 8-digit Estonian registry code (registrikood, e-Business Register), e.g. 10003666 |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnly/openWorld annotations, it discloses the daily national photo cadence, 404 semantics for struck-off/uncovered entities, the closed alerte type list with fail-closed counting logic for etat_code, non-billing for uncovered events, and payment via x402. This is unusually complete behavioral disclosure for a read-only tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with what the tool returns and wastes little space, but it is a single dense paragraph with stacked parentheticals and acronyms (FIE, RIK, etat_code) that strains readability. Every clause carries information, yet the block structure could be split for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering safety, the description still supplies everything an agent needs to interpret edge cases: 404 vs positive-empty answers, photo_le dating, alerte versus nombre_alertes semantics, and the citation instruction. Nothing material appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with registrikood, api_key and x_payment all documented in the schema including the 8-digit pattern and example. The description adds only the billing context (x402 $0.02), not parameter-level semantics, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (registry rulings/määrused), the exact source (Estonian e-Business Register open data, RIK, daily photo) and enumerates the ruling types returned. This distinguishes it cleanly from siblings like get_estonian_company_accounts, officers or shareholders.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives rich context on when results apply (struck-off entities, FIEs and uncovered legal persons yield 404) and warns that zero alerts must be read alongside types_non_qualifies. However, it never explicitly names an alternative tool or a when-not-to-use condition relative to siblings, so routing relies on inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_eu_procurement_awardsEU procurement awards (TED)ARead-onlyInspect
European public procurement: government contracts and tender award notices won by a French company, from official TED data: buyer, country, subject, notice-level amount, CPV codes, official links, co-winners proven legal persons (other names and IDs counted by reason, never named). Identifier-matched only (SIREN/SIRET incl. spaced variants); coverage is eForms notices since 2023-10-25 above EU thresholds, and ~57% of award notices carry a usable identifier, so an empty list is not proof of absence. Complements get_french_company_public_procurement (French DECP, below-threshold). Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| siren | Yes | 9-digit SIREN | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations only covering readOnly/openWorld, the description adds substantial behavioral context: the ~57% identifier-coverage rate, the eForms start date, that co-winners are counted but anonymized by reason, the x402 pricing ($0.02 USDC/EURC), and a citation obligation on output. These are facts an agent cannot obtain from the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource and source, then caveats, then pricing and citation. Dense but nearly every clause carries information; the long nested parentheticals cost some readability without being padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paid, coverage-limited lookup with an output schema and annotations present, the description supplies the missing pieces: data provenance, coverage window, identifier-match caveat, pricing, and reporting requirement. An agent has everything needed to call it correctly and interpret an empty result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so siren, api_key, and x_payment are already documented in the schema; the description only reinforces identifier matching (SIREN/SIRET with spaced variants). Baseline 3 applies since the schema does the heavy lifting and the description adds no new per-parameter detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('EU procurement awards' from TED for a French company) and enumerates the returned fields (buyer, country, subject, amount, CPV, links, co-winners). It explicitly distinguishes itself from get_french_company_public_procurement (DECP, below-threshold), though it does not differentiate from the similar-sounding sibling get_european_company_eu_procurement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly frames when this source applies (identifier-matched SIREN/SIRET, eForms since 2023-10-25, above EU thresholds) and names the complementary DECP tool for below-threshold French coverage. It also warns that an empty list is not proof of absence, which is a genuine usage caveat rather than a restatement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_european_company_eu_procurementEuropean company EU procurement awards (TED)ARead-onlyInspect
European public-procurement contract awards won by a company from Latvia (LV), Norway (NO), Belgium (BE), Denmark (DK), Finland (FI), Sweden (SE), Czechia (CZ), Slovakia (SK), Estonia (EE) or Lithuania (LT), from TED (Tenders Electronic Daily, EU Publications Office): award notices matched by the NATIONAL identifier in every form it takes on TED (variantes_identifiant): buyer, country, subject, notice-level amount, CPV codes, official TED link, co-winners proven legal persons (other names and IDs counted by reason, never named). Depending on the country, 40 to 94% of award notices carry a readable winner identifier (measured 2026-09-17): nombre_avis: 0 is a NON-conclusive absence. Czechia, Denmark, Estonia, Lithuania, Latvia, Norway, Sweden and Slovakia: legal persons only, a sole trader's IČO, a Danish sole proprietorship (enkeltmandsvirksomhed, read on the CVR profile), an Estonian sole proprietorship (FIE), a Latvian individual merchant (IK), a Norwegian sole proprietorship (ENK), a Swedish sole proprietorship (enskild näringsverksamhet) or a form not recognised as a legal person returns 404, not billed; in Lithuania, an individual enterprise (individuali įmonė, IĮ), its branch (individualios įmonės filialas) or representative office (individualios įmonės atstovybė), or an undecided form returns 404 as well. So does a Belgian entity without legal form or of a form off the whitelist, or a Finnish form off the YRMU codebook. France has get_french_company_eu_procurement, the UK get_uk_company_public_procurement. Live TED query, cached 24 h. Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | National register identifier, e.g. 40003242722 | |
| pays | Yes | ISO-3166 alpha-2 country code: LV, NO, BE, DK, FI, SE, CZ, SK, EE or LT | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnly and openWorld; the description adds pricing ($0.02 via x402, or credits via api_key), 24 h caching, and — crucially — that a 404 for non-legal-person forms is not billed. It also discloses measured identifier-coverage rates (40–94%) so the agent can calibrate confidence in an empty result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and alternatives, and nearly every clause carries operational weight (404-billing, coverage rates, citation instruction). The wall of semi-colon-joined clauses and heavy parenthetical nesting makes it harder to scan than it needs to be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 restated; everything an agent needs — payment paths, cache TTL, 404 semantics, coverage caveats, and the verbatim `citation` requirement — is present. Complete for a paid, open-world lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 adds genuine semantic value: the `id` is matched by national identifier in every form it takes on TED, and the legal-form restrictions per country explain which IDs will 404. Country list is mirrored from the `pays` enum in prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (European public-procurement contract awards from TED), the matching key (national identifier, `variantes_identifiant`), and the exact country scope. It explicitly points to the French and UK counterparts, so an agent can place it precisely among siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly enumerates the ten covered countries and routes France to get_french_company_eu_procurement and the UK to get_uk_company_public_procurement, so the when-to-use decision is closed. It also states that `nombre_avis: 0` is a non-conclusive absence, which prevents a false negative reading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_european_company_profileEuropean company profileARead-onlyInspect
European company registry lookup: unified European company profile by country and national register ID, same JSON schema for every country (identity, legal form, normalized status, head office, VAT, LEI, official register link). National registers from local copies: Belgium, Croatia, Cyprus, Estonia, Ireland, Latvia, Lithuania, Norway, Romania, Sweden; live: Czechia, Finland, Poland, Slovakia, Switzerland; Denmark and the United Kingdom live through this profile; elsewhere via GLEIF (LEI). Poland (KRS): the status reads the proceedings entered in the register extract (bankruptcy, liquidation, restructuring, suspended activity: autre, the procedure in Polish and its date in statut_detail, e.g. upadłość 2024-12-19) and the strike-off (cesse, wykreślenie and its date); a proceeding not yet entered in the register is not seen. Country blocks: Belgium, NACEBEL activities and establishment units; Croatia, registre_hr; Cyprus, registre_cy (type, sub-type, dated register status family, registered office, mandates count; HE/AE numbers, legal persons only); Estonia, registre_ee and gages_commerciaux; Finland, registres_fi; Ireland, registre_ie; Latvia, succursale_etrangere (a struck-off foreign merchant's branch: the record seen before striking off is kept when its parent is proven a legal person, number, register and subscribed capital published, no natural-person mark, and served with retiree_de_la_publication_le under partial coverage; otherwise null, named in blocs_absents, reason radiation_inscriptions_retirees); Lithuania, registre_lt and fiscalite_lt (capital, VAT, filing compliance, shareholder headcounts, tax arrears); Norway, unites_locales; Romania, registre_ro (every registration of the CUI, status codes in closed families, registered office, EU branches, mandates count; legal persons only). Croatia, Czechia, Estonia, Norway, Latvia and Slovakia serve legal persons only, and Belgium its whitelist of forms with legal personality: a Belgian entity without legal form or of a form without legal personality, a Croatian sole trader (trgovac pojedinac) or undecided form, a sole trader's IČO, an Estonian sole proprietorship (FIE), a Norwegian sole proprietorship (ENK), registered individual (PERS, TVAM) or estate (KBO, BO), a Latvian individual merchant (IK) or individual, family, farm or fishery enterprise, an establishment bearing a Latvian or foreign natural-person trader mark (e.K., FIE, toiminimi, sole trader…), or a form not recognised as a legal person returns 404, not billed. A Swiss sole proprietorship (Einzelunternehmen), a Swiss branch whose head office is not served or an undecided legal form returns 404 as well, not billed. So do, in Denmark (CVR), a sole proprietorship (ENK), a personally owned small business (PMV), an estate (DØD) or an undecided CVR form; in Lithuania, an individual enterprise (individuali įmonė, IĮ), its branch (individualios įmonės filialas) or representative office (individualios įmonės atstovybė), or an undecided form; in Sweden, a sole proprietorship (enskild näringsverksamhet) or an undecided form; in Romania, an authorised natural person or an individual or family enterprise (PFA, II, IF, PF, AF), never loaded, or an undecided form; and, in Finland, Ireland, Poland and the United Kingdom, a form outside the register's published nomenclature (a foreign trader's branch included). Through GLEIF, a LEI that GLEIF flags as a natural person (sole proprietor category or natural-person legal form) or of an ambiguous legal form returns 404, not billed, the same way; a LEI without ELF code is judged by its written legal form (never served), and a LEI requested under another country than its own (its jurisdiction; for a branch, its legal address) returns 404 pays_ne_correspond_pas, not billed (never served under DE or NL). For LEI holders the profile carries groupe_lei: the GLEIF level-2 group, that is the direct and ultimate CONSOLIDATING parents (named, except a parent that GLEIF flags as a natural person or of an ambiguous legal form: mere_omise gives the reason, no name, no LEI; non_servie, a neutral value, when another reason leaves it out) or the declared reason for having none (accounting consolidation, never capital ownership or beneficial owners; sans_objet without a LEI). Belgian, Croatian, Cypriot, Czech, Danish, Finnish, Latvian, Lithuanian, Norwegian, Romanian, Swedish and Swiss profiles also carry financements_ue: Horizon 2020 / Horizon Europe projects from CORDIS matched by the published VAT number (sans_objet elsewhere). No default-risk score is computed for this country yet: the response carries score_defaillance (statut non_evaluable, closed-list reasons explained by GET /v1/lecture); never read it as a low score. Paid via x402 ($0.01 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | National register identifier, e.g. 923609016 | |
| pays | Yes | ISO-3166 alpha-2 country code, e.g. NO | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld annotations, it discloses pricing ($0.01 via x402), that 404 responses are not billed, that certain LEI mismatches return pays_ne_correspond_pas, and that score_defaillance must not be read as a low score. It also explains data freshness differences between local and live registers and the citation requirement, all of which materially affect correct use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is front-loaded and useful, but the remainder is an enormous semicolon-chained paragraph dense with country-specific edge cases and parentheticals. Much of the detail is relevant, yet the structure makes it hard to scan and is not appropriately concise for an agent-facing definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the multi-country complexity, payment model, and output schema, the description is complete: it covers coverage, billing, 404 behavior, field semantics such as groupe_lei and financements_ue, and citation requirements. An agent has enough context to call and interpret the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds substantial meaning for pays and id by listing supported countries, legal-person-only restrictions, entity forms that yield 404, and LEI jurisdiction mismatch behavior; it adds less for the payment parameters beyond noting x402 and api_key fallback.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb and resource: a unified European company profile looked up by country and national register ID, with a consistent JSON schema. Country coverage and returned fields are enumerated, so the tool is distinguishable from country-specific siblings in scope, though no sibling is explicitly named as an alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description extensively explains which countries and entity types are served and which return 404, which implicitly guides usage. However, it never explicitly states when to use this tool versus alternatives such as get_french_company_profile or search_european_companies, leaving routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_finnish_company_eventsFinnish trade-register notices (PRH)ARead-onlyInspect
Finnish company trade-register notices from the PRH open data (avoindata.prh.fi, CC BY 4.0, live with a 24 h cache): every notice registered since late 2014, newest first: date, record number, notice type (creation, modification, comptes_annuels, rectification, fusion; source code always served) and the register entry codes it carries, each with the PRH labels in EN/FI/SV and a closed-list family (direction, representation, capital, shares, registered office, auditors, articles, bankruptcy, restructuring, liquidation, removal, merger, demerger…); procedures_inscrites summarises bankruptcy / restructuring / liquidation / removal codes with their latest date; register memberships (trade register, VAT, prepayment, employer) with dates and tva_active. Codes and dates only, never a person. Unknown Business ID, a foreign trader's branch, a form outside the YRMU codebook or a current name under objection (GDPR art. 21) = 404 (no charge). Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Finnish Business ID (Y-tunnus), NNNNNNN-N, e.g. 0112038-9 | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnlyHint/openWorldHint annotations: discloses the 24 h cache freshness, the exact 404 triggers (unknown Business ID, foreign branch, out-of-codebook form, GDPR art. 21 name objection) with 'no charge', the x402 billing amount and currency, and the mandatory verbatim citation requirement. It also states an important content boundary — 'Codes and dates only, never a person' — that no annotation conveys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded correctly with the resource, and every clause carries real information, but the payload is delivered as one very long semicolon-chained sentence, making it hard to scan. Splitting return shape, error conditions and payment terms into distinct sentences would improve structure without losing content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite output schema being present (so return values needn't be spelled out), the description covers the gaps that matter for this paid, cached, open-world tool: freshness, failure modes, cost and payment mechanics, and citation obligation. Nothing an agent needs to call it correctly or interpret a 404 is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all three parameters (id, api_key, x_payment) are already documented in-schema, including the payment precedence rule. The description adds little parameter-level detail beyond reinforcing the Business ID domain and the 404 conditions, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Finnish company trade-register notices from the PRH open data') and enumerates the exact payload: dates, record numbers, notice types, register entry codes with EN/FI/SV labels, and register memberships. This is far more specific than the sibling 'get_finnish_company_filing' or 'list_finnish_company_filings', but it never names those siblings or explicitly delimits the difference, so differentiation is inferred from the content list rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the scope ('every notice registered since late 2014, newest first') and the 404 conditions clarify what inputs are outside coverage. However, there is no explicit when-to-use or when-not guidance and no named alternative, so the agent must infer whether this or get_finnish_company_filing / list_finnish_company_filings is the right call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_finnish_company_filingFinnish annual accounts (PRH)ARead-onlyInspect
One Finnish fiscal year, with its financial statements decoded from the company's PRH XBRL filing: revenue (null = not published, never zero), operating and net result, equity, total assets, debts, plus the prior-year comparatives as published in the same filing (EUR). Closing date comes from list_finnish_company_filings. Paid via x402 ($0.15 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Finnish Business ID (Y-tunnus), NNNNNNN-N | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. | |
| date_cloture | Yes | Fiscal-year closing date, YYYY-MM-DD, e.g. 2024-12-31 |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only annotation, the description discloses important behavioral details: revenue null means not published and never zero, prior-year comparatives are as published, amounts are in EUR, the call is paid via x402 at $0.15, and results must cite the `citation` verbatim. These details materially help an agent interpret and report the data correctly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with what the tool returns, then covers data semantics, the listing dependency, payment, and citation requirements. Each sentence adds useful information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema and annotations, the description is complete for correct selection and invocation: it explains the returned fields, null semantics, currency, dependency on the listing tool, payment mechanism, and citation obligation. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 the Business ID format, closing date format, and payment parameters. The description adds that date_cloture is sourced from list_finnish_company_filings, but it does not add meaning beyond the schema for the other parameters, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: retrieve one Finnish fiscal year's financial statements decoded from the company's PRH XBRL filing. It enumerates the reported fields (revenue, operating/net result, equity, assets, debts, prior-year comparatives) and distinguishes this tool from list_finnish_company_filings by noting where the closing date comes from.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context that the closing date must come from list_finnish_company_filings, routing the agent to the right sibling for discovery. It does not explicitly state when not to use the tool, but the usage context is otherwise clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_french_association_noticesFrench association JOAFE noticesARead-onlyInspect
Official Journal notices (JOAFE, DILA) of a French association by RNA number, the association equivalent of BODACC: creations, modifications (title, purpose, registered office), dissolutions, corrections, most recent first, with issue and declaration dates, prefecture, purpose themes and the PDF file name. Carries couverture (first and last loaded issue): no notice inside that window is a fact, not a gap. Weekly issue loaded every Tuesday; a stale stock returns 503 and is not charged. Paid via x402 ($0.01 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| rna | Yes | RNA number (W + 9 characters, e.g. W011006690) | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Far beyond the readOnly/openWorld annotations: it discloses the couverture window and how to interpret absence, the weekly Tuesday refresh cadence, the 503-on-stale-stock behaviour with no charge, the x402 price and currencies, and the obligation to cite `citation` verbatim. That is exactly the operational context an agent needs before calling a paid, freshness-sensitive endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and each subsequent sentence carries distinct operational information (coverage window, cadence, 503, price, citation). The opening sentence is an overlong run-on listing every returned field, which costs it a point on structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a paid, freshness-sensitive lookup: it covers what comes back, how to read gaps, refresh timing, failure semantics and billing, and adds a citation requirement the output schema cannot express. Nothing an agent needs in order 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so RNA format, api_key precedence rules and x_payment semantics are already fully documented in the schema. The description only restates 'by RNA number' and adds pricing, which is more behavioural than parametric, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource (JOAFE/DILA notices for a French association by RNA), enumerates the notice types returned (creations, modifications, dissolutions, corrections) and the fields surfaced. The 'association equivalent of BODACC' framing plus the RNA lookup key separates it cleanly from get_french_association_profile and search_french_associations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is clearly implied: you already have an RNA number and want the publication history, not a search or a profile. The 'no notice inside that window is a fact, not a gap' note tells the agent how to interpret results, but no explicit when-not or alternative-naming is given, which keeps it below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_french_association_profileFrench association profile (RNA)ARead-onlyInspect
Official profile of a French association (loi 1901) by RNA number from the Répertoire national des associations (Ministry of the Interior, monthly export): title, purpose and Waldec purpose codes, nature and grouping, position (active/dissolved/deleted), creation, declaration, JO publication and dissolution dates, registered office, website, RUP number as declared, prefecture, and the SIREN when Sirene confirms an association. Covers associations WITHOUT a SIREN; use search_french_associations first when you only have a name. No officer or declarant data; Alsace-Moselle excluded (local law). Unknown identifier = 404, not charged. Paid via x402 ($0.005 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| rna | Yes | RNA number (W + 9 characters, e.g. W751004076) or legacy RNA identifier as published (3-14 characters) | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnly/openWorld; the description goes far beyond them with pricing ($0.005 via x402 in USDC or EURC), error semantics (unknown identifier = 404, not charged), data freshness (monthly export), and a mandatory reporting obligation to cite `citation` verbatim. These are behaviors an agent cannot infer from structured fields and that materially affect call planning and output handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and identifier, then scope, exclusions, pricing/error, and the citation rule in descending priority. The long enumeration of returned fields is dense but functions as a coverage contract; only the field list could be trimmed if an output schema fully enumerates them.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paid, read-only single-identifier lookup with an output schema, everything an agent needs is present: scope boundaries, source and refresh cadence, exclusion caveat that explains SIREN absence, payment mechanism, 404 billing behavior, and the citation requirement for downstream reporting.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the rna parameter already documents the W+9 format and legacy 3-14 character identifiers; api_key and x_payment are fully described in-schema including precedence. The description adds only the general framing 'by RNA number' and the SIREN-confirmation caveat, so it neither compensates for nor extends the schema materially — baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: an official profile of a French association (loi 1901) keyed by RNA number, with the source register named (Répertoire national des associations, Ministry of the Interior, monthly export). The field list makes its output scope unmistakable and separates it from get_french_company_profile (companies) and search_french_associations (name lookup).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing: 'use search_french_associations first when you only have a name', plus a clear positive scope statement ('Covers associations WITHOUT a SIREN'). Negative scope is also stated — no officer/declarant data, Alsace-Moselle excluded — so an agent knows when to stop looking rather than assume missing data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_french_company_briefingFrench company briefing for an AIARead-onlyInspect
LLM-ready briefing on a French company (SIREN), returned as Markdown text to read or paste as is: identity without officers, filed accounts over three years with their reliability, BODACC insolvency notices, commercial-court decisions and public contracts counted and dated, each block with its status, age and coverage. Written by code from official registers, no model text; legal entities only (a sole proprietorship answers 400, never charged). The text opens with its instruction and ends with its source line: copy it verbatim. Paid via x402 ($0.05 in USDC or EURC).
| Name | Required | Description | Default |
|---|---|---|---|
| siren | Yes | 9-digit SIREN | |
| langue | No | fr or en; default: the API key account's language, else fr | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnly and openWorld, so the description carries and delivers the rest: pricing ($0.05 USDC/EURC via x402), the prepaid-credits alternative, error behavior on sole proprietorships (400, never charged), that content is code-generated with no model text, and that each block carries status/age/coverage. It explicitly instructs verbatim copying, which is a real behavioral constraint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource, format, and block contents before payment details. Dense but nearly every sentence adds operational value; the siren output-instruction sentence and the payment sentence could be tightened but are not waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description fully specifies the return shape (Markdown, per-block status/age/coverage, opening instruction, closing source line) and covers eligibility limits and payment paths. An agent has enough to call it correctly and to know what to expect back.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by explaining the payment model (x402 cost and currency) and that the output is verbatim Markdown, which contextualizes the api_key/x_payment parameters and the default language behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('briefing on a French company (SIREN)'), and enumerates the exact content blocks (identity without officers, three years of filed accounts, BODACC insolvency, court decisions, public contracts). This scope lets an agent distinguish it from single-facet siblings like get_french_company_financials or get_french_company_court_decisions without opening their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'returned as Markdown text to read or paste as is' and 'legal entities only (a sole proprietorship answers 400)'. There is no explicit when-to-use versus alternatives guidance, and no sibling (e.g. get_french_company_file or get_french_company_intelligence) is named for contrast.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_french_company_capitalFrench company share capitalARead-onlyInspect
Ownership / share capital structure of a French company, extracted by AI from the latest PUBLIC articles of association filed at the INPI registry: share capital, legal form, shareholders (CORPORATE holders named with role and ownership %, natural persons COUNTED with their % and never named since 2026-09-19 in associes_personnes_physiques and detenu_par_personnes_physiques_pct, under GDPR and CJEU C-798/24), notable clauses, with confidence and the source document. Reconstructed from public filed deeds: NOT a beneficial-ownership register (RBE) or a beneficial-owner identification. A SIREN of a unit the INSEE publishes partially (a sole trader who objected to the publication of their data) that is not proven to be a legal person returns 404 diffusion_partielle, not charged: its articles carry the person and their extraction is not served. Paid via x402 ($0.35 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| siren | Yes | 9-digit SIREN | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld annotations, it discloses provenance (AI extraction from latest public articles filed at INPI), GDPR-driven handling of natural persons (counted but never named), confidence and source-document output, a specific non-charged 404 case, and payment via x402 at $0.35. These are substantive behavioral traits an agent could not infer from annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and avoids wasted sentences; each clause carries operational value, including the RBE exclusion, GDPR note, 404 case, payment, and citation instruction. It is a dense single paragraph, though, and could be easier to scan if structured into short segments.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the description need not explain return values, and it already covers the key completeness items: data provenance, GDPR constraints, confidence and source fields, the 404 edge case, payment mechanics, and citation requirements. 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.
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; the schema already documents siren, api_key, and x_payment thoroughly. The description adds meaningful input-specific behavior by noting that a partially published SIREN not proven to be a legal person returns 404 diffusion_partielle and is not charged, which helps interpret a failed call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the exact resource and contents: ownership/share capital structure of a French company, extracted from INPI-filed articles of association, including share capital, legal form, shareholders, notable clauses, confidence, and source. It explicitly distinguishes the tool from a beneficial-ownership register or beneficial-owner identification, so an agent can tell what it is and is not.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear when-not guidance by stating this is NOT an RBE or beneficial-owner identification, and it explains the 404 diffusion_partielle case for partially published SIRENs. However, it does not name a specific sibling alternative for beneficial ownership or share-capital-adjacent needs, leaving some routing to inference in a very large sibling suite.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_french_company_changesFrench company changes (BODACC)ARead-onlyInspect
Company monitoring for France: new official BODACC gazette announcements for a French company SINCE a given date (poll-mode watchlist surveillance for a portfolio), such as insolvency, deregistration, sales, filings and changes, in reverse-chronological order. Detects new BODACC publications, not field-level edits of the profile. A company with no new announcement returns an empty list. Judgments in closed fields (category, appointed officers by role and form, date of cessation of payments), never the judgment's text nor a natural person's name; withheld labels are counted in omissions. Paid via x402 ($0.01 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| siren | Yes | 9-digit SIREN | |
| depuis | Yes | List announcements since this date (YYYY-MM-DD) | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnly/openWorld; the description adds real behaviour: reverse-chronological ordering, empty list when nothing new, contents limited to closed fields (category, officers by role/form, cessation date) with withheld labels counted in `omissions`, and per-call cost ($0.01 USDC/EURC via x402). It also states the citation requirement, which an agent cannot infer from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and scope, then layers ordering, exclusions, content restrictions, pricing and citation guidance. Dense but each clause carries information; the long opening sentence could be split for faster parsing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema is present, the description supplies exactly the non-schema context an agent needs: polling semantics, empty-result behaviour, the restriction that person names and judgment text are withheld, and the x402 payment/citation obligations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both required parameters and both payment parameters are already documented. The description reinforces the semantic of `depuis` ('SINCE a given date') and the payment model, but adds no format or edge-case detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — new official BODACC gazette announcements for a French company since a date — and explicitly bounds it against neighbours: 'Detects new BODACC publications, not field-level edits of the profile', which separates it from get_french_company_updates_since and search_bodacc_announcements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Frames the use case concretely ('poll-mode watchlist surveillance for a portfolio') and excludes a tempting but wrong use case (field-level profile edits). It stops short of naming the sibling tool to use instead for that case, so alternatives are implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_french_company_collective_agreementsFrench company collective agreementsARead-onlyInspect
Company-level collective agreements of a French company (SIREN) published on Légifrance (ACCO fund, mandatory publication since 2017-09-01): title, nature (accord / avenant), DILA themes (pay, working time, telework, gender equality, profit-sharing…), signature, effect and end dates, collective-agreement code (IDCC) checked against Sirene, signatory unions and the official Légifrance link (metadata only, never the text nor a person's name). Searched by filing SIRET over the establishments known to Sirene (25 at most, the rest counted): an empty list never means « no social dialogue » (headcount threshold, unpublished decisions). A sole proprietorship, a restricted-diffusion entity or a group without legal personality (INSEE category 2xxx, 9200 or 9210) answers 400 with its exact code and is never charged. Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| siren | Yes | 9-digit SIREN of a legal entity | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnlyHint/openWorldHint, it discloses that the payload is metadata only (never the text or a person's name), that IDCC codes are cross-checked against Sirene, the exact cost and payment rails, the 400 behavior for sole proprietorships/restricted-diffusion/group entities with no charge, and the requirement to cite the returned `citation` verbatim.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense paragraph that front-loads what the tool returns before caveats and pricing; every clause carries information. The sentences are long and stacked with parentheticals, which slightly hurts scanning, but there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 need no explanation, and the description still covers source, coverage limits, error cases, cost, and citation obligations. An agent has everything needed to decide to call it and interpret an empty or 400 response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 adds real meaning: the siren is resolved against Sirene establishments (capped at 25) rather than queried directly, and it explains the x402 payment path ($0.02 in USDC or EURC) that backs the api_key/x_payment parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (company-level collective agreements for a French SIREN published on Légifrance's ACCO fund) and enumerates exactly what is returned: title, nature, DILA themes, dates, IDCC, signatory unions, and Légifrance link. No sibling tool covers this data, and the scope is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains how the lookup works (filing SIRET across at most 25 establishments), warns that an empty result does not mean 'no social dialogue' due to headcount thresholds and unpublished decisions, and lists the entity types that return 400. What's missing is an explicit 'use this when you need X' framing, though with no overlapping sibling that is minor.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_french_company_court_decisionsFrench company court decisionsARead-onlyInspect
Commercial-court decisions linked to a French company (SIREN) from the Cour de cassation open data (Judilibre): counts, closed-list nature (insolvency judgment, order or judgment to pay, summary proceedings, expert appraisal, other dispute), the company's role (claimant, defendant), the other companies involved (SIREN only) and the official link to each decision. No text, no individual's name, no amount: read the decision at the source. Coverage is partial and measured (about 51% of decisions are linked to a company); no result never means no litigation; insolvency judgments are also served by get_french_company_legal_alerts. A sole proprietorship, a restricted-diffusion entity or a group without legal personality (INSEE category 2xxx, such as a joint ownership between natural persons, 9200 or 9210) answers 400 with its exact code and is never charged. Paid via x402 ($0.01 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| siren | Yes | 9-digit SIREN of a legal entity | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond readOnlyHint/openWorldHint: ~51% coverage caveat, closed-list category nature, exclusion of text/names/amounts, specific 400 error behavior for sole proprietorships / restricted-diffusion / non-legal-personality INSEE 2xxx categories, 'never charged' on that error, x402 pricing ($0.01 USDC/EURC), and a verbatim citation requirement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads what the tool returns before caveats, pricing and citation rules. Dense but nearly every clause carries decision-relevant information; only the 'no text, no individual's name, no amount' phrasing is slightly redundant with the preceding enumeration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 described. Everything else an agent needs to call correctly is present: data scope, coverage limits, error semantics, billing model, and citation obligation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and already documents siren, api_key and x_payment. The description adds only SIREN scope ('linked to a French company') and the failure mode for certain entity categories, which is useful but largely redundant with the schema's own parameter docs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource (commercial-court decisions linked to a French company), the identifier key (SIREN), and the source (Cour de cassation open data / Judilibre). It enumerates exact returned dimensions (counts, closed-list decision types, role, co-litigants, official link), so an agent knows instantly what this differs from, e.g. get_french_company_legal_alerts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly warns that no result never means no litigation and routes insolvency data partly to get_french_company_legal_alerts, plus instructs reading the decision at the source since no text is returned. It lacks an explicit positive trigger statement ('use this when you need litigation history for a SIREN'), but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_french_company_credit_limitFrench company credit limit for a new customerARead-onlyInspect
Use when asked whether to grant credit to a new customer, e.g. "Can I grant Y 20,000 € at 60 days?" Indicative credit limit and payment terms for a French legal entity, from a published, versioned formula: the class, score, confidence and model version are those of get_french_company_default_risk for the same SIREN (one scorecard), the amount comes from the formula table by class and workforce bracket. verdict indication_servie (with conditions 30_jours or 45_jours and encours_indicatif in euros), comptant_conseille (cash, encours_indicatif 0) or non_evaluable with cause_non_evaluable (entreprise_cessee, procedure_en_cours, defaut_avere, societe_trop_jeune, comptes_non_publies, comptes_trop_anciens, classe_indeterminee), never an amount. The class and the terms always come with the amount; motifs flag old accounts, negative or thin equity, low confidence and recent commercial-court decisions. Pass montant and delai_jours together to compare your request: comparaison_demande. entrees gives what the formula read, formule its table and thresholds, to redo the computation. An indication from public data, not a credit decision; this legal entity only, group exposure not read; no officer. Statistical indicator about the company, not a decision or an assessment about a person. A sole proprietor or restricted entity is refused (400, not charged); unknown SIREN 404, BODACC down 503, not charged. Paid via x402 ($0.12 in USDC or EURC). Closed lists and reading rules: GET /v1/lecture (free). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| siren | Yes | 9-digit SIREN of a French legal entity | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| montant | No | Optional, with delai_jours: the amount you plan to grant, in whole euros | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. | |
| delai_jours | No | Optional, with montant: the payment term you plan to grant, in days (0 = cash) |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, but the description goes much further by disclosing verdict variants, non-evaluable causes, motifs, error statuses and charging behavior, and the citation requirement. This is far beyond what the annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loads the primary use case, then layers outputs, caveats, payment, and errors. It is long but mostly earned by the tool's complexity; some clauses are run-on and could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a 5-parameter tool with an output schema, annotations, and full schema coverage, the description still covers the critical context: verdict categories, failure modes, billing/error behavior, scope limits, and citation handling. 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameter meanings are already well documented. The description adds useful semantics by saying montant and delai_jours should be passed together to produce comparaison_demande and by linking payment behavior to x402/api_key context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and verb: indicative credit limit and payment terms for a French legal entity. It explicitly distinguishes itself from sibling get_french_company_default_risk by explaining that the class/score/confidence/model version come from that tool while the amount comes from the formula table.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Opens with a concrete when-to-use condition and example: asking whether to grant credit to a new customer. It also explains when to pass montant and delai_jours for comparaison_demande, names the related default-risk tool, and notes scope exclusions such as group exposure and officers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_french_company_default_riskFrench company default risk scoreARead-onlyInspect
Company default-risk score (0-100) for a French company at ~12 months: credit risk and insolvency risk scoring from filed financial ratios (structure, profitability, liquidity, net cash, debt service, trend) + company age + a hard BODACC override (active insolvency / liquidation / closure for insufficiency of assets = proven default). Returns score, qualitative band, every component with its threshold, and a confidence level. Decision-support only, NOT a solvency opinion or credit rating. Statistical indicator about the company, not a decision or an assessment about a person. couverture_axes names the axes the scale could evaluate and the silent ones with a closed-list reason (no published ratio, holding lens, single-year trend, uncovered line items, commercial-court decisions not read): a silent axis cannot penalise, so fewer computed axes means possibly understated risk, never a better score. Commercial-court decisions linked to the company are counted in contentieux_informatif (by nature and role, partial coverage: zero never means no litigation; dernier_passage_complet dates the collection's last full pass). One measured cell weighs (since scale version defaillance-v1.10, measured against a placebo): at least one order or judgment to pay as defendant dated within the twelve months before the day of computation adds 12 points for an SME (PME) only, never for a mid-cap, a large company or an unknown category (contentieux_informatif.cellule: count, points, closed-list reason); other decisions do not weigh. echelle.backtest carries the dated measurement of the scale on real French defaults (BODACC opening judgments from 31 December 2025 to 3 September 2026 joined with filed accounts, case-control design): AUC, share of defaults per band with confidence intervals, detection at the 25 and 50 thresholds. These are OBSERVED rates on a sample, never a probability of default for the company you are reading; versions_couvertes names the scale versions the measurement holds for. Fully disclosed legal persons only: a sole proprietorship, a restricted-diffusion unit or a group without legal personality is refused, 400 with the exact code, never charged. Paid via x402 ($0.10 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| siren | Yes | 9-digit SIREN | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only readOnlyHint and openWorldHint declared, the description carries real behavioral weight: cost and currency ($0.10 USDC/EURC), the failure mode and billing guarantee on ineligible entities, the precise nature of the BODACC hard override, the 12-point weighting rule scoped to PME only, and the warning that a silent axis understates rather than improves risk. It also pre-empts the most likely misinterpretation by insisting the backtest AUC and band rates are observed sample rates, never a probability of default for the entity being read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded correctly — the first sentence delivers score, horizon and inputs before any caveats — and most sentences carry non-obvious information. But it is very long and dense, with parenthetical enumerations (closed-list reasons, backtest date ranges, version identifiers like defaillance-v1.10) that could be compressed, and it re-explains output fields that the output schema already defines.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paid statistical scoring tool with an output schema present, everything an agent needs is covered: eligibility, cost, error semantics, what the score is and is not, how silence on an axis should be read, and the citation obligation on reporting. Return values are over-explained rather than under-explained, so nothing is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so siren, api_key and x_payment are already documented in detail, making 3 the baseline. The description adds value beyond the schema on the payment parameter by disclosing the price and accepted currencies and by reinforcing that a credits error is returned rather than an x402 quote on insufficient balance — information an agent needs to choose between api_key and x_payment.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a precise verb+resource+horizon: a 0-100 default-risk score for a French company at ~12 months, computed from filed financial ratios plus company age plus a BODACC override, and it names the returned artifacts (score, band, components, confidence). That specificity distinguishes it in practice from neighbours such as get_french_company_credit_limit, get_french_company_industrial_risk and get_french_company_health_summary. However, no sibling is named or contrasted, so it stops short of the explicit differentiation a 5 requires.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the intended use (decision-support), the exclusions (not a solvency opinion, not a credit rating, not an assessment about a person) and the eligibility gate (only fully disclosed legal persons; sole proprietorships, restricted-diffusion units and legal-personality-free groups are refused with a 400 and not charged). It also explains payment routing — api_key ignored when x_payment is supplied. What is missing is explicit routing against alternatives (e.g. when to pick this over get_french_company_default_risk_batch or the credit-limit tool).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_french_company_default_risk_batchFrench default risk score, batch (2 to 100)ARead-onlyInspect
Use when asked to rank customers or suppliers by default risk, e.g. "Rank my customers by risk and monitor the 30 most exposed." Batch default-risk score for 2 to 100 French companies in one call: each line carries the SAME score, class, confidence and model version as get_french_company_default_risk (one scorecard), in a closed-list basket: expose, a_surveiller, sain, non_evaluable (with its cause), cessee (a ceased company always goes there, whatever its class). Lines are ordered by basket, then by exact axis set (jeu_axes, index into jeux_axes: two scores computed on different axes are never ranked against each other), then by score; motifs_principaux names the at most three scorecard axes that weigh most; a line whose reference year is not exploitable carries qualite_exercice_reference (fiabilite, anomalies): read it before the score. The head counts the non_evaluable lines per cause (non_evaluable_par_cause). An unknown SIREN is a billed line (trouve=false, cause siren_inconnu), and so is one whose identity is incomplete (cause identite_incomplete, with champs_absents and fiche); no line scored at all: 404, not charged, lignes naming each cause (error identite_incomplete when every SIREN is incomplete); BODACC down: the whole batch is cancelled (503), not charged. No officer, no free text; the name only for a legal entity. Statistical indicator about the company, not a decision or an assessment about a person. chainage.surveillance lists the WHOLE expose basket in served order (axis set, then score; 100 at most, never a ceased company) with the 30-day quote of create_surveillance_watch for that list: $0.05 per target x targets. To monitor the first N only, pass its first N SIRENs to create_surveillance_watch (quoted N x $0.05): a separate watch, paid on its own, checked daily, never real time. A batch holding such a SIREN (sole proprietorship, restricted diffusion, group without legal personality) is refused whole: 400, never charged, sirens_refuses gives each refused SIREN and its code; replay without them. Paid via x402 ($0.07 per SIREN in USDC or EURC, 30% off the unit score). Closed lists and reading rules: GET /v1/lecture (free). A full-size request quotes up to $7.00, above the $1.00 single-payment cap that x402 clients apply BY DEFAULT since @x402/core 2.23 (spendControls): raise spendControls.maxAmountPerPayment, or set spendControls: false, before signing; otherwise your own client rejects the quote without ever calling us. When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| sirens | Yes | List of 2 to 100 nine-digit SIRENs (deduplicated; billed per SIREN) | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the readOnlyHint/openWorldHint annotations: discloses per-SIREN billing ($0.07, 30% off unit), which failure modes are charged vs not (unknown SIREN billed as trouve=false; 404 uncharged; 503 BODACC-down batch cancelled; 400 refusal uncharged with sirens_refuses), the default $1.00 x402 spendControls cap that will reject a $7.00 quote, and the ordering/basket semantics of results. No contradiction with the read-only annotation — it scores, it does not mutate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the use case, which is good, but the body is a single sprawling block of semicolon-chained clauses mixing output-field semantics (motifs_principaux, qualite_exercice_reference), error codes, pricing, and x402 client-version configuration. Most content earns its place, but the compression into run-ons hurts scannability for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return fields needn't be enumerated, yet the description still explains basket ordering, chainage.surveillance contents, and every error path (404, 400 with sirens_refuses, 503) plus payment mechanics. Nothing an agent needs to call this correctly or interpret the quote is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all three parameters (sirens, api_key, x_payment) are already documented in the schema, including dedup and per-SIREN billing. The description reinforces billed-line and refusal behavior but adds little parameter-level detail beyond what the schema states; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (batch default-risk score for 2 to 100 French companies) and scopes it precisely against the single-company sibling by asserting 'each line carries the SAME score, class, confidence and model version as get_french_company_default_risk'. An agent can immediately tell this apart from the single-score and watch tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Opens with an explicit trigger ('Use when asked to rank customers or suppliers by default risk') plus a concrete example, and routes to alternatives: create_surveillance_watch for monitoring a subset (with quoted pricing for first N vs whole expose basket), and the single-score tool implicitly by comparison. When-to-use and when-to-use-something-else are both covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_french_company_eu_fundingEU research funding received (CORDIS)ARead-onlyInspect
EU research and innovation funding received by a French company, from CORDIS (European Commission, CC BY 4.0): every Horizon 2020 (2014-2020) and Horizon Europe (2021-2027) project the company appears in, with role (coordinateur, participant, partenaire_associe, tiers…), EU contribution, total cost, dates, project status (signe / clos / termine) and the official CORDIS link, plus totals (projects, EU contribution in EUR, projects under way). The company is matched by the VAT number CORDIS publishes (about 90% of French participations carry a readable one): aucun_financement: true is a NON-conclusive absence, never “never funded”. Facts only, no score. Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| siren | Yes | 9-digit SIREN | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover readOnly and openWorld, but the description adds substantial behavior the agent could not otherwise know: the call is paid via x402 at $0.02 in USDC or EURC, results are facts-only with no scoring, the absence flag is non-conclusive, and any reported result must cite `citation` verbatim. These are exactly the operational and interpretive constraints that matter before invoking.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core payload is front-loaded in the first sentence, with caveats, pricing, and citation requirements following in a logical order. It runs long as a single dense block and the parenthetical enumeration of French role and status values adds bulk, but no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paid, open-world lookup with an output schema, the description covers what is returned, how matching works, how to interpret absence, the payment path, and the citation obligation. Nothing an agent needs in order to call it correctly or report its output is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 adds genuinely useful semantics beyond the schema: the required `siren` is used to resolve a CORDIS-published VAT number rather than matching directly, which explains why coverage is imperfect. That mapping detail is not visible in the input schema and materially changes how an agent should interpret a negative result.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: EU research and innovation funding received by a French company, sourced from CORDIS, scoped to Horizon 2020 and Horizon Europe. It enumerates exactly what comes back (role, EU contribution, cost, dates, status, CORDIS link) and is clearly distinct from procurement-oriented siblings like get_european_company_eu_procurement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context on when the result is meaningful and how to read it: matching is done via the VAT number CORDIS publishes (~90% coverage) and `aucun_financement: true` is explicitly a non-conclusive absence, not proof of never being funded. It does not, however, name an alternative sibling or state when another tool should be preferred, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_french_company_fileFrench company file (choose blocks)ARead-onlyInspect
Full French company file in ONE call, paying only for the blocks you ask for: for when you need several things about the same company and do not want to chain calls. The identity base is $0.005; add any of etablissements, alertes_bodacc, contentieux, finances, marches_publics, marches_publics_ue, lobbying, risques_industriels, agrements, pi, documents, facturation_prep, score. Each block costs exactly what its dedicated endpoint costs, and the total is capped at $0.35. Any block that cannot be served is NAMED with a reason from a closed list: aucune_donnee (a negative answer, e.g. no patents), non_diffusible (GDPR/partial disclosure), non_couvert (not a proven legal person), panne_amont (upstream register down), stock_perime (local copy past its age limit) or identite_incomplete (incomplete identity). For a verdict rather than raw blocks, use get_french_company_intelligence ($1.00). An identity whose administrative status or legal category is missing in Sirene is served with blocs_absents (raison identite_incomplete) and a partial provenance. Blocks built on it (score, facturation_prep) are absent for that reason (identite_incomplete). If no requested block is served and one is down or stale (stock_perime), the call returns 503 (a retry may serve a down block); else if one is refused for that reason, 404 identite_incomplete; neither is charged. Asking for score on a sole proprietorship, a restricted-diffusion unit or a group without legal personality refuses the whole file: 400 with the exact code, never charged. Partial diffusion (rule diffusion_partielle_nom_retenu_et_compte): for a unit not proven to be a legal person, identite.denomination and every documents nom_document are null, counted in ecartes.diffusion_partielle; facturation_prep.destinataire.denomination is null, uncounted, and destinataire.information states the partial diffusion. Paid via x402 in USDC or EURC. When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| blocs | Yes | Comma-separated blocks, e.g. finances,pi,score. Available: etablissements, alertes_bodacc, contentieux, finances, marches_publics, marches_publics_ue, lobbying, risques_industriels, agrements, pi, documents, facturation_prep, score | |
| siren | Yes | 9-digit SIREN, e.g. 552032534 | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only readOnlyHint/openWorldHint in annotations, the description carries the burden and does so thoroughly: per-block pricing, a $0.35 cap, a closed list of absence reasons, 503-vs-404 semantics, retry guidance, refusal cases that are never charged, and partial-diffusion nulling rules. Payment mechanics (x402 in USDC/EURC) are disclosed beyond the raw schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The value proposition and the alternative-routing sentence are correctly front-loaded, but the rest is a dense run-on paragraph mashing together pricing, error codes, GDPR edge cases and citation instructions. Every fact arguably matters, yet the packaging makes it hard to scan, and some error-code detail duplicates what a caller would learn from the response schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-block, metered, payment-gated tool with an output schema, the description supplies everything an agent needs before calling: what it costs, what can be missing and why, which failures are retryable, which are uncharged, and how to cite results. Nothing material is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns an increment by attaching cost semantics to `blocs` (identity base $0.005, per-block passthrough, $0.35 cap) and by clarifying that payment can go through x402 or prepaid credits. It stops short of describing the exact string format for `blocs`, which the schema already covers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening states a specific resource and an unusual delivery model: a full French company file assembled in one call from cherry-picked blocks. It explicitly distinguishes itself from `get_french_company_intelligence` (verdict) and implicitly from the single-block dedicated endpoints by explaining that each block costs what its own endpoint costs. An agent can decide between this and siblings without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The trigger condition is spelled out: 'for when you need several things about the same company and do not want to chain calls', plus an explicit redirect to `get_french_company_intelligence` for a verdict. It also gives when-not cases (sole proprietorship, restricted-diffusion unit, group without legal personality → 400) and when the call fails entirely (503/404, uncharged).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_french_company_financialsFrench company financialsARead-onlyInspect
Annual accounts and financial statements data of a French company from filed accounts (revenue, EBITDA, net income, ratios: INPI/Banque de France), plus the full structured tax-form line items (liasse fiscale) from the INPI registry, for up to the 20 latest public balance sheets. Every fiscal year carries a qualite grade (exploitable / a_verifier / non_exploitable, with anomaly codes and doubtful fields): read it before trusting an amount; rows the source published twice or that are demonstrably wrong are served under exercices_ecartes, never silently dropped. Consolidated accounts come apart, graded the same way. Carries decalage_analytique: the latest statement filed at the register (INPI, live) vs the latest year in the ratio dataset, with a closed-list reason: the dataset lags filings by months, so the newest filing may be served raw in bilans_saisis_inpi while ratios, trends and scores still rest on the previous year. interpretabilite says whether revenue-based ratios measure this entity's activity: for a holding or head office (NAF 64.20 / 70.10) they are computable but economically limited: income comes from financial products booked after EBITDA. Since 2026-09-06 each statutory fiscal year repeats that flag next to the ratios it concerns (exercices[].ratios_interpretabilite.<ratio> = limitee), so a reader of the ratios alone is warned; decalage_analytique.decalage is the machine-readable lag flag (true when a newer filing than the analysed year is known). Paid via x402 ($0.01 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| siren | Yes | 9-digit SIREN | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only and open-world, but the description adds substantial behavioral context: x402 payment cost, citation requirement, quality grading, excluded-but-retained rows under `exercices_ecartes`, consolidated-account handling, and the analytical lag between filings and ratio datasets. These are exactly the caveats an agent needs before invoking and reporting results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loads the core purpose and then layers necessary caveats. It is long for a tool definition, but most sentences carry operational meaning; minor tightening could improve readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complex financial dataset, output schema, and payment model, the description is complete enough for correct invocation and interpretation. It covers data sources, quality caveats, ranking/lag behavior, interpretability limits, payment, and citation expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the three parameters are already well documented in the schema. The description adds payment context via x402 but does not add parameter-level semantics beyond what the schema provides, making 3 the appropriate baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (French company annual accounts/financial statements) and enumerates contents: revenue, EBITDA, net income, ratios, liasse fiscale, up to 20 balance sheets. It is clearly distinguishable from sibling tools by its financial-statement focus and named sources (INPI/Banque de France).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides strong guidance on interpreting results, such as reading `qualite` before trusting an amount and checking `interpretabilite` for holding/head-office entities. However, it does not explicitly say when to choose this tool over siblings like `get_french_company_health_summary`, `get_french_company_credit_limit`, or `get_french_company_file`.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_french_company_health_summaryFrench company health summaryARead-onlyInspect
Business-health and risk read-out of a French company, in French AND English, from official data only: verdict, strengths, warning signs, activity trend, confidence level, plus the reconciled grid in machine-readable codes. A model fills a closed evaluation grid (no free text, no name, no figure of its own); every number, date and sentence is assembled by Sirenic, and deterministic guards overrule the model when the filed accounts contradict it: corrections are listed in divergences_modele. Entities that file no annual accounts (non-profits, companies under a year old, ceased companies) return verdict: "non_concluant" with most fields non_evaluable, and the prose says so explicitly: call get_french_company_profile instead if you only need identity. Cached 7 days. Fully disclosed legal persons only: a sole proprietorship, a restricted-diffusion unit or a group without legal personality is refused, 400 with the exact code, never charged. Paid via x402 ($0.15 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| siren | Yes | 9-digit SIREN | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation it discloses caching duration (7 days), payment mechanics ($0.15 USDC/EURC via x402, credits path, never charged on 400), which entity types are refused with the exact status code, the model-plus-deterministic-guard behavior with divergences_modele, and the citation obligation. This is unusually rich operational context that annotations do not carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single dense paragraph, but front-loaded with the purpose and organized so each sentence adds a distinct fact (coverage, guard behavior, fallbacks, pricing, citation). Slightly heavy for one block; splitting pricing/refusal into their own sentences would aid scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-field detail is unnecessary, and the description still covers the tricky semantic cases an agent must anticipate: non-conclusive verdicts, non-evaluable fields, refusals for non-legal-persons, and how to handle the citation. 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and all three parameters (siren, api_key, x_payment) are fully described in-schema, so the description adds no parameter-level meaning beyond stating the input is a SIREN-keyed lookup. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource (business-health and risk read-out of a French company) and enumerates the outputs (verdict, strengths, warning signs, activity trend, confidence level, reconciled grid). It explicitly contrasts itself with get_french_company_profile, so an agent can distinguish it from 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states when to use the alternative ('call get_french_company_profile instead if you only need identity') and when the tool is useless (entities with no annual accounts). It does not differentiate against other plausibly overlapping siblings such as get_french_company_default_risk or get_french_company_intelligence, which is the only gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_french_company_hiring_signalsFrench hiring signalsARead-onlyInspect
Hiring signals for a French company, derived on demand from France Travail data (snapshot under 24 h, nothing stored): actively-hiring yes/no/unprovable (null means absence is not provable), active-postings count (SIREN-keyed via France Travail's own employer page when one exists, else strict company-name matching over the company's known locations (lower bound: brand names and temp agencies not counted; the path used is stated in methode.comptage), top ROME occupation families (their total a lower bound when the detail is partial), contract-type mix, share of postings displaying a pay amount, plus the Egapro gender-equality index (every published year) and the INSEE workforce bracket. Aggregated signals only, never posting texts or recruiter contacts. Use for sales intelligence (a hiring company is an active company) and HR/expansion signals. A sole proprietorship, a restricted-diffusion entity or a group without legal personality (INSEE category 2xxx, 9200 or 9210) answers 400 with its exact code and is never charged. Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| siren | Yes | 9-digit SIREN of the company, e.g. 095580841 | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past readOnlyHint/openWorldHint: discloses the matching path (SIREN-keyed employer page else strict name matching over known locations), that counts are lower bounds with stated exclusions (brands, temp agencies) and where the path is recorded (methode.comptage), that nothing is stored, that failed entity types are never charged, and the x402 price ($0.02 USDC/EURC). It also imposes a post-call obligation (cite `citation` verbatim), which is exactly the kind of behavior an agent cannot get from annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what the tool returns, and every clause carries substantive information — nothing is filler. The weakness is structural: the middle is one sprawling sentence with deeply nested parentheticals (lower-bound caveats, methode reference, Egapro, INSEE bracket) that is harder to parse than a short bulleted breakdown would be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 described, yet the description still explains the semantics an agent needs to interpret them correctly: null means absence is unprovable, counts are lower bounds when detail is partial, and which field records the counting method. Payment, error and citation obligations are all covered — nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so `siren`, `api_key` and `x_payment` are already fully documented including the prepaid-vs-x402 precedence rule. The description adds no parameter-level detail beyond the SIREN-keying concept, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource (hiring signals for a French company) plus its exact provenance (France Travail, 24h snapshot, on-demand) and the output shape (yes/no/unprovable, postings count, ROME families, contract mix, Egapro index). That is enough to distinguish it from the many sibling `get_french_company_*` tools 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the intended use cases (sales intelligence: a hiring company is an active company; HR/expansion signals) and enumerates the entity classes that fail (sole proprietorship, restricted-diffusion, INSEE 2xxx/9200/9210 → 400, never charged). It stops short of naming alternatives — e.g. get_french_company_profile or get_french_company_briefing — so the agent must infer routing from context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_french_company_identity_batchFrench identity batch: SIREN, SIRET, VATARead-onlyInspect
Batch identity check of a French customer or CRM file: 2 to 150 lines per call, each a SIREN, SIRET, French VAT number or name|postcode, in file order. Use when a user hands over a customer export, e.g. « Voici mon export clients, complète et corrige SIREN, SIRET et TVA. » or « Enrichis et nettoie ma base CRM : SIREN, TVA, adresse, cessés et doublons. » Per line: resolution (resolu, a_confirmer with up to 5 candidates ranked by score_confiance, introuvable, siren_invalide, siren_inconnu, non_diffusible), SIREN, head-office SIRET, status and cessation date, address, VAT number checked live on VIES (indisponible, never a false invalide), duplicates flagged (doublon_de). VAT checks: in French business hours, VIES serves one verdict every 4 to 5 s and refuses concurrency; before pipelined checks, a full batch had 15 of 262 resolved lines checked; with them, outside business hours (23:51 UTC), 105 of 265; measured 2026-10-08; a line whose check could not start in time says non_verifie, budget_vies_epuise. Never a silent choice: a name is resolved only by a single candidate of the complete index union at its postcode that bears that name (legal name, usual name or acronym), otherwise a_confirmer; natural persons are never served as candidates (counted in candidats_non_servis). With ambiguous names, send 50 lines per call (each a_confirmer line carries its candidates). Request line up to 11000 bytes: about 148 names of 63 characters. With depuis (a past day or today), at most 20 lines per call: each resolu line also carries changements, what changed since that date in BODACC and the local stocks (verdict nouveautes, rien_de_nouveau or lecture_incomplete, totals per type, the 3 latest facts, the window actually read, lecture_complete and the line's blocks not read; stocks stale for that date are named once at the top, in changements.stocks_perimes); any other line says why in motif_sans_changements; billed $0.01 per line. EU tenders and industrial property: get_french_company_updates_since, one company per call. Billed per line at $0.003 via x402, duplicates included; up to 50 lines per call are in the free monthly quota of a verified account's API key (api_key). Closed lists: GET /v1/lecture. A full call of this tool costs at most $0.45 (150 lines), $0.20 with depuis (20 lines), within the $1.00 single-payment cap that x402 clients apply by default. When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| depuis | No | Optional: also each resolved line's changes since this day, a past day or today, at $0.01 per line and 20 lines per call at most. Accepts YYYY-MM-DD (a real date), or a full ISO 8601 timestamp (offset Z, ±HH:MM, ±HHMM or none, read as UTC): only its UTC day is kept. | |
| lignes | Yes | 2 to 150 lines (20 with depuis), each a SIREN, a SIRET, a French VAT number (FR + 11 digits) or name|postcode (e.g. "HERMES INTERNATIONAL|75008") | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes far beyond the readOnlyHint/openWorldHint annotations: per-line outcome vocabulary (resolu, a_confirmer, introuvable, non_diffusible), VIES throughput limits and measured numbers, non_verifie/budget_vies_epuise fallbacks, a guarantee of never a false invalide, candidats_non_servis policy, and the depuis side effects including stocks_perimes. Pricing, quota, payment paths, and request-size caps are all disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded correctly (purpose, then trigger examples), and most sentences carry operational value. However it is one dense paragraph mixing pricing, dated benchmark narrative, and response fields, which forces the reader to re-scan rather than skim structured sections.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a complex, billed, rate-limited batch tool: input limits, partial-failure semantics, cost per call and cap, quota, and citation requirement are all present. An output schema exists, so the description need not enumerate every return field, and it still flags the important ones.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3; the description adds real semantics on top: what a line may contain, the 20-line ceiling when depuis is set, and the ~11000-byte/148-name request envelope. It does not explain api_key vs x_payment precedence here, but the schema already does.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Batch identity check of a French customer or CRM file', with the exact input grammar (SIREN, SIRET, VAT, name|postcode) and per-line outputs. It names one sibling (get_french_company_updates_since) but leaves the several other batch siblings (get_french_company_kyb_batch, get_french_company_default_risk_batch) undifferentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger with verbatim user utterances (« Voici mon export clients… ») that map cleanly to the tool. It stops short of stating when not to use it, e.g. a single company or a different batch family, so the agent still has to infer routing against the many sibling batch tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_french_company_industrial_riskFrench industrial risk (ICPE)ARead-onlyInspect
Industrial-risk and environment (ESG) profile of a French company from the official ICPE register (Géorisques/DGPR): classified facilities with Seveso status (upper/lower tier), authorisation regime, activity state, IED flag and a per-SIREN risk synthesis. A company with no classified facility returns level aucun: the clean answer is the signal. Paid via x402 ($0.01 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| siren | Yes | 9-digit SIREN | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so safety is covered; the description goes further by naming the authoritative source (Géorisques/DGPR), disclosing the x402 price ($0.01 USDC/EURC), and specifying that the `citation` field must be reproduced verbatim. It stops short of any coverage caveat (history depth, update cadence, rate limits), which keeps it below the top score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each load-bearing: what the register returns, how to interpret an empty result, and the payment/citation obligations. The core capability is front-loaded ahead of the commercial and citation details, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't explain return shapes, and it still supplies the source authority, the meaning of the `aucun` level, and the citation contract. What's missing is scope framing — whether results cover currently classified facilities only, and what the per-SIREN synthesis contains — but for a single-required-param read tool this is close to complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each of the three parameters is documented in the schema (siren pattern, api_key vs x_payment precedence, credits-vs-quote error behaviour). The description adds nothing parameter-specific beyond 'per-SIREN', so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource: the industrial-risk/ESG profile of a French company drawn from the official ICPE register, and enumerates the payload (Seveso tier, authorisation regime, activity state, IED flag, per-SIREN synthesis). No sibling tool covers ICPE/Seveso data, so the agent can distinguish it from the many other get_french_company_* tools immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The framing (industrial risk, ESG) implies when the tool is relevant, and the `aucun` note tells the agent how to read a negative result, but the description never names an alternative or an exclusion — e.g. it doesn't say whether to reach for this versus get_french_company_health_summary or get_french_company_kyb_file when a broader risk view is wanted. Usage is implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_french_company_intellectual_propertyFrench company IP portfolioARead-onlyInspect
Intellectual-property portfolio of a French company from INPI open data: trademarks, patents and designs filed (counts + items with number, title, status, ISO dates and classification; trademarks also carry registration and expiry dates). Every date states what it is in date_nature, and every block its ordering in liste_ordre: trademarks and designs date-descending, patents NOT sorted upstream. An R&D/brand-value signal. Patent inventor names (natural persons) are never returned. Paid via x402 ($0.03 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| siren | Yes | 9-digit SIREN | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and openWorldHint annotations, the description discloses crucial behavioral details: data source (INPI), sorting behavior (trademarks/designs date-descending, patents unsorted upstream), privacy handling (inventor names never returned), payment mechanism (x402, $0.03 USDC/EURC), and a requirement to cite the `citation` verbatim. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded, starting with the core resource and then layering necessary details about contents, sorting, privacy, payment, and citation. Every sentence contributes, though the fragment 'An R&D/brand-value signal' is slightly informal and could be integrated more tightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description needn't explain return values, and it covers source, contents, sorting, privacy, payment, and citation requirements. Together with annotations covering read-only safety, it provides everything an agent needs to call and interpret the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage for all three parameters (siren, api_key, x_payment), so the baseline is 3. The description adds no parameter-specific semantics beyond what the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: retrieving the intellectual-property portfolio (trademarks, patents, designs) of a French company from INPI open data. It distinguishes itself from all sibling tools, none of which cover IP, and clearly lists what is returned and the distinguishing fields for each IP type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'An R&D/brand-value signal' hints at a use case but does not provide explicit when-to-use or when-not-to-use guidance. There are no direct alternatives among siblings, but the description could better clarify scenarios such as due diligence or innovation assessment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_french_company_intelligenceFrench company intelligence reportARead-onlyInspect
Use for a GO/NO-GO decision (credit, investment, partnership) on a French company. Company INTELLIGENCE report (every Sirenic block cross-referenced in one call): identity & officers, financials with 3-year trend, sector positioning vs NAF peers, failure-risk score, BODACC legal alerts, commercial-court decisions linked to the company (Judilibre stock since 2024-12-31: counts, closed-list nature and role, official links; partial coverage stated, never « no litigation »), sanctions screening (6 official lists, company + each officer), public procurement (French DECP + EU TED), IP assets, cached capital structure, industrial-risk synthesis (Seveso/ICPE), AMF PSAN/SGP register statuses, HATVP lobbying summary and a live VIES VAT check. Returns closed-list SIGNALS traced to their register source, synthese.conclusions_interdites (closed list of what THIS report does not allow you to infer: never a probability of default, a credit rating or an absence of risk; plus group health, current situation, cash position or an established sanction when the read data cannot support them), a deterministic verdict (solide/correct/fragile/critique) with synthese.motifs_verdict (closed-list codes that decided it) and synthese.verdict_plafonne_par (name-match doubts that capped it at « correct »: when non-empty, read « correct » as « correct subject to verification »), and strengths/vigilance points. The financial block carries decalage_analytique (latest filing known at the register vs latest year analysed) and the summary says it when a newer filing exists. Since v1.7 the synthese also carries reserves (closed-list reading caveats: holding scope, newer filing not analysed, old accounts, unpublished cash, weak name matches, unavailable blocks…), portee (what the verdict covers), confiance_financiere (the score band) and par_domaine (ten domains, each in its own closed list, all projected from blocks already served); the verdict word itself is unchanged. Every block states the official register it comes from and its as_of date, so the report is auditable offline once the Ed25519 signature is verified. Since 2026-09-06 a company with no computable financial ratio (in practice no public accounts) and no other adverse signal gets indeterminable (insufficient public data, neither good nor bad) instead of correct. The flagship due-diligence call. A SIREN whose administrative status or legal category is missing in Sirene is refused: 404 identite_incomplete (body: siren, champs_absents, fiche), never charged. Fully disclosed legal persons only: a sole proprietorship, a restricted-diffusion unit or a group without legal personality is refused, 400 with the exact code, never charged. Partial diffusion (rule diffusion_partielle_nom_retenu_et_compte): a unit not proven to be a legal person has identite.denomination null, counted in identite.ecartes.diffusion_partielle; in dirigeants_reseau, a company under partial diffusion, legal person included, gives no office: left out before any count, never counted. Paid via x402 ($1.00 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| siren | Yes | 9-digit SIREN | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Far beyond readOnlyHint/openWorldHint, the description discloses refusal behavior with exact codes and billing consequences (404 identite_incomplete, 400 for non-legal-persons, 'never charged'), partial-diffusion handling including how units are excluded before counting, the deterministic verdict and its cap mechanism, the 2026-09-06 `indeterminable` state, and that every block carries a register source plus `as_of` for offline auditability after Ed25519 verification. Payment mechanics (x402 USDC/EURC, api_key fallback, credits error vs quote) and the citation obligation are also stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The usage framing is correctly front-loaded, but what follows is a ~450-word single-block run-on dense with repeated sloganeering ('closed list' appears repeatedly) and a full enumeration of returned blocks and fields that the output schema already documents. Version archaeology ('Since v1.7', 'Since 2026-09-06') and self-congratulation ('The flagship due-diligence call') cost more than they earn.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a high-stakes, paid, multi-source aggregation tool this is complete: eligibility gates, failure modes, billing, verdict interpretation, caveats and provenance are all covered, and return values need not be restated because an output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents siren, api_key and x_payment — baseline 3. The description nevertheless adds genuine input semantics beyond the ^\d{9}$ pattern: which SIRENs are rejected outright (missing administrative status or legal category, sole proprietorships, restricted-diffusion units) and how partial diffusion nulls identite.denomination.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — an aggregated French company intelligence report that cross-references 'every Sirenic block ... in one call' — and frames itself as 'The flagship due-diligence call', which is enough to distinguish it from the single-block French tools. It never names the nearest siblings by name (get_french_company_kyb_file, get_french_company_health_summary, get_french_company_briefing), so the boundary is conveyed only indirectly via the 'one call' aggregation framing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use for a GO/NO-GO decision (credit, investment, partnership) on a French company' gives a clear triggering scenario, and the $1.00 x402 price signals this is the expensive, deliberate choice rather than a first-pass lookup. What is missing is any explicit exclusion or named alternative — nothing tells the agent when to prefer a cheaper single-block tool such as get_french_company_financials or get_french_company_default_risk instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_french_company_kyb_batchFrench KYB batch (2 to 100)ARead-onlyInspect
Batch KYB: full KYB files for 2 to 100 French companies in one call, commercial-court decisions (Judilibre) included since 2026-09-24. Billed per company at $0.105 (30% off the $0.15 unit price) via x402: the amount is the unit price times the number of SIREN. A SIREN with no diffusible company is returned with trouve=false and billed as one lookup. A SIREN whose identity is incomplete (administrative status or legal category missing) comes back trouve=false with motif identite_incomplete, billed as one lookup. A batch holding such a SIREN (sole proprietorship, restricted diffusion, group without legal personality) is refused whole: 400, never charged, sirens_refuses gives each refused SIREN and its code; replay without them. Each file carries its own per-block provenance (official register, as_of date). Ideal for prospecting and compliance agents processing lists. For a customer or supplier list, pass vue=synthese: the full files of a large batch do not fit in a tool result. One compact line per SIREN (status and cessation date, insolvency proceedings and deregistrations, sanctions screening status and match count, never a name, court-decision count, last filed accounts, completeness, reserves), same checks, same price, batch-level provenance; the text result is compact JSON on a single line. procedure_le is the BODACC publication date of the latest proceedings notice, never the judgment date; radiation_le, the BODACC publication date of the latest deregistration notice, never the date of a judgment or of the deregistration. By default, Claude Code (2.1.293, measured on 2026-10-14) passes the model a tool result of up to 25,000 tokens counted by the API (a result of up to 50,001 characters passes uncounted); beyond that, the model only receives an error message and the path of a file. At the bounded worst case (each field of the lines and of the batch head at its bounded longest), 56 lines are guaranteed to fit, on a strict bound of the exact count: 1,848 tokens for the batch head and 395 per line as counted, each character changed since taken as one more token, at most 1,862 and 409. With real companies, measured on 2026-10-08: 100 SIREN took 16,698 tokens and 80 took 13,754 (2.1 characters per token). A full-size request quotes up to $10.50, above the $1.00 single-payment cap that x402 clients apply BY DEFAULT since @x402/core 2.23 (spendControls): raise spendControls.maxAmountPerPayment, or set spendControls: false, before signing; otherwise your own client rejects the quote without ever calling us. Partial diffusion (rule diffusion_partielle_nom_retenu_et_compte): the file of a unit not proven to be a legal person has identite.denomination null, counted in identite.ecartes.diffusion_partielle. When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| vue | No | complet (default): the full KYB file of each SIREN; synthese: one compact line per SIREN, same checks and price. | |
| sirens | Yes | List of 2 to 100 nine-digit SIRENs | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld annotations, the description discloses pricing, per-SIREN billing, atomic refusal with no charge, refused-SIREN codes, provenance per block, token-size limits, x402 spend-cap behavior, and the need to cite the citation verbatim. This is unusually rich operational context for a read-only tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, but the rest is a dense wall of text mixing billing, token accounting, exact token measurements, payment-client configuration, and edge cases. Much of the exact token arithmetic and repeated field enumeration does not need to be in the description for an agent to select and invoke the tool correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 the critical operational details: batch limits, billing, refusal behavior, compact-view mode, payment cap risk, provenance, and citation requirements. An output schema exists, yet the description still provides enough context to avoid common invocation failures.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the parameter basics are already documented. The description still adds practical semantics: when to choose vue=synthese, what that compact view contains, how refused SIRENs affect the batch, and payment prerequisites for x_payment.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb and resource: batch KYB full files for 2 to 100 French companies in one call, including Judilibre court decisions. The batch scope and SIREN range clearly differentiate it from the single-company KYB sibling and from identity-only batch tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says the tool is ideal for prospecting and compliance agents processing lists, and it tells the caller to pass vue=synthese for customer or supplier lists because full files may not fit. It does not explicitly say to use get_french_company_kyb_file for a single company, but the 2-to-100 range makes that boundary clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_french_company_kyb_fileFrench company KYB fileARead-onlyInspect
Complete KYB (Know Your Business) file for a French company in one call: a comprehensive BUNDLE consolidating identity, officers, BODACC legal alerts, commercial-court decisions linked to the company (Judilibre, since 2026-09-24: the 20 most recent with official links; partial coverage, so zero decisions is a non-conclusive absence, never 'no litigation'), filed financials, sanctions screening of the company and each officer (6 official lists), VAT number and a completeness score. Use this when you want the whole due-diligence picture at once; if you only need one part, call the dedicated tool instead (get_french_company_profile, get_french_company_legal_alerts, get_french_company_court_decisions, get_french_company_financials, or screen_sanctions_lists): they are cheaper. Every block carries its provenance: official register, licence, version and as_of date, plus precision_as_of telling whether that date is the upstream official publication, Sirenic's ingestion or a live consultation. The file ends with verification (number and public link, /verifier/): whoever receives the file can check it. A SIREN whose administrative status or legal category is missing in Sirene is refused: 404 identite_incomplete (body: siren, champs_absents, fiche), never charged. get_french_company_profile still serves its profile, with that caveat. Fully disclosed legal persons only: a sole proprietorship, a restricted-diffusion unit or a group without legal personality is refused, 400 with the exact code, never charged. Partial diffusion (rule diffusion_partielle_nom_retenu_et_compte): a unit not proven to be a legal person is served with identite.denomination null, counted in identite.ecartes.diffusion_partielle. Paid via x402 ($0.15 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| siren | Yes | 9-digit SIREN | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes far beyond the readOnly/openWorld annotations: discloses pricing ($0.15 USDC/EURC via x402, or API key with prepaid credits), the refusal paths (404 identite_incomplete, 400 for non-legal-persons), the partial-diffusion rule and its null denomination, per-block provenance with `as_of` / `precision_as_of`, the `verification` link, and the crucial caveat that Judilibre coverage is partial so zero decisions is non-conclusive. It also instructs verbatim citation of `citation`.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the bundle contents and the one-line routing rule before the edge cases, and nearly every clause carries operational weight (refusal codes, pricing, provenance, citation). It is a single very dense block sentence-heavy paragraph, though, which makes the payment and refusal details harder to scan than a short list would.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paid, open-world bundle tool with an output schema already covering return shape, the description supplies everything else an agent needs: cost and payment modes, refusal behavior, coverage caveats, provenance semantics and citation requirements. Nothing material is left to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and all three parameters (siren, api_key, x_payment) are documented in the schema, so the schema does the heavy lifting and 3 is the baseline. The description adds only indirect semantics — the fact that a SIREN missing administrative status or legal category is rejected — without expanding on the SIREN format or payment-header mechanics itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (a bundled KYB file for a French company) and enumerates exactly what the bundle consolidates: identity, officers, BODACC alerts, court decisions, financials, sanctions screening, VAT and a completeness score. It explicitly distinguishes itself from the narrower sibling tools (get_french_company_profile, get_french_company_legal_alerts, get_french_company_court_decisions, get_french_company_financials, screen_sanctions_lists).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use condition ("when you want the whole due-diligence picture at once") and a when-not with named cheaper alternatives for each single-part need. It also states that get_french_company_profile still serves the profile despite incomplete Sirene identity, which resolves a likely confusion between the two.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_french_company_legal_alertsFrench company legal alertsARead-onlyInspect
Legal alerts and legal notices for a French company from BODACC, the official French gazette: insolvency proceedings (procedures collectives), court filings, deregistrations, business sales, grouped, most recent first. Judgments in closed fields (category, appointed officers by role and form, date of cessation of payments), never the judgment's text nor a natural person's name; withheld labels are counted in omissions. Paid via x402 ($0.01 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| siren | Yes | 9-digit SIREN | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and openWorldHint annotations, the description discloses meaningful traits: the BODACC source, grouping and most-recent-first ordering, strict limits on what is never returned (judgment text, natural person names), how withheld labels appear in `omissions`, the x402 cost, and the citation obligation. These are substantive behavioral details, though pagination/volume behavior is left to 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and source are front-loaded, and each subsequent sentence adds useful information about covered notice types, redaction behavior, payment, and citation. The dense parenthetical listing is slightly heavy but still efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema and annotations, the description covers the key context an agent needs: source, notice categories, ordering, data limitations, cost, and citation requirement. It could be slightly more complete on pagination or on the api_key prepaid-credit alternative, though the schema documents the latter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already explains `siren`, `api_key`, and `x_payment` in detail. The description adds only indirect context ('for a French company') and does not add meaning beyond the schema for any parameter, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: legal alerts/notices for a French company drawn from BODACC, with the categories of notices enumerated. It does not explicitly differentiate itself from nearby siblings such as search_bodacc_announcements or get_french_company_court_decisions, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the phrase 'for a French company' and by the list of covered notice types, so an agent can infer when the tool applies. However, there is no explicit guidance on when to prefer this over search_bodacc_announcements, get_french_company_court_decisions, or check_french_regulator_alerts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_french_company_lobbyingFrench lobbying register (HATVP)ARead-onlyInspect
Lobbying and transparency profile of a French company from the official HATVP register of interest representatives: registration status, category, lobbying-expense brackets per year, recent subjects with intervention domains, clients (for consulting firms), affiliations, declaration defaults. Organisation-level only: no personal data. inscrit: false is a meaningful answer. Paid via x402 ($0.01 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| siren | Yes | 9-digit SIREN | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnlyHint/openWorldHint, the description discloses material behavior: the call is paid via x402 ($0.01 USDC or EURC) and results carry a `citation` that must be reproduced verbatim. It also bounds the data scope (organisation-level, no personal data). It doesn't cover failure modes, but the schema already documents the credits-error path.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource and payload contents, followed by short operational clauses on scope, payment and citation. The opening sentence is densely packed with comma-separated field lists, but every clause carries distinct information and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and full parameter documentation, the description only needs to cover scope, cost and reporting obligations — all of which it does. The one gap is that it offers no routing guidance among the many other French company lookup tools, which matters given the size of the sibling set.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the SIREN pattern, api_key and x_payment semantics are fully documented in the schema. The description adds nothing parameter-specific (payment is mentioned but without tying it to the `x_payment`/`api_key` parameters), so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource (lobbying/transparency profile from the official HATVP register of interest representatives) and enumerates exactly what the record contains: status, category, expense brackets, subjects, clients, affiliations, declaration defaults. No sibling tool covers lobbying, and the scope is stated in terms an agent can match to a query.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: it clarifies that the tool is organisation-level only (no personal data) and that `inscrit: false` is a meaningful answer, which prevents an agent from discarding a negative result. However, it never says when to pick this over adjacent French company tools (e.g. get_french_company_profile or get_french_company_briefing) or what preconditions apply beyond needing a SIREN.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_french_company_pdf_reportFrench company PDF reportARead-onlyInspect
On-demand PDF report of a French company: a shareable due-diligence dossier (formatted KYB file: identity, officers, legal alerts, financials, sanctions screening; includes the AI health summary when cached). Every page footer carries a public verification link (/verifier/ and the response's verification number) that whoever receives the PDF can open. Returns the PDF as base64. A SIREN whose administrative status or legal category is missing in Sirene is refused: 404 identite_incomplete (body: siren, champs_absents, fiche), never charged. Fully disclosed legal persons only: a sole proprietorship, a restricted-diffusion unit or a group without legal personality is refused, 400 with the exact code, never charged. Partial diffusion (rule diffusion_partielle_nom_retenu_et_compte): the name of a unit not proven to be a legal person is left out, the PDF prints its SIREN. Paid via x402 ($0.50 in USDC or EURC).
| Name | Required | Description | Default |
|---|---|---|---|
| siren | Yes | 9-digit SIREN | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond readOnlyHint/openWorldHint: discloses the base64 return shape, the public verification footer, the exact 404 identite_incomplete refusal with body fields and 'never charged' guarantee, the legal-person eligibility gate with a 400 code, the partial-diffusion name-withholding rule, and the $0.50 x402 price. These are exactly the pre-call facts an agent needs for a paid, refusal-prone endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what the tool produces before descending into error codes and payment mechanics. Sentences are dense and clause-heavy (the partial-diffusion sentence in particular), but each carries a distinct constraint rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description still states the return format (PDF as base64) plus the error taxonomy and billing behavior. For a paid, single-required-param document tool, nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 adds real semantic constraints on the required siren: it is refused when administrative status or legal category is missing in Sirene, and refused for sole proprietorships and non-legal-person units. That tells the agent more about siren validity than the '^\d{9}$' pattern does.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: an on-demand PDF due-diligence dossier for a French company, with the exact contents enumerated (identity, officers, legal alerts, financials, sanctions screening). An agent can tell it produces a document rather than JSON data. It never names the adjacent siblings (get_french_company_kyb_file, download_french_company_document) to disambiguate, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'shareable due-diligence dossier' and 'whoever receives the PDF can open', which signals the deliver-to-a-third-party case. It gives no explicit when-to-use/when-not versus the KYB-file or document-download siblings, and no guidance on when to omit x_payment to get a quote first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_french_company_profileFrench company profile (SIREN)ARead-onlyInspect
Full official company profile of a French company by SIREN, from the French company registry (INSEE Sirene / INPI RNE): legal name, legal form, head office, NAF code, workforce, officers, collective agreements (conventions_collectives, with conventions_collectives_notes reading out technical IDCC codes: 9999 means no collective agreement is assigned, it is not an agreement number to look up), VAT number, plus groupe_lei for LEI holders: the GLEIF level-2 group, direct and ultimate CONSOLIDATING parents (named, except a parent that GLEIF flags as a natural person or of an ambiguous legal form: mere_omise gives the reason, no name, no LEI; non_servie, a neutral value, when another reason leaves it out) or the declared reason for having none (accounting consolidation, never capital ownership or beneficial owners; sans_objet without a LEI). The core company data lookup for KYB and due diligence on France. An identity whose administrative status or legal category is missing in Sirene is served with blocs_absents (raison identite_incomplete) and a partial provenance. Partial diffusion (rule diffusion_partielle_nom_retenu_et_compte): a unit not proven to be a legal person is served with denomination null, counted in ecartes.diffusion_partielle. Paid via x402 ($0.005 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| siren | Yes | 9-digit SIREN | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnlyHint/openWorldHint annotations: it discloses the price and payment rails (x402, $0.005 USDC/EURC), the prepaid-credit alternative, and a set of concrete failure/degradation modes (blocs_absents with raison identite_incomplete, partial diffusion producing a null denomination counted in ecartes.diffusion_partielle, mere_omise/non_servie/sans_objet for missing parents). It also imposes an output obligation — cite the `citation` verbatim — which no structured field conveys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded, which is good, but the body is one enormous run-on sentence with deeply nested parentheses about IDCC codes, GLEIF parent edge cases, and diffusion rules. Much of that field-level detail duplicates the output schema, and the density makes it hard to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paid, open-world lookup with an output schema, the description covers everything an agent needs before calling: cost, both payment paths, partial/incomplete-identity behavior, and the citation requirement on reporting results. No meaningful pre-call question is left open.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already explains siren, api_key (srn_live_, ignored when x_payment is present) and x_payment (omit to receive a quote), so the baseline is 3. The description reinforces the payment model but adds no parameter-level syntax or format detail beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource ("Full official company profile of a French company by SIREN") and names the source registries (INSEE Sirene / INPI RNE) plus the returned fields. It positions itself as "the core company data lookup for KYB and due diligence on France," but never explicitly distinguishes itself from near-identical siblings like get_french_company_briefing, get_french_company_file, or get_french_company_kyb_file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"The core company data lookup for KYB and due diligence on France" implies the use case, but there is no when-not guidance and no named alternative despite a very crowded French-company sibling family. The agent must infer on its own why it would pick this over the briefing or KYB-file tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_french_company_public_procurementFrench public contracts wonARead-onlyInspect
Public procurement in France: government contracts and tenders won by a French company (official DECP data), with buyers, amounts, dates, lot number when the subject states one, joint-holder count, and how to READ the amount: modalitesExecution tells whether it is a firm price or an ENVELOPE (call-off orders, subsequent contracts, optional tranches; 43% of contracts), and declared subcontracting with its amount tells what the holder does not keep. An amount covers the whole awarded contract or LOT over its full duration, excl. VAT; on a framework agreement it is a MAXIMUM CEILING, not spend (the total is split into ceilings vs firm commitments). Also CCAG, price type, advance and its rate, EU/French content ratios, amendment rank and dates, and the platform that published the record. Totals come as TWO BOUNDS: nombre_marches/montant_total count every published row (upper bound), nombre_marches_dedoublonne/montant_total_dedoublonne count one row per (buyer, notification date, amount, CPV) key (lower bound), as the same award is often published twice (two platforms, two establishments of the holder, repeated row, amendment); each row carries publication.statut (closed list) and its linked rows, and identifiant_partage flags a buyer id reused for distinct purchases. Paid via x402 ($0.01 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| siren | Yes | 9-digit SIREN | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover readOnly and openWorld, and the description adds substantial context beyond them: the x402 price ($0.01 USDC/EURC), the api_key-vs-x_payment precedence, credit-error behavior, the double-counting caveat with two totals, and the instruction to cite `citation` verbatim. This is exactly the kind of operational detail annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with purpose and pricing, but the middle is a dense run-on chain of clauses about amount interpretation, ceilings, two bounds, statut, and shared identifiers. Much of this restates output fields that a dedicated output schema already supplies, so length outruns value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex procurement dataset with output schema present, the description covers payment, data caveats, and the citation requirement, leaving no blocking gaps. It slightly over-delivers by re-explaining return-field semantics that the output schema already owns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the three parameters are fully documented, including the api_key/x_payment interaction, so baseline 3 applies. The description adds only 'Paid via x402' and does not enrich siren handling or payment fallback beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource: government contracts and tenders won by a French company from official DECP data. The French/DECP scoping clearly separates it from get_eu_procurement_awards and the Polish/Spanish/Portuguese procurement siblings without needing to open their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains how to read the returned amounts in depth but never says when to choose this tool over find_expiring_french_public_contracts, get_french_public_buyer_profile, or get_company_procurement_competitors. No when-not conditions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_french_company_trajectoryFrench company growth trajectoryARead-onlyInspect
Use when asked which customers or prospects are growing or shrinking, e.g. "Of my 300 customers, which ones have been shrinking for two years?" Growth trajectory of a French legal entity from its filed accounts ONLY: trajectoire in a closed list (croissance_forte, croissance_moderee, stable, degradation_apres_croissance, repli_modere, repli_marque, volatil_sans_tendance, serie_trop_courte, non_evaluable) on the last 4 fiscal years kept, the latest closed within 24 months, with the revenue series, peak and drop; non_evaluable carries cause_non_evaluable (aucun_compte_publie, comptes_inexploitables, comptes_trop_anciens, chiffre_affaires_non_publie), billed. signaux_hors_comptes gives establishments opened and closed over 24 months, DECP publications of contracts notified over the last 12 months vs the 12 before (an upper bound, like nombre_marches of /v1/entreprise/{siren}/marches-publics, with the source's own volume as a benchmark) and the headcount band, as dated facts, never a verdict. critere_de_liste gives the snapshot value of the tendances.trajectoire criterion of query_french_companies, which screens a whole customer file by lists of 50 SIRENs. A sole proprietor or restricted entity is refused (400, not charged); unknown SIREN 404, not charged. Paid via x402 ($0.02 in USDC or EURC). Closed lists and reading rules: GET /v1/lecture (free). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| siren | Yes | 9-digit SIREN of a French legal entity | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Well beyond the readOnlyHint/openWorldHint annotations: it discloses the 4-year window with the 24-month recency constraint, the cause_non_evaluable taxonomy, the signaux_hors_comptes caveats (upper bound on DECP), refusal/400/404 behaviors and that they are not charged, and the x402 price ($0.02 USDC/EURC). Also mandates citing the citation verbatim.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the use case and result shape, and nearly every clause is substantive (list values, caveats, pricing, citation rule). It is a single dense run-on paragraph with heavy jargon, which costs some scannability, so slightly short of top marks.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return values need not be fully spelled out, yet the description still maps the key fields (trajectoire, cause_non_evaluable, signaux_hors_comptes, critere_de_liste). Together with refusal/pricing handling and the free reading-rules pointer, an agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with three parameters all documented, so the schema carries the parameter burden. The description reinforces siren behavior (refused entities, 404) and pricing relevant to api_key/x_payment but adds no syntax detail beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope: 'Growth trajectory of a French legal entity from its filed accounts ONLY,' immediately followed by the closed trajectory list. It distinguishes from the sibling query_french_companies by noting critere_de_liste mirrors the tendances.trajectoire screening criterion, so an agent can place it precisely among the trajectory/financial siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Opens with an explicit trigger ('Use when asked which customers or prospects are growing or shrinking') and a concrete example question. It names the alternative path (query_french_companies for screening a whole customer file by lists of 50 SIRENs) and states refusal cases (sole proprietor/restricted → 400, unknown SIREN → 404).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_french_company_updates_sinceFrench company: everything new since a dateARead-onlyInspect
What changed at a French company since a date ("what changed at this customer since June?"): every official block in one call, namely BODACC notices (insolvency, sales, deregistration, changes, accounts filings with their figures), commercial-court decisions, French and EU public contracts, establishments opened or closed, cessation, licences, dated sanctions listings, trademarks, patents and designs, RGE certifications and the lobbying register. Each change is dated at publication with the event date alongside; verdict nouveautes, rien_de_nouveau (every block read in full and fresh) or lecture_incomplete (a block down, stale or partly read, named); monthly stocks (Sirene, French contracts) make a recent date, after their snapshot, yield lecture_incomplete, never rien_de_nouveau; the 100 most recent, per-type totals before the cut. Hiring, officers and headcount band are outside the engine. Paid via x402 ($0.05 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| siren | Yes | 9-digit SIREN | |
| depuis | Yes | List what was published since this day, a past day or today. Accepts YYYY-MM-DD (a real date), or a full ISO 8601 timestamp (offset Z, ±HH:MM, ±HHMM or none, read as UTC): only its UTC day is kept. | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the readOnlyHint/openWorldHint annotations: it discloses the three possible verdicts and what each means, explains that monthly Sirene/contracts snapshots force lecture_incomplete for very recent dates, states the 100-item cap with per-type totals reported before the cut, and flags the x402 payment cost and how citation must be used. These are exactly the behaviors an agent must anticipate before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose and the illustrative query before the long enumeration, and every clause carries information rather than filler. The trade-off is density: one paragraph of semicolon-chained clauses with heavy parentheticals makes the verdict semantics harder to parse on first read.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex multi-source aggregation tool it covers coverage scope, verdict states, staleness caveats, result caps, payment paths and citation obligation; with an output schema present it need not describe return shapes. An agent has everything needed to call it and interpret the outcome correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 adds real semantics beyond the schema: it explains that the chosen date interacts with monthly snapshot stocks, so a date after the snapshot yields lecture_incomplete rather than rien_de_nouveau. That is a consequence of the `depuis` value the schema alone would not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb-and-resource combination ('what changed at a French company since a date') and then enumerates the exact source blocks covered (BODACC, court decisions, public contracts, establishments, IP, RGE, lobbying). The scope is precise enough to separate it from siblings like get_french_company_changes, get_french_company_court_decisions or get_french_company_public_procurement, which each cover one block.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete usage framing ('what changed at this customer since June?') and explicitly bounds the tool by naming what is out of scope ('Hiring, officers and headcount band are outside the engine'), which steers the agent away from the wrong call. It does not, however, name a sibling alternative for the excluded needs or say when to prefer the per-block tools instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_french_public_buyer_profileFrench public buyer profileARead-onlyInspect
Procurement profile of a French public buyer (by SIRET): contract volumes by year, top CPV segments, incumbent suppliers with their contracts expiring within 18 months, framework-agreement share, share of amounts that are envelopes rather than firm prices, share of contracts with declared subcontracting, share granting an advance, dominant CCAG and price type, publishing platform, average bids received per tender and median publication delay: the buying habits to know before a sourcing meeting. From official DECP open data. Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| siret | Yes | 14-digit SIRET of the public buyer, e.g. 26310012500016 (CHU de Toulouse) | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint/openWorldHint; the description adds material behavior the agent cannot get elsewhere: the tool is paid via x402 at $0.02 in USDC or EURC, the data originates from official DECP open data, and results carry a `citation` that must be reproduced verbatim. Cost and citation obligations are exactly the operational facts annotations omit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource and scope, followed by two short operational sentences about payment and citation. The single very long metric list is dense but every listed item is a distinct outcome of the call, so it earns its place; a bulleted structure would be easier to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the description covers source, price, payment paths and citation duty. The only gap is edge behavior for SIRETs that are not public buyers (empty vs error), which matters for a paid call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so siret, api_key and x_payment are already fully documented in the schema, including the pattern and the credits-vs-x402 interaction. The description adds only that the key is a SIRET, which the schema already states — baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource ('Procurement profile of a French public buyer (by SIRET)') and enumerates the exact content dimensions returned (CPV segments, incumbent suppliers, framework-agreement share, CCAG, bids per tender). The 'public buyer' framing implicitly separates it from the company-side procurement siblings, but no sibling is named explicitly, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear use context — 'the buying habits to know before a sourcing meeting' — which tells an agent when this is the right call. It offers no exclusions or named alternatives (e.g. get_french_company_public_procurement or find_expiring_french_public_contracts), so guidance is contextual rather than complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_french_sector_benchmarksFrench sector benchmarks (NAF)ARead-onlyInspect
Sector benchmarks and sector statistics for a French NAF activity code (any level: 68, 68.2, 68.20, 68.20B): number of active companies, median company age (+quartiles), workforce-bracket distribution, and, when at least 5 companies file public accounts, median revenue, EBITDA margin, pre-tax result and debt ratio. Peer comparison: place a company against its peers. Aggregates only, no personal data. Paid via x402 ($0.05 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| code_naf | Yes | NAF rev. 2 activity code, any level (68, 68.2, 68.20, 68.20B): only the NAF rev. 2 form is retained (sub-class 62.01Z, and its levels: division 62, group 62.0, class 62.01); a code of an older nomenclature (NAF rev. 1: 55.3A, activity not recoded since rev. 2 came into force) is not, nor is INSEE's provisional value 00.00Z (no division 00 in NAF rev. 2); any other code is refused (400, not charged) | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint/openWorldHint already covering the safety profile, the description still adds substantive behavior: paid via x402 at $0.05 in USDC or EURC, financial metrics suppressed below 5 filing companies, aggregates only with no personal data, and an obligation to cite the `citation` verbatim. That is well beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the output payload and metric list, then pricing and citation rules — a sensible order with no filler sentences. Minor redundancy: the NAF level examples (68, 68.2, 68.20, 68.20B) appear here and again in the schema's code_naf description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 need not be explained, and the description still covers the gaps an agent would hit: the 5-company data threshold, the x402 cost and payment flow, and the citation requirement. 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; code_naf, api_key and x_payment are all documented in the schema. The description restates the NAF level semantics already present in the schema's code_naf description, adding reinforcement but no new syntax or format detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (sector benchmarks and statistics for a French NAF activity code) and enumerates the exact metrics returned: company count, median age with quartiles, workforce distribution, revenue/EBITDA/pre-tax result/debt ratio. It also scopes the input precisely (any NAF level: 68, 68.2, 68.20, 68.20B), which separates it from company-level siblings like get_french_company_financials.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a use case ('Peer comparison: place a company against its peers') but never names an alternative or an exclusion — e.g. when to prefer compare_french_companies or get_french_company_financials instead. Usage is implied by the data shape rather than stated as routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_german_insider_transactionsGerman insider transactionsARead-onlyInspect
Insider transactions at a German listed company (directors' dealings under MAR Article 19, as notified to BaFin): are its managers buying or selling? Issuer-level aggregate over a rolling 12 months: notification counts, gross buy and sell amounts, net flow, breakdown by declarer category, plus the underlying notifications. Query by LEI or ISIN (BaFin publishes no company register number). No individual is ever named, and the breakdown is withheld when it would single someone out. Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | LEI (20 chars, ISO 17442) or ISIN (12 chars) of the German listed issuer | |
| depuis | No | Start date YYYY-MM-DD (default: rolling 12 months; BaFin keeps 12 months; never earlier than five years back, and periode.depuis_demande says when a request was bounded) | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnlyHint/openWorldHint annotations: discloses the anonymity guarantee ('no individual is ever named'), the suppression rule for small cohorts, the 12-month retention limit, the paid x402/credits model, and the citation obligation. These are exactly the non-obvious behaviors an agent needs before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the opening clause and every sentence carries information; the payment and citation notes are actionable rather than filler. It is a dense single paragraph with several parenthetical asides, which slightly hurts scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 need not be spelled out. Given that, the description covers everything an agent needs: data source, identifier constraints, time bounds, privacy behavior, payment mechanics, and citation duty.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already documents all four parameters at 100% coverage, so baseline is 3. The description adds real value by explaining why only LEI/ISIN are accepted (no German company register number) and by describing the returned result as issuer-level, which helps interpret the `id` parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Insider transactions at a German listed company'), then names the exact legal basis (MAR Article 19, BaFin notifications) and the aggregate shape it returns. The country qualifier cleanly separates it from sibling get_belgian_insider_transactions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear invocation context: query by LEI or ISIN, rolling 12-month default window, and that BaFin publishes no company register number. It does not explicitly name an alternative tool or state when NOT to use this one, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_irish_company_insolvencyIrish company insolvency status (CRO)ARead-onlyInspect
Insolvency status of an Irish company from the Companies Registration Office register (CRO Open Data, CC BY 4.0, complete daily snapshot): procedure DERIVED from the published status (liquidation, liquidation stayed, examinership, administration) with its date; strike-off (listed or struck off) and dissolution reported separately; aucune_procedure is a measured fact on the complete snapshot (the CRO publishes neither the liquidator nor court orders). 400 without charge for a malformed number, 404 without charge when unknown, of an unknown CRO type or with a current name under objection (GDPR art. 21), 503 fail-closed without a fresh snapshot. Price $0.01. The company file itself is served by the generic EU company lookup with pays=IE. When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| numero | Yes | Irish CRO company number: 1 to 7 digits, e.g. 600161 (IE prefix and leading zeros tolerated) | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond readOnlyHint/openWorldHint: discloses status codes and their cost implications (400 malformed, 404 unknown/type/name under objection, 503 fail-closed without fresh snapshot), the $0.01 price, the GDPR art. 21 objection case, and the important negative fact that the CRO publishes neither liquidator nor court orders.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and every topic is relevant, but the error-code sentence is a run-on that is hard to parse ('400 without charge for a malformed number, 404 without charge when unknown, of an unknown CRO type or with a current name under objection'), and pricing/citation instructions compete with the behavioral content in one dense block.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 pre-empts the main comprehension risk (derived procedure vs. separately reported strike-off/dissolution, `aucune_procedure` as a measured fact) and adds pricing, error and citation obligations. Nothing an agent needs to invoke or report the result correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents numero, api_key and x_payment fully. The description only alludes to 'a malformed number' without adding format or payment-negotiation semantics, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Insolvency status of an Irish company from the CRO register') and enumerates the exact statuses returned (liquidation, liquidation stayed, examinership, administration, strike-off, dissolution). It also names the boundary with a sibling: the company file itself is served by the generic EU company lookup with pays=IE.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly positions the tool for insolvency status only and routes the agent elsewhere for the company file, and explains what `aucune_procedure` means so an agent doesn't misread a null. It stops short of an explicit when-not-to-use clause for the other national insolvency siblings, but for a single-country tool the routing is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_latvian_company_accountsLatvian annual accountsARead-onlyInspect
Latvian company annual accounts from official VID filings (Uzņēmumu reģistrs open data, CC0, refreshed daily), with the financial statements of EVERY filed fiscal year in one call: balance sheet, P&L (revenue null = not published, never zero), cash flow when filed, employees. Figures as published: filing currency (EUR, LVL before 2014) and published rounding unit (THOUSANDS = thousands); statutory and consolidated filings kept apart. No default-risk score is computed for this country yet: the response carries score_defaillance (statut non_evaluable, closed-list reasons explained by GET /v1/lecture); never read it as a low score. Legal persons only: an individual merchant (IK), a sole trader or a form not recognised as a legal person returns 404, not billed. Paid via x402 ($0.03 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| regnr | Yes | 11-digit Latvian registration number (Uzņēmumu reģistrs), e.g. 40003032065 | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations only covering readOnly/openWorld, the description adds substantial operational detail: free daily refresh, all fiscal years returned in one call, null-vs-zero revenue semantics, currency (EUR/LVL pre-2014) and rounding units, statutory vs consolidated separation, and the not-billed 404 path. It also pre-empts a dangerous misread of score_defaillance ('never read it as a low score'), which is exactly the kind of trap an agent would otherwise fall into.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the payload scope, then cost/citation instructions, with essentially no filler despite the length. Density is high and a few parenthetical asides (mixed Latvian/French terms, the payment-mode recital) could be trimmed, but every sentence carries decision-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return values needn't be explained, yet the description still flags the one field an agent would misinterpret (score_defaillance non-evaluable). Combined with pricing, citation requirements, and the 404 billing exemption, an agent has everything needed to invoke and report correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — regnr format/example, api_key precedence rules, and x_payment all documented inline — so the schema already carries parameter meaning. The description adds no parameter-level detail beyond reiterating the legal-person constraint that governs regnr validity, which is a baseline-3 outcome.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Latvian company annual accounts from official VID filings') with the exact contents (balance sheet, P&L, cash flow, employees). It clearly separates itself from siblings like get_latvian_company_officers or get_latvian_company_insolvency by scope, and names the data source and its authority.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear eligibility rule ('Legal persons only: an individual merchant (IK), a sole trader or a form not recognised as a legal person returns 404, not billed') and warns that no default-risk score exists for this country, directing to GET /v1/lecture. It never names a sibling tool as the alternative for the excluded cases, so the routing guidance stops just short of explicit when-to-use-this-instead guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_latvian_company_eventsLatvian company legal eventsBRead-onlyInspect
Latvian company legal events from the official Uzņēmumu reģistrs open data (CC0, daily national photo): liquidations and activity terminations (incl. by court or tax authority), mergers, acquisitions, divisions and transformations with the other company's number (never an individual merchant's), VID activity suspensions, and securing measures (prohibitions, liens, attachments) with the registering institution. Closed-list types plus source code and wording. The answer carries the company's statut and statut_detail: an active company with no current entry gets aucun_evenement: true, except when one of its liquidations, suspensions or securing measures left the register's snapshot on the identity copy's day or later: until the next identity copy, that copy cannot tell a lifted entry from a striking off, and the route returns 503 photo_perimee, not billed. The register removes a struck-off company's liquidations, suspensions and securing measures on the day of striking off: those Sirenic saw before are kept and served with retire_de_la_publication_le (the day they were removed from the register's publication) and derniere_publication_le, under partial coverage that says since when they are kept (never for an active company); a family with no entry, current or kept, is named in blocs_absents (reason radiation_inscriptions_retirees); a struck-off company with nothing published or kept returns 404 radiee_inscriptions_retirees, not billed. Nothing is kept for officers, members or shareholders. Legal persons only: an individual merchant (IK), a sole trader or a form not recognised as a legal person returns 404, not billed. Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| regnr | Yes | 11-digit Latvian registration number (Uzņēmumu reģistrs), e.g. 40003032065 | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint=true annotation, the description discloses paid access via x402 ($0.02), that 503/404 responses are not billed, that retained entries carry retire_de_la_publication_le/derniere_publication_le under partial coverage, and that citation must be reported verbatim. These are meaningful behavioral disclosures, though some phrases ("daily national photo", "Sirenic saw before") are incoherent and undermine clarity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a dense, rambling paragraph with garbled machine-translated phrasing ("daily national photo", "photo_perimee", "Sirenic saw before"). It also devotes significant space to output fields (statut, aucun_evenement, blocs_absents, citation) that are already covered by the output schema, so much of the text does not earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so detailed return-field explanations are redundant, yet the description still covers critical caveats (retention until next identity copy, 503 photo_perimee, 404 radiee_inscriptions_retirees, partial coverage flags). The content is largely present but muddled, and the garbled clauses reduce confidence that an agent can rely on it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for all three parameters, including the 11-digit regnr pattern and api_key/x_payment semantics. The description adds no parameter-specific guidance (no mention of regnr format, api_key vs x_payment precedence, or when to omit x_payment), so it sits at the baseline where the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description does name the resource and source ("Latvian company legal events from the official Uzņēmumu reģistrs open data") and lists event families (liquidations, mergers, suspensions, securing measures). However, the core statement is buried under garbled clauses ("daily national photo", "those Sirenic saw before") and it never explicitly distinguishes itself from sibling get_latvian_company_insolvency or get_latvian_company_accounts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives eligibility constraints (legal persons only; individual merchants return 404, not billed) and billing behavior on error codes, which is useful. But it offers no when-to-use-vs-alternative guidance, e.g. no pointer to get_latvian_company_insolvency for insolvency or get_latvian_company_shareholders for officer data, despite those siblings being present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_latvian_company_insolvencyLatvian company insolvencyARead-onlyInspect
Latvian company insolvency record from the official Uzņēmumu reģistrs open data (CC0, daily national photo since 2008): insolvency and legal-protection proceedings with dates, resolution, court and case number; a null end date means ongoing. A registered company with no proceeding returns an explicit positive answer (aucune_procedure: true): the register is authoritative, except for a company struck off before 2008, which the history does not cover (absence not conclusive, said in provenance). The answer carries the company's statut and statut_detail. Legal persons only: an individual merchant (IK), a sole trader or a form not recognised as a legal person returns 404, not billed. Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| regnr | Yes | 11-digit Latvian registration number (Uzņēmumu reģistrs), e.g. 40003032065 | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Read-only annotations are consistent with a lookup tool, and the description adds substantial context beyond them: a null end date means ongoing, an explicit negative answer is returned for companies with no proceeding, the pre-2008 blind spot is disclosed, and the citation field must be quoted verbatim. It also documents pricing ($0.02 USDC/EURC via x402) and that 404s are not billed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource and source before moving to semantics, exclusions and payment. It is dense but not padded; minor noise comes from the awkward phrase 'daily national photo since 2008' and the French field name 'aucune_procedure' in an otherwise English text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 need not be explained, yet the description still clarifies the key semantics an agent would misread: null end date = ongoing, negative answers are meaningful, statut/statut_detail accompany the answer. 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents regnr's 11-digit pattern, api_key's prepaid-credit role and x_payment's signed-header role. The description only echoes the payment model ('Paid via x402'), adding no parameter-level detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (Latvian company insolvency record) and pins down the source (Uzņēmumu reģistrs open data) and the scope of coverage since 2008. An agent can immediately distinguish it from get_latvian_company_accounts or get_lithuanian_company_insolvency 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear conditions are given for when the tool does NOT apply: individual merchants (IK), sole traders and non-legal-person forms return 404, and pre-2008 struck-off companies are not covered. It does not name a sibling alternative for those cases, but the exclusions themselves are explicit enough to route an agent correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_latvian_company_officersLatvian company officersARead-onlyInspect
Latvian company officers and directors from the official Uzņēmumu reģistrs open data (CC0, refreshed daily): board members, chairs, liquidators and other representatives with role, governing body, representation rights and registration date; corporate officers carry their own registration number, and an officer whose number is an individual merchant's is served as a natural person, without it. GDPR minimisation: never the Latvian personal identity number, birth year only when published, never the month. The answer carries the company's statut and statut_detail: an active company with no officer gets an empty list (a register fact); a struck-off company whose officers the register removed returns 404 radiee_inscriptions_retirees, not billed; one that keeps some is served under partial coverage. Legal persons only: an individual merchant (IK), a sole trader or a form not recognised as a legal person returns 404, not billed. Paid via x402 ($0.01 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| regnr | Yes | 11-digit Latvian registration number (Uzņēmumu reģistrs), e.g. 40003032065 | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes far beyond the readOnly/openWorld annotations: discloses the source registry (Uzņēmumu reģistrs CC0, daily refresh), GDPR minimisation rules, statut/statut_detail semantics, specific 404 behaviour (radiee_inscriptions_retirees, partial coverage), billing ($0.01, not billed on 404), and the citation requirement. This is exactly the context structured fields cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what the tool returns, then edge cases, then payment. Dense and mostly load-bearing, though the GDPR and statut clauses pack multiple facts into long sentences that could be split for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 fills in the interpretive context an agent still needs: what statut/statut_detail mean, why an empty list is a fact rather than a failure, and which 404s are billable. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so regnr format and the two payment parameters are already documented. The description adds the pricing/payment context (x402, not billed on 404) but nothing extra about the required regnr beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb + resource (Latvian company officers/directors) and enumerates the data content: board members, chairs, liquidators, role, governing body, representation rights. Clearly separates it from siblings like get_latvian_company_shareholders or other-country officer tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the eligibility boundary precisely (legal persons only; IK/sole trader/unrecognised forms return 404) and covers the empty-list vs retired-officers cases, which guides when a result is meaningful. It never names the sibling (shareholders, accounts) an agent might confuse it with, so routing guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_latvian_company_public_procurementLatvian company public procurement (IUB)ARead-onlyInspect
Public-procurement record of a Latvian company from the IUB (Iepirkumu uzraudzības birojs) daily open-data notices (CC0, e-forms since 2023-10-25): contracts WON (attributions: buyer, subject, CPV, contract reference, value in EUR, conclusion / decision / start / end dates, contract status, winner size) and notices ISSUED as a buyer (avis_emis), newest first, 100 each at most with tronque_*, totals (nombre_attributions, valeur_totale_eur, nombre_avis_emis) and stock (first and last day collected). Natural-person winners are never served, nor a buyer that is an individual merchant; ecartes.personne_physique (only when non-zero) counts the winners kept without identity among the awards of the listed notices. About 3% of Latvian winners are published without an identifier and the stock starts on 2023-10-25: aucune_attribution: true is a NON-conclusive absence. Facts only, no score. Legal persons only: an individual merchant (IK), a sole trader or a form not recognised as a legal person returns 404, not billed. Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| regnr | Yes | 11-digit Latvian registration number (Uzņēmumu reģistrs), e.g. 40003032065 | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/openWorld annotations: it discloses pricing ($0.02 in USDC or EURC via x402, or prepaid credits), that a 404 is not billed, a 100-record cap with `tronque_*` truncation flags, the coverage floor (stock starts 2023-10-25), the ~3% of winners published without an identifier, and the privacy rule that natural persons and individual-merchant buyers are never served. That is exactly the kind of behavioural context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with the core purpose, and most clauses carry real information (privacy, coverage, billing), but the body is a dense run-on with French field names and parenthetical asides piled together, making it slow to parse. It is justified in volume by the tool's complexity yet poorly structured for scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paid, privacy-constrained, open-world data tool it covers everything needed to call it correctly: entity eligibility, coverage limits, truncation, the meaning of a zero result, cost, and the citation obligation. The enumerated output fields are partly redundant with the output schema, but the interpretive caveats around them are not available anywhere in structured fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so `regnr`, `api_key` and `x_payment` are already fully documented in the schema. The description adds only indirect colour (x402 at $0.02, not billed on 404, the `citation` requirement) but nothing about the 11-digit format or payment-header precedence. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource: the public-procurement record of a Latvian company from the IUB open-data notices, split into contracts WON (`attributions`) and notices ISSUED as buyer (`avis_emis`). The IUB source and Latvian scope distinguish it cleanly from the Polish, Portuguese, Spanish and EU procurement siblings without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage context and an explicit exclusion: legal persons only, with individual merchants (IK), sole traders and unrecognised forms returning 404 and not being billed. It also warns that `aucune_attribution: true` is a NON-conclusive absence, which prevents misevaluation. It does not, however, route the agent to alternatives such as get_eu_procurement_awards or get_polish_company_public_procurement when the Latvian source is the wrong scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_lithuanian_company_accountsLithuanian annual accountsARead-onlyInspect
Lithuanian company annual accounts: balance sheets and profit-and-loss statements filed at the Juridinių asmenų registras (Registrų centras open data on data.gov.lt, CC BY 4.0, financial years 2015+, daily snapshot): EVERY filed financial year in one call: non-current and current assets, total assets (published or summed), equity, liabilities, tangible fixed assets, revenue, income, profit before tax, net profit, in EUR as published; filing template and standard, filing date. Only structured filings exist in the source (partial coverage stated); source lines published twice are merged and any disagreement is flagged in postes_divergents. Null = not published, never zero. Unknown JAR code, no structured filing or an individual enterprise (individuali įmonė, IĮ), its branch (individualios įmonės filialas) or representative office (individualios įmonės atstovybė), or an undecided form = 404 (no charge). Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| kodas | Yes | 9-digit Lithuanian JAR code (Juridinių asmenų registras), e.g. 304500803 | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint; the description adds substantial non-obvious behavior: duplicate source lines are merged with disagreements flagged in postes_divergents, null means not published rather than zero, unknown codes cost nothing (404, no charge), and pricing is x402 at $0.02 in USDC/EURC. It also imposes a citation obligation on results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and coverage are front-loaded, which is good, but the body is one dense run-on sentence with parentheticals and a long enumeration of return fields (assets, equity, revenue, profit before tax, net profit) that duplicates the output schema. The caveat, error, payment and citation clauses are all valuable, but the field list is wasted space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paid, open-world, single-identifier lookup, the description covers coverage limits, null semantics, merge/divergence handling, error codes and cost, plus a citation requirement. With an output schema present, return values need not be explained, so nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description still adds value by explaining the failure semantics of kodas (unknown JAR code → 404) and the payment cost/mechanism behind x_payment and api_key. It stops short of describing parameter interactions beyond noting the signed payment wins, which the schema already covers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: annual accounts (balance sheet and P&L) filed at the Juridinių asmenų registras. The source, jurisdiction and data lineage (data.gov.lt, CC BY 4.0, 2015+) make it immediately distinguishable from siblings like get_lithuanian_company_insolvency or get_latvian_company_accounts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly signals the scope of use (all filed financial years in one call, structured filings only, partial coverage stated) and lists the cases that yield 404 (individual enterprises, branches, representative offices, undecided form). It does not explicitly name an alternative sibling tool for those excluded entity types, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_lithuanian_company_insolvencyLithuanian company insolvency (JAR and AVNT)ARead-onlyInspect
Lithuanian company insolvency status: legal status judged on the daily Registrų centras export of registered entities (JAR_IREGISTRUOTI.csv, CC BY 4.0) and the data.gov.lt publication served dated, for the Juridinių asmenų registras (31 closed-list codes: bankruptcy opened, bankrupt, in liquidation, liquidation due to bankruptcy, restructuring, removed…), with the AVNT case files since 2020 from data.gov.lt (CC BY 4.0): bankruptcies (court, initiator, opening, liquidation, termination, closing and removal dates, simplified procedure, intentional-bankruptcy ruling), restructurings (plan approval, end) and intentional bankruptcies, each with en_cours derived from the published dates. statut_registre.selon says where the status comes from: the export, or the publication for a removed company missing from it; a company missing from the export and not removed in data.gov.lt, or published without a status, has an unknown status, never active. aucune_procedure: true is a measured fact for a company known to the register, never for an unknown status; AVNT only goes back to 2020. Unknown JAR code or an individual enterprise (individuali įmonė, IĮ), its branch (individualios įmonės filialas) or representative office (individualios įmonės atstovybė), or an undecided form = 404 (no charge); a code the export lists but data.gov.lt does not publish yet = 404 identite_non_publiee (no charge). Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| kodas | Yes | 9-digit Lithuanian JAR code (Juridinių asmenų registras), e.g. 304500803 | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral detail beyond the readOnlyHint and openWorldHint annotations: data sources, status derivation, unknown-status rules, 404 cases, no-charge conditions, and the x402 payment cost. It also tells the agent to cite the result's citation verbatim, which is useful operational guidance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first clause, but the description is a dense, very long paragraph that includes data file names, license references, and many edge cases. Much of the detail is useful, but the lack of structure and repetition of CC BY 4.0 make it less concise than ideal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema and annotations, the description is complete enough for an agent to invoke the tool correctly. It covers data provenance, status semantics, unknown-status behavior, 404 conditions, payment behavior, and citation requirements without needing to explain return values in detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 the kodas, api_key, and x_payment parameters thoroughly. The description still adds useful input-domain semantics by explaining that unknown JAR codes, individual enterprises, branches, representative offices, and undecided legal forms result in 404 rather than a normal insolvency response.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb-resource combination: Lithuanian company insolvency status. It clearly identifies the country and the legal-status resource, so an agent can distinguish it from the other Lithuanian tools such as get_lithuanian_company_accounts and from other countries' insolvency tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains several edge-case conditions, including when an unknown status is returned, when a 404 applies, and that AVNT data only goes back to 2020. However, it never explicitly states when to use this tool versus sibling alternatives such as get_lithuanian_company_accounts or other country-specific insolvency tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_norwegian_company_accountsNorwegian annual accountsARead-onlyInspect
Annual accounts of a Norwegian company from the official Regnskapsregisteret (Brønnøysundregistrene, NLOD 2.0): the latest filed fiscal year fetched live, plus every earlier year accumulated since 2026-07 (the register only serves the latest one). Balance sheet (assets, equity, debts), P&L (operating income and result, net result), figures as published in the filing currency (can be USD, never converted). Banks and insurers are not served by the source. Legal persons only: a sole proprietorship (ENK), a registered individual (PERS, TVAM), an estate (KBO, BO) or a form not recognised as a legal person returns 404, not billed, judged before any storage. No default-risk score is computed for this country yet: the response carries score_defaillance (statut non_evaluable, closed-list reasons explained by GET /v1/lecture); never read it as a low score. Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | 9-digit Norwegian organisasjonsnummer, no spaces, e.g. 923609016 | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the readOnlyHint/openWorldHint annotations: discloses the source is live and only serves the latest year, that figures stay in the filing currency and are never converted, that rejects are judged before any storage and are not billed, the $0.02 x402 payment model, and the citation obligation. These are non-obvious operating traits an agent would otherwise discover only by failing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and coverage come first, then exclusions, then payment and citation obligations, so it is well front-loaded. The single dense paragraph mixes several concerns (404 semantics, score_defaillance caveat, x402, citation) with no visual separation, which costs a little scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 need no prose. Given a paid, open-world, read-only lookup with a hard entity-type gate, the description covers everything an agent needs: eligibility, cost, failure semantics, currency handling and citation duty.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the description adds nothing about id, api_key or x_payment that the schema does not already carry — the organisasjonsnummer format, the credits-vs-x402 precedence and the payment-signature semantics all live in the schema. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource and its authoritative source: annual accounts from Regnskapsregisteret (Brønnøysundregistrene), including exactly which statements are returned (balance sheet, P&L). It also states the temporal coverage rule (latest filed year fetched live plus every earlier year accumulated since 2026-07), which cleanly separates it from siblings like get_norwegian_company_officers or get_norwegian_company_legal_events.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-not conditions: sole proprietorships (ENK), PERS/TVAM, estates (KBO/BO) and non-legal-person forms return 404, and banks/insurers are not served at all. It also warns that score_defaillance is non_evaluable for this country and must not be read as a low score. Missing is an explicit pointer to a sibling tool as the alternative when the entity type is excluded.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_norwegian_company_legal_eventsNorwegian legal eventsARead-onlyInspect
Legal events of a Norwegian company from the official Enhetsregisteret (Brønnøysundregistrene, NLOD 2.0): bankruptcy (konkurs, with the date the register publishes), voluntary winding-up, compulsory winding-up / forced dissolution, and strike-off, plus the current flags, re-checked live at call time. A registered company with no event returns an explicit positive answer (aucun_evenement: true), asserted only when the record was live-verified, no flag is raised, it is not struck off and the journal is current. Coarser than the French BODACC: the Norwegian bankruptcy register is not public, so there is no ruling text, no court and no insolvency practitioner; origine_date tells a register-published date from a Sirenic observation date, and date_au_plus_tard: true marks a date that is only an upper bound (flag already raised when first observed: started on or before). 3-year window (the source's own republication limit), except a still-open procedure, whose opening is always served. Only legal persons are served: natural-person forms (ENK, PERS, TVAM), estates named after one (KBO, BO) and any unrecognised form are refused. Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | 9-digit Norwegian organisasjonsnummer, no spaces, e.g. 923609016 | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover readOnly/openWorld, and the description goes well beyond them: live re-verification at call time, the exact conditions under which a positive 'no event' answer may be asserted, the 3-year republication window with the still-open-procedure exception, and the semantics of origine_date and date_au_plus_tard. It also discloses payment mechanics (x402 $0.02 USDC/EURC) that no annotation conveys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and source are front-loaded, and the trailing citation instruction is a clean closing directive. It is a single very dense sentence-chain though, packing caveats, refusals and pricing together, which costs a little scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only lookup with an output schema, this covers nearly everything an agent needs: source authority, coverage window, refusals, positive-answer semantics, and payment path. The only real omission is explicit guidance on which sibling to fall back to when Norwegian coverage is insufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter (id pattern, api_key, x_payment precedence) is already fully documented in the schema. The description adds nothing about the required organisasjonsnummer and instead spends its parameter-adjacent detail on output fields, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Legal events of a Norwegian company') plus the exact authoritative source (Enhetsregisteret / Brønnøysundregistrene) and enumerates the event types served. Clearly separable from siblings like get_norwegian_company_officers, get_norwegian_company_accounts and get_norwegian_company_local_units.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit about eligibility boundaries ('Only legal persons are served: natural-person forms (ENK, PERS, TVAM)... are refused') and about when results are thinner than an alternative ('Coarser than the French BODACC... no ruling text, no court'). It stops short of naming a sibling tool to use for the richer French/other-jurisdiction case, so the routing is implied rather than prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_norwegian_company_local_unitsNorwegian company local units (establishments)ARead-onlyInspect
Local units (underenheter, the Norwegian equivalent of French SIRET establishments) of a Norwegian company from the official Enhetsregisteret (Brønnøysundregistrene, NLOD 2.0), refreshed daily from the national bulk: each unit's own 9-digit orgnr, name, main activity (NACE-NO), secondary and auxiliary activities, headcount as published (effectif_publie tells whether the register recorded one), location and postal addresses, registration, activity-start and ownership-change dates, VAT registration, plus the unit count and cumulative published headcount, largest first. The bulk holds only units still registered. Legal persons only (a sole proprietorship's units carry a person's name and are refused, payment cancelled). A known legal person with no unit gets aucune_unite_locale: true. Paid via x402 ($0.01 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | 9-digit Norwegian organisasjonsnummer, no spaces, e.g. 923609016 | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavior beyond the annotations: daily refresh, official source and licence, bulk contains only still-registered units, refusal rules and payment cancellation for sole proprietorships, empty-result flag, x402 pricing and currency, and citation requirement. No contradiction with 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the local-unit concept and source, then follows with field list, constraints, and payment/citation notes. It is dense and the field enumeration is long, but every sentence conveys operational or behavioral information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a paid, read-only registry lookup with an output schema: it covers data freshness, legal-person scope, empty-result behavior, pricing, and citation requirements. An agent has everything needed to call it correctly and interpret edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already fully documents id, api_key, and x_payment. The description adds domain constraints on which legal persons are accepted but does not add syntax or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: local units (underenheter) of a Norwegian company from Enhetsregisteret. It names the sibling equivalent (French SIRET establishments) and distinguishes itself from the other Norwegian tools (accounts, officers, legal events) by scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context and constraints: legal persons only, sole proprietorships are refused and payment cancelled, and a known legal person with no unit returns a specific flag. It does not explicitly name an alternative sibling to use when this tool is wrong, but the exclusions and domain scope effectively guide usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_norwegian_company_officersNorwegian company officers and boardARead-onlyInspect
Officers and board of a Norwegian company from the official Enhetsregisteret (Brønnøysundregistrene, NLOD 2.0), refreshed daily from the national roles bulk: general manager, board chair, deputy chair, members and deputies (with who elected them: shareholder class or employees), fully liable partners with their liability share, general partner, holder, licensed auditor and accountant with their own orgnr and licence status, Norwegian representative of a foreign entity. Current mandates by default; inclure_anciens=true adds deregistered roles, both counts stay exact. organe and role are closed lists with the register's code and wording (GET /v1/lecture); no appointment or end dates exist in the source. GDPR: natural persons come with first name, last name, role and deceased flag only, never the birth date the register publishes. Legal persons only: sole proprietorships, estates and unknown forms are refused (404, payment cancelled). A known legal person with no registered role gets aucun_mandat_inscrit: true. Paid via x402 ($0.01 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | 9-digit Norwegian organisasjonsnummer, no spaces, e.g. 923609016 | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. | |
| inclure_anciens | No | true to add deregistered (historical) mandates; default lists current mandates only |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes far beyond the readOnly/openWorld annotations: discloses daily refresh cadence, source register, GDPR trimming of natural-person data, 404-with-cancelled-payment behavior for non-legal persons, the aucun_mandat_inscrit flag, absence of appointment dates, and x402 billing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and densely informative, but the single long paragraph packs many clauses (GDPR, payment, edge cases) that could be split; still, each sentence carries substantive content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values needn't be explained, and the description still covers source, refresh, legal restrictions, edge-case flag, and billing — nothing an agent needs to call correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description nevertheless adds real semantics for inclure_anciens ('adds deregistered roles, both counts stay exact') and clarifies that organe/role are closed lists, exceeding what the schema provides alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (officers/board of a Norwegian company) and enumerates the exact role types returned, clearly distinguishing it from siblings like get_norwegian_company_accounts or get_norwegian_company_local_units.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Rich context on scope and payment, and the inclure_anciens toggle is explained, but it never explicitly says when to choose this over the numerous sibling tools or names any exclusion beyond the legal-person-only rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_polish_company_insolvencyPolish company insolvency (KRS extract)ARead-onlyInspect
Polish company insolvency from the official KRS register extract (Ministry of Justice open API, live, 24 h cache): every proceeding entered since registration, open or closed: bankruptcy (upadłość), restructuring under the 2016 law, arrangement under the old law, liquidation, dissolution, suspension of activity; each with its Polish term, opening and closing dates, court and case number; plus dismissed bankruptcy petitions and protective measures. Trustees, liquidators, supervisors and debtor representatives are never named (counted in mandataires_omis). aucune_procedure means none entered in the register: a proceeding opened but not yet entered is not seen. A struck-off company is read from the full extract. A legal form off the served list (foreign entrepreneur or its branch, professional partnership) returns 404, not billed. 10-digit KRS number. Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| krs | Yes | 10-digit Polish KRS number, leading zeros included, e.g. 0000034143 | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/openWorldHint annotations, the description discloses cache freshness (live, 24 h cache), billing and cost ($0.02 in USDC or EURC; a 404 is not billed), a data limitation (trustees/liquidators/supervisors are never named, only counted in mandataires_omis), a coverage caveat (proceedings opened but not yet entered are invisible; struck-off companies read from the full extract), and an output-obligation (cite `citation` verbatim). That is unusually rich behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, but the opening sentence is a long semicolon chain, and the prose mixes untranslated output field names ('aucune_procedure', 'mandataires_omis') into an English description — redundant since an output schema exists and obscures readability. Most sentences carry real information, so it is dense rather than padded, but structure could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description still covers everything an agent needs to call and interpret the tool correctly: identifier format, payment paths, freshness, unsupported-entity behavior, and the key interpretation trap (absence of a proceeding). Nothing material is missing for a single-identifier lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so `krs`, `api_key` and `x_payment` are already fully documented in the schema. The description only restates '10-digit KRS number' and adds no syntax, format or precedence guidance beyond what the schema provides (e.g. api_key vs x_payment precedence is in the schema, not the description). Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource (insolvency proceedings from the official KRS register extract) and enumerates exactly which proceeding types are covered (bankruptcy, restructuring, arrangement, liquidation, dissolution, suspension), which is far more precise than the tool name alone. It never names the closest sibling (get_polish_company_registry_events) or any other tool, so sibling differentiation is only implicit through scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is clear: paid call ($0.02 via x402 or prepaid credits), live with a 24 h cache, and explicit exclusions — 'aucune_procedure means none entered; a proceeding opened but not yet entered is not seen' and a 404 (not billed) for legal forms outside the served list. There is no explicit 'use this instead of X' routing to alternative tools, which keeps it short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_polish_company_public_procurementPolish company public procurement (BZP)ARead-onlyInspect
Public-procurement record of a Polish company from the Biuletyn Zamówień Publicznych (e-Zamówienia public API, UZP, CC0; national below-EU-threshold notices since 2021, daily updates): contracts WON matched by legal-person NIP (attributions, one per awarded part: buyer with NIP, subject, CPV, closed-list outcome, tenders received, awarded price and contract value in PLN as published, contract date, declared enterprise size) and notices ISSUED as a buyer (avis_emis); newest first, capped at 100 with tronque_*. Winners are served only when PROVEN legal persons (legal form in the name or KRS from the VAT white list): sole traders (37 % of winners) are never served (400 without charge), a NIP not yet classified answers 404 without charge (stock.gagnants_a_classer), and so does a source placeholder NIP (identifiant_bouche_trou); a published name without its own legal form is left out (gagnant.nom_publie null, counted in ecartes). A dubious published value (contract date out of bounds or after its notice, a winner name carrying an address) is served as published with a closed-list reserves[] on its line, counted in reserves_lignes. Partial coverage: zero never means “never won a contract”. Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| nip | Yes | Polish NIP (tax identifier): ten digits, separators and PL prefix tolerated, e.g. 7812034808 | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint; the description goes well beyond them by disclosing paid access via x402 ($0.02 USDC/EURC), that error responses (400/404) are not charged, the 100-record cap with `tronque_*` truncation flags, and that dubious values are served with closed-list `reserves[]`. It even mandates citing the returned `citation` verbatim.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The lead clause is front-loaded and the content largely earns its place, but the body is a single dense run-on stuffed with French field identifiers (`avis_emis`, `gagnants_a_classer`, `identifiant_bouche_trou`, `ecartes`, `reserves_lignes`) that is hard to parse. Grouping the edge-case behaviour into separate sentences would improve usability without adding length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with an output schema and three simple parameters, the description covers the remaining gaps an agent needs: coverage limits (only below-threshold since 2021, not all winners), error semantics, payment mechanics, and the citation obligation. Nothing essential to a correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents nip, api_key and x_payment, giving a baseline of 3. The description adds genuine semantic weight by clarifying that only legal-person NIPs resolve (sole-trader NIPs are rejected), which is not evident from the `nip` pattern alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (public-procurement records of a Polish company from BZP/e-Zamówienia) and splits the result into two named streams, `attributions` (contracts won) and `avis_emis` (notices issued as buyer). It also distinguishes itself from EU-level siblings by specifying 'national below-EU-threshold notices since 2021', which an agent can use to choose between this and get_eu_procurement_awards.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete call conditions and exclusions: winners are served only when proven legal persons, sole traders yield a 400, unclassified NIPs a 404, and it warns that zero results never mean 'never won a contract'. It does not explicitly name an alternative sibling for above-EU-threshold awards, so routing is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_polish_company_registry_eventsPolish registry events (KRS)ARead-onlyInspect
Registry EVENTS of a Polish company, derived from the official KRS daily bulletin (Krajowy Rejestr Sądowy, Ministry of Justice): liquidation opened or closed, bankruptcy, restructuring, activity suspension and resumption, dissolution, mergers and transformations, tax or social-security arrears and enforcement, annual-accounts filings, changes of name, legal form, registered office or share capital, and strike-off. Each event carries the bulletin day it appeared on and, when the register publishes one, the register's own date. The response always states the observation window (gap-free by construction; the register publishes no retroactive event history), and jours_non_lus names any bulletin day the register left empty between two full days: never read, so a change published that day may be missing (block partial, aucun_evenement false); a day unread for over 30 days closes the older window, which restarts the day after it. IMPORTANT: this endpoint does NOT check that the KRS number exists: a non-existent number returns exactly the same aucun_evenement: true answer as a real company that stayed quiet; the existence block says which case applies, and get_european_company_profile (pays=PL) settles existence with a 404. GDPR by design: no officers, shareholders, liquidators or curators, never a PESEL, and no FREE TEXT from the register either: the narrative wording of a decision can name a notary or a receiver, so it is read only to extract a date and then discarded (that date is flagged date_source_inferee). What is served: the event type from a closed list, its register section, its dates, its wpis number, amounts, and the deciding court or authority. A KRS whose recorded legal form is not on the served list (foreign entrepreneur or its branch, professional partnership, missing form) is refused (404 forme_juridique_non_servie, payment cancelled). Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| krs | Yes | 10-digit Polish KRS number, leading zeros included, e.g. 0000006865 | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes far beyond the readOnly/openWorld annotations: it discloses the gap-handling model (jours_non_lus, 30-day window closure), that a non-existent KRS yields the same aucun_evenement answer, the GDPR-driven omission of officers/PESEL/free text with date_source_inferee flagging, the 404 forme_juridique_non_servie refusal with payment cancelled, and the $0.02 x402 price.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded, opening with the resource and event inventory before the window/existence caveats. The critical 'does NOT check that the KRS number exists' warning is buried mid-paragraph after a long enumeration, but overall almost every sentence carries operational information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 explains the window semantics, the jours_non_lus field, the existence block, and the served field set. Together with the refusal/fee/citation rules, nothing an agent needs to call this correctly or interpret the result is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so krs, api_key and x_payment are already fully documented, including the 10-digit format and payment precedence. The description only references payment method and citation verbatim in passing and adds no parameter-level detail beyond the schema, making baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource (registry events of a Polish company from the KRS daily bulletin) and enumerates the event types covered, so an agent knows exactly what it returns. It does not, however, differentiate itself from close siblings such as get_polish_company_insolvency or list_polish_company_filings, which overlap with the insolvency and annual-accounts items in its own enumeration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives one explicit routing rule: this endpoint cannot confirm existence, so get_european_company_profile (pays=PL) should be used to settle existence with a 404. That is real usage guidance, but there is no general when-to-use/when-not guidance and no routing advice for the overlapping Polish siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_portuguese_company_public_procurementPortuguese company public procurement (Portal BASE)ARead-onlyInspect
Public-procurement record of a Portuguese company from IMPIC's Portal BASE (weekly open-data files on dados.gov.pt, public domain; every public contract since 2012): contracts WON by NIPC (buyer, subject, procedure and contract type in closed lists, CPV, lots, contract/base/final prices in EUR, dates, duration, framework agreement, closure, bidder count, contract modifications), contracts ISSUED as a buyer, notices in the Diário da República; newest first, capped at 100. Winners and bidders published without a NIF are never named, only counted; a party whose NIF starts with 7 or 9 (estate, fund, condominium, partnership without legal personality, non-resident) is neither named nor identified, counted in ecartes. 400 without charge for a natural-person NIF or an invalid check digit; 404 without charge for a 7 or 9 NIF (forme_juridique_non_servie) or when nothing is found (absence is not conclusive). Price $0.02. When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| nipc | Yes | Portuguese NIPC (tax identifier of a legal person): nine digits with a valid check digit, PT prefix and separators tolerated, e.g. 504904493 | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint and openWorldHint already set, the description still adds substantial context: provenance and licensing, coverage back to 2012, newest-first ordering, a 100-record cap, anonymisation rules and the `ecartes` counter, HTTP status semantics, zero-charge on 404/400, and the $0.02 price. It also instructs citing the `citation` verbatim, which is operational guidance no annotation conveys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, source, and coverage before moving to field-level detail and error/pricing rules; nearly every clause carries information. It is, however, a single very long run of nested parentheticals that is denser than it needs to be and could be split for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 does not need to enumerate return fields, yet it flags the one non-obvious output element (`ecartes`) and the `citation`. Combined with provenance, coverage window, capping, error codes, and pricing, an agent has everything needed to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 adds real meaning about the `nipc` parameter's domain: natural-person NIFs yield 400, NIFs starting with 7 or 9 yield 404 (forme_juridique_non_servie), and such parties are only counted, not named. That is behavioural semantics an agent needs for input validation beyond the regex.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (public-procurement record of a Portuguese company), names the exact source (IMPIC's Portal BASE, dados.gov.pt), and enumerates the record types: contracts WON as NIPC, contracts ISSUED as buyer, and Diário da República notices. An agent can distinguish this from the French, Spanish, UK, and EU-wide procurement siblings without opening another schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is well-scoped: it clarifies what is and isn't covered (NIFs starting with 7 or 9, parties without a NIF, natural-person NIFs) and explains the 400 vs 404 responses and that absence is not conclusive. It does not explicitly name a sibling alternative (e.g. get_european_company_eu_procurement or get_company_procurement_competitors) or state when to prefer one, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_romanian_company_accountsRomanian annual accounts (Ministry of Finance)ARead-onlyInspect
Romanian company annual accounts from the Ministry of Finance open data (data.gov.ro, CC BY 4.0, financial years 2019-2024, every published year in one call): balance sheet (fixed and current assets, inventories, receivables, cash, liabilities, provisions, equity, paid-up capital), income statement (net turnover, total income and expenses, gross and net profit or loss), average headcount, CAEN Rev. 2 activity class and filing format (abridged or full). Amounts in RON as published, null = not published, never zero. Legal persons only; a company with no published statement answers 404 without charge (banks, insurers, NBFIs and NGOs file in separate, unserved files). Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| cui | Yes | Romanian CUI / fiscal code, 1 to 10 digits, with or without the RO prefix, e.g. 412052 or RO412052 | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnly and openWorld; the description goes far beyond by disclosing the paid x402 model ($0.02 in USDC or EURC), the no-charge 404 behavior, the null-means-not-published / never-zero convention, all-years-in-one-call behavior, and the citation requirement. These are exactly the behavioral traits an agent needs before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Content is front-loaded with the resource and data coverage, and every clause adds useful information. The main drawback is a very long run-on parenthetical sentence that reduces scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 need not be explained; the description still covers data provenance, licence, year coverage, error semantics, payment, and citation obligations. 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with cui pattern and detailed api_key/x_payment docs, so the schema carries parameter meaning. The description adds no parameter-specific semantics (e.g. which payment param takes precedence), so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (Romanian company annual accounts from the Ministry of Finance open data) and enumerates exactly what is returned: balance sheet lines, income statement lines, headcount, CAEN class, filing format. This clearly distinguishes it from Romanian siblings like get_romanian_company_officers or get_romanian_company_insolvency and from other countries' accounts tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit scope and exclusions: legal persons only, banks/insurers/NBFIs/NGOs file separately and are not served, and a missing statement returns 404 without charge. It also states the payment path. It does not name sibling alternatives, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_romanian_company_insolvencyRomanian company insolvency (ONRC register)ARead-onlyInspect
Romanian company insolvency from the ONRC register open data (data.gov.ro, CC BY 4.0, monthly national snapshot): the register status codes of the bankruptcy (faliment), insolvency (Law 85/2014, Law 85/2006, Law 64/1995, judicial reorganisation, financial recovery), liquidation and dissolution families with their published Romanian labels and a closed family, plus the insolvency practitioners published among the legal representatives (judicial liquidator, judicial administrator, special or concordat administrator, liquidator; name and capacity only); aucune_procedure = no such status AND no practitioner, measured on the complete snapshot for a known CUI; statuses are undated and court decisions are not published, so a closed proceeding may remain recorded (autres_statuts carries the other register entries). Legal persons only. 503 fail-closed when the snapshot is missing or older than 70 days. Paid via x402 ($0.02). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| cui | Yes | Romanian CUI / fiscal code, 1 to 10 digits, with or without the RO prefix, e.g. 412052 or RO412052 | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the readOnly/openWorld annotations: discloses that statuses are undated, that court decisions are not published so closed proceedings may remain recorded, that 503 is fail-closed when the snapshot is missing or older than 70 days, the x402 price, and that `aucune_procedure` means no status AND no practitioner. These are exactly the caveats an agent needs to interpret a negative result correctly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the opening clause, and every subsequent clause carries distinct information (families, aucune_procedure semantics, undated-status caveat, legal-persons-only, 503 behavior, price, citation duty). It is a dense run-on with heavy parenthetical nesting that could be split for scannability, but no sentence is truly redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 explained, and the description still covers the freshness contract, failure mode, legal-entity restriction, interpretive caveats, and citation requirement. For a paid, snapshot-based open-data lookup, nothing an agent needs in order to call and interpret it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the CUI pattern, api_key, and x_payment semantics are already fully documented in the schema. The description adds only the implicit 'for a known CUI' framing and no parameter-level detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb-and-resource pair (Romanian company insolvency from the ONRC register) and enumerates the exact status families returned (bankruptcy/faliment, insolvency under Laws 85/2014, 85/2006, 64/1995, reorganisation, liquidation, dissolution) plus insolvency practitioners. This unambiguously separates it from siblings like get_romanian_company_accounts, get_romanian_company_officers, and the other country-specific insolvency tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operating context: 'Legal persons only', 'measured on the complete snapshot for a known CUI', and a routing hint that `autres_statuts` carries the other register entries (i.e. use that for non-insolvency register data). It lacks an explicit 'do not use this when…' exclusion or an explicit pointer to sibling tools, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_romanian_company_officersRomanian company legal representatives (ONRC)ARead-onlyInspect
Romanian company legal representatives from the ONRC open data (data.gov.ro, CC BY 4.0, monthly national snapshot): every mandate published for every registration of the CUI (administrators, permanent representatives of corporate administrators, general director, supervisory board and directorate members, liquidators, judicial and special administrators), with the register's Romanian label, a closed-list family (role.famille) and the nature (natural person or entity, inferred from the presence of a birth date); sorted by family then name, duplicates across re-registrations merged; aucun_mandat_publie is measured on the complete snapshot. Name and role only: birth date, birthplace and domicile published by the source are never stored. Legal persons only (sole traders and family enterprises are refused 404). 503 fail-closed when the monthly snapshot is missing or older than 70 days. Paid via x402 ($0.01). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| cui | Yes | Romanian CUI / fiscal code, 1 to 10 digits, with or without the RO prefix, e.g. 412052 or RO412052 | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/openWorld annotations: discloses snapshot cadence, a 70-day freshness gate with fail-closed 503, deduplication of re-registrations, sort order, a data-minimization guarantee (birth date, birthplace and domicile never stored), the 404 behavior for non-legal-persons, x402 pricing, and a mandatory citation etiquette. None of this is derivable from structured fields, and nothing contradicts the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause, followed by coverage, constraints, failure modes, and payment. However, the core is a single very dense run-on sentence packed with parentheticals, which makes it harder to scan than it needs to be; splitting the enumeration from the operational guarantees would improve it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't explain return shapes, and it still covers everything an agent needs: data provenance and license, scope of mandates, excluded entity types, error semantics (404/503), payment path, and citation requirement. No significant gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the cui format/pattern and the api_key vs x_payment precedence are already fully documented in the schema. The description mentions CUI and x402 payment but adds no format, precedence, or fallback detail beyond what the schema states, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('Romanian company legal representatives from the ONRC open data') and enumerates the exact mandate types covered (administrators, liquidators, supervisory board, etc.). This is unambiguously distinct from sibling tools like get_romanian_company_accounts or get_romanian_company_insolvency, and from the same-topic officers tools for other jurisdictions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the source register (ONRC, data.gov.ro snapshot) and a clear exclusion: 'Legal persons only (sole traders and family enterprises are refused 404).' It does not explicitly route the agent to or away from sibling tools (e.g., insolvency or accounts), but the officer-focused framing makes applicability clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_slovak_company_filingSlovak annual accounts (RUZ)ARead-onlyInspect
One Slovak fiscal year decoded from the structured statements filed with the RÚZ: balance sheet and profit and loss, 16 key items: net turnover (null = not published, never zero), operating income and costs, value added, staff costs, operating, financial, pre-tax and net result, income tax, total assets, non-current and current assets, equity, share capital, liabilities, plus prior-year comparatives as published in the same filing. Amounts in euros, never converted. Closing date comes from list_slovak_company_filings; scope defaults to the statutory filing. A unit whose legal form is not a served legal person's returns 404, not billed. Paid via x402 ($0.03 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| ico | Yes | 8-digit Slovak IČO, e.g. 36417475 | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| perimetre | No | Filing scope: statutory (default) or consolidated, never merged | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. | |
| type_depot | No | Filing type from the filings list (Riadna, Mimoriadna…), when two filings share the same closing date; defaults to the ordinary one | |
| date_cloture | Yes | Fiscal-year closing date, YYYY-MM-DD, e.g. 2025-12-31 |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and openWorldHint annotations, the description discloses null semantics ('null = not published, never zero'), euro amounts never converted, 404 behavior for non-served legal forms with no billing, payment via x402 at $0.03, and a citation requirement. These are material behavioral details an agent needs before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph that front-loads the core purpose, then enumerates key items, units, closing-date sourcing, scope, error/payment behavior, and citation guidance. Every sentence adds useful information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists, the description still supplies critical operational context: payment model, billing exception for 404, currency handling, null semantics, and citation instructions. Together with the schema and annotations, an agent has enough to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 six parameters, including the perimetre enum and type_depot default. The description adds modest context by noting that date_cloture comes from list_slovak_company_filings and that scope defaults to statutory, but most parameter meaning remains in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it decodes one Slovak fiscal year from RÚZ structured statements, listing the exact financial items. It is clearly distinct from the sibling list_slovak_company_filings, which is named as the source for the closing date.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context: closing date comes from list_slovak_company_filings, scope defaults to the statutory filing, and a non-served legal form returns 404 rather than being billed. It does not explicitly state when not to use it, but the workflow relationship with the listing tool is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_spanish_company_actsSpanish company acts (BORME)ARead-onlyInspect
Spanish company acts from the official BORME gazette (Registro Mercantil, section A) by hoja registral, the register key (e.g. VI-23141) returned by search_european_companies for Spain: incorporations, officer appointments and dismissals (role + name), capital changes, mergers, dissolutions, insolvency. Daily flow since 2009, newest first (100 max + total count). Spanish personal IDs (DNI/NIE) and natural-person sole-shareholder names are redacted at ingestion, marked « […] ». The hoja of a sole trader (a BORME empresario individual act) returns 404, not billed. A company with a current name under objection (GDPR art. 21) returns the same 404 as an unknown hoja, not billed; an act's denomination under objection is served null and counted in ecartes.opposition (item kept, block partial in provenance). Basado en datos de la Agencia Estatal Boletín Oficial del Estado. Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| hoja | Yes | Hoja registral (register-sheet key), e.g. VI-23141, from search_european_companies with pays=ES. The BORME does not publish the NIF. | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/openWorld annotations: redaction of DNI/NIE and sole-shareholder names, 404 semantics with billing exemption, partial-block behavior for opposed denominations surfaced in ecartes.opposition, ordering (newest first, 100 max plus total count), and the x402 price. Consistent with annotations — a read-only, open-world public gazette lookup.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose and key sourcing, then edge cases; every sentence carries operational value (billing, 404, redaction, citation). It is dense and somewhat run-on across the compliance sentences, but nothing is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-shape explanation is not needed; the description still covers ordering, result cap, and the one field an agent must act on (citation). For a paid, single-key lookup with privacy redactions, an agent has everything needed to call it and interpret the response correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already documented; the description only reinforces that hoja is the register-sheet key from search_european_companies and that the NIF is not published. It mentions payment exists but does not explain the api_key vs x_payment precedence beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (Spanish company acts from the BORME gazette, Registro Mercantil section A) and the exact key it is addressed by (hoja registral), enumerating the act types returned. It is clearly distinguishable from sibling tools such as search_european_companies, which it names as the upstream source of the key.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tells the agent where the required hoja comes from (search_european_companies with pays=ES) and documents the two non-obvious failure modes (sole-trader hoja and GDPR art. 21 opposition both return 404, not billed). It does not name a direct alternative tool to use instead when the hoja is unknown, so it falls short of explicit when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_spanish_company_public_procurementSpanish company public procurement (PLACSP)ARead-onlyInspect
Public-procurement record of a Spanish company from the Plataforma de Contratación del Sector Público (Ministerio de Hacienda CODICE feeds: hosted profiles and aggregated regional platforms with archives since 2012, minor contracts of the hosted profiles since 2018, daily updates): contracts WON matched by legal-person NIF (attributions: buyer with DIR3, subject, CPV, lot, closed-list result such as awarded or formalised, award date, amounts in EUR excl. and incl. tax as published, tenders received, SME flag) and notices ISSUED as a buyer (avis_emis, public entities with a NIF); minor contracts in their own lists (contrats_mineurs won, contrats_mineurs_passes as buyer), named in blocs_absents (collecte_en_cours) until first collected; newest first, capped at 100 per list, total and cut in listes_bornees. Never a natural-person winner (DNI, NIE or masked identifier; refused without charge) nor a consortium without its own NIF; a file cancelled by the source is no longer served as awarded. An aberrant award date is served as published with a closed-list reserves[] on its line, sorted as a missing date, counted in reserves_lignes. Partial coverage: zero never means “never won a contract”; a NIF with no row, or a source placeholder NIF (identifiant_bouche_trou), answers 404 without charge. Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| nif | Yes | Spanish legal-person NIF: one letter (A-D, F, G, N, P-S, U-W), seven digits and a check character, e.g. A28582013; DNI/NIE (natural persons) are refused, and an E, H, J NIF (entity without legal personality, owners' association, civil partnership) returns 404, not billed | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes far beyond readOnlyHint/openWorldHint: archive start dates (2012 / 2018 minor contracts), daily updates, newest-first ordering, 100-per-list cap with listes_bornees truncation signals, refusals (DNI/NIE, consortiums without NIF, placeholder NIF → 404 unbilled), aberrant-date handling with reserves[], coverage caveat that zero ≠ never won, and the x402 price of $0.02.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Information-dense and front-loaded on what is returned, but delivered as one very long run-on sentence built from stacked parentheticals, which makes the payment, refusal and coverage clauses hard to locate. Every fact is relevant, but the structure could be segmented into distinct sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering safety, the description still supplies everything an agent needs to call correctly: prerequisites (legal-person NIF), cost, billing fallback, failure modes with billing implications, ordering/truncation semantics, and a citation requirement for reporting results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so nif, api_key and x_payment are already fully documented in the schema, including the accepted NIF letters and the exclusion of E/H/J entities. The description adds only marginal parameter-level value (the $0.02 price) beyond what the schema already carries, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (retrieve public-procurement record), a specific resource (PLACSP/CÓDICE Spanish procurement data for one company), and enumerates the record families returned (attributions, avis_emis, contrats_mineurs, contrats_mineurs_passes). It's unmistakably distinct from e.g. get_spanish_company_acts or the French/Polish/Portuguese procurement siblings by naming the Spanish source and feed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Jurisdiction and subject scope (legal-person NIF only) imply when to use it, and refusal cases are spelled out. However, it never explicitly routes against alternatives such as get_eu_procurement_awards or get_european_company_eu_procurement, nor states when a caller should prefer those for cross-border awards.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_surveillance_watchCompany watch statusARead-onlyInspect
Status and the 100 most recent events (total and cut in listes_bornees.evenements) of a watchlist created with create_surveillance_watch. Free: the surveillance_id token IS the capability.
| Name | Required | Description | Default |
|---|---|---|---|
| surveillance_id | Yes | Token returned at creation |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnlyHint=true and openWorldHint=true, the description discloses two genuinely useful traits: results are capped at the 100 most recent events with the total/truncation exposed in a specific field, and the call is 'Free' because the surveillance_id token itself is the capability (an auth model the annotations do not cover). The truncation and capability-token details are exactly the kind of context 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with what is returned before the auth note. The only cost is the unexplained internal path 'listes_bornees.evenements', which reads as an implementation leak rather than useful signal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return shapes need not be spelled out, and the description still covers the key behavioral facts: 100-event cap, where truncation is reported, and the token-as-capability auth model. It stops short of describing failure behavior for an invalid/expired token or routing to renew/stop, which keeps it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is already documented as 'Token returned at creation', so the baseline is 3. The description adds real meaning on top: the token is not merely an identifier but the capability itself, which tells the agent the token is sensitive and self-authenticating.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (retrieve status plus recent events) and resource (a watchlist), and ties it explicitly to its creator, create_surveillance_watch, which disambiguates it from renew_surveillance_watch and stop_surveillance_watch. The opaque reference to 'listes_bornees.evenements' is internal jargon that adds little, but the core operation is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The mention that the watchlist is 'created with create_surveillance_watch' implies the prerequisite (you need a token from that call), so usage is inferable. However, there is no explicit guidance on when to call this versus renew_surveillance_watch or stop_surveillance_watch, and no statement of when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_swedish_company_accountsSwedish annual accountsARead-onlyInspect
Annual accounts of a Swedish company, decoded from the official iXBRL filings Bolagsverket publishes free of charge (EU high-value datasets, since 3 February 2025): EVERY digitally filed fiscal year in one call, with turnover (null = not disclosed under the K2 abridged format, never zero), operating and net result, total assets, equity, long- and short-term debt, average employees, plus the prior-year column as filed. Figures as published, in the filing currency (SEK). IMPORTANT COVERAGE LIMIT: digital filing is OPTIONAL in Sweden (~63% of annual reports in 2025, 53% in 2024) and the corpus starts with filings RECEIVED from 2020, so a company that is absent may simply have filed on paper. Officers (företrädare) are NOT available for Sweden: they are not part of the free datasets. No default-risk score is computed for this country yet: the response carries score_defaillance (statut non_evaluable, closed-list reasons that GET /v1/lecture explains); never read it as a low score. Paid via x402 ($0.03 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| orgnr | Yes | 10-digit Swedish organisationsnummer, with or without hyphen, e.g. 5560401977 or 556040-1977 | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnly and openWorld; the description adds substantial context beyond them: corpus start date (2020), ~63%/53% digital coverage, null-vs-zero semantics for turnover under K2, the absent score_defaillance caveat, and the $0.03 x402 cost. This is exactly the behavioral context an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what the tool returns, then coverage limits, then payment and citation instructions. Dense but nearly every sentence adds a distinct constraint; the ALL-CAPS emphasis is a stylistic cost but not padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 does not need to explain return shapes, and it still covers the risky edges: null semantics, non-evaluable default score, paper-filing gaps, and citation requirement. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so orgnr, api_key and x_payment are already documented. The description adds no further parameter-level guidance (e.g., orgnr format) beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('decoded from official iXBRL filings') and resource (annual accounts of a Swedish company), and names the exact data source and fields. Clearly distinct from siblings like get_swedish_company_registry_events or get_uk_company_accounts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives strong context on when the data is valid versus absent ('digital filing is OPTIONAL... a company that is absent may simply have filed on paper') and steers away for officers. It doesn't explicitly name an alternative tool for Swedish officers or for default risk, but the exclusions are clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_swedish_company_registry_eventsSwedish registry eventsARead-onlyInspect
Registry events of a Swedish company from Bolagsverket's official weekly national file (free EU high-value dataset): incorporation date, ONGOING winding-up or restructuring proceedings (bankruptcy/konkurs, liquidation, company reconstruction, composition, merger, division, cross-border conversion, bank resolution) with their start dates, and deregistration with its coded reason. Use it to check whether a Swedish counterparty is bankrupt, in liquidation or already struck off before signing or paying. A registered company with NO proceeding returns an explicit positive answer (procedure_en_cours: false); the register is authoritative. Note: only ONGOING proceedings are published, and a company already struck off returns procedure_en_cours: false, as the proceeding ended with the striking-off, whose coded reason carries the outcome. Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| orgnr | Yes | 10-digit Swedish organisationsnummer, with or without hyphen, e.g. 5560401977 or 556040-1977 | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the readOnly/openWorld annotations: the 'no proceeding returns procedure_en_cours: false' semantics, the authoritative-register claim, the crucial caveat that struck-off companies also return procedure_en_cours: false because the proceeding ended, the x402 payment requirement ($0.02), and the citation-verbatim instruction. These are non-obvious behavioral facts an agent would otherwise get wrong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads what the tool returns, then use case, then caveats, then payment. Minor redundancy between 'ONGOING winding-up' and the later 'only ONGOING proceedings are published' note, but every sentence carries real information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema, full parameter coverage, and read-only annotations, the description fills the remaining gaps an agent needs: payment model, the counterintuitive struck-off/procedure_en_cours behavior, and citation requirements. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with orgnr format, api_key/payment precedence, and x_payment all documented in the schema. The description adds nothing about parameters, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Registry events of a Swedish company from Bolagsverket's official weekly national file') and enumerates the exact event types returned: incorporation, ongoing winding-up/restructuring proceedings, and deregistration. An agent can distinguish this from siblings like get_swedish_company_accounts or get_polish_company_registry_events 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case: 'check whether a Swedish counterparty is bankrupt, in liquidation or already struck off before signing or paying.' Clear when-to-use context, but it never names an alternative tool (e.g. the Swedish accounts sibling) or states when-not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_swiss_company_eventsSwiss commercial-register publications (SOGC)ARead-onlyInspect
Swiss company commercial-register publications from the Swiss Official Gazette of Commerce (SOGC/SHAB, SECO, public API, live with a 24 h cache, online since July 2018): every registration, change and deletion carrying the company's UID, newest first: date, publication number, canton, office, the company as published (name, UID, seat, eCH legal-form code, purpose, capital, address without the c/o line) before and after the change, and closed-list change flags (name, seat, address, purpose, capital, legal form, bankruptcy, liquidation, suspension, re-entry, other entries). The published free text is withheld (texte_retenu: true): it names persons. Beyond 60 listed publications they are detailed newest first until 60 servable ones are found (200 more details at most), and troncature says when some are not. A publication whose company is a sole proprietorship (before or after the change) is left out and counted in ecartes. Unknown UID, sole proprietorship (Einzelunternehmen), branch without a served head office or undecided legal form = 404 (no charge), as for the profile. Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Swiss UID (Unternehmens-Identifikationsnummer), CHE-xxx.xxx.xxx, e.g. CHE-102.732.681 | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations only declaring readOnlyHint and openWorldHint, the description carries substantial extra context: a 24 h cache over a live SECO API, online since July 2018, free 404 outcomes, paid access at $0.02 in USDC or EURC, person-naming free text withheld via `texte_retenu`, and the truncation/exclusion accounting. It also exposes the pagination rule (detail up to 60 records, at most 200 extra detail fetches) and which records are silently dropped.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded — source and scope first, then record contents, then truncation and error behavior, then payment. It is dense and the long parenthetical field enumerations push it toward wall-of-text territory, but nearly every clause carries operational information an agent would otherwise have to guess.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is complex (external paid API, caching, truncation, exclusions) and the description covers all of it, including naming the sentinel fields `troncature`, `ecartes` and `citation` even though a full output schema exists. Nothing needed to invoke it correctly or interpret the result is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline would be 3, but the description adds real parameter meaning: the `id` values that will 404 and thus never yield data, plus the pricing/currency attached to the payment path. It does not, however, clarify the interaction precedence between `api_key` and `x_payment` beyond what the schema already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: commercial-register publications for a Swiss company from the SOGC/SHAB, with source, cadence and time coverage. That scope is clearly distinct from siblings such as get_swiss_company_insolvency or the foreign *company_events tools, and it enumerates the exact fields returned, so an agent knows precisely what it gets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear conditions for use: a UID is required, unknown UID / sole proprietorship / branch-without-head-office / undecided legal form return 404 at no charge, and payment is expected via x402 or credits. What is missing is an explicit statement of when to prefer this over an alternative for the same company (for example a profile tool) beyond the passing reference 'as for the profile'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_swiss_company_insolvencySwiss company bankruptcy publications (SOGC)ARead-onlyInspect
Swiss company bankruptcy publications from the SOGC/SHAB (SECO, public API, live, 24 h cache, online since 2021): every publication whose debtor is the company (natural persons never served), newest first: preliminary bankruptcy notice, bankruptcy publication and call to creditors, suspension, schedule of claims and inventory, distribution list, closing, revocation, real-estate auction, recognition of a foreign bankruptcy, with decision date, deadlines, office, canton and the official labels in DE/FR/IT/EN. aucune_procedure: true is a fact bounded by the online archive for a company known to Zefix; bankruptcy and liquidation flags recorded in the register itself come with get_swiss_company_events. Unknown UID, sole proprietorship (Einzelunternehmen), branch without a served head office or undecided legal form = 404 (no charge), as for the profile. Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Swiss UID (Unternehmens-Identifikationsnummer), CHE-xxx.xxx.xxx, e.g. CHE-102.732.681 | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld annotations, it discloses the live SECO API source, 24-hour cache, archive coverage since 2021, newest-first ordering, natural-person exclusion, and the precise meaning of aucune_procedure. It also covers cost ($0.02 via x402), the prepaid-credit alternative, 404 no-charge behavior, and the citation requirement—rich operational context that annotations do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and scope, and every sentence carries substantive information about coverage, exclusions, payment, or citation. The first sentence is very long and dense, which slightly hurts readability, but there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema and full parameter documentation, the description covers the remaining gaps an agent needs: data source, cache freshness, publication types, ordering, entity-type exclusions, error behavior, payment mechanics, and citation rules. Nothing material is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 adds useful semantics: it ties unknown UID and certain entity types to a 404 no-charge response for the id parameter and states the x402 price for the payment parameters. Much of the payment mechanics is already in the schema, but the failure-mode detail for id is incremental value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource and scope: Swiss company bankruptcy publications from SOGC/SHAB, with the exact publication types, ordering, and included fields. It explicitly distinguishes itself from get_swiss_company_events, which covers bankruptcy and liquidation flags recorded in the register itself, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names the alternative sibling for register-level bankruptcy/liquidation flags and specifies when the tool will not return data: unknown UID, sole proprietorship, branch without a served head office, or undecided legal form yield 404. It does not spell out a positive 'use this when you need X' statement beyond the purpose, but the context and exclusions are clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_uk_beneficial_ownersUK persons with significant control (PSC, legal entities)ARead-onlyInspect
UK persons with significant control (PSC register) of a UK company, live from Companies House, the official UK registry: LEGAL-ENTITY controllers only since 2026-09-19 (corporate entities and legal persons: name, register identification, natures of control as ownership/voting bands, notification dates) plus the official PSC statements and the listed-company exemption flag. Natural-person controllers are COUNTED in personnes_physiques_omises and never named (GDPR, CJEU C-798/24 Jautiva). Ceased PSCs are excluded by default (inclure_cesses adds them with their ceased date). Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. | |
| company_number | Yes | Companies House company number, 8 characters incl. leading zeros, e.g. 00102498 or SC123456 | |
| inclure_cesses | No | Include ceased PSCs (with their ceased_on date). Default false. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnlyHint/openWorldHint it discloses GDPR-driven omission of natural persons (CJEU C-798/24), the default exclusion of ceased PSCs, the x402 payment requirement and price, and a citation obligation — all behavior an agent must know before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense paragraph that front-loads source and scope, then narrows to legal entities, then exclusions, then payment. Efficient despite its length, though the acronym-heavy prose (PSC, x402, USDC/EURC) is slightly harder to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 need not be explained; the description covers the remaining gaps — source registry, coverage limits, exclusion defaults, payment model and citation duty — for a paid, read-only lookup tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are already documented in the schema, including inclure_cesses' default and company_number's format. The description restates the ceased-PSC behavior but adds no syntax or semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the exact verb+resource (UK PSC register from Companies House), and explicitly narrows scope to LEGAL-ENTITY controllers with named fields, which lets an agent separate it from get_uk_company_officers at a glance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly states when the tool applies (legal-entity PSCs), what it excludes (natural persons, counted but never named; ceased PSCs excluded by default) and how to lift the exclusion via inclure_cesses. It stops short of naming the sibling tool to use for natural-person controllers, so routing for that case is inferred rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_uk_company_accountsUK annual accounts (iXBRL)ARead-onlyInspect
One UK financial year, with the UK company financial statements decoded from the iXBRL accounts filed at Companies House: balance sheet (fixed and current assets, stocks, debtors, cash, creditors split by maturity, provisions, net assets, equity), average employees, and the profit and loss account when filed (turnover, operating, pre-tax and net result; most small companies file a balance sheet only), plus prior-year comparatives as published. Null = not published, never zero. Balance-sheet date comes from list_uk_company_accounts. A company with a current name under objection (GDPR art. 21) returns the same 404 as an unknown date, not billed; the year's entity name under objection is served null and counted in ecartes.opposition (block partial in provenance). Paid via x402 ($0.05 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. | |
| date_cloture | Yes | Balance-sheet date, YYYY-MM-DD, e.g. 2025-12-31 | |
| company_number | Yes | Companies House company number, 8 characters incl. leading zeros, e.g. 00095407 or SC123456 |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses important behavior: null means not published and never zero, prior-year comparatives are as published, and GDPR objection handling returns a non-billed 404 or null entity name recorded in `ecartes.opposition`. It also explains the x402 payment cost and that the citation must be reproduced verbatim. This is rich context that materially helps correct invocation and interpretation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and key constraints are front-loaded, and most sentences add useful operational or behavioral detail. The description is dense and could be easier to scan with structure, but it avoids filler and every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is not strictly required, yet the description still clarifies null semantics and prior-year comparisons. It covers payment, error handling, and the list dependency. For a read-only, single-year accounts tool, an agent has enough to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 four parameters in detail. The description adds useful context that `date_cloture` comes from `list_uk_company_accounts`, but it does not add syntax or meaning beyond the schema for `company_number`, `api_key`, or `x_payment`. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: retrieving one UK financial year of annual accounts decoded from iXBRL filed at Companies House. It distinguishes itself from sibling `list_uk_company_accounts` by noting that the balance-sheet date comes from that list tool. It also clearly scopes the content to balance sheet, employees, and P&L when filed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: use this for a single company and financial year, and obtain `date_cloture` from `list_uk_company_accounts`. It does not explicitly state when not to use this tool or name alternatives beyond that list dependency, but the prerequisite is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_uk_company_gazette_noticesUK insolvency notices (The Gazette)ARead-onlyInspect
Corporate insolvency notices of a UK company from The Gazette, the official journal (London, Edinburgh and Belfast; OGL v3.0), collected daily from the category-24 feed: winding-up resolutions and petitions, appointment of liquidators and administrators, winding-up orders, creditors' notices, dividends, moratoria, each with the official notice code, a closed-list type and regime, publication date and link. The procedural journal Companies House does not give (use get_uk_company_insolvency for the current status). Coverage is PARTIAL and said so: the stock starts at stock.depuis and ~30% of notices (creditors' notices, dividends, meetings) are attached to the company number in a deferred pass at the pace the site tolerates (stock.avis_en_attente_de_rattachement counts them); aucune_annonce: true is a bounded answer for a company confirmed at Companies House. No practitioners, no notice text. A company with a current name under objection (GDPR art. 21) returns the same 404 as an unknown number, not billed; a notice's published name under objection is served null and counted in ecartes.opposition (item kept, block partial in provenance). Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. | |
| company_number | Yes | Companies House company number, 8 characters incl. leading zeros, e.g. 00102498 or SC123456 |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint; the description goes far beyond by disclosing partial coverage, the stock.depuis start point, a ~30% deferred attachment pass, the GDPR art. 21 objection behavior (404 that is not billed, null names counted in ecartes.opposition), and the x402 pricing ($0.02 USDC/EURC). This is exactly the operational context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the sibling routing are front-loaded, and nearly every clause carries unique information. It is nonetheless one dense block mixing coverage, output-field jargon (stock.depuis, ecartes.opposition) and payment mechanics; splitting those into sentences would improve scanning without adding length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, and the description instead covers the things an agent must know before trusting a result: collection cadence, partial coverage, deferred attachment, objection handling, billing and the citation requirement. Nothing material is missing for a paid, open-world read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so company_number, api_key and x_payment are already fully documented in the schema, including the pattern and the credits-vs-x402 precedence. The description adds no parameter-level detail beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource (corporate insolvency notices from The Gazette) and enumerates the notice kinds it returns (winding-up resolutions, petitions, liquidator/administrator appointments, orders, creditors' notices, dividends, moratoria). It also distinguishes itself from the closest sibling in the same sentence: 'use get_uk_company_insolvency for the current status'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing is given ('use get_uk_company_insolvency for the current status'), plus scope exclusions ('No practitioners, no notice text') and an interpretation rule ('aucune_annonce: true is a bounded answer for a company confirmed at Companies House'). The agent knows both when to call this and when the empty result is meaningful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_uk_company_insolvencyUK company insolvencyARead-onlyInspect
UK company insolvency record, live from Companies House, the official UK company registry: cases (compulsory or voluntary liquidation, administration, receivership...) with dates and insolvency practitioners (name and role only, no addresses; one under an objection, GDPR art. 21, is left out and counted in praticiens_omis). A company with no recorded case returns an explicit positive answer (aucune_procedure: true): the register is authoritative. Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. | |
| company_number | Yes | Companies House company number, 8 characters incl. leading zeros, e.g. 00102498 or SC123456 |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations (readOnlyHint/openWorldHint): it discloses that the register is authoritative for negative results, that insolvency practitioners are returned name-and-role only with GDPR art. 21 objectors suppressed and surfaced as a count in 'praticiens_omis', the exact cost and payment rail ($0.02 USDC/EURC via x402), and an output-handling obligation to cite `citation` verbatim. These are non-obvious traits an agent could not get from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: source and record contents come first, then negative-answer semantics, then payment, then the citation rule. Every sentence carries information, though the mixed French field names (aucune_procedure, praticiens_omis) in an English description add slight parsing friction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't explain return shapes, and it covers everything else an agent needs: authoritative source, negative-result behavior, suppression of objecting practitioners, cost/payment mechanism, and citation duty. Nothing material is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so company_number's 8-character format and the two payment parameters are already fully documented in the schema. The description adds no parameter-level detail beyond noting payment in general terms, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('UK company insolvency record') and pins the data source ('live from Companies House, the official UK company registry'), which combined with the title makes it unambiguously distinct from the many country-specific insolvency siblings. It even enumerates the case types returned (compulsory/voluntary liquidation, administration, receivership).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the jurisdiction and source rather than stated: an agent can infer 'call this for a UK company's insolvency events,' and the note that no recorded case yields 'aucune_procedure: true' tells it the tool is meaningful even for clean companies. However, it never names an alternative or exclusion (e.g., gazette notices, other countries' insolvency tools), leaving routing to inference from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_uk_company_officersUK company officersARead-onlyInspect
UK company officers and directors, live from Companies House, the official UK company registry: directors and secretaries with role, appointment date, nationality, occupation, country of residence and birth year only, never the month of birth or a correspondence address (GDPR minimisation). Includes active/resigned counts. Open Government Licence v3.0. Paid via x402 ($0.01 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. | |
| company_number | Yes | Companies House company number, 8 characters incl. leading zeros, e.g. 00102498 or SC123456 |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover readOnly and openWorld; the description adds substantial context beyond them: GDPR data minimisation (never birth month or correspondence address), the presence of active/resigned counts, the OGL v3.0 licence, and a concrete paid-access model ($0.01 via x402). These are exactly the operational facts an agent needs before calling and before relaying results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource and source, then packs fields, privacy constraints, licensing, pricing and a citation instruction into a tight block with no filler. Slightly dense as a single run-on paragraph, but every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paid, single-parameter lookup with an output schema, the description covers provenance, field scope, privacy behaviour, pricing/payment alternatives and result-attribution requirements. Nothing an agent needs in order to call it correctly or report it faithfully is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so company_number format and both payment parameters (api_key vs x_payment precedence) are already documented in the schema. The description adds no per-parameter detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('UK company officers and directors, live from Companies House') and immediately scopes the returned fields (role, appointment date, nationality, occupation, residence, birth year). An agent can distinguish it from get_uk_beneficial_owners or the various non-UK *_company_officers siblings without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context on when this is the right source (official UK registry, live data, includes active/resigned counts) and what to do with results ('cite its citation verbatim'). It does not explicitly route the agent away from neighbouring tools such as get_uk_beneficial_owners or other jurisdictions' officer tools, so there are no stated exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_uk_company_public_procurementUK company public procurement (FTS, Contracts Finder)ARead-onlyInspect
Public-procurement record of a UK company from Find a Tender (above-threshold notices since 2021) and Contracts Finder (below-threshold since 2023), Cabinet Office OCDS feeds under OGL v3: contracts WON matched by company number (attributions: buyer, subject, contract value in GBP, award / signature dates, contract period, status, official notice link, source fts | cf) and notices ISSUED as a buyer (avis_emis), newest first, 100 each at most with tronque_*, totals (nombre_attributions, valeur_totale_gbp, nombre_avis_emis) and stock per feed. Only about half of suppliers carry a company number and natural persons never do: aucune_attribution: true is a NON-conclusive absence; aucun_marche: true means the company was confirmed at Companies House with nothing matched. Facts only, no score. A company with a current name under objection (GDPR art. 21) returns the same 404 as an unknown number, not billed; a supplier's published name, a buyer's name or a title under objection is served null and counted in ecartes.opposition (item kept, only its block partial in provenance); a title naming a person (title of address and name, T/A, sole trader) is null, counted in ecartes.personne_physique. Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. | |
| company_number | Yes | 8-character UK company number, leading zeros included (e.g. 10868035, SC540982) |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly and openWorld annotations, the description discloses source coverage, matching method, result limits and truncation fields, totals, 404 behavior for objected companies, null-field handling, and payment mechanics. These are substantial behavioral details that directly affect interpretation and invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long and dense but front-loads the core purpose and sources before caveats. Most sentences carry operational value, though the single-paragraph run-on structure makes it harder to scan than it could be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a paid, output-schema-backed read tool with three fully described parameters, the description covers the relevant sources, matching limitations, result shape, truncation, absence meanings, billing, and citation requirement. Nothing material for correct use appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the parameters are already documented. The description still adds meaning by explaining that matching is by company number and by warning that many suppliers and all natural persons lack a usable company number, plus it supplies payment price and currency context for x402.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource (UK company public-procurement record) and names the exact sources and coverage periods (Find a Tender since 2021, Contracts Finder since 2023). This clearly distinguishes it from sibling procurement tools by jurisdiction and source.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for when the tool is appropriate and important interpretation caveats, such as only about half of suppliers carrying a company number and empty results being non-conclusive. It does not explicitly name alternative sibling tools for EU or non-UK procurement, so it falls short of a full when-to-use/when-not/alternatives statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_belgian_company_filingsBelgian filings list (NBB)ARead-onlyInspect
Belgian company annual accounts: list every published deposit of a Belgian company at the NBB CBSO (Central Balance Sheet Office, Authentic Data), with deposit references with filing metadata as published. A sole proprietorship or a legal form in doubt in the KBO copy is refused (404, not charged) without calling the NBB; so is an enterprise number the KBO copy does not hold or whose name is under objection (the profile's 404), and an empty KBO copy answers 503 collecte_en_cours. Unique on x402: no other service exposes Belgian filed accounts. No default-risk score is computed for this country yet: the response carries score_defaillance (statut non_evaluable, closed-list reasons that GET /v1/lecture explains); never read it as a low score. Paid via x402 ($0.01 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | 10-digit Belgian enterprise number (KBO/BCE), e.g. 0403170701 | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover readOnly/openWorld, and the description adds substantial behavior beyond them: errors that are refused without an NBB call and not charged, the 503 empty-KBO case, the $0.01 x402 payment path, and the explicit warning that score_defaillance with statut non_evaluable must not be read as a low score. That last point prevents a real misinterpretation of the payload.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause, but the middle is a dense run-on chaining three different error conditions, and phrases like 'with deposit references with filing metadata as published' are near-tautological. The marketing line 'Unique on x402: no other service exposes Belgian filed accounts' consumes space without helping invocation decisions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return shape needn't be explained, and the description covers charging, error semantics, pricing and the unauthoritative score caveat. What's missing is volume/pagination expectations for 'list every deposit' and any explicit relation to get_belgian_company_filing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — the id pattern and example, api_key vs x_payment precedence, and the credits-vs-x402 fallback are all documented in the schema. The description adds no additional parameter meaning (it does not even mention that a single 10-digit KBO number is required), so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource+source: 'list every published deposit of a Belgian company at the NBB CBSO (Central Balance Sheet Office, Authentic Data)'. An agent knows exactly what data comes back. However, it never names the sibling get_belgian_company_filing (singular, one deposit) or the other list_*_company_filings tools, so the list-vs-get distinction must be inferred from the tool name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the collective phrasing ('list every published deposit'), which suggests this over the single-filing getter, but the description never states when to prefer one over the other. It does give concrete refusal conditions (404 for sole proprietorships / legal form in doubt / unknown number / name under objection, 503 collecte_en_cours) which help the agent interpret failures.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_danish_company_filingsDanish filings list (CVR)ARead-onlyInspect
Danish company annual accounts: list the fiscal years of a Danish company whose XBRL annual report (Erhvervsstyrelsen, virk.dk publication index) has been decoded: closing dates, period, entity name, currency. Danish-taxonomy (fsa) filings only: IFRS/ESEF-only groups are not decoded, an empty answer does not mean no accounts exist. Legal persons only, the form read on the CVR profile: a sole proprietorship (ENK, PMV), an estate (DØD) or an undecided CVR form returns 404, not billed, as does a number unknown to the CVR or a name under objection (GDPR art. 21); without CVR access on the server, 503 registre_non_configure, not billed. No default-risk score is computed for this country yet: the response carries score_defaillance (statut non_evaluable, closed-list reasons explained by GET /v1/lecture); never read it as a low score. A filing's entity name under objection (GDPR art. 21) is served null and counted in ecartes.opposition (item kept, block partial in provenance). Paid via x402 ($0.01 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | 8-digit Danish CVR number, e.g. 41235292 | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond readOnlyHint/openWorldHint: it discloses that non-legal CVR forms, unknown numbers and GDPR-art.-21 objectors return 404 and are not billed, that missing CVR server access yields 503 registre_non_configure and is not billed, that objector names are served null and counted in ecartes.opposition, and that score_defaillance is statut non_evaluable rather than low. Billing via x402 ($0.01 USDC/EURC) and the citation requirement are also surfaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and scope are front-loaded, which is good, but the paragraph then becomes a dense run-on chain of error codes, GDPR clauses and scoring caveats. Sentences such as the ENK/PMV/DØD 404 clause are hard to parse, and some return-value detail (ecartes.opposition, score_defaillance) is already covered by the output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paid, open-world lookup with only one required identifier, it covers failure modes, billing behavior, GDPR masking and citation duties, so an agent can call it and interpret results without guessing. Since an output schema exists, the extra return-field narration is not required, but the interpretive warnings remain useful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and all three parameters (id, api_key, x_payment) are already documented in the schema. The description adds the payment mode at a high level but no parameter-specific semantics beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: list the fiscal years of a Danish company's decoded XBRL annual report, with closing dates, period, entity name and currency. That is far more than a restatement of the name. It never explicitly routes against the singular sibling get_danish_company_filing, so the distinction relies on the list/get naming.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Applicability is spelled out clearly: Danish fsa-taxonomy filings only, IFRS/ESEF-only groups are not decoded, and an empty answer does not mean no accounts exist. This is strong context but framed as coverage limits rather than as an explicit use-this-vs-that routing rule against get_danish_company_filing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_finnish_company_filingsFinnish filings list (PRH)ARead-onlyInspect
Finnish company annual accounts: list the fiscal years a Finnish company has filed in XBRL with the PRH (Finnish Patent and Registration Office, CC BY 4.0). Only ~5% of Finnish limited companies file digitally: an empty answer does not mean no accounts exist. Empty filings are filtered out: every listed year carries figures. No default-risk score is computed for this country yet: the response carries score_defaillance (statut non_evaluable, closed-list reasons that GET /v1/lecture explains); never read it as a low score. Paid via x402 ($0.01 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Finnish Business ID (Y-tunnus), NNNNNNN-N, e.g. 0103396-3 | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint and openWorldHint, but the description adds material behavior: coverage limitations, empty-year filtering, paid access via x402 at $0.01 in USDC/EURC, a mandatory verbatim `citation`, and an explicit warning that score_defaillance (statut non_evaluable) must never be read as a low score. That last point actively prevents a foreseeable misinterpretation of the payload.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Information is front-loaded with the purpose first, then caveats, pricing, and citation duty. Every sentence carries a distinct constraint, though the French-term parenthetical (statut non_evaluable, closed-list reasons) makes one sentence density-heavy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and annotations cover the safety profile, so the description does not need to explain return fields. It still covers pricing, coverage caveats, and a critical interpretation warning; the only missing piece is how this list relates to fetching an individual filing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the Y-tunnus pattern, api_key credit path, and x_payment quote behavior are already fully documented in the schema. The description adds no parameter-level detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: list the fiscal years a Finnish company has filed in XBRL with the PRH. It also quantifies the source (PRH, CC BY 4.0) and scopes the result to years that actually carry figures, so an agent knows exactly what comes back 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage context: only ~5% of Finnish limited companies file digitally, so an empty answer does not mean no accounts exist, and empty filings are filtered out. It does not name the sibling get_finnish_company_filing for retrieving a specific filing's contents, so the alternative routing is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_french_company_documentsList French company documents (INPI)ARead-onlyInspect
List official documents filed by a French company at the INPI RNE registry: legal deeds (statutes, general-meeting minutes, mergers...) and filed annual accounts, with document IDs to download the PDFs. Partial diffusion (rule diffusion_partielle_nom_retenu_et_compte): for a unit not proven to be a legal person, denomination and every nom_document are null, each counted in ecartes.diffusion_partielle; the filings stay listed. Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| siren | Yes | 9-digit SIREN | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnly/openWorld; the description adds substantial non-obvious behavior: the partial-diffusion rule where denomination and every nom_document come back null and are counted in ecartes.diffusion_partielle while filings stay listed. It also discloses cost, payment rail, and the obligation to cite the `citation` field verbatim — none of which the annotations or schema convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource and document scope, then cost, then the edge-case rule — a sensible ordering with no filler. The diffusion_partielle parenthetical is jargon-heavy but earns its place because it explains a result set that would otherwise look broken to an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't document return values, and it covers the remaining gaps an agent would hit: payment mechanics, the null-field/ecartes quirk, and the citation requirement. Nothing needed to call this correctly or interpret its output is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so siren, api_key, and x_payment are already fully documented in the schema, including the credits-vs-x402 precedence and the insufficient-balance behavior. The description mentions payment at a high level ("Paid via x402") but adds no parameter-level detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and a precisely scoped resource: documents filed at the INPI RNE registry, enumerating the two families (legal deeds and annual accounts). It implicitly separates itself from download_french_company_document by noting it returns "document IDs to download the PDFs", but never names that sibling, leaving a small inference step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly frames the list-then-download workflow ("document IDs to download the PDFs") and discloses the payment precondition (x402, $0.02 in USDC/EURC), which tells an agent what to expect on first call. It stops short of explicit exclusions or naming alternatives such as get_french_company_file, so the usage guidance is clear context rather than full routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_french_company_establishmentsFrench company establishments (SIRET)ARead-onlyInspect
List all establishments (SIRET) of a French company: branches and addresses with open/closed status, from the official French company registry. Paid via x402 ($0.003 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| siren | Yes | 9-digit SIREN | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so safety is covered. The description adds genuinely non-schema behavior: pay-per-call via x402 at $0.003 in USDC or EURC, the official-registry provenance, and a mandatory verbatim citation on reporting. Output shape is left to 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with no waste: resource and scope first, then cost/payment, then the citation obligation. Front-loaded and every clause carries information the agent needs before calling.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema and full schema descriptions present, the description only needs to cover the non-schema essentials, and it does: cost, payment mechanism, provenance, and citation requirement. Only minor gap is no indication of result volume or pagination behavior for companies with many establishments.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the SIREN pattern, the api_key prepaid-credits path, and x_payment quote behavior all documented in the schema. The description adds nothing parameter-specific beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and resource ('List all establishments (SIRET) of a French company'), including what is returned (branches, addresses, open/closed status) and the data source (official French registry). It is clearly distinct from siblings like get_french_company_profile or list_french_company_documents, but never names an alternative to route against.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the description tells you the tool exists for listing establishments but gives no explicit when-to-use, when-not, or sibling alternative. An agent must infer the condition (needing SIRET-level establishment data for one SIREN) from the resource name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_polish_company_filingsPolish company annual-accounts filings (KRS)ARead-onlyInspect
Polish company annual-accounts filings recorded in the official KRS register extract (Ministry of Justice open API, live, 24 h cache): every filing since registration, newest first: financial statements (own and consolidated) with their filing date, auditor's report, approval resolution, management report, sustainability attestation, each with the period covered. Metadata only, never the figures or the document: the Financial Documents Repository (RDF) has no open API. aucun_depot: true is what the extract shows, not a proof of non-filing. A legal form off the served list (foreign entrepreneur or its branch, professional partnership) returns 404, not billed. 10-digit KRS number. Paid via x402 ($0.01 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| krs | Yes | 10-digit Polish KRS number, leading zeros included, e.g. 0000034143 | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/openWorld annotations: live source with 24 h cache, newest-first ordering, explicit cost ($0.01 USDC/EURC via x402), 404 responses not billed, and a caveat that `aucun_depot: true` is not proof of non-filing. It also instructs the agent to cite the returned `citation` verbatim.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource and scope, and every sentence carries operational information. Some sentences are long run-ons mixing caveats with payment details, and the mid-sentence French field name `aucun_depot` slows parsing, but nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 need not be described. The description nonetheless covers cost, caching, ordering, the 404 edge case, semantic caveats on the null-filing flag, and citation requirements — everything needed to invoke and report correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents krs, api_key and x_payment thoroughly. The description adds only the 10-digit KRS format (already in the schema pattern and description) and the pricing mode, which the api_key/x_payment descriptions already explain. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — listing Polish annual-accounts filings from the KRS register extract — and enumerates the record types returned (financial statements, auditor's report, approval resolution, management report, sustainability attestation). This clearly separates it from siblings such as get_polish_company_registry_events or get_polish_company_insolvency.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the boundaries of the tool well: metadata only, never figures or documents, and notes the RDF repository has no open API (so an agent shouldn't go looking). It also covers the 404 case for unsupported legal forms. It never explicitly names an alternative sibling tool for when this one is the wrong choice, which keeps it below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_slovak_company_filingsSlovak filings list (RUZ)ARead-onlyInspect
Slovak company annual accounts: list the fiscal years of a Slovak company whose STRUCTURED financial statements have been decoded from the official Register účtovných závierok (RÚZ, registeruz.sk, Ministry of Finance, CC0): closing date, period, filing type (ordinary/extraordinary), form model, statutory vs consolidated scope, and the official document link. Filings served as PDF only (which includes every IFRS group) carry no structured data and are absent: an empty answer does not mean no accounts exist. Only units whose legal form is a served legal person's: any other (sole trader, 752 association of natural persons, form left unread) returns 404, not billed (GDPR minimisation). No default-risk score is computed for this country yet: the response carries score_defaillance (statut non_evaluable, closed-list reasons, explained by GET /v1/lecture); never read it as a low score. Paid via x402 ($0.01 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| ico | Yes | 8-digit Slovak IČO, e.g. 36417475 | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover readOnlyHint and openWorldHint; the description adds the substantive behavior: billing model (x402 $0.01 in USDC/EURC), that 404s are not billed, GDPR minimisation rationale, and the crucial caveat that score_defaillance is statut non_evaluable and must not be read as a low score. It also instructs citing the returned `citation` verbatim.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and information-dense, but it is a single long run-on block mixing data scope, exclusion rules, payment, scoring caveat and citation policy. Every sentence carries content, though the parenthetical asides (RÚZ full name, GDPR minimisation, GET /v1/lecture) could be trimmed or split for scanability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paid, single-parameter, open-world listing tool with an output schema and readOnly annotation, the description covers everything an agent needs: what data exists, what is silently absent, what errors mean, how billing works, and how to interpret the verdict field. Nothing critical is missing given the output schema handles return shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with ico (8-digit pattern), api_key and x_payment all documented in the schema, so baseline is 3. The description adds no parameter-level detail (e.g., no ico format or payment precedence is repeated beyond what the schema already says).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'list the fiscal years of a Slovak company whose STRUCTURED financial statements have been decoded from RÚZ', and enumerates what each row carries (closing date, period, filing type, form model, scope, document link). This distinguishes it clearly from sibling list_*_filings tools for other countries and from get_slovak_company_filing by country and by listing-vs-detail scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives strong when-not guidance: PDF-only filings (including all IFRS groups) are absent so an empty answer is not proof of no accounts, and non-served legal forms (sole trader, 752 association, unread form) return 404. It does not explicitly name the sibling to use for full document retrieval (get_slovak_company_filing), so routing between list and get is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_uk_company_accountsUK accounts list (Companies House)ARead-onlyInspect
UK company annual accounts: list the financial years of a UK company whose iXBRL accounts (Companies House Accounts Data Product, Open Government Licence v3.0) have been decoded, with balance-sheet dates, period, entity name, currency, accounting framework (micro-entity, FRS 102...) and accounts type. Electronically filed accounts only (~75% of UK filings) and depth accumulated since 2026-07: an empty answer does not mean no accounts exist. No default-risk score is computed for this country yet: the response carries score_defaillance (statut non_evaluable, closed-list reasons that GET /v1/lecture explains); never read it as a low score. A company with a current name under objection (GDPR art. 21) returns the same 404 as a number without decoded filing, not billed; a filing's entity name under objection is served null and counted in ecartes.opposition (item kept, block partial in provenance). Paid via x402 ($0.01 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. | |
| company_number | Yes | Companies House company number, 8 characters incl. leading zeros, e.g. 00095407 or SC123456 |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite the readOnly/openWorld annotations, it adds substantial non-obvious behavior: partial coverage of UK filings, a depth cutoff date, the fact that a GDPR art. 21 objection yields the same 404 as a missing company and is not billed, that an objected entity name is served null and counted in ecartes.opposition, and that the call is paid via x402 at $0.01. This is exactly the kind of retrieval and billing nuance annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, scope, then caveats, and every sentence carries information (coverage, cutoff, score field, opposition, payment, citation). It is dense and long, with several parenthetical asides that strain readability, but there is little filler to cut.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paid, single-parameter lookup with an output schema and only two annotation hints, the description covers exactly the gaps that matter: why results can be empty, how to interpret score_defaillance, how opposition appears in the payload, and the billing model. Nothing needed to call or interpret it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — company_number format, api_key and x_payment are all documented in the schema, so the baseline is 3. The description adds payment context (x402 price) but no additional meaning for individual parameters; its field-level detail concerns response objects rather than inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('list the financial years of a UK company whose iXBRL accounts... have been decoded') and enumerates the fields returned (balance-sheet dates, period, entity name, currency, framework, accounts type). It is clearly distinguishable from filings or officers tools. It never acknowledges the closely named sibling get_uk_company_accounts, so the scope boundary with that tool is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives real usage context: electronically filed accounts only (~75%), depth accumulated since 2026-07 so an empty result is not proof of no accounts, and the score_defaillance field must never be read as a low score. It also instructs citing the `citation` verbatim. What is missing is an explicit statement of when to choose this over get_uk_company_accounts or the other country accounts tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_european_invoice_filePrepare Belgian or Polish invoice fileARead-onlyInspect
Use when the company you are about to invoice or pay is BELGIAN or POLISH and you must verify the supplier before payment (for France, use prepare_french_invoice_file). ONE call returns official registry identity, the VAT number checked against VIES, Peppol reachability for Belgium (whose structured B2B e-invoicing mandate has been in force since 1 January 2026) and, uniquely in Poland, whether the IBAN is actually DECLARED by that taxpayer in the official White List (wykaz podatnikow VAT). The Polish check has FISCAL scope: paying more than 15,000 PLN into an undeclared account costs the buyer the deduction and creates joint liability for the supplier's VAT (art. 117ba Ordynacja podatkowa), so an undeclared account is a blocking reason. Everywhere else the bank leg is a FORM check (ISO 13616 structure + mod-97 key) plus bank identification, never a payee verification: with an iban supplied, verdict.non_verifie sits next to the verdict and names what is not checked (account existence, holder name), and the White List itself proves the account is DECLARED by that taxpayer, never who holds it. Returns a deterministic pret_a_facturer verdict with closed-list reasons, each tagged blocking or informational. In Poland, a taxpayer without a KRS number (a CEIDG sole trader, or an undecided case) gets these checks without its name or address, the omission counted in ecartes; so do, in Belgium, an entity without legal form (a natural-person enterprise) or of a form without legal personality, and in Poland a KRS entity of an undecided form (a foreign entrepreneur's branch). The response is Ed25519-signed and carries provenance[]: one entry per block served, with the official register, its licence and its as_of date, the White List entry carrying the date actually sent to the ministry's API, so the payment decision is provable to an auditor offline. Paid via x402 ($0.03 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Belgian enterprise number (10 digits, KBO/BCE) or Polish NIP (10 digits); dots, spaces and dashes are tolerated | |
| iban | No | IBAN of the account you are about to pay, unpunctuated (spaces tolerated); optional, but it is what unlocks the Polish White List account check, and everywhere the structure check plus bank identification | |
| pays | Yes | Country of the counterparty: BE (Belgium) or PL (Poland). For France use prepare_french_invoice_file. | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint; the description adds far more: what each block checks, that the Polish White List check is fiscal in scope with legal citation, that non-Polish bank checks are form-only with verdict.non_verifie naming the gaps, the degraded cases where name/address are omitted, and that responses are Ed25519-signed with provenance. It also discloses paid access (x402, $0.03) and the citation requirement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening 'Use when' clause is well front-loaded, but the body is a very dense run-on block mixing legal citations, edge cases, pricing and signature details with emphasis in all caps. Every fact is arguably useful, yet the structure makes it hard to scan; it would benefit from segmentation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paid, multi-registry verification tool with an output schema, the description covers scope, blocking vs informational reasons, degraded-data cases, provenance/signature and payment so an agent can act and report results correctly. Nothing material about invocation or interpretation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description still adds meaning beyond it by explaining that supplying an iban is what unlocks the White List account check and the structure/bank identification, and by describing the fallback paths for identifiers without KRS. The api_key/x_payment parameters are left to the schema, which is acceptable given its documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (prepare a Belgian/Polish invoice file / supplier verification) scoped to two countries, and explicitly names the sibling to use instead for France (prepare_french_invoice_file). The agent can distinguish it from prepare_french_invoice_file and validate_eu_vat_number 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Front-loads the trigger condition ("Use when the company you are about to invoice or pay is BELGIAN or POLISH and you must verify the supplier before payment") and routes France to the named alternative. It also states when the Polish check becomes blocking (payments over 15,000 PLN to an undeclared account), so both when-to-use and when-to-stop are explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_french_einvoicing_recipientPrepare French e-invoicing recipientARead-onlyInspect
Use when you need to PREPARE a compliant French e-invoice for a company (invoice header, VAT number, addressing) rather than decide whether paying it is safe; for the full verify-the-supplier-before-payment verdict, IBAN included, call prepare_french_invoice_file. The French e-invoicing mandate applies from 1 September 2026: receiving becomes obligatory for every VAT-liable company on that date, issuing is phased (large and mid-sized companies 1 September 2026, SMEs and micro-enterprises 1 September 2027; art. 91 of the 2024 Finance Act). Returns legal name & form, active/ceased status, computed intra-EU VAT number (+ VIES-check pointer), establishments (SIRET) with addresses, NAF code and indicative send/receive obligation dates from the INSEE size category. The response is Ed25519-signed and carries provenance[] (one entry per block served, with the official register, its licence and its as_of date), so the preparation is auditable offline. Preparation only: Sirenic is not an accredited platform (PDP), does not access the central directory and never issues, transmits or routes invoices, nor confirms PPF/PDP registration. Partial diffusion (rule diffusion_partielle_nom_retenu_et_compte): a unit not proven to be a legal person has destinataire.denomination null, uncounted; destinataire.information states the partial diffusion. Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| siren | Yes | 9-digit SIREN of the company to be invoiced (digits only, no spaces); use search_french_companies first if you only have a name | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only readOnlyHint/openWorldHint in annotations, the description carries real weight: it discloses x402 payment ($0.02 USDC/EURC), Ed25519 signing, provenance[] with register/licence/as_of per block, and the partial-diffusion rule that yields a null denomination. It also states hard limits ('not an accredited platform (PDP), does not access the central directory and never issues, transmits or routes invoices'), which prevents an agent from over-claiming.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence front-loads the use case and the sibling contrast, and the remaining sentences are ordered from mandate dates to legal content to limits to payment. It is dense and semicolon-heavy — the statutory citation and obligation-date recap could be trimmed — but every block conveys decision-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 summarizes the returned fields (legal name/form, status, computed intra-EU VAT, SIRET establishments, NAF, indicative obligation dates), the provenance/signature model, and the partial-diffusion edge case that would otherwise confuse an agent reading a null denomination. Payment mechanics and the citation instruction close the remaining gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all three parameters (siren, api_key, x_payment) are documented in the schema, including the payment-precedence rule. The description adds no parameter-level detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('PREPARE a compliant French e-invoice for a company') plus the concrete payload (invoice header, VAT number, addressing). It also explicitly contrasts itself with prepare_french_invoice_file ('rather than decide whether paying it is safe'), so an agent can distinguish it from the nearest sibling without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use condition and a named alternative for the different need ('for the full verify-the-supplier-before-payment verdict, IBAN included, call prepare_french_invoice_file'). It does not mention the other closely related siblings such as verify_french_invoice or prepare_european_invoice_file, so routing guidance is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_french_invoice_filePrepare French invoice fileARead-onlyInspect
Use when you are about to invoice or pay a FRENCH company and must verify the supplier before payment: onboarding, first invoice, first payment, or bank details that just changed. The French e-invoicing mandate applies from 1 September 2026 (receiving obligatory for every VAT-liable company; issuing phased: large and mid-sized companies 1 September 2026, SMEs and micro-enterprises 1 September 2027), so every French counterparty has to be checked. ONE call returns the whole agent-side file: legal identity & obligation dates, the computed intra-EU VAT number verified LIVE against VIES, an IBAN FORM check (ISO 13616 structure + mod-97 key) with the bank identified from official registries when iban is supplied, and a deterministic verdict pret_a_facturer (true/false) whose reasons come from a CLOSED list, each tagged blocking or informational and traced to its source. A VIES outage yields an honest informational reason, never a false invalid. Not a payee verification, and the verdict says so where the decision is read: with an iban supplied, verdict.non_verifie sits NEXT TO pret_a_facturer and names what is never checked (the account's existence and the holder's name). An IBAN on a published list of known documentation samples is flagged by the informational reason iban_exemple_documentation, whose absence is not proof of the contrary (the verdict stays green: such an IBAN is well-formed; the account's existence is not tested). The response is Ed25519-signed and carries provenance[] (one entry per block served, with the official register, its licence and its as_of date), so the decision stays auditable offline months later. A SIREN whose administrative status or legal category is missing in Sirene is refused: 404 identite_incomplete (body: siren, champs_absents, fiche), never charged. Partial diffusion (rule diffusion_partielle_nom_retenu_et_compte): a unit not proven to be a legal person has destinataire.denomination null, uncounted; destinataire.information states the partial diffusion. Paid via x402 ($0.03 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| iban | No | IBAN of the account you are about to pay (spaces and dashes tolerated). Supplying it adds the structure check and the bank identification, and lets the verdict block on iban_invalide; omitting it yields the informational reason iban_non_fourni | |
| siren | Yes | 9-digit SIREN of the French counterparty being checked: the customer you will invoice or the supplier you will pay (digits only, no spaces) | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral context beyond the annotations: VIES is checked live, outages produce informational reasons rather than false invalid results, verdict reasons are from a closed list and tagged blocking/informational, responses are Ed25519-signed with provenance, incomplete SIREN data returns a 404 and is not charged, and payment is via x402. These details are highly relevant to correct use and trust.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but mostly information-dense and front-loads the key usage condition. Given the tool's complexity, most sentences earn their place, though some regulatory and error-detail passages could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The definition is complete for a complex verification tool: it explains the returned blocks, verification limits, error behavior, signing/provenance, payment model, and citation requirement. With an output schema present, it does not need to enumerate every return field and appropriately focuses on decision-critical context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description still adds meaningful semantics, especially that supplying iban enables the structure check and bank identification and can make the verdict block, while omitting it yields iban_non_fourni; it also clarifies the payment-related parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific purpose: preparing a French invoice/payment verification file in one call, including legal identity, VAT/VIES, IBAN checks, and a deterministic verdict. It also explicitly delimits scope by saying it is not a payee verification and by explaining what the verdict does not check.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear triggering conditions: before invoicing or paying a French company, during onboarding, first invoice, first payment, or changed bank details. It does not explicitly name the closest sibling alternatives such as prepare_french_einvoicing_recipient, verify_french_invoice, or verify_iban_bank, so routing guidance is strong but not complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prospect_french_companiesProspect French companiesARead-onlyInspect
French B2B prospecting and lead generation: build company lists over the full French registry, filtered by NAF activity code, departement/postal code, legal form, workforce, age, RGE certification, gender-equality index. Returns up to 100 active companies per page; each page is one x402 payment ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| naf | No | NAF/APE code or prefix, at least two digits (62, 62.0, 62.01, 62.01Z): only the NAF rev. 2 form is retained (sub-class 62.01Z, and its levels: division 62, group 62.0, class 62.01); a code of an older nomenclature (NAF rev. 1: 55.3A, activity not recoded since rev. 2 came into force) is not, nor is INSEE's provisional value 00.00Z (no division 00 in NAF rev. 2); any other code is refused (400, not charged); a well-formed code absent from INSEE's official NAF rev. 2 list (732 sub-classes, and their classes, groups and divisions), nomenclature of the stock served (NAFRev2), a NAF 2025 code included (62.10Y, group 46.8), is refused as a criterion, with a 400 never charged: NAF 2025 becomes targetable from the first NAF25-coded stock, expected in February 2027 | |
| rge | No | true = active RGE environmental certification | |
| page | No | Page number (one payment per page) | |
| age_max | No | Maximum company age in years | |
| age_min | No | Minimum company age in years | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. | |
| egapro_min | No | Minimum gender-equality index (0-100) of the latest published year; a company whose latest year is not computable is excluded | |
| code_postal | No | Postal-code prefix (2-5 digits), exclusive with departement | |
| departement | No | French departement: 75, 2A, 971… | |
| effectif_max | No | Maximum workforce (number of employees) | |
| effectif_min | No | Minimum workforce (number of employees) | |
| forme_juridique | No | INSEE legal-category prefix, e.g. 54 |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnlyHint/openWorldHint annotations by disclosing the billing model (one x402 payment of $0.02 in USDC or EURC per page), the page cap (100 companies), and the citation obligation for reported results. These are exactly the operational facts an agent cannot infer from annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with the capability, then the paging/payment constraint, then the citation rule. Minimal waste; the filter enumeration is the only slightly list-heavy portion.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter, no-required-param read tool with an output schema, the description covers purpose, paging, payment, and citation duty. The one omission is sibling disambiguation against search_french_companies/query_french_companies.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 every parameter thoroughly. The description only renames the filter dimensions already present in the schema and adds no syntax, format, or interaction details (e.g., postal-code vs departement exclusivity is only in the schema). Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb and resource: 'build company lists over the full French registry' with an enumerated set of filters (NAF, departement, legal form, workforce, age, RGE, egapro). It clearly conveys what the tool returns and its constraint (100 active companies per page). It does not, however, distinguish itself from close siblings like search_french_companies or query_french_companies, which an agent must guess between.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Framed as 'B2B prospecting and lead generation,' which implies when to use it, but there is no explicit when-to-use, when-not-to-use, or named alternative. With three plausibly overlapping French-company listing tools in the sibling set, the absence of routing guidance is a real gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_french_companiesQuery French companies by combined criteriaARead-onlyInspect
French company search with free combined criteria on a pre-joined table of the official registries (Sirene identity and head office, last filed accounts, public signals). mode is required: compter returns the exact count ($0.002 in USDC or EURC), lister one page of 100 companies ($0.02 per page, 100 pages at most) with the exact total; count first, then list. criteres: up to 20 conditions {champ, op, valeur} combined with AND (OR goes through in); valeur is typed by the field (string, number, true or false, YYYY-MM-DD, [min, max] for entre, an array of 1 to 50 values for in, or for hors, which excludes SIRENs on identite.siren only); criteres is at most 2048 characters once JSON-encoded (beyond: criteres_trop_longs, refused here before any quote); each field's operators, unit, closed values and meaning are served free by GET /v1/lecture. Active legal persons by default (identite.etat = A; any criterion on identite.etat replaces it): no officer, no person. A refusal is a 400 from the closed list (parametre_inconnu, criteres_illisibles, criteres_trop_longs, trop_de_criteres, champ_inconnu, champ_indisponible, champ_non_filtrable, operateur_refuse, valeur_invalide, personnes_physiques_exclues, tri_refuse, page_hors_bornes, champ_de_sortie_inconnu), never charged; a query beyond the 15 s budget returns requete_trop_large, never charged: narrow the criteria. To screen a customer file by growth trajectory ("Of my 300 customers, which ones have been shrinking for two years?"): identite.siren in a list of up to 50 SIRENs with tendances.trajectoire in [repli_modere, repli_marque, degradation_apres_croissance], 6 calls for 300 customers; tendances.trajectoire and the trajectory signals are computed at each monthly rebuild of the table (before the first one: 503 collecte_en_cours, never charged), get_french_company_trajectory serves one company on the day. Paid via x402. When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| tri | No | Sort field, - prefix for descending; missing values last (lister) | |
| mode | Yes | compter: exact count; lister: one page of companies. Required: nothing is bought by default. | |
| page | No | Page number (lister), 100 companies per page, one payment per page | |
| champs | No | Catalogue fields to serve (lister); the SIREN and the fields of the criteria and of the sort are always served | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| criteres | No | Conditions combined with AND, at most 2048 characters once JSON-encoded (none: every active legal person) | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint, and the description adds a great deal beyond that: per-mode pricing ($0.002 count, $0.02 per page, 100-page cap), the full closed list of 400 codes, the guarantee that refusals and the 15 s overflow are never charged, the monthly rebuild schedule with its 503 collecte_en_cours window, the x402 payment path and the verbatim citation obligation. That is exactly the behavioral context an agent cannot infer from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded correctly — mode, pricing and the count-then-list workflow come first — and there is little outright filler. But it is a single semicolon-chained block of roughly 350 words, with a 14-item error-code enumeration inline, which makes it hard to scan; the same content chunked into short labeled sentences would serve the agent better.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paid, 7-parameter, complex-criteria tool this covers what an agent needs to call it correctly and safely: cost model, required mode, criteria encoding limits, sorting/paging cap, failure taxonomy, latency budget, data freshness and payment options. An output schema exists, so the description is right not to spend words on return shape, and it still flags the citation field.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 genuinely adds semantics: that up to 20 criteres are ANDed (OR must go through the in operator), that valeur is typed by the field (YYYY-MM-DD, [min, max] for entre, 1–50 element array for in/hors), and that hors excludes SIRENs on identite.siren only. It also explains the active-legal-person default on identite.etat, which the schema does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (French company search) and pins the scope precisely: free combined criteria over a pre-joined table of Sirene identity, head office, last filed accounts and public signals. It explicitly separates itself from get_french_company_trajectory (batch screening vs. one company on the day), but never distinguishes itself from the closest siblings, search_french_companies and prospect_french_companies, which an agent will also see.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete operating guidance: mode is required, 'count first, then list', and narrow the criteria when requete_trop_large comes back. The customer-file screening paragraph is a genuine when-to-use recipe with a call budget (6 calls for 300 customers). What is missing is a 'use search_french_companies instead when…' exclusion against the similar search/prospect siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
renew_surveillance_watchRenew a company watchAInspect
Renew a watchlist for 30, 90 or 365 more days (possible until 7 days after expiry). The duration is a FREE choice: it need not match the original one, so a 30-day watch can be extended by a full year. The cibles parameter must repeat the exact watched targets: the quote is computed from it. The extension starts from the current expiry date and cannot push it beyond 400 days from now. Paid via x402, per target: $0.05 for 30 days, $0.135 for 90 days, $0.50 for 365 days. A full-size request quotes up to $50.00, above the $1.00 single-payment cap that x402 clients apply BY DEFAULT since @x402/core 2.23 (spendControls): raise spendControls.maxAmountPerPayment, or set spendControls: false, before signing; otherwise your own client rejects the quote without ever calling us. When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| duree | No | Extension in days (default 30), independent of the original duration. Unit price per target: 30 = $0.05, 90 = $0.135, 365 = $0.50. | |
| cibles | Yes | The exact watched targets | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. | |
| surveillance_id | Yes | Watchlist capability token returned at creation (sw_…) |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses important behavior: pricing per target, the 400-day maximum extension, expiry-based renewal window, and the x402 payment cap pitfall with spendControls. It also tells the agent to cite the citation verbatim, which is actionable output guidance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and key constraints, and every sentence carries useful information. It is somewhat dense and repeats some pricing details already in the schema, but it remains well organized and not bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paid renewal tool with annotations and an output schema, this description covers the important operational context: eligibility window, duration flexibility, target repetition, pricing, payment-cap risk, and citation handling. Nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all five parameters. The description adds meaningful semantics beyond the schema, especially that cibles must repeat the exact watched targets because the quote is computed from it, and that renewal starts from the current expiry date.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: renew a watchlist for 30, 90 or 365 more days. It is immediately distinguishable from sibling tools such as create_surveillance_watch, get_surveillance_watch, and stop_surveillance_watch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states the timing condition for use: renewal is possible until 7 days after expiry. It does not explicitly name alternatives such as what to do after that window, but the operational context is clear enough for an agent to select this tool correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screen_sanctions_listsSanctions screening (AML)ARead-onlyInspect
Use BEFORE any payment, contract or onboarding involving the name. AML sanctions screening of a person or company name against 6 official sanctions lists (UN consolidated, EU FSF, US OFAC SDN, UK Sanctions List, French asset-freeze register, Swiss SECO list). Returns fuzzy matches with a 0-100 confidence score, never a bare yes/no. Similarity matches, not a conclusion. Each list is reported with its entry count, its publication date and what that date means (official upstream publication vs. Sirenic ingestion; OFAC publishes none). A list never loaded or not re-read by our collection for over 3 days is named in listes_absentes, its entries still compared; with no successful pass of the lists for over 3 days, screening is not sold. Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Person or company name to screen | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. | |
| birth_year | No | Optional birth year (YYYY) to refine person matches |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond readOnlyHint/openWorldHint: it discloses fuzzy matching with 0-100 confidence rather than a binary verdict, per-list entry counts and publication-date semantics, the listes_absentes behavior for stale or unloaded lists, the 3-day no-pass cutoff where screening is not sold, x402 pricing, and the requirement to cite the returned `citation` verbatim.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the usage trigger, then coverage, then result semantics, then caveats and billing — a logical order with no filler sentences. It is dense and long, but nearly every clause carries decision-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 need not be described, yet the description still supplies the interpretive framing an agent needs (confidence scores, per-list dates, absence flags, citation obligation) plus payment prerequisite for a paid tool. 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so coverage is already high and baseline is 3. The description adds no parameter-level meaning (name format, when to supply birth_year, how api_key and x_payment interact beyond what the schema says) — it only references output fields like listes_absentes and citation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('AML sanctions screening of a person or company name') and enumerates the six source lists, so the agent knows exactly what data backs the result. It is clearly distinct from registry-style siblings like get_french_company_kyb_file or check_french_regulator_alerts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger: 'Use BEFORE any payment, contract or onboarding involving the name.' That is a clear use context, but it names no alternative sibling (e.g. check_french_regulator_alerts or KYB batch tools) and states no exclusion conditions, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_bodacc_announcementsSearch BODACC announcementsARead-onlyInspect
Search French BODACC legal announcements by CRITERIA instead of by company, the monitoring question no other Sirenic tool answers: WHICH companies entered insolvency proceedings in department 59 this week? Pick a family (collective/insolvency proceedings, deregistrations, sales and transfers, incorporations, accounts filings, conciliation, professional recovery, modifications, registrations, miscellaneous), a date window (depuis, optional jusqu_a) and optionally a French department code. Returns up to 100 announcements, newest first, each with SIREN, court, town, department and the judgment in closed fields (nature, date, family, category, appointed officers by role and form, never a name, date of cessation of payments), plus tronque when there were more. The judgment's operative FREE TEXT is deliberately removed everywhere (it names court-appointed administrators with their address), so facts living only in that text are NOT here: follow url_bodacc, or get_french_company_legal_alerts for a single company. Announcements about SOLE TRADERS are deliberately EXCLUDED (their name is personal data) and their count is returned in exclues_personnes_physiques, and records whose person type was unreadable are counted apart in exclues_type_indetermine (fail-closed guard). An announcement is not a verdict: the insolvency family also contains closures and cancellations; read the CURRENT state with get_french_company_legal_alerts or get_french_company_default_risk. Paid via x402 ($0.03 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| depuis | Yes | Start of the publication window, YYYY-MM-DD, e.g. 2026-08-04 | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| famille | Yes | Family code (upstream BODACC codes): dpc (accounts filings, the largest family), modification, creation, radiation, collective (insolvency proceedings), vente, immatriculation, divers, conciliation, retablissement_professionnel | |
| jusqu_a | No | Optional end of the window, YYYY-MM-DD | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. | |
| departement | No | Optional French department code: 01-95 except 20, 2A, 2B, 971-978 (e.g. 59 for Nord) |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld annotations, the description discloses several non-obvious behaviors: sole-trader announcements are excluded and counted in `exclues_personnes_physiques`, unreadable person types are counted in `exclues_type_indetermine`, free text is deliberately stripped because it contains administrator addresses, results cap at 100 with a `tronque` flag, and payment is $0.03 via x402. It also specifies that results must be cited verbatim, which is operational guidance an agent would otherwise miss.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loaded: the core purpose and the motivating question come first, followed by selection criteria, return shape, caveats, and alternatives. It is long, but nearly every sentence carries behavioral or routing information that would otherwise be lost.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paid, filtered search tool with an output schema and annotations, the description covers what the agent needs: when to use it, what is deliberately excluded, how truncation and exclusions are surfaced, payment mechanics, and where to go for the missing free-text facts. Nothing material is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 six parameters, including the family codes and their parenthetical meanings. The description restates the family/date/department selection but adds little syntax or semantics beyond what the schema provides, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Search French BODACC legal announcements by CRITERIA instead of by company') and frames the exact question it answers, which no sibling covers. It explicitly contrasts itself with company-keyed tools, so an agent can distinguish it from get_french_company_legal_alerts or search_french_companies without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit usage pattern: pick a family, a date window, optionally a department. It also names alternatives and the conditions that select them ('follow url_bodacc', 'get_french_company_legal_alerts for a single company', 'read the CURRENT state with get_french_company_legal_alerts or get_french_company_default_risk'), and warns that an announcement is not a verdict.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_eu_financial_authorisationsSearch EU financial authorisations (ESMA, ECB, EIOPA)ARead-onlyInspect
Search EU financial authorisations in five official registers by name or LEI: ESMA Registers (MiFID-regulated entities across all EU/EEA countries: status, home and host member states, competent authority, dates), the ECB list of supervised entities (supervision_bce: banking union, significant banks under direct ECB supervision and less significant ones under national authorities, group, remarks, monthly changes; absence is conclusive only for a LEI and never means unsupervised outside the banking union), the ESMA register of benchmark administrators (administrateurs_indices), the ESMA register of money market funds (fonds_monetaires: fund and manager LEI, type, domicile, authorisation status incl. Withdrawn, dates) and the EIOPA register of occupational pension institutions (iorp: national authority, registration dates incl. closed registrations, cross-border activity, managing entity; only 30% carry a LEI, so zero by LEI is never conclusive). A block listed in blocs_absents was not read: panne_amont (retry later), stock_perime or collecte_en_cours (local copy too old or never loaded: retrying does not help). Use to verify that a financial firm is actually regulated somewhere in the EU. Data freely available at the sources. An entry whose own name, trading name or manager (money market funds, IORPs) is under objection (GDPR art. 21) is neither served nor counted, with no ecartes field; nombre_total (top level or of a block) may be null, unknown, when an ESMA register's matches under such an objection cannot all be re-read, or their re-read failed (such a page is not cached: the next call reads the register again; GET /v1/lecture), and an item of supervision_bce.entites[].changements is null when it names a person who objected, counted in the entity's ecartes.opposition. Paid via x402 ($0.01 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Entity name or 20-character LEI. Unsupported characters are stripped, not rejected. | |
| pays | No | Optional ISO-3166 alpha-2 home-member-state filter (FR, DE...) | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes far beyond readOnlyHint/openWorldHint: it discloses the paid x402 model ($0.01 USDC or EURC) with the api_key alternative, the meaning of each `blocs_absents` code including which are retryable and which are not, GDPR art. 21 objection handling, when `nombre_total` can be null and that such a page is not cached, and the citation obligation on reporting.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence front-loads scope well, but the body is a single dense paragraph of nested parentheticals, including register field enumerations (status, home/host member states, dates) that the output schema already supplies. Operationally critical facts — pricing and the verbatim-citation requirement — are buried at the very end.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given five heterogeneous registers, an x402 payment flow, structured partial-failure codes and GDPR-driven suppression, the description covers everything an agent needs to call and interpret results; return shapes are largely inherited from the existing output schema, so no meaningful gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains q (name or 20-char LEI, unsupported characters stripped), pays (ISO-3166 alpha-2), api_key and x_payment. The description adds only marginal parameter-level meaning, chiefly the LEI-coverage caveats, which is the baseline 3 level.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — searching EU financial authorisations by name or LEI across five named registers — and each register's domain is spelled out (MiFID entities, ECB banking union, benchmark administrators, MMFs, IORPs). It is clear about scope, but never names a confusable sibling such as get_company_licences or search_european_companies, so the agent must infer the boundary itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use to verify that a financial firm is actually regulated somewhere in the EU" gives a concrete decision context, and per-register caveats tell the agent how to interpret a negative result (ECB absence conclusive only for a LEI; IORP zero by LEI never conclusive because only 30% carry one). It stops short of explicit when-not-to-use rules or named alternatives, so it is a strong 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_european_companiesSearch European companies by nameARead-onlyInspect
European company search: company lookup by name across official European company registers, in one unified schema. Local copies, all searched when pays is absent: Belgium, Croatia, Cyprus, Estonia, Ireland, Latvia, Lithuania, Norway, Romania, Sweden, Spain (BORME base, hoja key); live, only with pays set: Czechia, Finland, Slovakia, Switzerland; Poland through GLEIF (no name search at the register); Denmark and the United Kingdom live, only with pays set; plus worldwide GLEIF (LEI) coverage. Each match carries a score_confiance (0-1 match confidence). Order: match level first (0: the name, the official name in the French search, equals q once the legal forms written for the result's country are removed at either end of both, never the last word, for the countries of the closed list of written legal forms, a GLEIF result from any other country keeping its whole name; 1: every remaining word of q is a word of the name; 2: similar only), then an internal ranking score, not score_confiance (European search: score_confiance before its cap at 1 and its rounding; French search: the similarity of the name, usual name and acronym, plus 0.05 for an active company, the name and acronym only in the real-time fallback); ties: by SIREN in the French search, one country in turn in the European search (rank by national ID within each country, then country code). nombre_resultats counts every servable result the registers returned (tronque: true beyond the 10 served, note_troncature when it is a lower bound). Czechia, Estonia, Norway, Latvia and Slovakia serve legal persons only: a sole trader (in Estonia, a sole proprietorship, FIE; in Norway, a sole proprietorship, ENK, a registered individual or an estate; in Latvia, an individual merchant, IK, or an individual, family, farm or fishery enterprise; in Slovakia, any entity of the trade register, and one of the commercial register) or a form not recognised as a legal person is left out; Croatia too (a trgovac pojedinac, t.p., or an undecided form); in Denmark, a sole proprietorship (ENK), a personally owned small business (PMV), an estate (DØD) or an undecided CVR form; in Lithuania, an individual enterprise (individuali įmonė, IĮ), its branch (individualios įmonės filialas) or representative office (individualios įmonės atstovybė), or an undecided form; in Sweden, a sole proprietorship (enskild näringsverksamhet) or an undecided form; in Romania, an authorised natural person or an individual or family enterprise (PFA, II, IF, PF, AF), never loaded, or an undecided form; in Finland, Ireland and the United Kingdom, a form outside the register's published nomenclature; in Belgium, an entity without legal form or of a form off the whitelist, and in Spain, the hoja of a sole trader (a BORME empresario individual act), are left out; in Switzerland, a sole proprietorship (Einzelunternehmen, whose name carries the owner's name), a branch (the search does not know its head office) or an undecided legal form is left out; in every country, a GLEIF LEI of a natural person (sole proprietor category or natural-person legal form) or of an ambiguous legal form is left out too, its legal form written as free text included; a GLEIF LEI (general or branch) of a country with a local copy is served only when that copy knows and serves its number, a branch under the country of its legal address; all are counted by reason in ecartes, never named, except where a local copy keeps such an entity nameless: neither matched nor counted, ecartes_non_mesures (LV, Latvia; NO, Norway) says so; and except what a register's own request leaves out (ARES is asked for legal persons only, GLEIF for its servable categories, without the sole proprietor one): neither read nor counted, ecartes_filtres_amont says so. A search Zefix or ARES refuses as too broad returns requete_trop_large, not charged: refine the name; a register or database outage returns 503 with the code naming it (amont_indisponible, base_indisponible), never charged. Spanish matches return the hoja registral to use with get_spanish_company_acts. Paid via x402 ($0.003 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Company name (2 characters minimum once cleaned up, 3 with pays=CH). Unsupported characters are stripped, not rejected. | |
| pays | No | Optional ISO-3166 alpha-2 country filter, e.g. NO, EE, LV | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint/openWorldHint already declared, the description still adds substantial non-obvious behavior: per-country sole-trader and non-legal-person exclusions, `ecartes`/`ecartes_non_mesures`/`ecartes_filtres_amont` counting semantics, `requete_trop_large` and 503 outage codes that are not charged, and the x402 pricing model. Match ordering, tie-breaks, and truncation (`tronque`, `note_troncature`) are also disclosed, which an agent cannot infer from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in one good sentence, but the body is a single enormous block enumerating legal-form exclusions country by country (ENK, PMV, DØD, IĮ, PFA, II, IF, t.p., FIE…) and exact tie-break mechanics. Much of this minutiae would rarely change tool selection or invocation and buries the actionable guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Because an output schema exists, return values need not be explained, and the description still covers errors, counting, ranking, and payment. The one ambiguity is the recurring reference to a "French search" mode within a tool named for European search, which leaves the boundary between this tool and the French search sibling slightly unclear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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; the description earns more by explaining that omitting `pays` restricts the search to local copies and that live registers require it, plus the minimum query length nuance (3 characters with pays=CH). This adds real semantics about how `q` and `pays` interact beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb and resource: company-name lookup across official European registers, unified into one schema, which distinguishes it from the French-specific sibling tools it repeatedly contrasts with ("the French search"). It never names a sibling explicitly (e.g. search_french_companies, get_european_company_profile), so routing against alternatives rests on inference rather than direct signposting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear usage conditions are given: which countries are searched from local copies when `pays` is absent, which are live-only and require `pays`, and that Spanish matches should be followed up via get_spanish_company_acts. It does not state when to pick this over a narrower sibling search tool, so the alternative-selection guidance stops short of full routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_french_associationsSearch French associations by nameARead-onlyInspect
Use FIRST whenever a French association (loi 1901, nonprofit, charity, club) is mentioned by NAME without an identifier. Searches the Répertoire national des associations (RNA) by trigram similarity on the title, with optional postal-code, department and position filters. Returns up to 20 matches with score_confiance (0-1) and the RNA number to pass to get_french_association_profile or get_french_association_notices; siren when Sirene confirms it. Associations with AND without a SIREN; the legacy file (no declaration since 2009) is flagged fichier_source: import. Paid via x402 ($0.002 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Association title, or an RNA number (resolved directly). Unsupported characters are stripped, not rejected. | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| position | No | Position filter; default all | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. | |
| code_postal | No | Postal code or prefix (2-5 digits) of the registered office | |
| departement | No | Department: 01-95, 2A, 2B or 971-989 (ignored when code_postal is given) |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint; the description adds what those cannot: trigram-similarity matching, a 20-result cap, score_confiance 0-1, SIREN presence only when Sirene confirms, a legacy-file flag (fichier_source: import), and paid access via x402 at $0.002. The verbatim-citation requirement is a behavioral obligation an agent would otherwise miss.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The selection rule is front-loaded in the first clause, and no sentence is filler. It is dense though: pricing, legacy-source semantics and citation rules all share one paragraph, which makes it harder to scan than a 3-4 sentence version.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter search tool with an output schema, the description covers everything an agent needs before calling: when to call it, how matching works, the result cap and score, downstream tool routing, and the payment/citation obligations. Return-value structure is correctly left to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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; the description earns one step by explaining the matching mechanism (trigram similarity on title) and that postal-code/department/position act as optional filters, which informs how to phrase q. It does not add much on the payment parameters (api_key, x_payment), which the schema already documents in depth.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Searches the Répertoire national des associations (RNA) by trigram similarity on the title') and scopes it to French loi 1901 nonprofits, charities and clubs. That scope cleanly separates it from company-oriented siblings like search_french_companies or query_french_companies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use FIRST whenever a French association ... is mentioned by NAME without an identifier' gives an explicit trigger condition plus the exclusion (no identifier yet). It also names the follow-up tools (get_french_association_profile, get_french_association_notices) that consume the returned RNA number, so the agent knows the whole flow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_french_companiesSearch French companies by nameARead-onlyInspect
Use FIRST whenever a French company is mentioned by NAME without an identifier. French company search and company lookup by name or SIREN in the official French company registry (INSEE Sirene / INPI RNE data). Returns the top 10 matches, each with a score_confiance (0-1 match confidence, helps pick among homonyms); total_results counts every match (tronque: true beyond the 10 served, note_troncature when it is a lower bound). Order: match level first (0: the name, the official name in the French search, equals q once the legal forms written for the result's country are removed at either end of both, never the last word, for the countries of the closed list of written legal forms, a GLEIF result from any other country keeping its whole name; 1: every remaining word of q is a word of the name; 2: similar only), then an internal ranking score, not score_confiance (European search: score_confiance before its cap at 1 and its rounding; French search: the similarity of the name, usual name and acronym, plus 0.05 for an active company, the name and acronym only in the real-time fallback); ties: by SIREN in the French search, one country in turn in the European search (rank by national ID within each country, then country code). etages_abandonnes is always present: an empty array means the top 10 is complete; a non-empty one (with resultats_partiels: true) means the local index was degraded and the real-time fallback failed, so the list is partial: retry in a few seconds. If aucune_correspondance_fiable is true, no result resembles the name you asked for (best confidence < 0.5): do NOT treat the top hit as the company; check the spelling or retry. In the local index, typo tolerance only covers active companies under full disclosure: a ceased company, or one under partial disclosure, is found there by its exact name, its beginning or all its words. Partial diffusion (rule diffusion_partielle_nom_retenu_et_compte): a name search leaves out a unit not proven to be a legal person, uncounted (total_results lowered); a SIREN or SIRET search serves it with denomination null, counted in ecartes.diffusion_partielle. Paid via x402 ($0.002 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Company name, or a French identifier (SIREN, SIRET, VAT number); spaced or labelled ("SIREN : 552 032 534") is fine, it resolves directly. Unsupported characters are stripped, not rejected. | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover readOnlyHint/openWorldHint, but the description goes far beyond: it discloses the top-10 cap and troncature/total_results semantics, the degraded-index signal (etages_abandonnes + resultats_partiels with a retry instruction), the low-confidence guard (aucune_correspondance_fiable), typo-tolerance limits for ceased/partially-disclosed companies, the partial-diffusion counting rule, and x402 pricing. This is unusually rich behavioral context an agent could not 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening routing sentence is well front-loaded, but the body is a single dense block in which the 'Order:' sentence alone runs over 100 words with nested parentheticals ('score_confiance before its cap at 1 and its rounding…') and is close to unreadable. Much of that ranking detail restates what the output schema already exposes, so it does not earn its space at the cost of legibility.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a paid, open-world search tool with an output schema, the description covers everything an agent needs to act correctly: when to call it, the payment path, the 10-result cap, truncation and partial-result signals, and the safeguard against treating a low-confidence hit as the company. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so q, api_key and x_payment are already documented, including labelled SIREN formats and the api_key/x_payment precedence. The description adds a genuine nuance the schema does not: that a name search behaves differently from a SIREN/SIRET search under partial diffusion. That extra meaning lifts it slightly, but it stays at the baseline because the schema carries most of the weight.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence names a concrete verb+resource ('French company search and company lookup by name or SIREN in the official French company registry') and adds an explicit routing rule ('Use FIRST whenever a French company is mentioned by NAME without an identifier'), which separates it from identifier-lookup siblings like detect_company_identifiers. An agent knows immediately what this does and when it is the entry point.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use FIRST whenever a French company is mentioned by NAME without an identifier' is a crisp positive trigger, and the aucune_correspondance_fiable clause tells the agent what to do when results are unreliable. What's missing is a named alternative for the negative case: query_french_companies, search_european_companies and search_french_associations appear in the sibling list but the description never says when to prefer them over this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_french_company_directorsSearch French company directorsARead-onlyInspect
Reverse search for company directors and officers in France (a people search by surname): list the French companies where a person of a given surname holds (or held) an office, with the company SIREN, name and the person's role, for due diligence and network mapping. Person data limited to surname, first names, role and birth year. Homonyms are not disambiguated; common names are capped. Partial diffusion (rule diffusion_partielle_nom_retenu_et_compte): any unit under partial diffusion, legal person included, is left out before any count (nombre_resultats and listes_bornees.resultats lowered), never in ecartes; resultats[].statut_diffusion is always totale. Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| nom | Yes | Director surname to search. Unsupported characters are stripped, not rejected. | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnlyHint/openWorldHint annotations: discloses partial-diffusion handling (units dropped before counting, never in 'ecartes', statut_diffusion always 'totale'), result capping, homonym behavior, and a paid x402 cost of $0.02 in USDC or EURC. It even states the citation obligation, which an agent cannot infer 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and scope, then constraints, then cost and citation. It is dense but mostly earns its length; the partial-diffusion sentence is long and jargon-heavy, slightly impeding scanability for an agent that only needs the first clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paid, open-world people search with an output schema, the description covers the non-obvious risks an agent must know: payment path and price, homonym ambiguity, result caps, and suppression rules that affect counts. Return values are handled by the output schema, so nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all three parameters; the description adds marginal value by framing 'nom' as a surname search and disclosing the x402 pricing that motivates 'x_payment'. It adds no syntax or format guidance for the payment parameters beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Reverse search for company directors and officers in France... list the French companies where a person of a given surname holds (or held) an office') and names the return fields. The parenthetical 'a people search by surname' makes it unmistakable against company-keyed siblings like get_french_company_profile or query_french_companies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage context ('for due diligence and network mapping') and constraints on when the tool is insufficient ('homonyms are not disambiguated; common names are capped'). It does not name an alternative sibling to use instead when the search is too noisy, so it falls short of explicit when-not/alternatives routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_surveillance_watchStop a company watchADestructiveIdempotentInspect
Stop a watchlist and purge its data immediately (free).
| Name | Required | Description | Default |
|---|---|---|---|
| surveillance_id | Yes | Watchlist capability token returned at creation (sw_…) |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered. The description still adds real value by specifying that stored data is purged immediately (irreversible data loss) and that the call is free, which an agent weighing cost/compliance would want. It does not discuss auth or whether the watch can be recreated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with the destructive effect and cost front-loaded. Nothing is wasted and nothing important is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive call with an output schema and full annotation coverage, the description supplies the essential extra context (immediate purge, free). Minor gaps remain, such as whether the deletion is recoverable or requires elevated permissions, but nothing blocks correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter carries its own description ('Watchlist capability token returned at creation (sw_…)'), so the schema does the heavy lifting. The description adds no syntax, format or sourcing guidance beyond implying an existing watch, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Stop') and resource ('a watchlist') plus the side effect of purging data, so an agent can tell it apart from create_surveillance_watch, get_surveillance_watch and renew_surveillance_watch without opening any schema. It does not name sibling alternatives, but the action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The verb 'stop' plus the id parameter implies when the tool applies (tearing down an existing watch), and the sibling set makes the alternatives obvious, but the description never explicitly states when to use this versus renew_surveillance_watch or get_surveillance_watch. Usage is inferred rather than guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_company_namesSuggest French company names (free)ARead-onlyInspect
FREE. French company name autocomplete: type the beginning of a company name and get up to 5 matches with SIREN, city, postcode, NAF code and active/ceased status. Use it FIRST to turn a name into the SIREN that every other Sirenic tool takes as input: no account, no API key, no payment. Source: the official INSEE Sirene register (open data), companies and sole traders whose record is publicly diffusible. Matches the START of the name, then whole words; no typo tolerance and no match-confidence score; for those, plus the full profile, use search_french_companies ($0.002) and get_french_company_profile ($0.005).
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Start of the company name (3 characters minimum once cleaned up), or a 9-digit SIREN; labelled ("SIREN : 552 032 534") is fine. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnlyHint/openWorldHint, but the description adds real operational context: no account, no API key, no payment; the source is the INSEE Sirene open-data register; coverage is limited to publicly diffusible records (companies and sole traders). It also discloses matching limits (prefix-first, then whole words; no typo tolerance; no confidence score), which directly affects how an agent should interpret results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with 'FREE' and the core action, then usage, then caveats, then alternatives — a sensible order with no filler sentences. Slightly redundant to say both 'FREE' and 'no account, no API key, no payment', which keeps it from a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 are structurally covered, and the description still names the returned fields and their limitations. For a one-parameter lookup tool this covers purpose, cost, source, coverage constraints, and fallback paths — nothing an agent needs 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is already documented (min 3 chars, accepts a 9-digit or labelled SIREN). The description only restates 'type the beginning of a company name', adding no syntax or format detail beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('French company name autocomplete: type the beginning of a company name and get up to 5 matches') and enumerates what comes back (SIREN, city, postcode, NAF, active/ceased). It also explicitly positions itself against search_french_companies and get_french_company_profile, so an agent can distinguish it from siblings 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit ordering rule — 'Use it FIRST to turn a name into the SIREN that every other Sirenic tool takes as input' — and names the paid alternatives with prices for the cases this tool does not cover (typos, confidence scores, full profile). This is about as close to unambiguous routing guidance as a description gets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_eu_vat_numberValidate EU VAT number (VIES)ARead-onlyInspect
VAT number check against VIES: use when you only need the tax half of verifying a supplier before payment: confirm that a counterparty's intra-community VAT number really exists before invoicing it, applying the reverse charge or paying it. It is a required check under the French e-invoicing mandate of 1 September 2026 and under the Belgian B2B mandate in force since 1 January 2026. Validates any EU intra-community VAT number against the official VIES service (all member states) and returns valid or invalid, the registered name and address when the member state publishes them, and the VIES consultation identifier as proof. Name and address are served only for a holder that its number's format or its country's register (BE, PL, LV, HR, RO, SE, CZ, DK, FI, FR) proves a legal person; any other holder (natural person, undecided form, missing from its register, or in a state where no register qualifies it: AT, CY, DE, EE, EL, HU, IE, IT, LT, LU, MT, NL, SI, SK, XI) gets neither, the omission counted in ecartes by reason. A VIES outage (member state down or saturated) returns error 503 amont_indisponible, not charged: retry later; never a false invalid. The response is Ed25519-signed and carries provenance[]: the VIES entry with the date the number was really consulted, never a fabricated one. Paid via x402 ($0.003 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. | |
| vat_number | Yes | Full VAT number with its 2-letter country prefix and no spaces, e.g. FR27552032534 |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the readOnly/openWorld annotations by disclosing conditional return behavior: name and address are only returned for holders proven to be legal persons, with country-specific omissions counted in ecartes. It also explains outage behavior (503 amont_indisponible, not charged, never a false invalid), signed responses with provenance, and x402 payment. This is unusually rich behavioral context for a read-only validation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and usage before moving into return behavior, outage handling and payment details. It is dense and lengthy, and the long list of countries plus mandate dates could be tightened, but nearly every sentence carries operational or compliance information. It is not wasteful enough to drop below 4.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the description does not need to enumerate return fields, but it still explains valid/invalid results, conditional name/address publication, VIES identifier, signing and provenance. It also covers the major failure mode (VIES outage) and payment path. Given the tool's complexity, the description is complete enough for an agent to call and report results correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents vat_number, api_key and x_payment. The description reinforces that the input is an EU intra-community VAT number and mentions x402 payment, but it does not add parameter-specific syntax or precedence beyond what the schema provides. The baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: validating an EU intra-community VAT number against VIES. It clearly distinguishes the tax-only check from broader supplier verification by saying it is for when you 'only need the tax half'. It also specifies the return shape, so an agent can tell what the tool is for 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear usage context: confirming that a counterparty's VAT number exists before invoicing, reverse charging or paying. It implies the boundary versus broader supplier verification by saying it is for the tax half only, and it cites French and Belgian e-invoicing mandates as concrete triggers. It does not explicitly name a sibling alternative such as verify_iban_bank or verify_french_invoice, so it falls short of the top score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_french_invoiceVerify a French invoiceARead-onlyInspect
Invoice verification for France: use when you HOLD an invoice (or its extracted fields) and must check that the identifiers it displays belong together before paying it. Cross-checks in ONE call: the SIREN against the official registry (existence and active status, live), the VAT number printed on the invoice against the one computed from the SIREN (the French key is deterministic) AND live against VIES, and the IBAN's ISO 13616 form + key digits with the bank identified. Returns a deterministic verdict coherent/incoherent/inverifiable with closed-list reasons traced to their source; flags a VAT number that belongs to ANOTHER company, a ceased supplier, or a key-invalid IBAN. A VIES outage yields inverifiable, never a false invalid. NOT a payee verification: the bank leg checks form only, so a valid-but-swapped IBAN is not detectable, and non_verifie says so next to the verdict. At least one of tva/iban is required (a SIREN alone is a profile, not a cross-check). An incomplete identity (administrative status or legal category missing from the Sirene register) yields inverifiable, reason identite_incomplete, unless an inconsistency is found. Partial diffusion (rule diffusion_partielle_nom_retenu_et_compte): a unit not proven to be a legal person has denomination null, uncounted; raisons carries diffusion_partielle (niveau information). Paid via x402 ($0.02 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| tva | No | VAT number printed on the invoice, e.g. FR27552032534, cross-checked against the SIREN and live against VIES. At least one of tva/iban is required | |
| iban | No | IBAN printed on the invoice (spaces tolerated): form + key + bank identification, never a holder-name check. At least one of tva/iban is required | |
| siren | Yes | 9-digit SIREN printed on the invoice (digits only) | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes far beyond readOnlyHint/openWorldHint: discloses live registry and VIES lookups, deterministic verdict vocabulary (coherent/incoherent/inverifiable), closed-list traceable reasons, outage degradation ('VIES outage yields inverifiable, never a false invalid'), the Sirene identity-incomplete edge case, the diffusion_partielle rule, and the x402 cost of $0.02. The citation-verbatim reporting requirement is also stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and the one-call cross-check list, and nearly every clause carries operational information. It is dense and jargon-heavy ('rule diffusion_partielle_nom_retenu_et_compte') with some trailing detail that could be trimmed, but no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite rich structured data (100% schema coverage, output schema, annotations), the description still supplies the logic an agent needs: what each leg checks, what verdicts mean, how failures degrade, payment mechanics, and the caveat that a swapped-but-valid IBAN is undetectable. Nothing material is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description nonetheless adds meaning beyond the schema by tying tva to both SIREN-derived computation and live VIES, and by stating the IBAN leg validates ISO 13616 form and key plus bank identification but never the holder name. The tva/iban minimum requirement is repeated from the schema, slightly redundant.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Invoice verification for France') plus the exact scenario: holding an invoice and checking that its displayed identifiers belong together before paying. It enumerates the three cross-checks performed, distinguishing it clearly from siblings like validate_eu_vat_number and verify_iban_bank which each cover only one leg.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the trigger situation ('use when you HOLD an invoice ... before paying it'), states a negative scope ('NOT a payee verification: the bank leg checks form only'), and gives a precondition ('At least one of tva/iban is required (a SIREN alone is a profile, not a cross-check)'). An agent can decide correct use without opening sibling schemas.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_iban_bankVerify IBAN and bank (SEPA)ARead-onlyInspect
IBAN verification and bank validation for SEPA: use when you are about to pay a NEW or CHANGED IBAN, or when onboarding a supplier's bank details, and want the cheapest check of the supplier before payment. Runs a FORM check on the IBAN (ISO 13616 structure + mod-97 key), identifies the bank from FREE official registers (France: name+LEI+SIREN via ACPR/REGAFI; Belgium, Austria, Netherlands: name+BIC; Germany when the Bundesbank file is loaded, incl. LEI where available; French banks get their BIC via the GLEIF/SWIFT BIC-to-LEI mapping). Explicitly NOT a payee verification (the account holder's name is never checked and the account's existence is not tested, verification_titulaire: non_disponible): a well-formed IBAN at an identified bank is no proof that the account belongs to your supplier. The answer says this in machine-readable form next to valide: nature_du_controle (forme | forme_et_registres), non_verifie [account existence, holder name] and exemple_de_documentation, true for IBANs on a published list of known documentation samples, which pass every check; the account's existence is not tested; false is not proof of the contrary. The response is Ed25519-signed and carries provenance[]: one entry per block served, naming the official register actually consulted, its licence and its as_of date. For the full invoicing verdict on a French counterparty, call prepare_french_invoice_file instead. Paid via x402 ($0.005 in USDC or EURC). When you report a result, cite its citation verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| iban | Yes | IBAN of the account to check, any ISO 13616 country (spaces and dashes tolerated); bank identification is limited to the registers listed in the tool description | |
| api_key | No | Optional Sirenic API key (srn_live_…) to pay with prepaid credits instead of x402, with no wallet needed. Get one at https://api.sirenic.eu/compte?utm_source=api&utm_campaign=mcp. Ignored when x_payment is provided (the signed payment wins). On insufficient balance the tool returns a credits error, not an x402 quote. | |
| x_payment | No | Optional signed x402 PAYMENT-SIGNATURE header value. Omit to receive the payment quote. |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | How to settle the quote, present when payment_required is true. |
| quote | No | The signable x402 payment requirements when payment_required is true: {x402Version, accepts[]} where each entry carries scheme, network, amount, asset and payTo (USDC and EURC options at the same numeric amount). Sign one entry and call again with `x_payment`. |
| resultat | No | The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it). |
| free_tier | No | Free API key offer for this tool, present with a quote. |
| payment_required | Yes | True when this response is an x402 payment quote instead of data: settle one of the quote's `accepts` options and call the tool again with `x_payment`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover readOnly/openWorld, and the description adds substantial context beyond them: the check is form-level only (ISO 13616 + mod-97), account existence and holder name are never tested, results can be flagged as known documentation samples, responses are Ed25519-signed with per-block provenance and as_of dates, and payment is x402 at $0.005 with a credits fallback. These are exactly the failure modes an agent needs to know before reporting a result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: the trigger condition comes first, then scope, then exclusions, then output shape, then pricing and citation instruction. Minor waste from repetition — 'the account's existence is not tested' appears twice in different clauses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a payment-adjacent verification tool with an output schema, the description covers what is checked, what is deliberately not checked, per-country register coverage, the machine-readable fields (nature_du_controle, non_verifie, exemple_de_documentation), provenance, cost, and the citation requirement. Nothing needed to call or report it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents iban, api_key and x_payment. The description adds one useful constraint on the iban parameter (bank identification is limited to the listed registers) but says nothing about api_key/x_payment semantics beyond what the schema states. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (IBAN verification + bank identification via official registers) and enumerates the registers actually consulted per country. It is clearly separable from validate_eu_vat_number and prepare_french_invoice_file, which it names explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit trigger conditions (paying a NEW or CHANGED IBAN, onboarding supplier bank details), an explicit exclusion ('Explicitly NOT a payee verification'), and an explicit alternative ('call prepare_french_invoice_file instead') for the invoicing-verdict case.
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.
116 tool updates
- Changed
check_french_regulator_alerts3 fields changed- changed
Input schema / properties / nom / descriptionPrevious value: -"Name to screen (site, brand, company) — required unless siren is given"New value: +"Name to screen (site, brand, company), required unless siren is given" - changed
Input schema / properties / siren / descriptionPrevious value: -"9-digit SIREN for PSAN/SGP register lookup — required unless nom is given"New value: +"9-digit SIREN for PSAN/SGP register lookup, required unless nom is given" - changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
compare_french_companies1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
create_surveillance_watch2 fields changed- changed
Input schema / properties / cibles / descriptionPrevious value: -"1-100 comma-separated targets: 9-digit SIRENs, RNA numbers (W + 9, associations — JOAFE notices) and/or dirigeant:Name entries"New value: +"1-100 comma-separated targets: 9-digit SIRENs, RNA numbers (W + 9, associations: JOAFE notices) and/or dirigeant:Name entries" - changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
detect_company_identifiers1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
find_expiring_french_public_contracts1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
find_french_lookalike_companies1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_belgian_insider_transactions1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_company_licences1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_company_procurement_competitors1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_croatian_company_accounts1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_croatian_company_events1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_croatian_company_insolvency1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_cypriot_company_officers1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_czech_company_insolvency1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_czech_company_officers1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_czech_company_shareholders1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_danish_company_filing1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_danish_company_officers1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_estonian_company_accounts1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_estonian_company_officers1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_estonian_company_registry_rulings1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_estonian_company_shareholders1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_eu_procurement_awards1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_european_company_eu_procurement1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_european_company_profile1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_finnish_company_events1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_finnish_company_filing1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_french_association_notices1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_french_association_profile1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_french_company_capital1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_french_company_changes1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_french_company_collective_agreements1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_french_company_court_decisions1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_french_company_credit_limit1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_french_company_default_risk1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_french_company_default_risk_batch1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_french_company_eu_funding1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_french_company_file1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_french_company_financials1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_french_company_health_summary1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_french_company_hiring_signals1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_french_company_identity_batch1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_french_company_industrial_risk1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_french_company_intellectual_property1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_french_company_intelligence1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_french_company_kyb_batch1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_french_company_kyb_file1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_french_company_legal_alerts1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_french_company_lobbying1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_french_company_profile1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_french_company_public_procurement1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_french_company_trajectory1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_french_company_updates_since1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_french_public_buyer_profile1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_french_sector_benchmarks1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_german_insider_transactions1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_irish_company_insolvency1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_latvian_company_accounts1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_latvian_company_events1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_latvian_company_insolvency1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_latvian_company_officers1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_latvian_company_public_procurement1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_latvian_company_shareholders1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_lithuanian_company_accounts1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_lithuanian_company_insolvency1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_norwegian_company_accounts1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_norwegian_company_legal_events1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_norwegian_company_local_units1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_norwegian_company_officers1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_polish_company_insolvency1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_polish_company_public_procurement1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_polish_company_registry_events1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_portuguese_company_public_procurement1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_romanian_company_accounts1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_romanian_company_insolvency1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_romanian_company_officers1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_slovak_company_filing2 fields changed- changed
Input schema / properties / perimetre / descriptionPrevious value: -"Filing scope: statutory (default) or consolidated — never merged"New value: +"Filing scope: statutory (default) or consolidated, never merged" - changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_spanish_company_acts2 fields changed- changed
Input schema / properties / hoja / descriptionPrevious value: -"Hoja registral (register-sheet key), e.g. VI-23141 — from search_european_companies with pays=ES. The BORME does not publish the NIF."New value: +"Hoja registral (register-sheet key), e.g. VI-23141, from search_european_companies with pays=ES. The BORME does not publish the NIF." - changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_spanish_company_public_procurement1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_surveillance_watch1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_swedish_company_accounts1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_swedish_company_registry_events1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_swiss_company_events1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_swiss_company_insolvency1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_uk_beneficial_owners1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_uk_company_accounts1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_uk_company_gazette_notices1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_uk_company_insolvency1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_uk_company_officers1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
get_uk_company_public_procurement1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
list_belgian_company_filings1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
list_danish_company_filings1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
list_finnish_company_filings1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
list_french_company_documents1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
list_french_company_establishments1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
list_polish_company_filings1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
list_slovak_company_filings1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
list_uk_company_accounts1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
prepare_european_invoice_file2 fields changed- changed
Input schema / properties / iban / descriptionPrevious value: -"IBAN of the account you are about to pay, unpunctuated (spaces tolerated) — optional, but it is what unlocks the Polish White List account check, and everywhere the structure check plus bank identification"New value: +"IBAN of the account you are about to pay, unpunctuated (spaces tolerated); optional, but it is what unlocks the Polish White List account check, and everywhere the structure check plus bank identification" - changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
prepare_french_einvoicing_recipient1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
prepare_french_invoice_file2 fields changed- changed
Input schema / properties / siren / descriptionPrevious value: -"9-digit SIREN of the French counterparty being checked — the customer you will invoice or the supplier you will pay (digits only, no spaces)"New value: +"9-digit SIREN of the French counterparty being checked: the customer you will invoice or the supplier you will pay (digits only, no spaces)" - changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
prospect_french_companies1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
query_french_companies1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
renew_surveillance_watch1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
screen_sanctions_lists1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
search_bodacc_announcements1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
search_eu_financial_authorisations1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
search_european_companies1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
search_french_associations1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
search_french_companies2 fields changed- changed
Input schema / properties / q / descriptionPrevious value: -"Company name, or a French identifier (SIREN, SIRET, VAT number) — spaced or labelled (\"SIREN : 552 032 534\") is fine, it resolves directly. Unsupported characters are stripped, not rejected."New value: +"Company name, or a French identifier (SIREN, SIRET, VAT number); spaced or labelled (\"SIREN : 552 032 534\") is fine, it resolves directly. Unsupported characters are stripped, not rejected." - changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
search_french_company_directors1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
stop_surveillance_watch1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
suggest_company_names2 fields changed- changed
Input schema / properties / q / descriptionPrevious value: -"Start of the company name (3 characters minimum once cleaned up), or a 9-digit SIREN — labelled (\"SIREN : 552 032 534\") is fine."New value: +"Start of the company name (3 characters minimum once cleaned up), or a 9-digit SIREN; labelled (\"SIREN : 552 032 534\") is fine." - changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
validate_eu_vat_number1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
verify_french_invoice3 fields changed- changed
Input schema / properties / iban / descriptionPrevious value: -"IBAN printed on the invoice (spaces tolerated) — form + key + bank identification, never a holder-name check. At least one of tva/iban is required"New value: +"IBAN printed on the invoice (spaces tolerated): form + key + bank identification, never a holder-name check. At least one of tva/iban is required" - changed
Input schema / properties / tva / descriptionPrevious value: -"VAT number printed on the invoice, e.g. FR27552032534 — cross-checked against the SIREN and live against VIES. At least one of tva/iban is required"New value: +"VAT number printed on the invoice, e.g. FR27552032534, cross-checked against the SIREN and live against VIES. At least one of tva/iban is required" - changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
- Changed
verify_iban_bank1 field changed- changed
Output schema / properties / resultat / descriptionPrevious value: -"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06) — one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report » — only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."New value: +"The endpoint's JSON response when payment_required is false. Paid responses carry `source`, `disclaimer` and an Ed25519 signature, and every paid JSON response carries a `provenance` array (all tools since 2026-09-06): one entry per block served, with the official register, licence, version, `empreinte_sha256` (full snapshots), `as_of` date and `precision_as_of` (what that date means), plus the common per-block envelope: `etat` in a closed list (servi, absence_mesuree, absence_non_conclusive, partiel, perime, indisponible, sans_objet), `motif` when unavailable, `age_jours` (only for publication or ingestion dates), `couverture` (complete / partielle / non_mesurable with its measure) and `confiance` in bands (faible / moyenne / forte, only where a measure grounds it, never averaged across blocks). Read the states before the numbers: an absence_non_conclusive, indisponible or partiel block is never « nothing to report »; only absence_mesuree asserts an absence. Register codes: GET /v1/provenance/registres ; states, closed lists and reading rules: GET /v1/lecture (both free). The PDF tools carry no JSON envelope (the PDF report prints it)."
120 tool updates
- Changed
check_french_regulator_alerts4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
compare_french_companies4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
create_surveillance_watch4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
detect_company_identifiers4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
download_french_company_document1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
find_expiring_french_public_contracts4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
find_french_lookalike_companies4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_belgian_company_filing1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
get_belgian_insider_transactions4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_company_licences4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_company_procurement_competitors4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_croatian_company_accounts4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_croatian_company_events4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_croatian_company_insolvency4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_cypriot_company_officers4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_czech_company_insolvency4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_czech_company_officers4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_czech_company_shareholders4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_danish_company_filing4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_danish_company_officers4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_estonian_company_accounts4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_estonian_company_officers4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_estonian_company_registry_rulings4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_estonian_company_shareholders4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_eu_procurement_awards4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_european_company_eu_procurement4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_european_company_profile4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_finnish_company_events4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_finnish_company_filing4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_french_association_notices4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_french_association_profile4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_french_company_briefing1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
get_french_company_capital4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_french_company_changes4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_french_company_collective_agreements4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_french_company_court_decisions4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_french_company_credit_limit4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_french_company_default_risk4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_french_company_default_risk_batch4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_french_company_eu_funding4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_french_company_file4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_french_company_financials4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_french_company_health_summary4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_french_company_hiring_signals4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_french_company_identity_batch4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_french_company_industrial_risk4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_french_company_intellectual_property4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_french_company_intelligence4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_french_company_kyb_batch4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_french_company_kyb_file4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_french_company_legal_alerts4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_french_company_lobbying4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_french_company_pdf_report1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
get_french_company_profile4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_french_company_public_procurement4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_french_company_trajectory4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_french_company_updates_since4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_french_public_buyer_profile4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_french_sector_benchmarks4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_german_insider_transactions4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_irish_company_insolvency4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_latvian_company_accounts4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_latvian_company_events4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_latvian_company_insolvency4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_latvian_company_officers4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_latvian_company_public_procurement4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_latvian_company_shareholders4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_lithuanian_company_accounts4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_lithuanian_company_insolvency4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_norwegian_company_accounts4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_norwegian_company_legal_events4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_norwegian_company_local_units4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_norwegian_company_officers4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_polish_company_insolvency4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_polish_company_public_procurement4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_polish_company_registry_events4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_portuguese_company_public_procurement4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_romanian_company_accounts4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_romanian_company_insolvency4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_romanian_company_officers4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_slovak_company_filing4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_spanish_company_acts4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_spanish_company_public_procurement4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_surveillance_watch4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_swedish_company_accounts4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_swedish_company_registry_events4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_swiss_company_events4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_swiss_company_insolvency4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_uk_beneficial_owners4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_uk_company_accounts4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_uk_company_gazette_notices4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_uk_company_insolvency4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_uk_company_officers4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
get_uk_company_public_procurement4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
list_belgian_company_filings4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
list_danish_company_filings4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
list_finnish_company_filings4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
list_french_company_documents4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
list_french_company_establishments4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
list_polish_company_filings4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
list_slovak_company_filings4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
list_uk_company_accounts4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
prepare_european_invoice_file4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
prepare_french_einvoicing_recipient4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
prepare_french_invoice_file4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
prospect_french_companies14 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / age_max / maximumAdded value: +9007199254740991 - added
Input schema / properties / age_max / minimumAdded value: +-9007199254740991 - added
Input schema / properties / age_min / maximumAdded value: +9007199254740991 - added
Input schema / properties / age_min / minimumAdded value: +-9007199254740991 - added
Input schema / properties / effectif_max / maximumAdded value: +9007199254740991 - added
Input schema / properties / effectif_max / minimumAdded value: +-9007199254740991 - added
Input schema / properties / effectif_min / maximumAdded value: +9007199254740991 - added
Input schema / properties / effectif_min / minimumAdded value: +-9007199254740991 - added
Input schema / properties / egapro_min / maximumAdded value: +9007199254740991 - added
Input schema / properties / egapro_min / minimumAdded value: +-9007199254740991 - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
query_french_companies6 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / champs / maxItemsAdded value: +66 - removed
Input schema / properties / criteres / items / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
renew_surveillance_watch4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
screen_sanctions_lists4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
search_bodacc_announcements4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
search_eu_financial_authorisations4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
search_european_companies4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
search_french_associations4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
search_french_companies4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
search_french_company_directors4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
stop_surveillance_watch4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
suggest_company_names4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
validate_eu_vat_number4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
verify_french_invoice4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
verify_iban_bank4 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Output schema / properties / free_tier / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / quote / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / resultat / propertyNamesAdded value: +{ + "type": "string" +}
1 tool update
- Changed
prospect_french_companies1 field changed- changed
Input schema / properties / naf / descriptionPrevious value: -"NAF/APE code or prefix, at least two digits (62, 62.0, 62.01, 62.01Z): only the NAF rev. 2 form is retained (sub-class 62.01Z, and its levels: division 62, group 62.0, class 62.01); a code of an older nomenclature (NAF rev. 1: 55.3A, activity not recoded since rev. 2 came into force) is not, nor is INSEE's provisional value 00.00Z (no division 00 in NAF rev. 2); any other code is refused (400, not charged)"New value: +"NAF/APE code or prefix, at least two digits (62, 62.0, 62.01, 62.01Z): only the NAF rev. 2 form is retained (sub-class 62.01Z, and its levels: division 62, group 62.0, class 62.01); a code of an older nomenclature (NAF rev. 1: 55.3A, activity not recoded since rev. 2 came into force) is not, nor is INSEE's provisional value 00.00Z (no division 00 in NAF rev. 2); any other code is refused (400, not charged); a well-formed code absent from INSEE's official NAF rev. 2 list (732 sub-classes, and their classes, groups and divisions), nomenclature of the stock served (NAFRev2), a NAF 2025 code included (62.10Y, group 46.8), is refused as a criterion, with a 400 never charged: NAF 2025 becomes targetable from the first NAF25-coded stock, expected in February 2027"
2 tool updates
- Added
get_czech_company_officers - Added
get_czech_company_shareholders
2 tool updates
- Added
get_french_company_trajectory - Changed
query_french_companies2 fields changed- changed
Input schema / properties / champs / items / enumPrevious value: -[ - "identite.siren", - "identite.denomination", - "identite.personne_morale", - "identite.forme", - "identite.naf", - "identite.categorie_entreprise", - "identite.tranche_effectifs", - "identite.date_creation", - "identite.age", - "identite.etat", - "identite.ess", - "identite.societe_mission", - "siege.siret", - "siege.code_postal", - "siege.code_commune", - "siege.commune", - "siege.departement", - "siege.region", - "siege.latitude", - "siege.longitude", - "finances.date_cloture", - "finances.type_bilan", - "finances.fiabilite", - "finances.nb_exercices", - "finances.ca", - "finances.marge_brute", - "finances.ebe", - "finances.ebit", - "finances.resultat_net", - "finances.taux_endettement", - "finances.autonomie_financiere", - "finances.ratio_liquidite", - "finances.caf_sur_ca", - "finances.capacite_remboursement", - "finances.marge_ebe", - "finances.rcai_sur_ca", - "finances.couverture_interets", - "finances.bfr_sur_ca", - "tendances.variation_ca_1an", - "tendances.variation_ca_3ans", - "tendances.variation_rn_1an", - "tendances.variation_bfr_sur_ca_3ans", - "tresorerie.disponibilites", - "tresorerie.dettes_moins_1an", - "tresorerie.dettes_fiscales_sociales", - "tresorerie.dettes_total", - "signaux.rge_actif", - "signaux.egapro_note", - "signaux.egapro_annee", - "signaux.icpe_nb", - "signaux.icpe_seveso", - "signaux.marches_nb", - "signaux.marches_montant", - "signaux.marches_dernier", - "signaux.agrements" -]New value: +[ + "identite.siren", + "identite.denomination", + "identite.personne_morale", + "identite.forme", + "identite.naf", + "identite.categorie_entreprise", + "identite.tranche_effectifs", + "identite.annee_effectifs", + "identite.date_creation", + "identite.age", + "identite.etat", + "identite.ess", + "identite.societe_mission", + "siege.siret", + "siege.code_postal", + "siege.code_commune", + "siege.commune", + "siege.departement", + "siege.region", + "siege.latitude", + "siege.longitude", + "finances.date_cloture", + "finances.type_bilan", + "finances.fiabilite", + "finances.nb_exercices", + "finances.ca", + "finances.marge_brute", + "finances.ebe", + "finances.ebit", + "finances.resultat_net", + "finances.taux_endettement", + "finances.autonomie_financiere", + "finances.ratio_liquidite", + "finances.caf_sur_ca", + "finances.capacite_remboursement", + "finances.marge_ebe", + "finances.rcai_sur_ca", + "finances.couverture_interets", + "finances.bfr_sur_ca", + "tendances.variation_ca_1an", + "tendances.variation_ca_3ans", + "tendances.variation_rn_1an", + "tendances.variation_bfr_sur_ca_3ans", + "tendances.trajectoire", + "tendances.trajectoire_cause", + "tendances.trajectoire_exercices", + "tendances.trajectoire_variation_pct", + "tendances.trajectoire_annee_pic", + "tendances.trajectoire_repli_pic_pct", + "tresorerie.disponibilites", + "tresorerie.dettes_moins_1an", + "tresorerie.dettes_fiscales_sociales", + "tresorerie.dettes_total", + "signaux.rge_actif", + "signaux.egapro_note", + "signaux.egapro_annee", + "signaux.icpe_nb", + "signaux.icpe_seveso", + "signaux.marches_nb", + "signaux.marches_montant", + "signaux.marches_dernier", + "signaux.etablissements_ouverts_24_mois", + "signaux.etablissements_fermes_24_mois", + "signaux.marches_12_mois", + "signaux.marches_12_mois_precedents", + "signaux.agrements" +] - changed
Input schema / properties / criteres / items / properties / champ / enumPrevious value: -[ - "identite.siren", - "identite.personne_morale", - "identite.forme", - "identite.naf", - "identite.categorie_entreprise", - "identite.tranche_effectifs", - "identite.date_creation", - "identite.age", - "identite.etat", - "identite.ess", - "identite.societe_mission", - "siege.code_postal", - "siege.code_commune", - "siege.departement", - "siege.region", - "finances.date_cloture", - "finances.type_bilan", - "finances.fiabilite", - "finances.nb_exercices", - "finances.ca", - "finances.marge_brute", - "finances.ebe", - "finances.ebit", - "finances.resultat_net", - "finances.taux_endettement", - "finances.autonomie_financiere", - "finances.ratio_liquidite", - "finances.caf_sur_ca", - "finances.capacite_remboursement", - "finances.marge_ebe", - "finances.rcai_sur_ca", - "finances.couverture_interets", - "finances.bfr_sur_ca", - "tendances.variation_ca_1an", - "tendances.variation_ca_3ans", - "tendances.variation_rn_1an", - "tendances.variation_bfr_sur_ca_3ans", - "tresorerie.disponibilites", - "tresorerie.dettes_moins_1an", - "tresorerie.dettes_fiscales_sociales", - "tresorerie.dettes_total", - "signaux.rge_actif", - "signaux.egapro_note", - "signaux.egapro_annee", - "signaux.icpe_nb", - "signaux.icpe_seveso", - "signaux.marches_nb", - "signaux.marches_montant", - "signaux.marches_dernier", - "signaux.agrements" -]New value: +[ + "identite.siren", + "identite.personne_morale", + "identite.forme", + "identite.naf", + "identite.categorie_entreprise", + "identite.tranche_effectifs", + "identite.date_creation", + "identite.age", + "identite.etat", + "identite.ess", + "identite.societe_mission", + "siege.code_postal", + "siege.code_commune", + "siege.departement", + "siege.region", + "finances.date_cloture", + "finances.type_bilan", + "finances.fiabilite", + "finances.nb_exercices", + "finances.ca", + "finances.marge_brute", + "finances.ebe", + "finances.ebit", + "finances.resultat_net", + "finances.taux_endettement", + "finances.autonomie_financiere", + "finances.ratio_liquidite", + "finances.caf_sur_ca", + "finances.capacite_remboursement", + "finances.marge_ebe", + "finances.rcai_sur_ca", + "finances.couverture_interets", + "finances.bfr_sur_ca", + "tendances.variation_ca_1an", + "tendances.variation_ca_3ans", + "tendances.variation_rn_1an", + "tendances.variation_bfr_sur_ca_3ans", + "tendances.trajectoire", + "tresorerie.disponibilites", + "tresorerie.dettes_moins_1an", + "tresorerie.dettes_fiscales_sociales", + "tresorerie.dettes_total", + "signaux.rge_actif", + "signaux.egapro_note", + "signaux.egapro_annee", + "signaux.icpe_nb", + "signaux.icpe_seveso", + "signaux.marches_nb", + "signaux.marches_montant", + "signaux.marches_dernier", + "signaux.etablissements_ouverts_24_mois", + "signaux.etablissements_fermes_24_mois", + "signaux.marches_12_mois", + "signaux.marches_12_mois_precedents", + "signaux.agrements" +]
1 tool update
- Added
get_french_company_credit_limit
Publisher details
- Operator
- Sirenic · Publisher source
- Operator website
- https://api.sirenic.eu
- Vendor relationship
- First-party
- Documentation
- https://api.sirenic.eu/en/connectors
- Trust center
- Not available
- Restrictions
- Each tool call is paid per request: x402 (USDC or EURC on Base, no account) or a Sirenic API key with prepaid credits. A verified account gets a free monthly quota on eligible routes. Listing the tools is free.
Related MCP Connectors
European business verification for AI agents: registry, VAT, sanctions, IBAN. Pay-per-call x402.
Pay-per-call data APIs for AI agents: business, compliance, procurement, VAT and IBAN via x402.
Company data from official sources, plus a finder for the best paid x402 API for any task.
Verified business identity for AI agents: 11.3M entities, EU VAT (VIES), BORME, GLEIF. Free trial.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceFrench company data for AI agents: directors with probable business email, people search, counterparty checks (KYB) and hiring signals from official registries. Paid per call with x402 (USDC on Base or Solana), charged only when found.68 npmMIT

Sirenicofficial
AlicenseNot gradedqualityAmaintenanceCompany data from the official French and European registers for AI agents: company search, French company profiles, KYB files, sanctions screening on 6 official lists, default-risk score, supplier and e-invoicing checks, plus 19 other European registers. Pay per call by API key (150 free calls a month with an account) or x402 in USDC or EURC on Base. Signed responses, source of every block.MIT- FlicenseNot gradedqualityCmaintenanceEnables AI agents to search and retrieve detailed profiles of 25 million French companies from the official government registry, including directors, activity codes, and establishment data, without requiring an API key.-
- AlicenseAqualityCmaintenanceStructured business intelligence for AI agents. 11.3M verified entities, 40.3M BORME mercantile acts, EU VAT validation (VIES), GLEIF LEI and healthcare registries. 12 tools.61MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.