CorpoAPI MCP
A hosted Model Context Protocol server provided by CorpoAPI that allows AI agents to search official company registers, retrieve company profiles and officer details, and perform KYB verification across 84 jurisdictions using the same API key and billing as the REST API.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://mcp.corpoapi.com/mcpWhat its tools do
13 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Passed Official MCP Registry namespace is tied to corpoapi.com ·
- Passed Endpoint is on the registry namespace domain ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Search companies in natural language
- Retrieve company details and status
- Verify companies for KYB checks
- List company officers and directors
Source and maintenance
Protocol and capabilities
- Server
- corpoapi 4.1.4
- MCP protocol negotiated in check
- 2025-06-18
- Tools
- 13 advertised
- Resources
- 0 advertised
- Resource templates
- 0 advertised
- Prompts
- 0 advertised
{
"tools": {
"listChanged": true
},
"logging": {},
"prompts": {
"listChanged": true
},
"resources": {
"subscribe": false,
"listChanged": true
}
}Tools
13 advertised
get_usage — Get Usage
Usage and charges for the calling account
{
"type": "object",
"required": [],
"properties": {
"to": {
"type": "string",
"format": "date",
"description": "Default: today (UTC)."
},
"from": {
"type": "string",
"format": "date",
"description": "Default: first day of the current month (UTC)."
},
"group_by": {
"enum": [
"day",
"endpoint"
],
"type": "string",
"default": "day"
}
}
}{
"type": "object",
"required": [
"period",
"totals",
"rows"
],
"properties": {
"rows": {
"type": "array",
"items": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"requests": {
"type": "integer"
},
"charge_usd": {
"type": "string"
},
"premium_lookups": {
"type": "integer"
},
"verified_companies": {
"type": "integer"
}
}
}
},
"period": {
"type": "object",
"properties": {
"to": {
"type": "string",
"format": "date"
},
"from": {
"type": "string",
"format": "date"
}
}
},
"totals": {
"type": "object",
"properties": {
"requests": {
"type": "integer"
},
"free_used": {
"type": "integer"
},
"charge_usd": {
"type": "string"
},
"premium_lookups": {
"type": "integer"
},
"standard_billed": {
"type": "integer"
},
"verified_companies": {
"type": "integer"
}
}
}
},
"x-fastmcp-top-level-schema": "UsageResponse"
}search_companies — Search Companies
Search one or more registries by name or identifier. For number-like input scoped to at most five registries, an exact primary registry-number match returns only matching registry-number records. Otherwise the ranked name and alternate-identifier search runs. Results are ranked: an exact identifier match first, then an exact name, then a name prefix, then a partial name. Sole traders and other natural persons are returned only on an exact identifier or exact-name match. `jurisdiction` is required — pass one code (e.g. `se`) for an exact `total_estimate`, or several (`se,gb`) to search across them.
{
"type": "object",
"required": [
"q",
"jurisdiction"
],
"properties": {
"q": {
"type": "string",
"title": "Q",
"examples": [
"Volvo"
],
"minLength": 2,
"description": "A company name, or a registration number / identifier. At least two characters."
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 20,
"maximum": 100,
"minimum": 1,
"description": "Page size (1–100)."
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Cursor",
"description": "Opaque cursor from `pagination.next_cursor`."
},
"status": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Status",
"description": "Restrict to normalised statuses (`active`, `dissolved`, …). Repeat or comma-separate."
},
"legal_form": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Legal Form",
"description": "Restrict to register legal-form codes, e.g. `AB-ORGFO`."
},
"active_only": {
"type": "boolean",
"title": "Active Only",
"default": false,
"description": "Shortcut for `status=active`; excludes dissolved and struck-off companies."
},
"jurisdiction": {
"type": "array",
"items": {
"type": "string"
},
"title": "Jurisdiction",
"examples": [
"se"
],
"description": "One or more jurisdictions to search (ISO 3166-1 alpha-2, e.g. `se`, `gb`, `us-de`). Repeat or comma-separate. Required — every search is scoped to a jurisdiction or a small set of them."
}
}
}{
"type": "object",
"title": "SearchResponse",
"required": [
"data",
"pagination"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"title": "CompanySummary",
"required": [
"id",
"jurisdiction",
"legal_name",
"match"
],
"properties": {
"id": {
"type": "string",
"title": "Id",
"examples": [
"co_sea81b5ad3d15a050b79a96d8b"
],
"description": "Stable Corpo API company id. Use it with the company endpoint."
},
"match": {
"type": "object",
"title": "Match",
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"title": "Type",
"examples": [
"exact_name"
],
"description": "Why this result matched: `id` (an exact registration or identifier match), `exact_name` (the name matched exactly), `name_prefix`, or `name` (a partial name match)."
},
"identifier": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Identifier",
"examples": [
"5560295197"
],
"description": "The identifier that matched, when `type` is `id`."
}
}
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Status",
"examples": [
"active"
],
"description": "Normalised status (`active`, `dissolved`, `in_liquidation`, `in_insolvency`, …)."
},
"address": {
"type": "object",
"title": "Address",
"properties": {
"raw": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Raw",
"description": "The address exactly as the register publishes it, unsplit."
},
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "City",
"examples": [
"GÖTEBORG"
],
"description": "City or locality."
},
"line1": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Line1",
"examples": [
"ARSC, DC24000"
],
"description": "Street address."
},
"region": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Region",
"examples": [
"Västra Götaland"
],
"description": "Region, county or state."
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Country",
"examples": [
"SE"
],
"description": "ISO 3166-1 alpha-2 country code of the address."
},
"postcode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Postcode",
"examples": [
"40508"
],
"description": "Postal code, as the register publishes it."
}
}
},
"legal_name": {
"type": "string",
"title": "Legal Name",
"examples": [
"Volvo Business Services Aktiebolag"
],
"description": "The legal name as registered."
},
"display_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Display Name",
"examples": [
"Volvo Business Services AB"
],
"description": "A display name, when the register publishes one."
},
"jurisdiction": {
"type": "string",
"title": "Jurisdiction",
"examples": [
"se"
],
"description": "Jurisdiction the company is registered in (lowercase)."
},
"company_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Company Number",
"examples": [
"5560295197"
],
"description": "The primary registration number in that jurisdiction."
},
"legal_form_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Legal Form Code",
"examples": [
"AB-ORGFO"
],
"description": "Register legal-form code."
},
"legal_name_english": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Legal Name English",
"examples": [
"Volvo Business Services Corporation"
],
"description": "English or transliterated name, when the register publishes one."
},
"company_number_scheme": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Company Number Scheme",
"examples": [
"SE-ORGNR"
],
"description": "The scheme the registration number belongs to."
}
}
},
"title": "Data",
"description": "Matching companies, best match first."
},
"pagination": {
"type": "object",
"title": "Pagination",
"required": [
"limit",
"has_more",
"returned"
],
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"examples": [
20
],
"description": "Page size actually applied."
},
"has_more": {
"type": "boolean",
"title": "Has More",
"examples": [
true
],
"description": "True when more results exist beyond this page."
},
"returned": {
"type": "integer",
"title": "Returned",
"examples": [
20
],
"description": "Number of results in this page."
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Next Cursor",
"description": "Opaque cursor for the next page. Absent when there are no more results."
},
"total_estimate": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Total Estimate",
"examples": [
124
],
"description": "Exact match count when a jurisdiction is given; `null` for a cross-jurisdiction search."
}
}
},
"attribution": {
"type": "array",
"items": {
"type": "object",
"title": "Attribution",
"required": [
"dataset",
"revision"
],
"properties": {
"dataset": {
"type": "string",
"title": "Dataset",
"examples": [
"eu/sweden"
],
"description": "Dataset key the result came from."
},
"sources": {
"type": "array",
"items": {
"type": "string"
},
"title": "Sources",
"description": "Registry source ids inside the dataset."
},
"revision": {
"type": "string",
"title": "Revision",
"examples": [
"se-842f6243c2eea5fd"
],
"description": "Pinned dataset revision."
}
}
},
"title": "Attribution",
"description": "Dataset provenance for this page."
}
},
"x-fastmcp-top-level-schema": "SearchResponse"
}get_company — Get Company
Look up one company by jurisdiction and registration number. `company_number` is the register's own number (the company's `company_number`) or any identifier the register publishes (for example a VAT number). The jurisdiction is the lowercase code from a search result (`se`, `gb`, `us-de`). Results are read from the published Parquet dataset. Live registry lookup (`freshness`, `premium`, `premium_product`, `lookup_id`) is not enabled in this release, so those parameters currently have no effect.
{
"type": "object",
"required": [
"jurisdiction",
"company_number"
],
"properties": {
"include": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Include",
"description": "Blocks to include: `identifiers`, `activity`, `other_names`, `legal_form`, `links`, `lei`. Defaults to all."
},
"premium": {
"type": "string",
"title": "Premium",
"default": "deny",
"description": "Reserved for paid registry lookups. No paid registry product is enabled today, so this parameter has no effect."
},
"freshness": {
"type": "string",
"title": "Freshness",
"default": "auto",
"description": "`cached` serves the database copy. `auto` and `live` are reserved for live registry lookups, which are not enabled today, so all three values currently serve the cached copy."
},
"lookup_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Lookup Id",
"description": "Reserved for polling a queued live lookup. Live lookups are not enabled today."
},
"jurisdiction": {
"type": "string",
"title": "Jurisdiction",
"example": "se"
},
"company_number": {
"type": "string",
"title": "Company Number",
"example": "5560295197"
},
"premium_product": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Premium Product",
"description": "Reserved paid product selector. No paid registry product is available today."
}
}
}{
"type": "object",
"title": "CompanyProfile",
"required": [
"id",
"jurisdiction",
"legal_name"
],
"properties": {
"id": {
"type": "string",
"title": "Id",
"examples": [
"co_sea81b5ad3d15a050b79a96d8b"
]
},
"lei": {
"anyOf": [
{
"type": "object",
"title": "CompanyLei",
"required": [
"lei",
"method",
"confidence"
],
"properties": {
"lei": {
"type": "string",
"title": "Lei",
"examples": [
"HWUPKR0MPOU8FGXBT394"
]
},
"method": {
"type": "string",
"title": "Method",
"examples": [
"gleif_ra_code+registered_number"
],
"description": "How the LEI was resolved."
},
"evidence": {
"type": "object",
"title": "Evidence",
"description": "The keys that matched.",
"additionalProperties": true
},
"confidence": {
"type": "number",
"title": "Confidence",
"examples": [
1
]
},
"legal_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Legal Name",
"examples": [
"APPLE INC."
],
"description": "Legal name on the GLEIF record."
},
"jurisdiction": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Jurisdiction",
"examples": [
"us-ca"
],
"description": "GLEIF legal jurisdiction."
},
"refreshed_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Refreshed At"
},
"direct_parent": {
"type": "object",
"title": "ParentDeclaration",
"properties": {
"reported": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Reported",
"description": "True when a relationship record names this parent. `false` means the Reporting Exceptions file says why it is not reported; `null` means the register says nothing either way."
},
"exception_reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Exception Reason",
"examples": [
"NON_CONSOLIDATING"
],
"description": "GLEIF Reporting Exceptions reason, e.g. `NON_CONSOLIDATING`."
}
},
"description": "What the register says about one accounting-consolidation parent."
},
"entity_status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Entity Status",
"examples": [
"ACTIVE"
]
},
"ultimate_parent": {
"type": "object",
"title": "ParentDeclaration",
"properties": {
"reported": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Reported",
"description": "True when a relationship record names this parent. `false` means the Reporting Exceptions file says why it is not reported; `null` means the register says nothing either way."
},
"exception_reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Exception Reason",
"examples": [
"NON_CONSOLIDATING"
],
"description": "GLEIF Reporting Exceptions reason, e.g. `NON_CONSOLIDATING`."
}
},
"description": "What the register says about one accounting-consolidation parent."
},
"registration_status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Registration Status",
"examples": [
"ISSUED"
],
"description": "GLEIF registration status (`ISSUED`, `LAPSED`, …)."
},
"registration_authority_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Registration Authority Id",
"examples": [
"RA000598"
]
},
"registration_authority_entity_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Registration Authority Entity Id",
"examples": [
"806592"
],
"description": "The register's own number inside that authority."
}
},
"description": "The LEI resolved for this company from the GLEIF golden copy.\n\nAttached only when exactly one of our companies matches the GLEIF\nregistration authority + registered number. A missing LEI proves nothing."
},
{
"type": "null"
}
],
"description": "The LEI resolved from GLEIF, with the keys it was resolved on."
},
"links": {
"type": "array",
"items": {
"type": "object",
"title": "CompanyLink",
"required": [
"type",
"jurisdiction",
"method",
"confidence"
],
"properties": {
"type": {
"type": "string",
"title": "Type",
"examples": [
"foreign_registration_of"
],
"description": "`foreign_registration_of` (this registration is a foreign registration of the counterpart), `branch_of` (this company has that branch), `parent_of` (this company is owned by the counterpart) or `same_entity_as`."
},
"method": {
"type": "string",
"title": "Method",
"examples": [
"home_jurisdiction+exact_name"
],
"description": "The rule that produced the link."
},
"source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Source",
"examples": [
"company_attr"
],
"description": "The source id that carried the evidence."
},
"company": {
"anyOf": [
{
"type": "object",
"title": "CompanySummaryOut",
"required": [
"id",
"jurisdiction",
"legal_name"
],
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Status"
},
"address": {
"type": "object",
"title": "Address",
"properties": {
"raw": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Raw",
"description": "The address exactly as the register publishes it, unsplit."
},
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "City",
"examples": [
"GÖTEBORG"
],
"description": "City or locality."
},
"line1": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Line1",
"examples": [
"ARSC, DC24000"
],
"description": "Street address."
},
"region": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Region",
"examples": [
"Västra Götaland"
],
"description": "Region, county or state."
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Country",
"examples": [
"SE"
],
"description": "ISO 3166-1 alpha-2 country code of the address."
},
"postcode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Postcode",
"examples": [
"40508"
],
"description": "Postal code, as the register publishes it."
}
}
},
"legal_name": {
"type": "string",
"title": "Legal Name"
},
"matched_on": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Matched On",
"description": "`identifier`, `legal_name`, `previous_name` or `trading_name`."
},
"match_score": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Match Score",
"description": "Similarity of the match, when one was scored."
},
"jurisdiction": {
"type": "string",
"title": "Jurisdiction"
},
"company_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Company Number"
},
"registration_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Registration Date"
}
},
"description": "Canonical `CompanySummary` (candidates, officers' org company, VAT link)."
},
{
"type": "null"
}
],
"description": "The counterpart, when it is a company we serve. Absent means we hold no such row."
},
"evidence": {
"type": "object",
"title": "Evidence",
"description": "Matched keys, candidate count and source row ids.",
"additionalProperties": true
},
"confidence": {
"type": "number",
"title": "Confidence",
"examples": [
0.9
]
},
"legal_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Legal Name",
"examples": [
"FORD MOTOR COMPANY"
],
"description": "Counterpart name as the source recorded it."
},
"jurisdiction": {
"type": "string",
"title": "Jurisdiction",
"examples": [
"us-de"
],
"description": "Counterpart jurisdiction."
},
"refreshed_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Refreshed At"
},
"company_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Company Number",
"examples": [
"85730"
],
"description": "Counterpart registration number."
},
"company_number_scheme": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Company Number Scheme",
"examples": [
"us_de_entity"
]
}
},
"description": "One evidenced link from this company to another registration.\n\nRows are never merged: both company records stay, and the link carries the\nmethod, the matched keys and a confidence. `parent_of` follows Topograph's\nedge direction — this company is the owned entity, the counterpart is the\nowner."
},
"title": "Links",
"description": "Evidenced links to other registrations of this entity."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Status",
"examples": [
"active"
]
},
"address": {
"type": "object",
"title": "Address",
"properties": {
"raw": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Raw",
"description": "The address exactly as the register publishes it, unsplit."
},
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "City",
"examples": [
"GÖTEBORG"
],
"description": "City or locality."
},
"line1": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Line1",
"examples": [
"ARSC, DC24000"
],
"description": "Street address."
},
"region": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Region",
"examples": [
"Västra Götaland"
],
"description": "Region, county or state."
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Country",
"examples": [
"SE"
],
"description": "ISO 3166-1 alpha-2 country code of the address."
},
"postcode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Postcode",
"examples": [
"40508"
],
"description": "Postal code, as the register publishes it."
}
}
},
"activity": {
"type": "array",
"items": {
"type": "object",
"title": "Activity",
"required": [
"scheme",
"code"
],
"properties": {
"code": {
"type": "string",
"title": "Code",
"examples": [
"78100"
],
"description": "Activity code."
},
"scheme": {
"type": "string",
"title": "Scheme",
"examples": [
"SNI-2025"
],
"description": "Classification scheme, e.g. `SNI-2025`."
},
"is_primary": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Is Primary",
"description": "True for the primary activity."
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description",
"description": "Activity label, when the register publishes one."
}
}
},
"title": "Activity"
},
"freshness": {
"type": "object",
"title": "Freshness",
"properties": {
"stale": {
"type": "boolean",
"title": "Stale",
"default": false,
"description": "True when the record is past its `stale_after`."
},
"origin": {
"type": "string",
"title": "Origin",
"default": "database",
"examples": [
"database"
],
"description": "Always `database` — results are read from the published Parquet."
},
"retrieved_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Retrieved At",
"description": "When the source last refreshed this record."
},
"source_updated_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Source Updated At"
}
}
},
"legal_form": {
"anyOf": [
{
"type": "object",
"title": "LegalForm",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"title": "Id",
"examples": [
"se:AB-ORGFO"
],
"description": "Legal-form id, `<jurisdiction>:<code>`."
},
"code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Code",
"examples": [
"AB-ORGFO"
],
"description": "Register code."
},
"name_en": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Name En",
"examples": [
"Limited company"
],
"description": "English name."
},
"name_local": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Name Local",
"examples": [
"Aktiebolag"
],
"description": "Name in the register's language."
}
}
},
{
"type": "null"
}
]
},
"legal_name": {
"type": "string",
"title": "Legal Name",
"examples": [
"Volvo Business Services Aktiebolag"
]
},
"restricted": {
"type": "boolean",
"title": "Restricted",
"default": false,
"description": "True when the register restricts the record."
},
"attribution": {
"type": "array",
"items": {
"type": "object",
"title": "Attribution",
"required": [
"dataset",
"revision"
],
"properties": {
"dataset": {
"type": "string",
"title": "Dataset",
"examples": [
"eu/sweden"
],
"description": "Dataset key the result came from."
},
"sources": {
"type": "array",
"items": {
"type": "string"
},
"title": "Sources",
"description": "Registry source ids inside the dataset."
},
"revision": {
"type": "string",
"title": "Revision",
"examples": [
"se-842f6243c2eea5fd"
],
"description": "Pinned dataset revision."
}
}
},
"title": "Attribution"
},
"identifiers": {
"type": "array",
"items": {
"type": "object",
"title": "Identifier",
"required": [
"scheme",
"value",
"is_primary"
],
"properties": {
"value": {
"type": "string",
"title": "Value",
"examples": [
"SE556029519701"
],
"description": "The identifier value."
},
"scheme": {
"type": "string",
"title": "Scheme",
"examples": [
"EU-VAT"
],
"description": "Identifier scheme, e.g. `SE-ORGNR`, `EU-VAT`, `AU-ABN`."
},
"is_primary": {
"type": "boolean",
"title": "Is Primary",
"examples": [
false
],
"description": "True for the register's own primary number."
},
"valid_check": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Valid Check",
"examples": [
true
],
"description": "Result of the scheme's check-digit test, when one applies."
}
}
},
"title": "Identifiers"
},
"other_names": {
"type": "array",
"items": {
"type": "object",
"title": "OtherName",
"required": [
"name"
],
"properties": {
"kind": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Kind",
"examples": [
"trading"
],
"description": "`previous`, `trading` or `foreign`."
},
"name": {
"type": "string",
"title": "Name",
"examples": [
"Volvo Business Services Corporation"
],
"description": "A previous, trading or foreign-language name."
},
"end_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "End Date"
},
"start_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Start Date"
}
}
},
"title": "Other Names"
},
"data_sources": {
"type": "object",
"title": "Data Sources",
"description": "Per-field provenance for the fields we can trace.",
"additionalProperties": {
"type": "object",
"title": "DataSource",
"properties": {
"type": {
"type": "string",
"title": "Type",
"default": "cached_from_registry",
"examples": [
"cached_from_registry"
],
"description": "`live_from_registry`, `cached_from_registry`, `inferred`, `ai_analysis` or `private_source`."
},
"register": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Register",
"examples": [
"gb_ch_psc"
],
"description": "Machine-readable register or source id."
},
"retrieved_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Retrieved At",
"description": "When the source last refreshed this value."
}
},
"description": "Where one field or block came from (Topograph's source taxonomy)."
}
},
"display_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Display Name"
},
"jurisdiction": {
"type": "string",
"title": "Jurisdiction",
"examples": [
"se"
]
},
"registry_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Registry Url",
"description": "The register's own page for this company, when known."
},
"status_source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Status Source",
"description": "The register's own status label."
},
"company_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Company Number",
"examples": [
"5560295197"
]
},
"legal_form_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Legal Form Code",
"examples": [
"AB-ORGFO"
]
},
"dissolution_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Dissolution Date"
},
"is_natural_person": {
"type": "boolean",
"title": "Is Natural Person",
"default": false,
"description": "True for sole traders and other natural persons."
},
"registration_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Registration Date",
"examples": [
"1930-11-24"
]
},
"legal_name_english": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Legal Name English",
"examples": [
"Volvo Business Services Corporation"
],
"description": "English or transliterated name."
},
"company_number_scheme": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Company Number Scheme",
"examples": [
"SE-ORGNR"
]
},
"officers_availability": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Officers Availability",
"examples": [
"gated"
],
"description": "Whether officers are published: `published`, `gated`, `paid` or `not_published`."
}
},
"x-fastmcp-top-level-schema": "CompanyProfile"
}list_coverage — List Coverage
List every served registry, its pinned revision and how much data it holds.
{
"type": "object",
"required": [],
"properties": {}
}{
"type": "object",
"title": "CoverageResponse",
"required": [
"jurisdictions",
"datasets",
"companies",
"data"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"title": "CoverageEntry",
"required": [
"key",
"region",
"source",
"jurisdiction",
"revision",
"pinned"
],
"properties": {
"key": {
"type": "string",
"title": "Key",
"examples": [
"eu/sweden"
],
"description": "Dataset key."
},
"cached": {
"type": "boolean",
"title": "Cached",
"default": false,
"description": "A verified local mirror of the company table exists."
},
"method": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Method",
"description": "Ingestion method (`bulk`, `raw-normalize`, …)."
},
"pinned": {
"type": "boolean",
"title": "Pinned",
"description": "Whether the dataset's published revision matches the pinned revision."
},
"region": {
"type": "string",
"title": "Region",
"examples": [
"eu"
]
},
"source": {
"type": "string",
"title": "Source",
"examples": [
"sweden"
]
},
"tables": {
"type": "array",
"items": {
"type": "string"
},
"title": "Tables",
"description": "Published tables."
},
"indexed": {
"type": "boolean",
"title": "Indexed",
"default": false,
"description": "A verified local search index exists for this revision."
},
"sources": {
"type": "array",
"items": {
"type": "string"
},
"title": "Sources",
"description": "Registry source ids inside the dataset."
},
"age_days": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Age Days",
"description": "Days since the dataset was generated, or null when unknown."
},
"revision": {
"type": "string",
"title": "Revision",
"examples": [
"se-842f6243c2eea5fd"
]
},
"etl_version": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Etl Version"
},
"generated_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Generated At"
},
"jurisdiction": {
"type": "string",
"title": "Jurisdiction",
"examples": [
"SE"
]
},
"company_count": {
"type": "integer",
"title": "Company Count",
"default": 0,
"examples": [
2981339
],
"description": "Companies in the dataset."
}
}
},
"title": "Data"
},
"datasets": {
"type": "integer",
"title": "Datasets",
"examples": [
84
],
"description": "Number of datasets."
},
"companies": {
"type": "integer",
"title": "Companies",
"examples": [
123456789
],
"description": "Total companies across datasets."
},
"jurisdictions": {
"type": "integer",
"title": "Jurisdictions",
"examples": [
84
],
"description": "Number of jurisdictions covered."
}
},
"x-fastmcp-top-level-schema": "CoverageResponse"
}list_officers — List Officers
Officers of one company. Only registries that publish a structured officer table return data; most do not (several publish only PSC/control records, which are not directors), so the normal answer is `409 officers_not_available`.
{
"type": "object",
"required": [
"jurisdiction",
"company_number"
],
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"default": 20,
"maximum": 100,
"minimum": 1,
"description": "Page size (1–100)."
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Cursor",
"description": "Opaque cursor from `pagination.next_cursor`."
},
"current": {
"type": "boolean",
"title": "Current",
"default": true,
"description": "Return only current officers."
},
"jurisdiction": {
"type": "string",
"title": "Jurisdiction",
"example": "se"
},
"company_number": {
"type": "string",
"title": "Company Number",
"example": "5560295197"
}
}
}{
"type": "object",
"title": "OfficersResponse",
"required": [
"pagination"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"title": "Officer",
"required": [
"name",
"type",
"role"
],
"properties": {
"name": {
"type": "string",
"title": "Name"
},
"role": {
"type": "string",
"title": "Role",
"examples": [
"director"
],
"description": "Normalised role code."
},
"type": {
"type": "string",
"title": "Type",
"examples": [
"person"
],
"description": "`person` or `organisation`."
},
"company": {
"anyOf": [
{
"type": "object",
"title": "CompanySummaryOut",
"required": [
"id",
"jurisdiction",
"legal_name"
],
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Status"
},
"address": {
"type": "object",
"title": "Address",
"properties": {
"raw": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Raw",
"description": "The address exactly as the register publishes it, unsplit."
},
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "City",
"examples": [
"GÖTEBORG"
],
"description": "City or locality."
},
"line1": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Line1",
"examples": [
"ARSC, DC24000"
],
"description": "Street address."
},
"region": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Region",
"examples": [
"Västra Götaland"
],
"description": "Region, county or state."
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Country",
"examples": [
"SE"
],
"description": "ISO 3166-1 alpha-2 country code of the address."
},
"postcode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Postcode",
"examples": [
"40508"
],
"description": "Postal code, as the register publishes it."
}
}
},
"legal_name": {
"type": "string",
"title": "Legal Name"
},
"matched_on": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Matched On",
"description": "`identifier`, `legal_name`, `previous_name` or `trading_name`."
},
"match_score": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Match Score",
"description": "Similarity of the match, when one was scored."
},
"jurisdiction": {
"type": "string",
"title": "Jurisdiction"
},
"company_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Company Number"
},
"registration_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Registration Date"
}
},
"description": "Canonical `CompanySummary` (candidates, officers' org company, VAT link)."
},
{
"type": "null"
}
],
"description": "For organisation officers we hold."
},
"end_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "End Date"
},
"party_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Party Id",
"description": "Opaque handle for this appointment, scoped to the company. Do not join officers across companies by it: where the register issues no person key the value is derived from the company id and the name, so the same name at another company is a different `party_id`."
},
"birth_year": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Birth Year"
},
"is_current": {
"type": "boolean",
"title": "Is Current",
"default": false
},
"start_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Start Date"
},
"birth_month": {
"anyOf": [
{
"type": "integer",
"maximum": 12,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Birth Month"
},
"nationality": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Nationality"
},
"role_source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Role Source",
"description": "Raw registry role."
}
}
},
"title": "Data"
},
"pagination": {
"type": "object",
"title": "Pagination",
"required": [
"limit",
"has_more",
"returned"
],
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"examples": [
20
],
"description": "Page size actually applied."
},
"has_more": {
"type": "boolean",
"title": "Has More",
"examples": [
true
],
"description": "True when more results exist beyond this page."
},
"returned": {
"type": "integer",
"title": "Returned",
"examples": [
20
],
"description": "Number of results in this page."
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Next Cursor",
"description": "Opaque cursor for the next page. Absent when there are no more results."
},
"total_estimate": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Total Estimate",
"examples": [
124
],
"description": "Exact match count when a jurisdiction is given; `null` for a cross-jurisdiction search."
}
}
},
"attribution": {
"type": "array",
"items": {
"type": "object",
"title": "Attribution",
"required": [
"dataset",
"revision"
],
"properties": {
"dataset": {
"type": "string",
"title": "Dataset",
"examples": [
"eu/sweden"
],
"description": "Dataset key the result came from."
},
"sources": {
"type": "array",
"items": {
"type": "string"
},
"title": "Sources",
"description": "Registry source ids inside the dataset."
},
"revision": {
"type": "string",
"title": "Revision",
"examples": [
"se-842f6243c2eea5fd"
],
"description": "Pinned dataset revision."
}
}
},
"title": "Attribution"
}
},
"x-fastmcp-top-level-schema": "OfficersResponse"
}list_shareholders — List Shareholders
Shareholders and beneficial owners for one company. Returns direct holders/controllers typed as person or company, with the register's ownership band (never an invented exact percentage). A corporate holder is a traversable `company` only with a confirmed local key; otherwise it is returned as a `lead`. `datapoint_status` distinguishes `datapoint_not_applicable` (for example a sole trader) and `datapoint_not_supported` (this register publishes no control data) from an empty list.
{
"type": "object",
"required": [
"jurisdiction",
"company_number"
],
"properties": {
"jurisdiction": {
"type": "string",
"title": "Jurisdiction"
},
"company_number": {
"type": "string",
"title": "Company Number"
}
}
}{
"type": "object",
"title": "ShareholdersResponse",
"required": [
"datapoint_status"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"title": "Shareholder",
"required": [
"id",
"type",
"name",
"source"
],
"properties": {
"id": {
"type": "string",
"title": "Id",
"examples": [
"ctl_CA9A9E4965917C5B3F1A7A3624"
],
"description": "Control record id, unique inside the dataset."
},
"lead": {
"anyOf": [
{
"type": "object",
"title": "ShareholderLead",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"title": "Name"
},
"registration_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Registration Number",
"description": "A number read from the register, not confirmed against it."
}
},
"description": "An unconfirmed corporate holder: a lead, not a traversable node."
},
{
"type": "null"
}
],
"description": "Set for a corporate holder with no confirmed local key (an unconfirmed lead)."
},
"name": {
"type": "string",
"title": "Name",
"description": "The holder's name as the register publishes it."
},
"type": {
"type": "string",
"title": "Type",
"examples": [
"company"
],
"description": "`person`, `company` or `unknown`."
},
"person": {
"anyOf": [
{
"type": "object",
"title": "PersonRef",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"title": "Name"
},
"party_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Party Id",
"description": "Person key scoped to the company where the register issues none. Not a global person id."
}
}
},
{
"type": "null"
}
],
"description": "Set for a natural person holder we hold."
},
"source": {
"type": "object",
"title": "DataSource",
"properties": {
"type": {
"type": "string",
"title": "Type",
"default": "cached_from_registry",
"examples": [
"cached_from_registry"
],
"description": "`live_from_registry`, `cached_from_registry`, `inferred`, `ai_analysis` or `private_source`."
},
"register": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Register",
"examples": [
"gb_ch_psc"
],
"description": "Machine-readable register or source id."
},
"retrieved_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Retrieved At",
"description": "When the source last refreshed this value."
}
},
"description": "Where one field or block came from (Topograph's source taxonomy)."
},
"company": {
"anyOf": [
{
"type": "object",
"title": "CompanySummaryOut",
"required": [
"id",
"jurisdiction",
"legal_name"
],
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Status"
},
"address": {
"type": "object",
"title": "Address",
"properties": {
"raw": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Raw",
"description": "The address exactly as the register publishes it, unsplit."
},
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "City",
"examples": [
"GÖTEBORG"
],
"description": "City or locality."
},
"line1": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Line1",
"examples": [
"ARSC, DC24000"
],
"description": "Street address."
},
"region": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Region",
"examples": [
"Västra Götaland"
],
"description": "Region, county or state."
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Country",
"examples": [
"SE"
],
"description": "ISO 3166-1 alpha-2 country code of the address."
},
"postcode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Postcode",
"examples": [
"40508"
],
"description": "Postal code, as the register publishes it."
}
}
},
"legal_name": {
"type": "string",
"title": "Legal Name"
},
"matched_on": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Matched On",
"description": "`identifier`, `legal_name`, `previous_name` or `trading_name`."
},
"match_score": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Match Score",
"description": "Similarity of the match, when one was scored."
},
"jurisdiction": {
"type": "string",
"title": "Jurisdiction"
},
"company_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Company Number"
},
"registration_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Registration Date"
}
},
"description": "Canonical `CompanySummary` (candidates, officers' org company, VAT link)."
},
{
"type": "null"
}
],
"description": "Set only when the holder has a confirmed local company key (a traversable node)."
},
"end_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "End Date",
"description": "When the holding or control ceased."
},
"ownership": {
"anyOf": [
{
"type": "object",
"title": "OwnershipRange",
"properties": {
"band": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Band",
"examples": [
"75-100"
],
"description": "The stated band, e.g. `75-100`."
},
"lower_percentage": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Lower Percentage",
"examples": [
75
],
"description": "Lower bound of the band, when it is a range."
},
"upper_percentage": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Upper Percentage",
"examples": [
100
],
"description": "Upper bound of the band, when it is a range."
}
},
"description": "The ownership the register states, kept as a band or range.\n\n`reg.control` has no exact percentage column. Bands are returned verbatim and\nare never converted to a midpoint or a made-up exact share."
},
{
"type": "null"
}
],
"description": "The stated ownership band, when the register publishes one."
},
"is_current": {
"type": "boolean",
"title": "Is Current",
"default": false
},
"start_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Start Date",
"description": "When the holding or control was notified."
},
"identity_verified": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Identity Verified",
"description": "The register's own identity-verification flag, when published."
},
"natures_of_control": {
"type": "array",
"items": {
"type": "string"
},
"title": "Natures Of Control",
"description": "Raw natures of control from the register."
}
}
},
"title": "Data",
"description": "Direct holders/controllers. Empty is a valid answer."
},
"statements": {
"type": "array",
"items": {
"type": "object",
"title": "ControlStatement",
"required": [
"source"
],
"properties": {
"source": {
"type": "object",
"title": "DataSource",
"properties": {
"type": {
"type": "string",
"title": "Type",
"default": "cached_from_registry",
"examples": [
"cached_from_registry"
],
"description": "`live_from_registry`, `cached_from_registry`, `inferred`, `ai_analysis` or `private_source`."
},
"register": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Register",
"examples": [
"gb_ch_psc"
],
"description": "Machine-readable register or source id."
},
"retrieved_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Retrieved At",
"description": "When the source last refreshed this value."
}
},
"description": "Where one field or block came from (Topograph's source taxonomy)."
},
"statement": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Statement"
}
},
"description": "A register statement about significant control that names no holder."
},
"title": "Statements",
"description": "PSC/control statements that name no holder."
},
"attribution": {
"type": "array",
"items": {
"type": "object",
"title": "Attribution",
"required": [
"dataset",
"revision"
],
"properties": {
"dataset": {
"type": "string",
"title": "Dataset",
"examples": [
"eu/sweden"
],
"description": "Dataset key the result came from."
},
"sources": {
"type": "array",
"items": {
"type": "string"
},
"title": "Sources",
"description": "Registry source ids inside the dataset."
},
"revision": {
"type": "string",
"title": "Revision",
"examples": [
"se-842f6243c2eea5fd"
],
"description": "Pinned dataset revision."
}
}
},
"title": "Attribution"
},
"data_sources": {
"type": "object",
"title": "Data Sources",
"description": "Per-field provenance for this response.",
"additionalProperties": {
"type": "object",
"title": "DataSource",
"properties": {
"type": {
"type": "string",
"title": "Type",
"default": "cached_from_registry",
"examples": [
"cached_from_registry"
],
"description": "`live_from_registry`, `cached_from_registry`, `inferred`, `ai_analysis` or `private_source`."
},
"register": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Register",
"examples": [
"gb_ch_psc"
],
"description": "Machine-readable register or source id."
},
"retrieved_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Retrieved At",
"description": "When the source last refreshed this value."
}
},
"description": "Where one field or block came from (Topograph's source taxonomy)."
}
},
"declared_ubo": {
"type": "array",
"items": {
"type": "object",
"title": "UboDeclaration",
"required": [
"name",
"source"
],
"properties": {
"name": {
"type": "string",
"title": "Name"
},
"type": {
"type": "string",
"title": "Type",
"default": "person",
"examples": [
"person"
],
"description": "Declared UBOs are natural persons."
},
"nature": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Nature",
"description": "`direct`, `indirect`, or `null` when the register states control but not its nature. `null` is a fact, not a missing value."
},
"source": {
"type": "object",
"title": "DataSource",
"properties": {
"type": {
"type": "string",
"title": "Type",
"default": "cached_from_registry",
"examples": [
"cached_from_registry"
],
"description": "`live_from_registry`, `cached_from_registry`, `inferred`, `ai_analysis` or `private_source`."
},
"register": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Register",
"examples": [
"gb_ch_psc"
],
"description": "Machine-readable register or source id."
},
"retrieved_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Retrieved At",
"description": "When the source last refreshed this value."
}
},
"description": "Where one field or block came from (Topograph's source taxonomy)."
},
"end_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "End Date"
},
"party_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Party Id"
},
"ownership": {
"anyOf": [
{
"type": "object",
"title": "OwnershipRange",
"properties": {
"band": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Band",
"examples": [
"75-100"
],
"description": "The stated band, e.g. `75-100`."
},
"lower_percentage": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Lower Percentage",
"examples": [
75
],
"description": "Lower bound of the band, when it is a range."
},
"upper_percentage": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Upper Percentage",
"examples": [
100
],
"description": "Upper bound of the band, when it is a range."
}
},
"description": "The ownership the register states, kept as a band or range.\n\n`reg.control` has no exact percentage column. Bands are returned verbatim and\nare never converted to a midpoint or a made-up exact share."
},
{
"type": "null"
}
]
},
"is_current": {
"type": "boolean",
"title": "Is Current",
"default": false
},
"start_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Start Date"
},
"is_fallback": {
"type": "boolean",
"title": "Is Fallback",
"default": false,
"description": "True for deemed/fallback UBOs, where the register says so."
},
"control_types": {
"type": "array",
"items": {
"type": "string"
},
"title": "Control Types",
"description": "Raw natures of control."
}
},
"description": "The register's own beneficial-owner declaration, never a calculated UBO."
},
"title": "Declared Ubo",
"description": "The register's declared UBOs."
},
"calculated_ubo": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"title": "CalculatedUbo",
"required": [
"node_id",
"person",
"total_ownership",
"meets_threshold",
"is_ubo"
],
"properties": {
"note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Note",
"description": "Set when the chain states no percentage."
},
"is_ubo": {
"type": "boolean",
"title": "Is Ubo",
"description": "True when `meets_threshold` is `yes`."
},
"person": {
"type": "object",
"title": "PersonRef",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"title": "Name"
},
"party_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Party Id",
"description": "Person key scoped to the company where the register issues none. Not a global person id."
}
}
},
"methods": {
"type": "array",
"items": {
"type": "string"
},
"title": "Methods",
"description": "`accumulation` and/or `domination`."
},
"node_id": {
"type": "string",
"title": "Node Id"
},
"path_count": {
"type": "integer",
"title": "Path Count",
"default": 1
},
"meets_threshold": {
"type": "string",
"title": "Meets Threshold",
"examples": [
"possibly"
],
"description": "`yes`, `no` or `possibly`, from the interval and the domination chain."
},
"total_ownership": {
"type": "object",
"title": "OwnershipInterval",
"properties": {
"lower_percentage": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Lower Percentage"
},
"upper_percentage": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Upper Percentage"
}
},
"description": "An interval computed from bands, never a made-up midpoint.\n\n`lower_percentage` is the product of the lower bounds along a path, summed\nacross paths (capped at 100); `upper_percentage` is the same for the upper\nbounds. Both are `null` when a hop stated no percentage."
}
},
"description": "A natural person reached by the graph, with the 25% / 50% tests applied.\n\nCalculated UBOs are never merged into `declared_ubo`."
}
},
{
"type": "null"
}
],
"title": "Calculated Ubo",
"description": "Calculated UBOs from the ownership graph, kept separate from `declared_ubo`. `null` when the ownership graph is not available (no control data)."
},
"datapoint_status": {
"type": "string",
"title": "Datapoint Status",
"examples": [
"ok"
],
"description": "`ok`, `datapoint_not_applicable` (e.g. a sole trader) or `datapoint_not_supported` (this register publishes none)."
}
},
"x-fastmcp-top-level-schema": "ShareholdersResponse"
}list_documents — List Documents
Document catalogue for one company, newest first. Lists filings and financial-statement documents that the published dataset holds. No document bodies are downloaded and no signed URLs are minted. `datapoint_status` is `datapoint_not_supported` when the register publishes no document table.
{
"type": "object",
"required": [
"jurisdiction",
"company_number"
],
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"default": 20,
"maximum": 100,
"minimum": 1,
"description": "Page size (1–100)."
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Cursor",
"description": "Opaque cursor from `pagination.next_cursor`."
},
"jurisdiction": {
"type": "string",
"title": "Jurisdiction"
},
"company_number": {
"type": "string",
"title": "Company Number"
}
}
}{
"type": "object",
"title": "DocumentsResponse",
"required": [
"datapoint_status",
"pagination"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"title": "Document",
"required": [
"id",
"category",
"source"
],
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Url",
"description": "A source link when the register publishes one. No downloads are served."
},
"date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Date",
"description": "The document's own date (filing date, or made-up date)."
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Name"
},
"period": {
"anyOf": [
{
"type": "object",
"title": "DocumentPeriod",
"properties": {
"end": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "End"
},
"start": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Start"
}
}
},
{
"type": "null"
}
]
},
"source": {
"type": "object",
"title": "DataSource",
"properties": {
"type": {
"type": "string",
"title": "Type",
"default": "cached_from_registry",
"examples": [
"cached_from_registry"
],
"description": "`live_from_registry`, `cached_from_registry`, `inferred`, `ai_analysis` or `private_source`."
},
"register": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Register",
"examples": [
"gb_ch_psc"
],
"description": "Machine-readable register or source id."
},
"retrieved_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Retrieved At",
"description": "When the source last refreshed this value."
}
},
"description": "Where one field or block came from (Topograph's source taxonomy)."
},
"category": {
"type": "string",
"title": "Category",
"examples": [
"financialStatements"
],
"description": "Topograph category key, e.g. `financialStatements`."
},
"sub_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Sub Type",
"examples": [
"iXBRL"
],
"description": "Stable document classifier from the register."
},
"made_up_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Made Up Date"
}
}
},
"title": "Data"
},
"pagination": {
"type": "object",
"title": "Pagination",
"required": [
"limit",
"has_more",
"returned"
],
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"examples": [
20
],
"description": "Page size actually applied."
},
"has_more": {
"type": "boolean",
"title": "Has More",
"examples": [
true
],
"description": "True when more results exist beyond this page."
},
"returned": {
"type": "integer",
"title": "Returned",
"examples": [
20
],
"description": "Number of results in this page."
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Next Cursor",
"description": "Opaque cursor for the next page. Absent when there are no more results."
},
"total_estimate": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Total Estimate",
"examples": [
124
],
"description": "Exact match count when a jurisdiction is given; `null` for a cross-jurisdiction search."
}
}
},
"attribution": {
"type": "array",
"items": {
"type": "object",
"title": "Attribution",
"required": [
"dataset",
"revision"
],
"properties": {
"dataset": {
"type": "string",
"title": "Dataset",
"examples": [
"eu/sweden"
],
"description": "Dataset key the result came from."
},
"sources": {
"type": "array",
"items": {
"type": "string"
},
"title": "Sources",
"description": "Registry source ids inside the dataset."
},
"revision": {
"type": "string",
"title": "Revision",
"examples": [
"se-842f6243c2eea5fd"
],
"description": "Pinned dataset revision."
}
}
},
"title": "Attribution"
},
"data_sources": {
"type": "object",
"title": "Data Sources",
"additionalProperties": {
"type": "object",
"title": "DataSource",
"properties": {
"type": {
"type": "string",
"title": "Type",
"default": "cached_from_registry",
"examples": [
"cached_from_registry"
],
"description": "`live_from_registry`, `cached_from_registry`, `inferred`, `ai_analysis` or `private_source`."
},
"register": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Register",
"examples": [
"gb_ch_psc"
],
"description": "Machine-readable register or source id."
},
"retrieved_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Retrieved At",
"description": "When the source last refreshed this value."
}
},
"description": "Where one field or block came from (Topograph's source taxonomy)."
}
},
"datapoint_status": {
"type": "string",
"title": "Datapoint Status",
"description": "`ok`, `datapoint_not_applicable` or `datapoint_not_supported`."
}
},
"x-fastmcp-top-level-schema": "DocumentsResponse"
}list_financials — List Financials
Document-first financial statements for one company. A statement is always returned with its `document_ref`; facts are attached to the statement that contains them. Missing amounts are `null`, never zero. `datapoint_status` is `datapoint_not_supported` when the register publishes no financial statements.
{
"type": "object",
"required": [
"jurisdiction",
"company_number"
],
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"default": 10,
"maximum": 50,
"minimum": 1,
"description": "Statements per page (1–50)."
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Cursor",
"description": "Opaque cursor from `pagination.next_cursor`."
},
"jurisdiction": {
"type": "string",
"title": "Jurisdiction"
},
"company_number": {
"type": "string",
"title": "Company Number"
}
}
}{
"type": "object",
"title": "FinancialsResponse",
"required": [
"datapoint_status",
"pagination"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"title": "FinancialStatement",
"required": [
"id",
"document_ref",
"source"
],
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"facts": {
"type": "array",
"items": {
"type": "object",
"title": "FinancialFact",
"properties": {
"unit": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Unit"
},
"is_ai": {
"type": "boolean",
"title": "Is Ai",
"default": false
},
"amount": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Amount",
"description": "Current-period amount. Missing values are null, never zero."
},
"column": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Column",
"description": "Source column code, when the table publishes one."
},
"section": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Section"
},
"line_item": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Line Item"
},
"confidence": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Confidence"
},
"local_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Local Name",
"description": "The exact wording in the document."
},
"previous_amount": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Previous Amount"
}
}
},
"title": "Facts"
},
"is_ai": {
"type": "boolean",
"title": "Is Ai",
"default": false,
"description": "True when any fact was AI-extracted rather than parsed."
},
"period": {
"anyOf": [
{
"type": "object",
"title": "DocumentPeriod",
"properties": {
"end": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "End"
},
"start": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Start"
}
}
},
{
"type": "null"
}
]
},
"source": {
"type": "object",
"title": "DataSource",
"properties": {
"type": {
"type": "string",
"title": "Type",
"default": "cached_from_registry",
"examples": [
"cached_from_registry"
],
"description": "`live_from_registry`, `cached_from_registry`, `inferred`, `ai_analysis` or `private_source`."
},
"register": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Register",
"examples": [
"gb_ch_psc"
],
"description": "Machine-readable register or source id."
},
"retrieved_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Retrieved At",
"description": "When the source last refreshed this value."
}
},
"description": "Where one field or block came from (Topograph's source taxonomy)."
},
"currency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Currency"
},
"filed_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Filed Date"
},
"document_ref": {
"type": "string",
"title": "Document Ref",
"description": "The document this statement belongs to. A statement without one is not served."
},
"approval_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Approval Date"
},
"statement_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Statement Type"
},
"accounting_standard": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Accounting Standard"
}
}
},
"title": "Data",
"description": "Statements newest first."
},
"pagination": {
"type": "object",
"title": "Pagination",
"required": [
"limit",
"has_more",
"returned"
],
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"examples": [
20
],
"description": "Page size actually applied."
},
"has_more": {
"type": "boolean",
"title": "Has More",
"examples": [
true
],
"description": "True when more results exist beyond this page."
},
"returned": {
"type": "integer",
"title": "Returned",
"examples": [
20
],
"description": "Number of results in this page."
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Next Cursor",
"description": "Opaque cursor for the next page. Absent when there are no more results."
},
"total_estimate": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Total Estimate",
"examples": [
124
],
"description": "Exact match count when a jurisdiction is given; `null` for a cross-jurisdiction search."
}
}
},
"attribution": {
"type": "array",
"items": {
"type": "object",
"title": "Attribution",
"required": [
"dataset",
"revision"
],
"properties": {
"dataset": {
"type": "string",
"title": "Dataset",
"examples": [
"eu/sweden"
],
"description": "Dataset key the result came from."
},
"sources": {
"type": "array",
"items": {
"type": "string"
},
"title": "Sources",
"description": "Registry source ids inside the dataset."
},
"revision": {
"type": "string",
"title": "Revision",
"examples": [
"se-842f6243c2eea5fd"
],
"description": "Pinned dataset revision."
}
}
},
"title": "Attribution"
},
"data_sources": {
"type": "object",
"title": "Data Sources",
"additionalProperties": {
"type": "object",
"title": "DataSource",
"properties": {
"type": {
"type": "string",
"title": "Type",
"default": "cached_from_registry",
"examples": [
"cached_from_registry"
],
"description": "`live_from_registry`, `cached_from_registry`, `inferred`, `ai_analysis` or `private_source`."
},
"register": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Register",
"examples": [
"gb_ch_psc"
],
"description": "Machine-readable register or source id."
},
"retrieved_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Retrieved At",
"description": "When the source last refreshed this value."
}
},
"description": "Where one field or block came from (Topograph's source taxonomy)."
}
},
"datapoint_status": {
"type": "string",
"title": "Datapoint Status",
"description": "`ok`, `datapoint_not_applicable` or `datapoint_not_supported`."
}
},
"x-fastmcp-top-level-schema": "FinancialsResponse"
}get_ownership — Get Ownership
Breadth-first traversal of confirmed corporate shareholder edges. Only a corporate holder with a confirmed local company key is traversed. Unconfirmed leads and bare names are leaves. Every percentage is returned as the register's band, never an invented exact share. Natural persons reaching the queried company through the graph are reported as `calculated_ubo` with `meets_threshold` = `yes` / `no` / `possibly`; they are never merged into the register's declared UBOs. `stopped_reason` and `continuation` say where and why the walk stopped (`max_depth`, `max_nodes`, `unconfirmed_owner`, `cycle`, `not_supported_jurisdiction`, `no_data`).
{
"type": "object",
"required": [
"jurisdiction",
"company_number"
],
"properties": {
"max_depth": {
"type": "integer",
"title": "Max Depth",
"default": 5,
"maximum": 10,
"minimum": 1,
"description": "Maximum hops upstream (1–10)."
},
"max_nodes": {
"type": "integer",
"title": "Max Nodes",
"default": 100,
"maximum": 500,
"minimum": 1,
"description": "Maximum distinct companies expanded (1–500)."
},
"jurisdiction": {
"type": "string",
"title": "Jurisdiction"
},
"company_number": {
"type": "string",
"title": "Company Number"
}
}
}{
"type": "object",
"title": "OwnershipResponse",
"required": [
"datapoint_status",
"stopped_reason",
"continuation"
],
"properties": {
"root": {
"anyOf": [
{
"type": "object",
"title": "CompanySummaryOut",
"required": [
"id",
"jurisdiction",
"legal_name"
],
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Status"
},
"address": {
"type": "object",
"title": "Address",
"properties": {
"raw": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Raw",
"description": "The address exactly as the register publishes it, unsplit."
},
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "City",
"examples": [
"GÖTEBORG"
],
"description": "City or locality."
},
"line1": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Line1",
"examples": [
"ARSC, DC24000"
],
"description": "Street address."
},
"region": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Region",
"examples": [
"Västra Götaland"
],
"description": "Region, county or state."
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Country",
"examples": [
"SE"
],
"description": "ISO 3166-1 alpha-2 country code of the address."
},
"postcode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Postcode",
"examples": [
"40508"
],
"description": "Postal code, as the register publishes it."
}
}
},
"legal_name": {
"type": "string",
"title": "Legal Name"
},
"matched_on": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Matched On",
"description": "`identifier`, `legal_name`, `previous_name` or `trading_name`."
},
"match_score": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Match Score",
"description": "Similarity of the match, when one was scored."
},
"jurisdiction": {
"type": "string",
"title": "Jurisdiction"
},
"company_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Company Number"
},
"registration_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Registration Date"
}
},
"description": "Canonical `CompanySummary` (candidates, officers' org company, VAT link)."
},
{
"type": "null"
}
],
"description": "The queried company."
},
"edges": {
"type": "array",
"items": {
"type": "object",
"title": "OwnershipEdge",
"required": [
"from_id",
"to_id",
"source"
],
"properties": {
"to_id": {
"type": "string",
"title": "To Id"
},
"source": {
"type": "object",
"title": "DataSource",
"properties": {
"type": {
"type": "string",
"title": "Type",
"default": "cached_from_registry",
"examples": [
"cached_from_registry"
],
"description": "`live_from_registry`, `cached_from_registry`, `inferred`, `ai_analysis` or `private_source`."
},
"register": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Register",
"examples": [
"gb_ch_psc"
],
"description": "Machine-readable register or source id."
},
"retrieved_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Retrieved At",
"description": "When the source last refreshed this value."
}
},
"description": "Where one field or block came from (Topograph's source taxonomy)."
},
"from_id": {
"type": "string",
"title": "From Id"
},
"end_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "End Date"
},
"confirmed": {
"type": "boolean",
"title": "Confirmed",
"default": true,
"description": "True only when the owner has a confirmed local company key (traversable)."
},
"ownership": {
"anyOf": [
{
"type": "object",
"title": "OwnershipRange",
"properties": {
"band": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Band",
"examples": [
"75-100"
],
"description": "The stated band, e.g. `75-100`."
},
"lower_percentage": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Lower Percentage",
"examples": [
75
],
"description": "Lower bound of the band, when it is a range."
},
"upper_percentage": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Upper Percentage",
"examples": [
100
],
"description": "Upper bound of the band, when it is a range."
}
},
"description": "The ownership the register states, kept as a band or range.\n\n`reg.control` has no exact percentage column. Bands are returned verbatim and\nare never converted to a midpoint or a made-up exact share."
},
{
"type": "null"
}
],
"description": "The stated band for this hop."
},
"is_current": {
"type": "boolean",
"title": "Is Current",
"default": true
},
"start_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Start Date"
}
},
"description": "An ownership hop. `from_id` is the owned company, `to_id` the owner."
},
"title": "Edges"
},
"nodes": {
"type": "array",
"items": {
"type": "object",
"title": "GraphNode",
"required": [
"node_id",
"type",
"name",
"depth"
],
"properties": {
"name": {
"type": "string",
"title": "Name"
},
"type": {
"type": "string",
"title": "Type",
"examples": [
"company"
],
"description": "`company` or `person`."
},
"depth": {
"type": "integer",
"title": "Depth",
"examples": [
1
],
"description": "Hops from the queried company (0 is the company itself)."
},
"detail": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Detail",
"examples": [
"NON_CONSOLIDATING"
],
"description": "The source's own reason for stopping, e.g. the GLEIF Reporting Exceptions code (`NON_CONSOLIDATING`, `NO_KNOWN_PERSON`)."
},
"person": {
"anyOf": [
{
"type": "object",
"title": "PersonRef",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"title": "Name"
},
"party_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Party Id",
"description": "Person key scoped to the company where the register issues none. Not a global person id."
}
}
},
{
"type": "null"
}
],
"description": "Set for a natural person."
},
"status": {
"type": "string",
"title": "Status",
"default": "found",
"examples": [
"found"
],
"description": "`found`, `unconfirmed` (a holder with no confirmed local key), `not_supported` (the dataset publishes no control data) or `truncated`."
},
"company": {
"anyOf": [
{
"type": "object",
"title": "CompanySummaryOut",
"required": [
"id",
"jurisdiction",
"legal_name"
],
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Status"
},
"address": {
"type": "object",
"title": "Address",
"properties": {
"raw": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Raw",
"description": "The address exactly as the register publishes it, unsplit."
},
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "City",
"examples": [
"GÖTEBORG"
],
"description": "City or locality."
},
"line1": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Line1",
"examples": [
"ARSC, DC24000"
],
"description": "Street address."
},
"region": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Region",
"examples": [
"Västra Götaland"
],
"description": "Region, county or state."
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Country",
"examples": [
"SE"
],
"description": "ISO 3166-1 alpha-2 country code of the address."
},
"postcode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Postcode",
"examples": [
"40508"
],
"description": "Postal code, as the register publishes it."
}
}
},
"legal_name": {
"type": "string",
"title": "Legal Name"
},
"matched_on": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Matched On",
"description": "`identifier`, `legal_name`, `previous_name` or `trading_name`."
},
"match_score": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Match Score",
"description": "Similarity of the match, when one was scored."
},
"jurisdiction": {
"type": "string",
"title": "Jurisdiction"
},
"company_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Company Number"
},
"registration_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Registration Date"
}
},
"description": "Canonical `CompanySummary` (candidates, officers' org company, VAT link)."
},
{
"type": "null"
}
],
"description": "Set for a company node we hold."
},
"node_id": {
"type": "string",
"title": "Node Id",
"examples": [
"gb:02070326"
],
"description": "`<jurisdiction>:<number>` for a company, `person:…` for a person."
},
"path_count": {
"type": "integer",
"title": "Path Count",
"default": 1,
"description": "Paths from the queried company to this node."
},
"stopped_reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Stopped Reason",
"description": "Why traversal stopped here: `max_depth`, `max_nodes`, `unconfirmed_owner`, `cycle`, `not_supported_jurisdiction`, `not_reported` (GLEIF reports no parent; see `detail`) or `no_data`. `null` when it did not stop."
},
"total_ownership": {
"anyOf": [
{
"type": "object",
"title": "OwnershipInterval",
"properties": {
"lower_percentage": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Lower Percentage"
},
"upper_percentage": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Upper Percentage"
}
},
"description": "An interval computed from bands, never a made-up midpoint.\n\n`lower_percentage` is the product of the lower bounds along a path, summed\nacross paths (capped at 100); `upper_percentage` is the same for the upper\nbounds. Both are `null` when a hop stated no percentage."
},
{
"type": "null"
}
],
"description": "Cumulative ownership of the queried company via every discovered path."
}
},
"description": "One node of the upstream ownership graph."
},
"title": "Nodes"
},
"attribution": {
"type": "array",
"items": {
"type": "object",
"title": "Attribution",
"required": [
"dataset",
"revision"
],
"properties": {
"dataset": {
"type": "string",
"title": "Dataset",
"examples": [
"eu/sweden"
],
"description": "Dataset key the result came from."
},
"sources": {
"type": "array",
"items": {
"type": "string"
},
"title": "Sources",
"description": "Registry source ids inside the dataset."
},
"revision": {
"type": "string",
"title": "Revision",
"examples": [
"se-842f6243c2eea5fd"
],
"description": "Pinned dataset revision."
}
}
},
"title": "Attribution"
},
"continuation": {
"type": "object",
"title": "OwnershipContinuation",
"required": [
"truncated",
"max_depth",
"max_nodes"
],
"properties": {
"hint": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Hint",
"description": "How to continue the traversal."
},
"max_depth": {
"type": "integer",
"title": "Max Depth"
},
"max_nodes": {
"type": "integer",
"title": "Max Nodes"
},
"truncated": {
"type": "boolean",
"title": "Truncated",
"description": "True when `max_depth` or `max_nodes` stopped traversal."
},
"frontier_node_ids": {
"type": "array",
"items": {
"type": "string"
},
"title": "Frontier Node Ids",
"description": "Nodes to continue from."
}
}
},
"data_sources": {
"type": "object",
"title": "Data Sources",
"additionalProperties": {
"type": "object",
"title": "DataSource",
"properties": {
"type": {
"type": "string",
"title": "Type",
"default": "cached_from_registry",
"examples": [
"cached_from_registry"
],
"description": "`live_from_registry`, `cached_from_registry`, `inferred`, `ai_analysis` or `private_source`."
},
"register": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Register",
"examples": [
"gb_ch_psc"
],
"description": "Machine-readable register or source id."
},
"retrieved_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Retrieved At",
"description": "When the source last refreshed this value."
}
},
"description": "Where one field or block came from (Topograph's source taxonomy)."
}
},
"calculated_ubo": {
"type": "array",
"items": {
"type": "object",
"title": "CalculatedUbo",
"required": [
"node_id",
"person",
"total_ownership",
"meets_threshold",
"is_ubo"
],
"properties": {
"note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Note",
"description": "Set when the chain states no percentage."
},
"is_ubo": {
"type": "boolean",
"title": "Is Ubo",
"description": "True when `meets_threshold` is `yes`."
},
"person": {
"type": "object",
"title": "PersonRef",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"title": "Name"
},
"party_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Party Id",
"description": "Person key scoped to the company where the register issues none. Not a global person id."
}
}
},
"methods": {
"type": "array",
"items": {
"type": "string"
},
"title": "Methods",
"description": "`accumulation` and/or `domination`."
},
"node_id": {
"type": "string",
"title": "Node Id"
},
"path_count": {
"type": "integer",
"title": "Path Count",
"default": 1
},
"meets_threshold": {
"type": "string",
"title": "Meets Threshold",
"examples": [
"possibly"
],
"description": "`yes`, `no` or `possibly`, from the interval and the domination chain."
},
"total_ownership": {
"type": "object",
"title": "OwnershipInterval",
"properties": {
"lower_percentage": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Lower Percentage"
},
"upper_percentage": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Upper Percentage"
}
},
"description": "An interval computed from bands, never a made-up midpoint.\n\n`lower_percentage` is the product of the lower bounds along a path, summed\nacross paths (capped at 100); `upper_percentage` is the same for the upper\nbounds. Both are `null` when a hop stated no percentage."
}
},
"description": "A natural person reached by the graph, with the 25% / 50% tests applied.\n\nCalculated UBOs are never merged into `declared_ubo`."
},
"title": "Calculated Ubo",
"description": "Calculated UBOs. Never replaces the register's declared UBOs."
},
"stopped_reason": {
"type": "string",
"title": "Stopped Reason",
"examples": [
"completed"
],
"description": "`completed`, `max_depth_reached` or `max_nodes_reached`."
},
"datapoint_status": {
"type": "string",
"title": "Datapoint Status",
"examples": [
"ok"
],
"description": "`ok`, `datapoint_not_applicable` (e.g. a natural person) or `datapoint_not_supported`."
}
},
"x-fastmcp-top-level-schema": "OwnershipResponse"
}list_company_links — List Company Links
Links from one company to another registration. Each link names its `type`, the counterpart's jurisdiction and number, the `method` that produced it, the keys that matched and a `confidence`. The counterpart is resolved to a `company` block when we serve that row. A `parent_of` link points from the owned company to the owner, so a caller walks upstream by following links, never by trusting a name match.
{
"type": "object",
"required": [
"jurisdiction",
"company_number"
],
"properties": {
"jurisdiction": {
"type": "string",
"title": "Jurisdiction"
},
"company_number": {
"type": "string",
"title": "Company Number"
}
}
}{
"type": "object",
"title": "LinksResponse",
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"title": "CompanyLink",
"required": [
"type",
"jurisdiction",
"method",
"confidence"
],
"properties": {
"type": {
"type": "string",
"title": "Type",
"examples": [
"foreign_registration_of"
],
"description": "`foreign_registration_of` (this registration is a foreign registration of the counterpart), `branch_of` (this company has that branch), `parent_of` (this company is owned by the counterpart) or `same_entity_as`."
},
"method": {
"type": "string",
"title": "Method",
"examples": [
"home_jurisdiction+exact_name"
],
"description": "The rule that produced the link."
},
"source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Source",
"examples": [
"company_attr"
],
"description": "The source id that carried the evidence."
},
"company": {
"anyOf": [
{
"type": "object",
"title": "CompanySummaryOut",
"required": [
"id",
"jurisdiction",
"legal_name"
],
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Status"
},
"address": {
"type": "object",
"title": "Address",
"properties": {
"raw": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Raw",
"description": "The address exactly as the register publishes it, unsplit."
},
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "City",
"examples": [
"GÖTEBORG"
],
"description": "City or locality."
},
"line1": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Line1",
"examples": [
"ARSC, DC24000"
],
"description": "Street address."
},
"region": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Region",
"examples": [
"Västra Götaland"
],
"description": "Region, county or state."
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Country",
"examples": [
"SE"
],
"description": "ISO 3166-1 alpha-2 country code of the address."
},
"postcode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Postcode",
"examples": [
"40508"
],
"description": "Postal code, as the register publishes it."
}
}
},
"legal_name": {
"type": "string",
"title": "Legal Name"
},
"matched_on": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Matched On",
"description": "`identifier`, `legal_name`, `previous_name` or `trading_name`."
},
"match_score": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Match Score",
"description": "Similarity of the match, when one was scored."
},
"jurisdiction": {
"type": "string",
"title": "Jurisdiction"
},
"company_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Company Number"
},
"registration_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Registration Date"
}
},
"description": "Canonical `CompanySummary` (candidates, officers' org company, VAT link)."
},
{
"type": "null"
}
],
"description": "The counterpart, when it is a company we serve. Absent means we hold no such row."
},
"evidence": {
"type": "object",
"title": "Evidence",
"description": "Matched keys, candidate count and source row ids.",
"additionalProperties": true
},
"confidence": {
"type": "number",
"title": "Confidence",
"examples": [
0.9
]
},
"legal_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Legal Name",
"examples": [
"FORD MOTOR COMPANY"
],
"description": "Counterpart name as the source recorded it."
},
"jurisdiction": {
"type": "string",
"title": "Jurisdiction",
"examples": [
"us-de"
],
"description": "Counterpart jurisdiction."
},
"refreshed_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Refreshed At"
},
"company_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Company Number",
"examples": [
"85730"
],
"description": "Counterpart registration number."
},
"company_number_scheme": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Company Number Scheme",
"examples": [
"us_de_entity"
]
}
},
"description": "One evidenced link from this company to another registration.\n\nRows are never merged: both company records stay, and the link carries the\nmethod, the matched keys and a confidence. `parent_of` follows Topograph's\nedge direction — this company is the owned entity, the counterpart is the\nowner."
},
"title": "Data"
},
"attribution": {
"type": "array",
"items": {
"type": "object",
"title": "Attribution",
"required": [
"dataset",
"revision"
],
"properties": {
"dataset": {
"type": "string",
"title": "Dataset",
"examples": [
"eu/sweden"
],
"description": "Dataset key the result came from."
},
"sources": {
"type": "array",
"items": {
"type": "string"
},
"title": "Sources",
"description": "Registry source ids inside the dataset."
},
"revision": {
"type": "string",
"title": "Revision",
"examples": [
"se-842f6243c2eea5fd"
],
"description": "Pinned dataset revision."
}
}
},
"title": "Attribution"
}
},
"x-fastmcp-top-level-schema": "LinksResponse"
}verify_company — Verify Company
Resolve a company and compare the supplied claims with registry data. `result` compares the resolved record with the claims you supplied, not with the register at request time. `verified` means every check that could be evaluated matched and none mismatched. A request with no `expected` claims therefore returns `verified` as soon as one company is found: it confirms the record exists, not that any detail was checked. `partial` means at least one claim could not be evaluated and none mismatched. Billing is added by the gateway; this service returns only the verification.
{
"type": "object",
"required": [
"jurisdiction"
],
"properties": {
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Name",
"description": "Used when company_number is absent; must resolve to exactly one company."
},
"expected": {
"anyOf": [
{
"type": "object",
"title": "VerifyExpected",
"properties": {
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Status",
"description": "`active` or `any`."
},
"legal_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Legal Name"
},
"vat_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Vat Number"
},
"address_line1": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Address Line1"
},
"officer_names": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
},
"maxItems": 20
},
{
"type": "null"
}
],
"title": "Officer Names"
},
"address_postcode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Address Postcode"
}
}
},
{
"type": "null"
}
]
},
"reference": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Reference"
},
"jurisdiction": {
"type": "string",
"title": "Jurisdiction"
},
"company_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Company Number",
"description": "Preferred. Any identifier the register publishes."
},
"Idempotency-Key": {
"type": "string",
"maxLength": 128,
"description": "Same key within 24 h returns the stored response and is never billed twice."
}
}
}{
"type": "object",
"title": "VerifyResult",
"required": [
"result"
],
"properties": {
"checks": {
"type": "array",
"items": {
"type": "object",
"title": "Check",
"required": [
"field",
"outcome"
],
"properties": {
"field": {
"type": "string",
"title": "Field",
"description": "`legal_name`, `status`, `address_postcode`, `address_line1`, `vat_number` or `officer_names`."
},
"score": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Score"
},
"actual": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Actual"
},
"outcome": {
"type": "string",
"title": "Outcome",
"description": "`match`, `fuzzy_match`, `mismatch` or `not_available`."
},
"expected": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Expected"
}
}
},
"title": "Checks"
},
"result": {
"type": "string",
"title": "Result",
"description": "`verified`, `partial`, `mismatch`, `not_found` or `ambiguous`. `verified` means every supplied claim that could be evaluated matched and none mismatched; with no supplied claims it only confirms that the company was found. `partial` means at least one claim could not be evaluated and none mismatched. `mismatch` means at least one claim did not match. The comparison uses the published dataset copy, not a live register response."
},
"company": {
"anyOf": [
{
"type": "object",
"title": "CompanyOut",
"required": [
"id",
"jurisdiction",
"legal_name"
],
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Status"
},
"address": {
"type": "object",
"title": "Address",
"properties": {
"raw": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Raw",
"description": "The address exactly as the register publishes it, unsplit."
},
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "City",
"examples": [
"GÖTEBORG"
],
"description": "City or locality."
},
"line1": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Line1",
"examples": [
"ARSC, DC24000"
],
"description": "Street address."
},
"region": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Region",
"examples": [
"Västra Götaland"
],
"description": "Region, county or state."
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Country",
"examples": [
"SE"
],
"description": "ISO 3166-1 alpha-2 country code of the address."
},
"postcode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Postcode",
"examples": [
"40508"
],
"description": "Postal code, as the register publishes it."
}
}
},
"officers": {
"type": "array",
"items": {
"type": "object",
"title": "Officer",
"required": [
"name",
"type",
"role"
],
"properties": {
"name": {
"type": "string",
"title": "Name"
},
"role": {
"type": "string",
"title": "Role",
"examples": [
"director"
],
"description": "Normalised role code."
},
"type": {
"type": "string",
"title": "Type",
"examples": [
"person"
],
"description": "`person` or `organisation`."
},
"company": {
"anyOf": [
{
"type": "object",
"title": "CompanySummaryOut",
"required": [
"id",
"jurisdiction",
"legal_name"
],
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Status"
},
"address": {
"type": "object",
"title": "Address",
"properties": {
"raw": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Raw",
"description": "The address exactly as the register publishes it, unsplit."
},
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "City",
"examples": [
"GÖTEBORG"
],
"description": "City or locality."
},
"line1": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Line1",
"examples": [
"ARSC, DC24000"
],
"description": "Street address."
},
"region": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Region",
"examples": [
"Västra Götaland"
],
"description": "Region, county or state."
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Country",
"examples": [
"SE"
],
"description": "ISO 3166-1 alpha-2 country code of the address."
},
"postcode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Postcode",
"examples": [
"40508"
],
"description": "Postal code, as the register publishes it."
}
}
},
"legal_name": {
"type": "string",
"title": "Legal Name"
},
"matched_on": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Matched On",
"description": "`identifier`, `legal_name`, `previous_name` or `trading_name`."
},
"match_score": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Match Score",
"description": "Similarity of the match, when one was scored."
},
"jurisdiction": {
"type": "string",
"title": "Jurisdiction"
},
"company_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Company Number"
},
"registration_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Registration Date"
}
},
"description": "Canonical `CompanySummary` (candidates, officers' org company, VAT link)."
},
{
"type": "null"
}
],
"description": "For organisation officers we hold."
},
"end_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "End Date"
},
"party_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Party Id",
"description": "Opaque handle for this appointment, scoped to the company. Do not join officers across companies by it: where the register issues no person key the value is derived from the company id and the name, so the same name at another company is a different `party_id`."
},
"birth_year": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Birth Year"
},
"is_current": {
"type": "boolean",
"title": "Is Current",
"default": false
},
"start_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Start Date"
},
"birth_month": {
"anyOf": [
{
"type": "integer",
"maximum": 12,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Birth Month"
},
"nationality": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Nationality"
},
"role_source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Role Source",
"description": "Raw registry role."
}
}
},
"title": "Officers"
},
"freshness": {
"type": "object",
"title": "Freshness",
"properties": {
"stale": {
"type": "boolean",
"title": "Stale",
"default": false,
"description": "True when the record is past its `stale_after`."
},
"origin": {
"type": "string",
"title": "Origin",
"default": "database",
"examples": [
"database"
],
"description": "Always `database` — results are read from the published Parquet."
},
"retrieved_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Retrieved At",
"description": "When the source last refreshed this record."
},
"source_updated_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Source Updated At"
}
}
},
"activities": {
"type": "array",
"items": {
"type": "object",
"title": "CompanyActivity",
"required": [
"scheme",
"code"
],
"properties": {
"code": {
"type": "string",
"title": "Code"
},
"scheme": {
"type": "string",
"title": "Scheme"
},
"is_primary": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Is Primary"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description"
}
}
},
"title": "Activities"
},
"legal_form": {
"anyOf": [
{
"type": "object",
"title": "CompanyLegalFormOut",
"properties": {
"code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Code"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Label"
},
"elf_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Elf Code"
}
}
},
{
"type": "null"
}
]
},
"legal_name": {
"type": "string",
"title": "Legal Name"
},
"attribution": {
"type": "array",
"items": {
"type": "object",
"title": "Attribution",
"required": [
"dataset",
"revision"
],
"properties": {
"dataset": {
"type": "string",
"title": "Dataset",
"examples": [
"eu/sweden"
],
"description": "Dataset key the result came from."
},
"sources": {
"type": "array",
"items": {
"type": "string"
},
"title": "Sources",
"description": "Registry source ids inside the dataset."
},
"revision": {
"type": "string",
"title": "Revision",
"examples": [
"se-842f6243c2eea5fd"
],
"description": "Pinned dataset revision."
}
}
},
"title": "Attribution"
},
"identifiers": {
"type": "array",
"items": {
"type": "object",
"title": "Identifier",
"required": [
"scheme",
"value",
"is_primary"
],
"properties": {
"value": {
"type": "string",
"title": "Value",
"examples": [
"SE556029519701"
],
"description": "The identifier value."
},
"scheme": {
"type": "string",
"title": "Scheme",
"examples": [
"EU-VAT"
],
"description": "Identifier scheme, e.g. `SE-ORGNR`, `EU-VAT`, `AU-ABN`."
},
"is_primary": {
"type": "boolean",
"title": "Is Primary",
"examples": [
false
],
"description": "True for the register's own primary number."
},
"valid_check": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Valid Check",
"examples": [
true
],
"description": "Result of the scheme's check-digit test, when one applies."
}
}
},
"title": "Identifiers"
},
"other_names": {
"type": "array",
"items": {
"type": "object",
"title": "CompanyOtherName",
"required": [
"name"
],
"properties": {
"kind": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Kind",
"description": "`previous`, `trading` or `translated`."
},
"name": {
"type": "string",
"title": "Name"
},
"end_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "End Date"
},
"start_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Start Date"
}
}
},
"title": "Other Names"
},
"status_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Status Date"
},
"display_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Display Name"
},
"jurisdiction": {
"type": "string",
"title": "Jurisdiction"
},
"registry_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Registry Url"
},
"name_translit": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Name Translit"
},
"status_source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Status Source"
},
"company_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Company Number"
},
"dissolution_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Dissolution Date"
},
"registration_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Registration Date"
},
"officers_availability": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Officers Availability"
}
},
"description": "Canonical `Company` block returned by `/v1/verify`."
},
{
"type": "null"
}
]
},
"reference": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Reference"
},
"candidates": {
"type": "array",
"items": {
"type": "object",
"title": "CompanySummaryOut",
"required": [
"id",
"jurisdiction",
"legal_name"
],
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Status"
},
"address": {
"type": "object",
"title": "Address",
"properties": {
"raw": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Raw",
"description": "The address exactly as the register publishes it, unsplit."
},
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "City",
"examples": [
"GÖTEBORG"
],
"description": "City or locality."
},
"line1": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Line1",
"examples": [
"ARSC, DC24000"
],
"description": "Street address."
},
"region": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Region",
"examples": [
"Västra Götaland"
],
"description": "Region, county or state."
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Country",
"examples": [
"SE"
],
"description": "ISO 3166-1 alpha-2 country code of the address."
},
"postcode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Postcode",
"examples": [
"40508"
],
"description": "Postal code, as the register publishes it."
}
}
},
"legal_name": {
"type": "string",
"title": "Legal Name"
},
"matched_on": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Matched On",
"description": "`identifier`, `legal_name`, `previous_name` or `trading_name`."
},
"match_score": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Match Score",
"description": "Similarity of the match, when one was scored."
},
"jurisdiction": {
"type": "string",
"title": "Jurisdiction"
},
"company_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Company Number"
},
"registration_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Registration Date"
}
},
"description": "Canonical `CompanySummary` (candidates, officers' org company, VAT link)."
},
"title": "Candidates",
"description": "Only when ambiguous (max 5)."
}
},
"x-fastmcp-top-level-schema": "VerifyResult"
}verify_companies_batch — Verify Companies Batch
Up to 100 items are answered synchronously with a completed job (200). Between 101 and 10,000 items return 202 with `Location: /v1/verify/batch/{job_id}`; poll that path while `status` is `queued` or `running`. More than 10,000 items return 413 `batch_too_large`. Each item is billed exactly like a single /v1/verify call (daily dedup applies).
{
"type": "object",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"title": "VerifyRequest",
"required": [
"jurisdiction"
],
"properties": {
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Name",
"description": "Used when company_number is absent; must resolve to exactly one company."
},
"expected": {
"anyOf": [
{
"type": "object",
"title": "VerifyExpected",
"properties": {
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Status",
"description": "`active` or `any`."
},
"legal_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Legal Name"
},
"vat_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Vat Number"
},
"address_line1": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Address Line1"
},
"officer_names": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
},
"maxItems": 20
},
{
"type": "null"
}
],
"title": "Officer Names"
},
"address_postcode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Address Postcode"
}
}
},
{
"type": "null"
}
]
},
"reference": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"title": "Reference"
},
"jurisdiction": {
"type": "string",
"title": "Jurisdiction"
},
"company_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Company Number",
"description": "Preferred. Any identifier the register publishes."
}
}
},
"title": "Items",
"maxItems": 10000,
"minItems": 1
},
"Idempotency-Key": {
"type": "string",
"maxLength": 128,
"description": "Same key within 24 h returns the stored response and is never billed twice."
},
"max_premium_usd": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Max Premium Usd"
}
}
}{
"type": "object",
"title": "BatchJob",
"required": [
"id",
"created_at",
"counts"
],
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"counts": {
"type": "object",
"title": "BatchCounts",
"properties": {
"done": {
"type": "integer",
"title": "Done",
"default": 0
},
"total": {
"type": "integer",
"title": "Total",
"default": 0
},
"errors": {
"type": "integer",
"title": "Errors",
"default": 0
},
"partial": {
"type": "integer",
"title": "Partial",
"default": 0
},
"mismatch": {
"type": "integer",
"title": "Mismatch",
"default": 0
},
"verified": {
"type": "integer",
"title": "Verified",
"default": 0
},
"ambiguous": {
"type": "integer",
"title": "Ambiguous",
"default": 0
},
"not_found": {
"type": "integer",
"title": "Not Found",
"default": 0
}
}
},
"status": {
"type": "string",
"title": "Status",
"default": "completed"
},
"results": {
"type": "array",
"items": {
"type": "object",
"title": "BatchResultItem",
"required": [
"index"
],
"properties": {
"error": {
"anyOf": [
{
"type": "object",
"title": "Problem",
"required": [
"type",
"title",
"status",
"code"
],
"properties": {
"code": {
"type": "string",
"title": "Code",
"examples": [
"officers_not_available"
],
"description": "Stable machine code."
},
"type": {
"type": "string",
"title": "Type",
"examples": [
"https://corpoapi.com/errors/officers_not_available"
],
"description": "Problem type URI."
},
"title": {
"type": "string",
"title": "Title",
"examples": [
"Officers not available"
]
},
"detail": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Detail",
"examples": [
"Officers are not published for gb."
]
},
"status": {
"type": "integer",
"title": "Status",
"examples": [
409
]
},
"request_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Request Id"
}
}
},
{
"type": "null"
}
]
},
"index": {
"type": "integer",
"title": "Index"
},
"result": {
"anyOf": [
{
"type": "object",
"title": "VerifyResult",
"required": [
"result"
],
"properties": {
"checks": {
"type": "array",
"items": {
"type": "object",
"title": "Check",
"required": [
"field",
"outcome"
],
"properties": {
"field": {
"type": "string",
"title": "Field",
"description": "`legal_name`, `status`, `address_postcode`, `address_line1`, `vat_number` or `officer_names`."
},
"score": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Score"
},
"actual": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Actual"
},
"outcome": {
"type": "string",
"title": "Outcome",
"description": "`match`, `fuzzy_match`, `mismatch` or `not_available`."
},
"expected": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Expected"
}
}
},
"title": "Checks"
},
"result": {
"type": "string",
"title": "Result",
"description": "`verified`, `partial`, `mismatch`, `not_found` or `ambiguous`. `verified` means every supplied claim that could be evaluated matched and none mismatched; with no supplied claims it only confirms that the company was found. `partial` means at least one claim could not be evaluated and none mismatched. `mismatch` means at least one claim did not match. The comparison uses the published dataset copy, not a live register response."
},
"company": {
"anyOf": [
{
"type": "object",
"title": "CompanyOut",
"required": [
"id",
"jurisdiction",
"legal_name"
],
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Status"
},
"address": {
"type": "object",
"title": "Address",
"properties": {
"raw": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Raw",
"description": "The address exactly as the register publishes it, unsplit."
},
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "City",
"examples": [
"GÖTEBORG"
],
"description": "City or locality."
},
"line1": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Line1",
"examples": [
"ARSC, DC24000"
],
"description": "Street address."
},
"region": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Region",
"examples": [
"Västra Götaland"
],
"description": "Region, county or state."
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Country",
"examples": [
"SE"
],
"description": "ISO 3166-1 alpha-2 country code of the address."
},
"postcode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Postcode",
"examples": [
"40508"
],
"description": "Postal code, as the register publishes it."
}
}
},
"officers": {
"type": "array",
"items": {
"type": "object",
"title": "Officer",
"required": [
"name",
"type",
"role"
],
"properties": {
"name": {
"type": "string",
"title": "Name"
},
"role": {
"type": "string",
"title": "Role",
"examples": [
"director"
],
"description": "Normalised role code."
},
"type": {
"type": "string",
"title": "Type",
"examples": [
"person"
],
"description": "`person` or `organisation`."
},
"company": {
"anyOf": [
{
"type": "object",
"title": "CompanySummaryOut",
"required": [
"id",
"jurisdiction",
"legal_name"
],
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Status"
},
"address": {
"type": "object",
"title": "Address",
"properties": {
"raw": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Raw",
"description": "The address exactly as the register publishes it, unsplit."
},
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "City",
"examples": [
"GÖTEBORG"
],
"description": "City or locality."
},
"line1": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Line1",
"examples": [
"ARSC, DC24000"
],
"description": "Street address."
},
"region": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Region",
"examples": [
"Västra Götaland"
],
"description": "Region, county or state."
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Country",
"examples": [
"SE"
],
"description": "ISO 3166-1 alpha-2 country code of the address."
},
"postcode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Postcode",
"examples": [
"40508"
],
"description": "Postal code, as the register publishes it."
}
}
},
"legal_name": {
"type": "string",
"title": "Legal Name"
},
"matched_on": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Matched On",
"description": "`identifier`, `legal_name`, `previous_name` or `trading_name`."
},
"match_score": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Match Score",
"description": "Similarity of the match, when one was scored."
},
"jurisdiction": {
"type": "string",
"title": "Jurisdiction"
},
"company_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Company Number"
},
"registration_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Registration Date"
}
},
"description": "Canonical `CompanySummary` (candidates, officers' org company, VAT link)."
},
{
"type": "null"
}
],
"description": "For organisation officers we hold."
},
"end_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "End Date"
},
"party_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Party Id",
"description": "Opaque handle for this appointment, scoped to the company. Do not join officers across companies by it: where the register issues no person key the value is derived from the company id and the name, so the same name at another company is a different `party_id`."
},
"birth_year": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Birth Year"
},
"is_current": {
"type": "boolean",
"title": "Is Current",
"default": false
},
"start_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Start Date"
},
"birth_month": {
"anyOf": [
{
"type": "integer",
"maximum": 12,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Birth Month"
},
"nationality": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Nationality"
},
"role_source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Role Source",
"description": "Raw registry role."
}
}
},
"title": "Officers"
},
"freshness": {
"type": "object",
"title": "Freshness",
"properties": {
"stale": {
"type": "boolean",
"title": "Stale",
"default": false,
"description": "True when the record is past its `stale_after`."
},
"origin": {
"type": "string",
"title": "Origin",
"default": "database",
"examples": [
"database"
],
"description": "Always `database` — results are read from the published Parquet."
},
"retrieved_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Retrieved At",
"description": "When the source last refreshed this record."
},
"source_updated_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Source Updated At"
}
}
},
"activities": {
"type": "array",
"items": {
"type": "object",
"title": "CompanyActivity",
"required": [
"scheme",
"code"
],
"properties": {
"code": {
"type": "string",
"title": "Code"
},
"scheme": {
"type": "string",
"title": "Scheme"
},
"is_primary": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Is Primary"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description"
}
}
},
"title": "Activities"
},
"legal_form": {
"anyOf": [
{
"type": "object",
"title": "CompanyLegalFormOut",
"properties": {
"code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Code"
},
"label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Label"
},
"elf_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Elf Code"
}
}
},
{
"type": "null"
}
]
},
"legal_name": {
"type": "string",
"title": "Legal Name"
},
"attribution": {
"type": "array",
"items": {
"type": "object",
"title": "Attribution",
"required": [
"dataset",
"revision"
],
"properties": {
"dataset": {
"type": "string",
"title": "Dataset",
"examples": [
"eu/sweden"
],
"description": "Dataset key the result came from."
},
"sources": {
"type": "array",
"items": {
"type": "string"
},
"title": "Sources",
"description": "Registry source ids inside the dataset."
},
"revision": {
"type": "string",
"title": "Revision",
"examples": [
"se-842f6243c2eea5fd"
],
"description": "Pinned dataset revision."
}
}
},
"title": "Attribution"
},
"identifiers": {
"type": "array",
"items": {
"type": "object",
"title": "Identifier",
"required": [
"scheme",
"value",
"is_primary"
],
"properties": {
"value": {
"type": "string",
"title": "Value",
"examples": [
"SE556029519701"
],
"description": "The identifier value."
},
"scheme": {
"type": "string",
"title": "Scheme",
"examples": [
"EU-VAT"
],
"description": "Identifier scheme, e.g. `SE-ORGNR`, `EU-VAT`, `AU-ABN`."
},
"is_primary": {
"type": "boolean",
"title": "Is Primary",
"examples": [
false
],
"description": "True for the register's own primary number."
},
"valid_check": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Valid Check",
"examples": [
true
],
"description": "Result of the scheme's check-digit test, when one applies."
}
}
},
"title": "Identifiers"
},
"other_names": {
"type": "array",
"items": {
"type": "object",
"title": "CompanyOtherName",
"required": [
"name"
],
"properties": {
"kind": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Kind",
"description": "`previous`, `trading` or `translated`."
},
"name": {
"type": "string",
"title": "Name"
},
"end_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "End Date"
},
"start_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Start Date"
}
}
},
"title": "Other Names"
},
"status_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Status Date"
},
"display_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Display Name"
},
"jurisdiction": {
"type": "string",
"title": "Jurisdiction"
},
"registry_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Registry Url"
},
"name_translit": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Name Translit"
},
"status_source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Status Source"
},
"company_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Company Number"
},
"dissolution_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Dissolution Date"
},
"registration_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Registration Date"
},
"officers_availability": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Officers Availability"
}
},
"description": "Canonical `Company` block returned by `/v1/verify`."
},
{
"type": "null"
}
]
},
"reference": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Reference"
},
"candidates": {
"type": "array",
"items": {
"type": "object",
"title": "CompanySummaryOut",
"required": [
"id",
"jurisdiction",
"legal_name"
],
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Status"
},
"address": {
"type": "object",
"title": "Address",
"properties": {
"raw": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Raw",
"description": "The address exactly as the register publishes it, unsplit."
},
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "City",
"examples": [
"GÖTEBORG"
],
"description": "City or locality."
},
"line1": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Line1",
"examples": [
"ARSC, DC24000"
],
"description": "Street address."
},
"region": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Region",
"examples": [
"Västra Götaland"
],
"description": "Region, county or state."
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Country",
"examples": [
"SE"
],
"description": "ISO 3166-1 alpha-2 country code of the address."
},
"postcode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Postcode",
"examples": [
"40508"
],
"description": "Postal code, as the register publishes it."
}
}
},
"legal_name": {
"type": "string",
"title": "Legal Name"
},
"matched_on": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Matched On",
"description": "`identifier`, `legal_name`, `previous_name` or `trading_name`."
},
"match_score": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Match Score",
"description": "Similarity of the match, when one was scored."
},
"jurisdiction": {
"type": "string",
"title": "Jurisdiction"
},
"company_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Company Number"
},
"registration_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Registration Date"
}
},
"description": "Canonical `CompanySummary` (candidates, officers' org company, VAT link)."
},
"title": "Candidates",
"description": "Only when ambiguous (max 5)."
}
}
},
{
"type": "null"
}
]
}
}
},
"title": "Results"
},
"charge_usd": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Charge Usd"
},
"created_at": {
"type": "string",
"title": "Created At",
"format": "date-time"
},
"pagination": {
"anyOf": [
{
"type": "object",
"title": "Pagination",
"required": [
"limit",
"has_more",
"returned"
],
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"examples": [
20
],
"description": "Page size actually applied."
},
"has_more": {
"type": "boolean",
"title": "Has More",
"examples": [
true
],
"description": "True when more results exist beyond this page."
},
"returned": {
"type": "integer",
"title": "Returned",
"examples": [
20
],
"description": "Number of results in this page."
},
"next_cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Next Cursor",
"description": "Opaque cursor for the next page. Absent when there are no more results."
},
"total_estimate": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Total Estimate",
"examples": [
124
],
"description": "Exact match count when a jurisdiction is given; `null` for a cross-jurisdiction search."
}
}
},
{
"type": "null"
}
]
},
"completed_at": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"title": "Completed At"
}
},
"x-fastmcp-top-level-schema": "BatchJob"
}check_vat — Check Vat
Validate a VAT number against the European Commission VIES service, with the country prefix (e.g. `FR40303265045`).
{
"type": "object",
"required": [
"vat_number"
],
"properties": {
"vat_number": {
"type": "string",
"title": "Vat Number",
"example": "SE556029519701"
}
}
}{
"type": "object",
"title": "VatResult",
"required": [
"vat_number",
"valid",
"checked_at"
],
"properties": {
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Name",
"description": "As returned by VIES (some states return '---')."
},
"valid": {
"type": "boolean",
"title": "Valid"
},
"address": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Address"
},
"company": {
"anyOf": [
{
"type": "object",
"title": "CompanySummaryOut",
"required": [
"id",
"jurisdiction",
"legal_name"
],
"properties": {
"id": {
"type": "string",
"title": "Id"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Status"
},
"address": {
"type": "object",
"title": "Address",
"properties": {
"raw": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Raw",
"description": "The address exactly as the register publishes it, unsplit."
},
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "City",
"examples": [
"GÖTEBORG"
],
"description": "City or locality."
},
"line1": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Line1",
"examples": [
"ARSC, DC24000"
],
"description": "Street address."
},
"region": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Region",
"examples": [
"Västra Götaland"
],
"description": "Region, county or state."
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Country",
"examples": [
"SE"
],
"description": "ISO 3166-1 alpha-2 country code of the address."
},
"postcode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Postcode",
"examples": [
"40508"
],
"description": "Postal code, as the register publishes it."
}
}
},
"legal_name": {
"type": "string",
"title": "Legal Name"
},
"matched_on": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Matched On",
"description": "`identifier`, `legal_name`, `previous_name` or `trading_name`."
},
"match_score": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Match Score",
"description": "Similarity of the match, when one was scored."
},
"jurisdiction": {
"type": "string",
"title": "Jurisdiction"
},
"company_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Company Number"
},
"registration_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Registration Date"
}
},
"description": "Canonical `CompanySummary` (candidates, officers' org company, VAT link)."
},
{
"type": "null"
}
],
"description": "Linked via an EU-VAT identifier in the served data."
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Country"
},
"checked_at": {
"type": "string",
"title": "Checked At",
"format": "date-time"
},
"vat_number": {
"type": "string",
"title": "Vat Number"
},
"consultation_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Consultation Number"
}
},
"x-fastmcp-top-level-schema": "VatResult"
}Prompts
0 advertised
Resources
0 advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-02: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 2106 ms
- 95th percentile latency
- 2106 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 2106 ms · metadata changed · 13 tool(s), 0 resource(s), 0 resource template(s), 0 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http corpoapi-mcp https://mcp.corpoapi.com/mcpCodex
codex mcp add corpoapi-mcp --url https://mcp.corpoapi.com/mcpCursor
{
"mcpServers": {
"corpoapi-mcp": {
"url": "https://mcp.corpoapi.com/mcp"
}
}
}Cline
{
"mcpServers": {
"corpoapi-mcp": {
"type": "streamableHttp",
"url": "https://mcp.corpoapi.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"corpoapi-mcp": {
"type": "http",
"url": "https://mcp.corpoapi.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http corpoapi-mcp https://mcp.corpoapi.com/mcpClaude Desktop
{
"mcpServers": {
"corpoapi-mcp": {
"url": "https://mcp.corpoapi.com/mcp"
}
}
}Windsurf
{
"mcpServers": {
"corpoapi-mcp": {
"serverUrl": "https://mcp.corpoapi.com/mcp"
}
}
}Let your agent find its tools
Find servers like CorpoAPI MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other data and analytics servers
Do you run CorpoAPI MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.