CAT
/MCP
SkillsMCPMarketplacesDigestToolsAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Cross AI Tools

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by @mertduzgun

Independent project, not affiliated with Anthropic

Openregistry

sophymarine/openregistry
610 toolsHTTPregistry active
Summary

Connects Claude directly to 30 national company registries including UK Companies House, France RNE, Germany Handelsregister, Korea OpenDART, and Poland KRS. Every response is live and unmodified from the upstream government API at query time. You can search companies, pull officer lists, walk shareholder chains across borders, and fetch raw filing documents (PDFs, iXBRL) in a single prompt. The free tier gives you 30 requests per minute across all jurisdictions with no API key. Reach for this when you need current corporate data for KYB checks, due diligence, or ownership tracing without the staleness or schema translation of aggregators like OpenCorporates or Orbis.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →

Tools

Public tool metadata for what this MCP can expose to an agent.

10 tools
list_jurisdictionsPer-country reference. In-process metadata lookup — no upstream HTTP, no rate cost. Pass EXACTLY ONE of: • `jurisdiction='GB'` — registry name + URL, data license, company-ID format with examples, native-to-unified status enum mapping, and the list of tools supported. • `suppo...2 params

Per-country reference. In-process metadata lookup — no upstream HTTP, no rate cost. Pass EXACTLY ONE of: • `jurisdiction='GB'` — registry name + URL, data license, company-ID format with examples, native-to-unified status enum mapping, and the list of tools supported. • `suppo...

Parameters* required
jurisdictionstring
ISO 3166-1 alpha-2 country code (case-insensitive; CA subdivisions hyphenated like 'CA-BC'). Returns the full per-country schema. Mutually exclusive with `supports_tool`.
supports_toolstring
Tool name (e.g. 'get_officers', 'get_shareholders'). Returns the matrix of which jurisdictions implement this tool. Mutually exclusive with `jurisdiction`.
search_companiesSearch a national company registry by name or keyword. Pass EXACTLY ONE of: • `jurisdiction='GB'` - single country, direct. • `jurisdictions=['GB','NO','FR']` - multi-country when you're unsure; the server asks the user to confirm (clients with MCP elicitation) or errors back...7 params

Search a national company registry by name or keyword. Pass EXACTLY ONE of: • `jurisdiction='GB'` - single country, direct. • `jurisdictions=['GB','NO','FR']` - multi-country when you're unsure; the server asks the user to confirm (clients with MCP elicitation) or errors back...

Parameters* required
freshboolean
Bypass cache; call upstream directly.default: false
limitinteger
Max candidates to return (1-250). Default 10.default: 10
querystring
Company name or keyword. May be empty for FR / IE when searching purely by structured `filters`. AU also accepts structured `key:value` pairs in this field (e.g. 'postcode:2000 type:PUB active:Y').default:
offsetinteger
Pagination offset (IE / FR).
filtersobject
Country-specific advanced filters. Flat object keyed by the upstream field name (e.g. FR `code_postal` / `ca_min`, CZ `czNace`, CH `canton`, FI `companyForm`, IE `alpha`, IS `vat_number`). Call `list_jurisdictions({jurisdiction:'<CC>'})` for the per-country schema.
jurisdictionstring
ISO 3166-1 alpha-2 country code (uppercase; CA subdivisions hyphenated, e.g. 'CA-BC'). Use this when one country is known. Mutually exclusive with `jurisdictions`.
jurisdictionsarray
Array of ISO codes when the country is uncertain. The server asks the user to confirm the list (clients with MCP elicitation) or returns an error so you can ask in chat. Mutually exclusive with `jurisdiction`.
search_officersFind people holding or who held officer positions (director, secretary, member, partner) in a jurisdiction's registry by name. Returns candidates with officer_id, name, and (where exposed) appointment count. Entry point for person-centric investigations. Use this when only the...3 params

Find people holding or who held officer positions (director, secretary, member, partner) in a jurisdiction's registry by name. Returns candidates with officer_id, name, and (where exposed) appointment count. Entry point for person-centric investigations. Use this when only the...

Parameters* required
limitinteger
Max officer candidates to return. Range 1-100, default 20. Hard cap; upstream may return fewer.default: 20
querystring
Officer name. Full names work best ('John Smith'). Partial names return more candidates. Matched only against the registry's officer name index — not a free-text search; role keywords and company names won't match.
jurisdictionstring
ISO 3166-1 alpha-2 country code (uppercase). All registries are official government sources. Currently supported: AU, BE, CA, CA-BC, CA-NT, CH, CY, CZ, DE, ES, FI, FR, GB, HK, IE, IM, IS, IT, KR, KY, LI, MC, MX, MY, NL, NO, NZ, PL, RU, TW. Per-country capability, ID format, examples, status mapping, and caveats: call `list_jurisdictions({jurisdiction:'<code>'})`. To find which countries support a specific tool: `list_jurisdictions({supports_tool:'<tool>'})`.
get_company_profileFetch a company's structured profile by registry-specific ID. Returns unified top-level fields (`company_id`, `company_name`, `status`, `status_detail`, `incorporation_date`, `registered_address`) plus raw upstream under `jurisdiction_data`. `status` is a coarse active/inactiv...4 params

Fetch a company's structured profile by registry-specific ID. Returns unified top-level fields (`company_id`, `company_name`, `status`, `status_detail`, `incorporation_date`, `registered_address`) plus raw upstream under `jurisdiction_data`. `status` is a coarse active/inactiv...

Parameters* required
freshboolean
Bypass cache; call upstream directly.default: false
includeobject
Optional per-country extra fetches; ignored where unsupported.
company_idstring
Registry-specific identifier. Examples: GB '00445790' (8-digit Companies House number, or 'SC123456' for Scotland / 'NI...' / 'OC...' / 'LP...'); NO '923609016' (9-digit); AU 11-digit ABN or 9-digit ACN; FR 9-digit SIREN or 14-digit SIRET; PL 10-digit KRS; CZ 8-digit IČO; FI Y-tunnus '0112038-9'. Call list_jurisdictions for the full per-country format.
jurisdictionstring
ISO 3166-1 alpha-2 country code (uppercase). All registries are official government sources. Currently supported: AU, BE, CA, CA-BC, CA-NT, CH, CY, CZ, DE, ES, FI, FR, GB, HK, IE, IM, IS, IT, KR, KY, LI, MC, MX, MY, NL, NO, NZ, PL, RU, TW. Per-country capability, ID format, examples, status mapping, and caveats: call `list_jurisdictions({jurisdiction:'<code>'})`. To find which countries support a specific tool: `list_jurisdictions({supports_tool:'<tool>'})`.
list_filingsReturn a company's filing history, newest first. Each filing has `filing_id`, `filing_date`, `category`, `description`, and (when upstream exposes one) a `document_id` that round-trips to `get_document_metadata` / `fetch_document`. Raw upstream fields preserved under `jurisdic...7 params

Return a company's filing history, newest first. Each filing has `filing_id`, `filing_date`, `category`, `description`, and (when upstream exposes one) a `document_id` that round-trips to `get_document_metadata` / `fetch_document`. Raw upstream fields preserved under `jurisdic...

Parameters* required
freshboolean
Bypass cache; refetch from upstream.default: false
limitinteger
Items per page. Default 25.default: 25
cursorstring
Opaque pagination cursor returned as `next_cursor` (GB). Omit for first page.
offsetinteger
Pagination offset (IE).
categorystring
Optional category filter. Use a normalized value or the registry's native form code. Call `list_jurisdictions({jurisdiction:'<CC>'})` for the accepted values per country.
company_idstring
Registry-specific company ID. IE accepts an optional '/B' suffix for the business-name register.
jurisdictionstring
ISO 3166-1 alpha-2 country code (uppercase). All registries are official government sources. Currently supported: AU, BE, CA, CA-BC, CA-NT, CH, CY, CZ, DE, ES, FI, FR, GB, HK, IE, IM, IS, IT, KR, KY, LI, MC, MX, MY, NL, NO, NZ, PL, RU, TW. Per-country capability, ID format, examples, status mapping, and caveats: call `list_jurisdictions({jurisdiction:'<code>'})`. To find which countries support a specific tool: `list_jurisdictions({supports_tool:'<tool>'})`.
get_shareholdersReturn the shareholders / members / quota-holders — the legal-statutory equity roster published by the registry, no ownership-threshold filter. Use for any shareholder / member / quota-holder question. Shareholders are a DIFFERENT concept from beneficial owners (PSC / UBO), wh...3 params

Return the shareholders / members / quota-holders — the legal-statutory equity roster published by the registry, no ownership-threshold filter. Use for any shareholder / member / quota-holder question. Shareholders are a DIFFERENT concept from beneficial owners (PSC / UBO), wh...

Parameters* required
freshboolean
Bypass cache; refetch from upstream.default: false
company_idstring
Registry company ID, from search_companies.
jurisdictionstring
ISO 3166-1 alpha-2 country code (uppercase). All registries are official government sources. Currently supported: AU, BE, CA, CA-BC, CA-NT, CH, CY, CZ, DE, ES, FI, FR, GB, HK, IE, IM, IS, IT, KR, KY, LI, MC, MX, MY, NL, NO, NZ, PL, RU, TW. Per-country capability, ID format, examples, status mapping, and caveats: call `list_jurisdictions({jurisdiction:'<code>'})`. To find which countries support a specific tool: `list_jurisdictions({supports_tool:'<tool>'})`.
get_officersReturn a company's officers — current directors, secretaries, members, partners, board members, procurists, liquidators, plus historical resignations by default. Each officer has a unified shape (`officer_id`, `name`, `role`, `appointed_on`, `resigned_on`, `is_active`) plus ra...5 params

Return a company's officers — current directors, secretaries, members, partners, board members, procurists, liquidators, plus historical resignations by default. Each officer has a unified shape (`officer_id`, `name`, `role`, `appointed_on`, `resigned_on`, `is_active`) plus ra...

Parameters* required
freshboolean
Bypass cache; refetch from upstream.default: false
company_idstring
Registry company ID, from search_companies.
jurisdictionstring
ISO 3166-1 alpha-2 country code (uppercase). All registries are official government sources. Currently supported: AU, BE, CA, CA-BC, CA-NT, CH, CY, CZ, DE, ES, FI, FR, GB, HK, IE, IM, IS, IT, KR, KY, LI, MC, MX, MY, NL, NO, NZ, PL, RU, TW. Per-country capability, ID format, examples, status mapping, and caveats: call `list_jurisdictions({jurisdiction:'<code>'})`. To find which countries support a specific tool: `list_jurisdictions({supports_tool:'<tool>'})`.
group_by_personboolean
CZ only. Dedupe the same person across consecutive appointments (board member → chair → vice-chair) into one entry; appointments list under `jurisdiction_data._appointments[]`. Default false.default: false
include_resignedboolean
Include resigned officers. Default true; set false for currently-serving only.default: true
get_document_metadataRetrieve metadata for a filing document by `document_id` (from `list_filings`). Returns available content formats with byte sizes, page count, source URL, creation date. Raw upstream preserved under `jurisdiction_data`. Call this before `fetch_document` when a document may be...3 params

Retrieve metadata for a filing document by `document_id` (from `list_filings`). Returns available content formats with byte sizes, page count, source URL, creation date. Raw upstream preserved under `jurisdiction_data`. Call this before `fetch_document` when a document may be...

Parameters* required
freshboolean
Bypass cache. Filings are immutable; rarely needed.default: false
document_idstring
Document ID from a previous list_filings call; do not synthesize.
jurisdictionstring
ISO 3166-1 alpha-2 country code (uppercase). All registries are official government sources. Currently supported: AU, BE, CA, CA-BC, CA-NT, CH, CY, CZ, DE, ES, FI, FR, GB, HK, IE, IM, IS, IT, KR, KY, LI, MC, MX, MY, NL, NO, NZ, PL, RU, TW. Per-country capability, ID format, examples, status mapping, and caveats: call `list_jurisdictions({jurisdiction:'<code>'})`. To find which countries support a specific tool: `list_jurisdictions({supports_tool:'<tool>'})`.
fetch_documentRead a filing's content by `document_id` from `list_filings`. Numbers and prose live inside the document; `list_filings` metadata only locates filings. RESPONSE SHAPES: • `kind='embedded'` (under `max_bytes`, ~20 MB default) — full `bytes_base64`, `source_url_official` (evergr...9 params

Read a filing's content by `document_id` from `list_filings`. Numbers and prose live inside the document; `list_filings` metadata only locates filings. RESPONSE SHAPES: • `kind='embedded'` (under `max_bytes`, ~20 MB default) — full `bytes_base64`, `source_url_official` (evergr...

Parameters* required
freshboolean
Bypass R2 cache. Filings are immutable; rarely needed.default: false
formatstring
Preferred content type: application/xhtml+xml, application/pdf, application/xml, application/json. Omit to let the adapter pick the most structured option (XHTML > XML > JSON > PDF).
max_bytesinteger
Inline-size cutoff. Default ~20 MB. Documents above this return as `kind='resource_link'` — call `get_document_navigation` for them.
company_idstring
Override; auto-resolved from list_filings side-cache.
document_idstring
Document ID from list_filings; do not synthesize (composite IDs will 404).
filing_typestring
Override; auto-resolved from list_filings side-cache.
jurisdictionstring
ISO 3166-1 alpha-2 country code (uppercase). All registries are official government sources. Currently supported: AU, BE, CA, CA-BC, CA-NT, CH, CY, CZ, DE, ES, FI, FR, GB, HK, IE, IM, IS, IT, KR, KY, LI, MC, MX, MY, NL, NO, NZ, PL, RU, TW. Per-country capability, ID format, examples, status mapping, and caveats: call `list_jurisdictions({jurisdiction:'<code>'})`. To find which countries support a specific tool: `list_jurisdictions({supports_tool:'<tool>'})`.
transaction_idstring
Override; auto-resolved from list_filings side-cache.
filing_descriptionstring
Override; auto-resolved from list_filings side-cache.
get_document_navigationReturn a navigation index for a cached document: PDF outline / bookmarks, per-page text previews (~200 chars each), keyword-matched landmarks (balance sheet / directors report / auditor report), text-layer classification, and source URLs. Call this FIRST for PDFs too large to...5 params

Return a navigation index for a cached document: PDF outline / bookmarks, per-page text previews (~200 chars each), keyword-matched landmarks (balance sheet / directors report / auditor report), text-layer classification, and source URLs. Call this FIRST for PDFs too large to...

Parameters* required
freshboolean
Re-run pdfjs against the cached bytes (does not re-pull from upstream).default: false
company_idstring
Override; auto-resolved from list_filings side-cache.
document_idstring
Document ID from list_filings; document must already be cached via fetch_document.
jurisdictionstring
ISO 3166-1 alpha-2 country code (uppercase). All registries are official government sources. Currently supported: AU, BE, CA, CA-BC, CA-NT, CH, CY, CZ, DE, ES, FI, FR, GB, HK, IE, IM, IS, IT, KR, KY, LI, MC, MX, MY, NL, NO, NZ, PL, RU, TW. Per-country capability, ID format, examples, status mapping, and caveats: call `list_jurisdictions({jurisdiction:'<code>'})`. To find which countries support a specific tool: `list_jurisdictions({supports_tool:'<tool>'})`.
transaction_idstring
Override; auto-resolved from list_filings side-cache.

OpenRegistry

Official MCP Registry Glama Score Cursor Directory PulseMCP Smithery Follow @sophymarine on X License: Apache 2.0

Real-time direct access to unmodified data and raw filings of 30 official government registries via MCP.

Tools: search companies, get profiles, officers, shareholders, charges, filings, and financial-statement documents.

Covers UK Companies House, Ireland CRO, France RNE, Spain BORME, Italy InfoCamere, Norway Brreg, Poland KRS, Netherlands KVK, Belgium KBO, Switzerland Zefix, Finland, Czechia, Korea, Taiwan, New Zealand, Cayman Island, Australia, Canada and a lot more.

Free tier; paid keys for higher quota and depth.

Data licensed from 🇬🇧 UK Companies House · 🇮🇪 CRO Ireland · 🇳🇴 Brønnøysund · 🇨🇭 Zefix · 🇵🇱 KRS Ministry of Justice — and 22 more national registries under their respective open-data licences.

OpenRegistry — walking a UK retailer's shareholders 4 layers deep to the family that owns it

Above: an AI agent walks the shareholders of Iceland Foods Ltd through 4 UK holding companies — WD FF MIDCO → ICELAND VLNCO → LANNIS → WD FF LIMITED — and surfaces the 8 individuals who actually own the chain (Tarsem Dhaliwal 41.35% as the largest shareholder, Walker family 51.31% combined). Every share count, every percentage, read verbatim from the registry's own CS01 PDFs.

openregistry MCP server

OpenRegistry is your AI agent's live hotline to 30 national company registries — UK Companies House, France RNE, Germany Handelsregister, Italy InfoCamere (via EU BRIS), Spain BORME, Poland KRS, Korea OpenDART, Canada CBCA, 10 US states, and more.

We return the registry's own response — unmodified. Every field name, every status value, every raw filing byte (XHTML iXBRL / PDF / XBRL) is preserved exactly as the government's system emits it. The identifiers and jurisdiction routing let you reconstruct the government URL for any record. No aggregator markup. No field renames. No document re-rendering. No AI reinterpretation. No stale cache.

Chain queries across borders in a single prompt — a UK Ltd → its Luxembourg SARL → its Cayman LP → the Jersey trust → the individual beneficiary, all in one conversation. Walk ownership structures through 30 jurisdictions to unmask the real person behind any company.

Hosted endpoint: https://openregistry.sophymarine.com/mcp

A platform by Sophymarine.

The 6 pillars

1. LiveEvery tool call is a real-time query to the upstream government registry API at the moment you ask.
2. Direct-to-governmentNo aggregator, no third-party data warehouse, no nightly scrape. Your AI talks to UK Companies House, France INSEE, German Registerportal, Korean FSS OpenDART directly.
3. Unmodified + source-linkedEvery field name, every status code, every raw filing byte returned verbatim. The registry's own identifiers are preserved so any response traces back to the government record. Enterprise tier adds pre-synthesised source_url / registry_url / data_license fields.
4. Zero-staleNo cache layer we control can ever go stale. You see an update the moment the government records it. Contrast with commercial data providers that serve 6-24 hour-old snapshots.
5. StableProduction-grade reliability, running on Cloudflare Workers' global edge + a warm pool of per-jurisdiction workers for stateful registries.
6. Cross-borderChain queries across 30 registries in a single prompt. Walk UK Ltd → LU SARL → KY LP → individual without leaving the conversation.

How OpenRegistry differs

OpenRegistryOpenCorporatesCompanies House API directBureau van Dijk Orbis
Coverage30 national registries~140, mostly aggregated from upstream sourcesUK only~430M companies, aggregated
Data freshnessLive — every call hits upstreamScrape-and-cache (hours–days lag)Live7-day to quarterly refresh
Field shapeVerbatim upstream payload + unified envelopeNormalised to OC's own schemaPer-registry CH schemaBvD's own schema
Source identifier preservedYes — registry URL reconstructable from responseOC ID is primary; mapping back is lossyNativeBvD ID is primary
Filing PDFs / iXBRL bytesReturned rawMetadata only; full bytes paywalledNativePaywalled
Cross-border chain walkingOne MCP prompt, ≤30 jurisdictionsManual ID-stitching across countriesOut of scope (UK only)Limited to BvD-mastered entities
AuthenticationOAuth 2.1 + DCRAPI key (signup required)API key (signup required)Per-seat license, $30k–$50k+/yr
Self-serve free tierFree tier: 30 req/min, 6 core tools, all jurisdictionsFree for non-commercial only, throttledFree, single-jurisdictionNone
Made for AI agentsMCP-native, JSON-RPC over Streamable HTTPREST; no MCP wrapperREST; no MCP wrapperREST; no MCP wrapper

One-liner. OpenCorporates and BvD are aggregators that re-shape and cache; CH-direct is single-jurisdiction. OpenRegistry is the layer between an AI agent and the original government APIs — verbatim, live, multi-country, no API key for the free tier.

Where OpenRegistry deliberately doesn't have data (statutorily restricted BO registers post-CJEU C-37/20: DE, ES, IT, NL, LU, AT, MT, PT), the response carries a structured alternative_url pointing at the AML-obliged-only statutory portal. We don't pretend to have data we don't.

Quick example calls

Three full request → response examples for the most common tools. All three reproducible on the free tier. Calls are JSON-RPC over MCP Streamable HTTP at https://openregistry.sophymarine.com/mcp; for brevity we show the tool name + arguments + the unwrapped response.

1. search_companies — find a UK company

// Request
{
  "name": "search_companies",
  "arguments": { "jurisdiction": "GB", "query": "Monzo Bank", "limit": 5 }
}

// Response (truncated to 1 result)
{
  "jurisdiction": "GB",
  "count": 5,
  "results": [
    {
      "jurisdiction": "GB",
      "company_id": "09446231",
      "company_name": "MONZO BANK LIMITED",
      "status": "active",
      "incorporation_date": "2015-02-06",
      "registered_address": "Broadwalk House, 5 Appold Street, London, England, EC2A 2AG",
      "jurisdiction_data": {
        "company_number": "09446231",
        "company_status": "active",
        "company_type": "ltd",
        "date_of_creation": "2015-02-06",
        "title": "MONZO BANK LIMITED",
        "address_snippet": "Broadwalk House, 5 Appold Street, London, England, EC2A 2AG",
        "kind": "searchresults#company",
        "links": { "self": "/company/09446231" }
        // ... 20+ verbatim CH fields
      }
    }
  ]
}

2. get_persons_with_significant_control — UK PSC for a known company

// Request
{
  "name": "get_persons_with_significant_control",
  "arguments": { "jurisdiction": "GB", "company_id": "OC404063" }
}

// Response
[
  {
    "jurisdiction": "GB",
    "psc_id": "...",
    "name": "[REDACTED — UK CH residential-address suppression]",
    "kind": "individual-person-with-significant-control",
    "nature_of_control": ["ownership-of-shares-25-to-50-percent"],
    "notified_on": "2024-08-15",
    "is_active": true,
    "jurisdiction_data": {
      "etag": "...",
      "natures_of_control": ["ownership-of-shares-25-to-50-percent"],
      "notified_on": "2024-08-15",
      "country_of_residence": "United Kingdom",
      "date_of_birth": { "month": 7, "year": 1985 },
      "address": { "country": "United Kingdom" },
      "links": { "self": "/company/OC404063/persons-with-significant-control/individual/..." }
      // ... full CH PSC record
    }
  }
]

PSC ≠ shareholders. UK Companies House publishes a structured PSC register and a separate (filing-only) statement of capital. They disagree: a 10% shareholder appears in the statement of capital but not in PSC; a corporate trustee appears in PSC without being a shareholder. We surface both via get_persons_with_significant_control and get_shareholders respectively — see the shareholders-vs-PSC case study.

3. fetch_document — raw iXBRL annual accounts bytes

// Request — get the document_id from list_filings or get_financials first
{
  "name": "fetch_document",
  "arguments": { "document_id": "MzQ0MTUyNDU5N2FkaXF6a2N4", "max_bytes": 5000000 }
}

// Response (metadata + base64-encoded body)
{
  "jurisdiction": "GB",
  "document_id": "MzQ0MTUyNDU5N2FkaXF6a2N4",
  "content_type": "application/xhtml+xml",
  "size_bytes": 348721,
  "encoding": "base64",
  "content": "PCFET0NUWVBFIGh0bWwgUFVCTElDIC...",
  // signed proxy URL for human download / out-of-band fetch
  "proxy_url": "https://openregistry.sophymarine.com/document/gb/MzQ0MTUyNDU5N2FkaXF6a2N4/content?token=..."
}

The content is the literal iXBRL bytes Companies House sends — your AI agent parses or re-renders as it sees fit. We don't re-encode, normalise tags, or extract figures into our own schema. Pass format: "png" (Browser Rendering required) to receive a rasterised page-by-page render of scanned PDFs instead.

Quotas, errors, and back-off

OpenRegistry surfaces three distinct kinds of failure with structured responses so AI agents can branch on them.

Rate limits

Per-IP for anonymous, per-user for signed-in. The cross-border fan-out cap is a separate counter that limits how many distinct jurisdictions a caller can hit via search_companies in a rolling 60-second window.

When you exceed either limit, the response is HTTP 429:

{
  "jsonrpc": "2.0",
  "error": {
    "code": -32000,
    "message": "rate-limited",
    "data": {
      "reason": "rate-limited",
      "retry_after_ms": 12400,
      "scope": "ip"           // or "user" or "fanout"
    }
  }
}

The HTTP layer also sets the standard Retry-After: 13 header (seconds, rounded up). Honour retry_after_ms exactly — exponential back-off on top is unnecessary; the limit window is fixed-rolling, not adaptive. Fan-out cap (scope: "fanout") is a 60-second rolling window — the second your oldest country falls off, you can hit a new one. Pro tier caps at 10 distinct countries / 60s, Max at 30, Enterprise unlimited.

Statutorily restricted (CJEU C-37/20 and similar)

Some beneficial-ownership registers became access-restricted to AML-obliged entities post-CJEU C-37/20 (DE, ES, IT, NL, LU, AT, MT, PT) and the Cayman Beneficial Ownership Transparency Act. We don't proxy these — the tool returns HTTP 501 with structured guidance:

{
  "jurisdiction": "DE",
  "error": "not_proxied_by_design",
  "reason": "CJEU-C-37-20",
  "alternative_url": "https://www.transparenzregister.de",
  "alternative_access": "AML-obliged entities only (banks, lawyers, notaries, etc.)",
  "human_message": "The German Transparency Register is statutorily gated since 22 Nov 2022."
}

This is a design response, not a transient failure — retrying won't help. The alternative_url is the canonical statutory portal where qualified entities can register for access.

Upstream errors and tool-level structured 501s

When the upstream registry has its own outage, we surface its error verbatim with a structured wrapper:

{
  "jurisdiction": "ES",
  "error": "upstream_error",
  "upstream_status": 524,
  "human_message": "Spain BORME upstream timed out (Madrid bulletin renderer slow). Retry in 30-60s.",
  "retry_after_ms": 45000
}

Some tools also return 501 with an alternative tool suggestion when the upstream registry doesn't expose the requested concept (e.g. CZ political parties don't have officers in the standard sense — call search_specialised_records with source="rpsh" instead):

{
  "error": "alternative_tool_required",
  "alternative_tool": "search_specialised_records",
  "alternative_args": { "jurisdiction": "CZ", "source": "rpsh", "...": "..." },
  "human_message": "Czech political parties register is exposed via the RPSH sub-source."
}

Recommended client back-off

ErrorAction
429 rate-limitedSleep retry_after_ms, then retry once.
429 fanoutDon't retry the same call; route the next request to a country you've already hit in the window.
501 not_proxied_by_designDon't retry. Surface alternative_url to the user.
501 alternative_tool_requiredRe-issue with alternative_tool + alternative_args.
5xx upstream_errorSleep retry_after_ms if present, else 30s. Max 3 retries.
4xx not_foundDon't retry. Re-search with search_companies to discover a valid id.

A reference back-off implementation is published in every framework integration guide under /docs/integrations.

Ready-to-use skills

We publish 10 professional Claude Agent Skills for the most common OpenRegistry workflows. Drop them into your Claude Code project's .claude/skills/ directory or into any Claude-compatible agent — invoke by intent.

#SkillOutcome in one prompt
1KYC & Cross-Border Due DiligenceFull statutory dossier: profile + directors + UBO + shareholders + charges + latest accounts
2 ⭐Cross-Border UBO Chain WalkerWalk the ownership chain across jurisdictions until you reach the real individual
3Director Search & PEP ScreeningEvery company a person has run + co-director network
4Live Company Accounts & XBRL FinancialsLatest statutory accounts as machine-readable XBRL / iXBRL / PDF + key figures
5Corporate Filing Monitor & Event AlertMaterial filings in a window, categorised and flagged
6Global Company Name Availability CheckIs a name free to register across 10+ countries?
7Industry & Competitor Company SearchEvery company in a sector across N jurisdictions, ranked + enriched
8Shell Company DetectorFlag 1-director + no-accounts + overseas-office shells (AML signal)
9Phoenix Company RadarDetect dissolved-then-reborn fraud patterns (same director, same address)
10Sector Gatekeeper ListEvery CIMA / FCA / BaFin / FSS-licensed regulated entity

See skills/README.md for the skillpack overview.

Same 10 workflows, also as MCP prompts

Every skill above is also served by the MCP server as a named prompt — so any MCP-compatible client (Claude Desktop, Cursor, Cline, Goose, Zed, …) shows them in its prompt picker without installing skill files. Call prompts/list to discover them, prompts/get to invoke. Same names: kyc_cross_border_due_diligence, ubo_cross_border_chain_walker, director_search_pep_screening, live_company_accounts_xbrl, corporate_filing_monitor, global_company_name_availability, industry_competitor_search, shell_company_detector, phoenix_company_radar, sector_gatekeeper_list.

Connect

OpenRegistry works with every major MCP-capable client. The same https://openregistry.sophymarine.com/mcp endpoint works across all of them.

Claude Desktop

Settings → Connectors → Add custom connector → paste https://openregistry.sophymarine.com/mcp.

For older builds without the Connectors UI, add to claude_desktop_config.json:

{
  "mcpServers": {
    "openregistry": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://openregistry.sophymarine.com/mcp"]
    }
  }
}

Claude Code

claude mcp add --transport http openregistry https://openregistry.sophymarine.com/mcp

On Claude Code 2.1.1+ you can also use the JSON form:

claude mcp add-json openregistry '{"type":"http","url":"https://openregistry.sophymarine.com/mcp"}'

Gemini CLI

One-line install via the gemini-extension.json manifest in this repo:

gemini extensions install https://github.com/sophymarine/openregistry

Or add to ~/.gemini/settings.json manually (Gemini uses httpUrl, not url):

{
  "mcpServers": {
    "openregistry": {
      "httpUrl": "https://openregistry.sophymarine.com/mcp"
    }
  }
}

Google's consumer Gemini app at gemini.google.com does not support custom MCP today — only the CLI and Gemini Enterprise (Google Cloud admin path) do.

ChatGPT

Plus / Pro / Business / Enterprise / Education plans only (Free tier doesn't expose Developer Mode).

  1. Settings → Apps & Connectors → Advanced settings → enable Developer Mode.
  2. On the Connectors page, click Create and paste https://openregistry.sophymarine.com/mcp.

See OpenAI's developer-mode help article.

Perplexity

Pro / Max / Enterprise plans only. Settings → Connectors → Add custom remote connector → paste the URL → choose OAuth. Works in regular chat, the Comet browser, and Computer agent workflows. (Changelog 2026-03-13.)

Cursor

Add to Cursor

Or add to ~/.cursor/mcp.json manually:

{
  "mcpServers": {
    "openregistry": {
      "url": "https://openregistry.sophymarine.com/mcp"
    }
  }
}

VS Code (1.101+, Copilot Agent mode)

Install in VS Code Install in VS Code Insiders

Or add to .vscode/mcp.json (workspace) or User Settings → MCP. VS Code uses servers (not mcpServers) and requires type: "http":

{
  "servers": {
    "openregistry": {
      "type": "http",
      "url": "https://openregistry.sophymarine.com/mcp"
    }
  }
}

GitHub Copilot in JetBrains, Visual Studio, Xcode, and Eclipse also supports custom MCP via the same mcp-config.json pattern — see docs.github.com/copilot for the IDE-specific setup. Copilot CLI uses ~/.copilot/mcp-config.json or the interactive /mcp add command.

Microsoft 365 Copilot (Word / Excel / PowerPoint / Teams / Outlook)

Organization-level deployment via Microsoft Copilot Studio agent path. Requires a Microsoft 365 Copilot license.

  1. In Microsoft Copilot Studio, open or create an agent → Tools → Add a tool → New tool → Model Context Protocol.
  2. Paste https://openregistry.sophymarine.com/mcp, then for Authentication pick OAuth 2.0 → Dynamic discovery (OpenRegistry implements DCR with discovery — zero config).
  3. Publish the agent and submit it for admin approval. After your Global / Teams Admin approves it in the Microsoft 365 admin center, it appears in the Agent Store across Teams, Outlook, Word, Excel, and PowerPoint.

See Microsoft's Copilot Studio MCP docs and the Agent Store guide.

Cline

Settings → Cline → MCP Servers → Edit settings → paste into cline_mcp_settings.json:

{
  "mcpServers": {
    "openregistry": {
      "url": "https://openregistry.sophymarine.com/mcp",
      "transport": "streamable-http"
    }
  }
}

See llms-install.md for automated LLM-driven installs.

Windsurf

Cascade panel → hammer icon (🔨) → Configure opens ~/.codeium/windsurf/mcp_config.json. Add this block (note Windsurf uses serverUrl, not url), then click Refresh (🔄):

{
  "mcpServers": {
    "openregistry": {
      "serverUrl": "https://openregistry.sophymarine.com/mcp"
    }
  }
}

Anything else speaking MCP

Zed, Goose, Continue, and any other MCP 2025-06-18 client work with the standard config:

{
  "mcpServers": {
    "openregistry": {
      "url": "https://openregistry.sophymarine.com/mcp"
    }
  }
}

Streamable HTTP transport per MCP spec 2025-06-18. OAuth 2.1 authorization flow (Dynamic Client Registration per RFC 7591 — no API key to paste).

AI agent frameworks (code samples)

Every major agent framework ships a generic MCP adapter, so OpenRegistry's 27 tools + 10 prompt workflows plug in with zero framework-specific code. Minimum working example per framework:

  • LangChain / LangGraph (Python) → openregistry.sophymarine.com/docs/integrations/langchain
  • LlamaIndex (Python) → /docs/integrations/llamaindex
  • CrewAI (Python) → /docs/integrations/crewai
  • Haystack (Python) → /docs/integrations/haystack
  • AutoGen (Microsoft) (Python) → /docs/integrations/autogen
  • Vercel AI SDK (TypeScript) → /docs/integrations/vercel-ai-sdk

Tiers

TierPriceRate limitCross-border fan-outSource URLs
Free (signed in)free30/min per user3 countries / 60sidentifiers only
Pro$9/mo180/min per user10 countries / 60sidentifiers only
Max$29/mo900/min per user30 countries / 60sidentifiers only
Enterprisecontact3000/min per userunlimitedsource_url / registry_url / data_license synthesised

All tiers receive the full unmodified upstream data — the only thing Enterprise adds is pre-built source-URL fields for audit-trail convenience.

Provenance & Auditability

Every response preserves the upstream registry's identifiers so any fact can be verified at the government record:

  • jurisdiction + company_id → reconstruct the government URL (e.g. https://find-and-update.company-information.service.gov.uk/company/09446231)
  • document_id → the government's own filing identifier, resolvable back to their portal
  • jurisdiction_data → the raw upstream object with every field name preserved
  • Filing documents (XHTML iXBRL / PDF / XBRL) returned as raw bytes — no re-rendering

Enterprise tier pre-synthesises source_url / registry_url / registry_name / data_license / alternative_url into every response for one-click audit-trail in compliance reports.

Security and compliance

  • Auth: OAuth 2.1 + PKCE, passwordless email magic links, RFC 7591 Dynamic Client Registration. No pre-shared API keys.
  • Privacy: OpenRegistry proxies official public-registry data. Beneficial-ownership registers that became access-restricted post-CJEU C-37/20 (DE, ES, IT, NL, LU, AT, MT, PT) are not proxied — the tool returns 501 alternative_url pointing at the statutory gated portal (AML-obliged entities only). We explicitly flag where AML gates block the ownership chain.
  • Rate limits: per-user for authenticated traffic, per-IP for anonymous — plus a per-jurisdiction upstream-protection cap shared across all users, to keep OpenRegistry a good citizen with the registries we depend on.

Support

  • Hosted app + account management: openregistry.sophymarine.com/account
  • Tool capability matrix: call list_jurisdictions or visit openregistry.sophymarine.com/jurisdictions
  • Enterprise inquiries / partnerships: contact@sophymarine.com
  • Status + uptime: openregistry.sophymarine.com/status
  • This repo is documentation only. The OpenRegistry service implementation is closed-source; raise issues here for the integration experience (documentation, examples, install flows).

Security

Found a vulnerability? Please email security@sophymarine.com rather than opening a public issue. See SECURITY.md for the full reporting policy, scope, and safe-harbor terms.

Code of Conduct

Participation in this project is governed by our Code of Conduct, adapted from the Contributor Covenant 2.1. Report issues to conduct@sophymarine.com.

Contributing

Issues and pull requests are welcome for:

  • Bridge bugs (server.mjs)
  • Documentation improvements (README, llms-install.md, GEMINI.md)
  • Skill / prompt refinements (skills/, commands/, .claude-plugin/)
  • Brand assets and metadata (brand/, glama.json, .mcp.json, gemini-extension.json)

The OpenRegistry service implementation (jurisdiction adapters, MCP server, billing, auth) is closed-source and not accepted via PR. For tool / behavior requests against the hosted service, open an issue describing the use case.

Changelog

Tagged releases live on the GitHub Releases page. Versions follow SemVer — patch for fixes, minor for additive changes, major for breaking changes to the bridge protocol or tool surface contract.

License

Documentation, skills, and brand assets in this repository are released under CC-BY-4.0 — you may share and adapt the material for any purpose with attribution. The openregistry stdio bridge (server.mjs) is also released under CC-BY-4.0 for consistency. The hosted MCP service implementation is not open-source and is operated under separate commercial terms; see the Tiers section.

See NOTICE.md for third-party attribution.


OpenRegistry is a platform by Sophymarine.

© 2026 Sophymarine. OpenRegistry and Sophymarine are trademarks of Sophymarine. Documentation in this repository is published under CC-BY-4.0.

Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Categories
Sales & MarketingData & Analytics
Registryactive
TransportHTTP
UpdatedMay 17, 2026
View on GitHub

Related Sales & Marketing MCP Servers

View all →
Vibe Prospecting

explorium-ai/vibeprospecting-mcp

Power your chat with B2B data to create lead lists, research companies, personalize your outreach, and more.
22
Lead Enrichment API

io.github.compuute/lead-enrichment

Curated EU AI/Sec/DevTools/Fintech B2B leads, Claude-scored. MCP+x402. Free 250/mo.
Apollo Salesforce Mapper

dev.workers.selbyventurecap.cf-worker/apollo-salesforce-mapper

Apollo->Salesforce Lead mapper. No LLM. Strict-fail required fields. PASS/REPAIR/FAIL verdict.
Company Enrichment API

io.github.br0ski777/company-enrichment

Company firmographics from domain: name, socials, tech stack, emails, phone, address
Apollo

com.mcparmory/apollo

Search and enrich contact and company data from 210M+ people and 35M+ companies
25
Mcp Gtm Tech Stack Signal Scraper

mambalabsdev/mcp-gtm-tech-stack-signal-scraper

Detects a company CRM, sequencer, and marketing automation from its public website. Clay-ready.
1