openregistry
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_jurisdictionsA | Per-country reference data dictionary. Two modes — pass EXACTLY ONE of:
• |
| search_companiesA | Search company registries. Two calling modes — pick EXACTLY ONE per call:
Per-tier caps on how many distinct countries can be in Prefer Returns candidates with unified top-level fields (jurisdiction, company_id, company_name, status, status_detail, incorporation_date, registered_address) plus a Per-country caveats (ID format, accepted input shapes, filter options, paid-tier gates, status taxonomy) are available on demand — call |
| search_companies_near_pointA | Search the French registry for companies whose siège social (registered office) lies within a given radius (km) of a latitude/longitude point. Maps to recherche-entreprises' /near_point endpoint. Useful for 'companies within 2km of the Eiffel Tower' style queries. Pricing: free. Returns the same UnifiedSearchCandidate shape as search_companies. Other jurisdictions return 501 — only FR exposes this endpoint. |
| get_specialised_recordA | Retrieve a record from one of ARES's specialised source registers — covers sector-specific data the basic profile doesn't include. ── CZ (Czechia ARES) ──
Available source codes:
• Each source returns its own response shape — refer to ARES API docs at https://ares.gov.cz/swagger-ui/ for field details. The full upstream record is returned verbatim under Other jurisdictions return 501. |
| search_specialised_recordsA | Fetch raw records from one specific ARES source register in a single call, optionally filtered by a list of IČOs. This is the paired search endpoint for get_specialised_record (which fetches one record at a time). Uses POST /ekonomicke-subjekty-{source}/vyhledat upstream. ── CZ (Czechia ARES) ──
Available source codes (same as get_specialised_record, plus 'vr'):
• The upstream filter is intentionally narrow — ARES only accepts an optional list of IČOs plus pagination on these per-source endpoints. For rich name/address/legal-form search, use search_companies (which queries the main /ekonomicke-subjekty/vyhledat endpoint). Returns Pricing: free. Other jurisdictions return 501. |
| search_addressesA | Resolve a free-text or structured Czech address against the RÚIAN (Registr územní identifikace, adres a nemovitostí) register. Returns one or more normalised addresses with full geographic codes (kodAdresnihoMista, kodObce, kodOkresu, kodKraje, PSC). Powered by ARES's POST /standardizovane-adresy/vyhledat. ── Use cases ── • Normalise a messy address string before matching it against other data sources • Resolve an obec/street/house number to its canonical RÚIAN code • Validate whether an address exists in the Czech cadastre ── Standardisation mode ──
• At least one of (text, nazev_obce, kod_obce, kod_adresniho_mista) should be supplied. Response contains a Pricing: free. Other jurisdictions return 501. |
| list_change_batchesA | Access the change-batch feed — incremental delta batches listing every company ID that changed in a given source register during a given reporting period. Currently only available for CZ; other jurisdictions return 501. Two modes:
Raw upstream fields come through verbatim under |
| list_establishmentsA | Return every establishment unit (vestigingseenheid / unité d'établissement) attached to a Belgian enterprise number, as exposed by the official KBO Public Search vestiginglijst.html page. Each unit is a physical location (office / shop / warehouse) operated by the enterprise and has its own 10-digit establishment number starting with the digit 2 (e.g. 2.143.775.125). The unit itself is NOT a legal entity — the enterprise is — but the KBO exposes per-unit name, address, start date, activity codes, contact details, and (where applicable) authorisations and entrepreneurial-skill registrations. Returns an array of |
| check_name_availabilityA | Probe the Isle of Man Companies Registry 'Check Name Availability' endpoint (companynameavailability.iom). Returns |
| list_actos_inscritosA | Scans BORME Section I (Empresarios — Actos inscritos) and Section B (Otros actos) province PDFs across a date range, returns every acto paragraph whose header line exactly matches the given denominación. Use this to recover current/historical directors, resignations, constitución details, sole-shareholder declarations, capital changes, dissolution, extinción — all statutory registered acts, which are NOT exposed by the per-company /buscar/anborme.php search (that indexes only Section II Anuncios y avisos legales). Each hit includes the verbatim acto_numero (BOE's in-year sequential), borme_a_id (BORME-A-YYYY-NNN-PP province bulletin), provincia title, source_pdf_url, pagina_inicial/final, denominacion_upstream (as printed, including accent/punctuation drift), and texto_raw — the complete paragraph text from the Performance: each day in the range costs ~N province PDF fetches (N ≤ 52 provinces but typically 20–40). Default window: last 30 days. Hard cap: 90 days per call. Chunk longer windows client-side. Supported on ES only. Cached on the VM (PDFs are immutable once published). |
| get_code_descriptionA | Resolve a registry code-list to a human-readable code → description map. Useful for decoding values seen in jurisdiction_data fields. ── FI (Finland PRH) ── Codes: YRMU (company forms), KRTILA (trade-register status), TOIMI4 (TOL 2008 industries), ALUE (regions). lang: en | fi | sv (default en). ── CZ (Czechia ARES) ── Codes: PravniForma / FinancniUrad / TypAngazma / TypOrganu / StavZdroje / TypAkcie. Czech only. ── CH (Switzerland Zefix) ── Codes: legalForm (entity types — AG/Sàrl/Verein/...), registryOfCommerce (26 cantonal registries), community (Swiss communes by BFS ID). Multilingual (de/fr/it/en). Returns a flat object: { code: description, … }. Pricing: free. Other jurisdictions return 501. |
| count_companiesA | Return the total number of companies that would match a search, without fetching the candidates themselves. Useful before paginating very large result sets to decide whether to narrow the query. ⚠️ Performance note: this is NOT cheaper than search_companies — CRO's /companycount endpoint runs the same underlying query and takes ~2s on average (similar to a full search). Only use it when the raw count is what you actually need (e.g. 'how many Coffee business names exist in Ireland?'). For 'is this query narrow enough to paginate?', it's faster to call search_companies with limit=1 — you'll get the first hit AND a sense of recall in one round-trip. ── IE (Ireland CRO) ── Maps to the /companycount endpoint. Supports the same filters as search_companies (query, match_type, bus_ind, include_business_names, address, alpha). Returns a plain integer. Pricing: free. Other jurisdictions return 501 — Companies House/Brreg/ABR don't expose a count-only endpoint. |
| search_officersA | Find people who hold or have held officer positions (director, secretary, member, partner) at companies registered in a jurisdiction, by name. Returns a list of officer candidates each with an officer_id, name, and (where the registry exposes it) the number of appointments held. Use the officer_id in get_officer_appointments to retrieve every company that person has been appointed to. This is the entry point for 'follow the human, not the company' investigations. |
| get_company_profileA | Fetch the full profile of a company by its registry-specific ID. Returns unified top-level fields (jurisdiction, company_id, company_name, status, status_detail, incorporation_date, registered_address) plus a Does NOT include filings, officers, PSCs, shareholders, or charges — call the dedicated tools ( Input Optional flags Per-country caveats (ID format, accepted input shapes, jurisdiction_data field catalogue, paid-tier gates, status taxonomy) are available on demand — call |
| list_filingsA | Return a company's filing history. Each filing has a Use the optional Pagination: Not every registry publishes a filing list; unsupported jurisdictions return 501. Per-country caveats (ID format, accepted category values, cursor vs offset, document availability and pricing, paid-tier gates) — call |
| get_financialsA | Return annual-accounts filings (financial statements) for a company. Convenience wrapper over Each item has Filters: If the adapter doesn't implement |
| get_shareholdersA | Return the shareholders / members / quota-holders of a company — the legal-statutory equity roster published by the company registry, with no ownership-threshold filter. When to call this tool. Use this whenever the user asks about 'shareholders', 'members', 'quota-holders', or equivalents in other languages ('股东', '股東', 'actionnaires', 'socios', 'Gesellschafter', 'aksjonærer', 'aandeelhouders' etc.). This is a DIFFERENT concept from Public disclosure is strongly legal-form-conditional. Private-limited / LLC forms typically disclose quota-holders in the public register; joint-stock / public-limited forms typically keep shareholders in a private book, so this tool may return an empty list, a pointer to the relevant filing, or a statutory explanation. Response shape varies by jurisdiction: some return a structured array, some return the filing(s) that carry the roster (you then call Always returns a Per-country caveats (which legal forms disclose, response shape, how to reconstruct a current roster from delta filings) are available on demand — call |
| get_officersA | Return the officers of a company — current directors, secretaries, members, partners, board members, procurists / authorised signatories, liquidators, and (by default, where upstream exposes them) historical resignations. Each officer has a unified shape (jurisdiction, officer_id, name, role, appointed_on, resigned_on, is_active) plus a
Flags: Per-country caveats (role-label vocabulary, birth-date precision, resignation coverage, GDPR masking, 501 gating, delta-vs-snapshot semantics) are available on demand — call |
| get_officer_appointmentsA | Given an officer_id (from get_officers or search_officers), return every company in the registry where that person has held an appointment, with role, appointed_on, and resigned_on dates. This is the cross-company tracing tool — use it to follow a person's full corporate footprint across the registry. Results are paginated. |
| get_persons_with_significant_controlA | Return the persons with significant control (PSCs / beneficial owners) of a company — persons on a statutory-threshold register (typically >25% ownership or voting rights). When to call this tool. Only when the user explicitly asks about 'beneficial owners', 'UBO', 'PSC', 'who controls', or the >25% threshold register. For plain 'shareholders' / 'members' / '股东' / '持股人' questions, call Each entry has Many countries keep beneficial-ownership data in a separate register from the main company registry, or restrict it to authenticated / AML-obliged callers. Unsupported jurisdictions return 501, sometimes with |
| get_chargesA | Return charges (mortgages, fixed and floating charges, pledges, security interests) registered against a company. Primary tool for security-interest and lender analysis. Each charge has Scope is registry-specific: some jurisdictions keep real-estate mortgages, movable-asset pledges, or receivables in separate registers this tool does not reach. Unsupported jurisdictions return 501; some return 501 and suggest |
| get_document_metadataA | Retrieve metadata about a filing document by its Call this before Do NOT construct or guess
|
| fetch_documentA | Primary tool for reading a filing's content. Pass a ── RESPONSE SHAPES ──
• ── WORKFLOW FOR kind='resource_link' ──
── CRITICAL RULES ──
• Navigation-aids-only: previews, snippets, landmark matches, and outline titles returned by the navigation tools are for LOCATING pages. NEVER cite them as source material — quote only from
|
| get_document_navigationA | For PDFs that don't fit in a single document block (>~20 MB or >100 pages) OR whenever you need to locate specific sections, call this FIRST before fetching content. Returns outline (PDF bookmarks), per-page text previews (first ~200 chars), keyword-matched landmarks (balance sheet, directors report, auditor report etc.), text_layer classification, and source URLs. CRITICAL — these are NAVIGATION AIDS ONLY. Page previews, outline titles, landmark matches, and search snippets may be truncated, contain OCR errors, or match false positives. NEVER cite them as source material for numbers, quotes, legal text, financial figures, dates, or names. Always follow up with fetch_document_pages(pages=) to retrieve authoritative content before answering. Requires the document bytes to already be cached — call fetch_document once first if this is a new document. |
| search_documentA | Locate pages containing a phrase. Returns matching page numbers + short context snippets for navigation. Useful when the outline/landmarks don't list your target (e.g. you want 'directors' remuneration' but only 'Directors Report' is a landmark). Up to CRITICAL — snippets are NAVIGATION AIDS ONLY and may contain OCR errors. Once you've identified target pages, call fetch_document_pages(pages=) to read the authoritative text / bytes before citing anything. Requires get_document_navigation (or fetch_document on a PDF) to have run first so the per-page text index exists in R2. |
| fetch_document_pagesA | Return specific pages of a PDF in one of three formats: • format='pdf' — pdf-lib page slice, preserves the original text layer and fonts (no re-encoding). This is the ONLY format that gives you byte-exact, citation-grade content. Use this for financial numbers, legal quotes, and any answer requiring precision. • format='text' — raw extracted text from pdfjs. Machine-readable but NOT authoritative — OCR errors on bad-quality text layers can silently garble digits. Use only for summarisation / light reading, and cross-check numbers by re-fetching with format='pdf'. • format='png' — page rasterization via Cloudflare Browser Rendering, for documents with text_layer='none' (scanned PDFs). Phase 6 — may return 'not implemented' in current deployment. The response includes at most 100 pages (Anthropic document-block hard cap). Split larger ranges into multiple calls. Requires the document's bytes to already be cached — call fetch_document on the full document first if this is a new filing. |
| aboutA | Compact self-description (default response <1KB): server name, version, list of supported jurisdiction codes, list of tool names, pricing, rate limits. Pass |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| kyc_cross_border_due_diligence | Ship a full statutory due-diligence dossier in one prompt — profile, directors, UBO, shareholders, charges, latest accounts — across 27 national government registries. Live direct-to-government queries, unmodified responses, every fact source-linked. |
| ubo_cross_border_chain_walker | Unmask the real person behind any company. Walk ownership chains across jurisdictions — UK Ltd → Luxembourg SARL → Cayman LP → Jersey trust → individual — in one prompt. Every hop is a live direct-government query returning unmodified registry data with source identifiers preserved. |
| director_search_pep_screening | Map every company a person has been a director of — live, direct from government officer registers. Covers GB / FR / TW cross-company officer indexes. Returns unmodified registry records plus co-director network for second-order pattern detection. |
| live_company_accounts_xbrl | Fetch the most recent statutory financial statements for a company — live, direct from the government filing archive — as unmodified XBRL / iXBRL / PDF bytes. Extract turnover, operating profit, EBITDA, net income, total assets, equity, cash. Native XBRL on FI / KR, iXBRL on GB. |
| corporate_filing_monitor | Scan recent filings on a company and surface material events — director changes, new charges, capital events, insolvency markers, name/address changes. Live direct-registry filing stream, unmodified records. Works on GB / IE / CA / IS / FI / IM / LI / MX / KR. |
| global_company_name_availability | Check whether a proposed company name is free to register across multiple government registers — live, direct. Exact-match + fuzzy-similar + cooling-off breakdowns per jurisdiction. IoM native availability probe; others via search pattern-match. |
| industry_competitor_search | Find every company operating in a sector across multiple government registries in parallel. Returns live, unmodified registry records enriched with profile + latest accounts. M&A targeting, competitive analysis, market sizing. |
| shell_company_detector | Score shell-probability from live government registry data — single director, no accounts filed, overseas registered office, nominee-address patterns, no employees. Transparent signal-by-signal scoring. Every signal cited back to the government record. |
| phoenix_company_radar | Detect phoenix-company fraud patterns — dissolved companies reborn with the same director(s) and same registered office at a new entity. Live cross-reference of dissolution + director history + address reuse. UK-focused (full coverage GB via get_officer_appointments). |
| sector_gatekeeper_list | List every regulated / licensed entity in a sector — CIMA-authorised funds, listed issuers, regulated financial-services firms — pulled live from the regulator's register. Native support: Cayman CIMA (35 categories), Korea DART listed issuers, Canada CBCA federal corps. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sophymarine/openregistry'
If you have feedback or need assistance with the MCP directory API, please join our Discord server