mcp-opencorporates
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-opencorporatessearch company 'Acme Corp' in Delaware"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-opencorporates
MCP server for OpenCorporates — the world's largest open database of companies. Search companies, officers, and filing history across 140+ jurisdictions worldwide.
Install
npx -y @gonzih/mcp-opencorporatesRelated MCP server: mcp-open-corporates
Claude Desktop config
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"opencorporates": {
"command": "npx",
"args": ["-y", "@gonzih/mcp-opencorporates"],
"env": {
"OPENCORPORATES_API_KEY": "your_api_key_here"
}
}
}
}The OPENCORPORATES_API_KEY is optional — without it, the free tier is used (rate-limited). Get an API key at opencorporates.com.
Tools
search_companies
Search companies by name across all jurisdictions or within a specific one.
Parameter | Type | Required | Description |
| string | yes | Company name or search query |
| string | no | Filter by jurisdiction (e.g. |
| number | no | Page number for pagination |
get_company
Get full details for a company by jurisdiction code and registration number.
Parameter | Type | Required | Description |
| string | yes | Jurisdiction code (e.g. |
| string | yes | Company registration number |
search_officers
Search for officers (directors, shareholders, agents) across all companies.
Parameter | Type | Required | Description |
| string | yes | Officer name or search query |
| string | no | Filter by jurisdiction |
| number | no | Page number for pagination |
get_company_officers
Get all officers for a specific company.
Parameter | Type | Required | Description |
| string | yes | Jurisdiction code |
| string | yes | Company registration number |
| number | no | Page number for pagination |
get_company_filings
Get the filing history for a company.
Parameter | Type | Required | Description |
| string | yes | Jurisdiction code |
| string | yes | Company registration number |
| number | no | Page number for pagination |
Jurisdiction codes
Common codes:
Code | Jurisdiction |
| Delaware, USA |
| California, USA |
| New York, USA |
| United Kingdom |
| Germany |
| France |
| Australia |
| Ontario, Canada |
Full list: opencorporates.com/jurisdictions
API key setup
The free tier works without an API key but is rate-limited. For higher limits:
Sign up at opencorporates.com
Set
OPENCORPORATES_API_KEYenv var in your Claude Desktop config
API reference
Full API documentation: api.opencorporates.com/documentation/API-Reference
License
MIT
Available Tools
5 toolsget_companyA
Get full details for a specific company by jurisdiction code and company number. Returns name, status, incorporation date, registered address, officers, and filings.
| Name | Required | Description | Default |
|---|---|---|---|
| jurisdiction_code | Yes | Jurisdiction code (e.g. 'us_de', 'gb', 'de') | |
| company_number | Yes | Company registration number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool returns company details (name, status, etc.) which implies a read operation. However, it does not explicitly state read-only, authentication needs, or potential limitations. The listed return fields add moderate transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with action and resource, followed by return fields. No extraneous information. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 2 well-defined parameters (100% schema coverage), no output schema, and no annotations, the description provides essential information: purpose, required identifiers, and typical return fields. It could mention error handling or potential missing data, but the information is sufficient for a simple tool with clear siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents both parameters well. The tool description echoes the parameter purpose ('by jurisdiction code and company number') but doesn't add new syntax or meaning beyond the schema. The description compensates slightly by linking parameters to the returned data.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and specifies the resource as 'full details for a specific company' with precise identifiers (jurisdiction code and company number). It lists key return fields, distinguishing itself from sibling tools like get_company_filings and get_company_officers which are more focused.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description instructs when to use the tool (by providing jurisdiction_code and company_number). It implicitly differentiates from sibling search tools and sub-detail tools, but doesn't explicitly state alternatives or when not to use it. Overall context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_company_filingsA
Get the filing history for a specific company. Returns filings with dates, types, and descriptions.
| Name | Required | Description | Default |
|---|---|---|---|
| jurisdiction_code | Yes | Jurisdiction code (e.g. 'us_de', 'gb', 'de') | |
| company_number | Yes | Company registration number | |
| page | No | Page number for pagination (default 1) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It states return content but omits details like read-only nature (likely safe), pagination via the 'page' parameter, or error conditions. This is adequate but lacks depth for a tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no fluff. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains return format but omits pagination behavior and error handling. For a simple list tool, it's minimally viable but could include details on the page parameter's effect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the existing parameter descriptions are sufficient. The tool description adds no extra meaning beyond what's in the input schema, meeting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'filing history for a specific company', and explicitly mentions returned fields (dates, types, descriptions). This distinguishes it from siblings like get_company (single company info) and get_company_officers (officers list).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for obtaining filing history of a specific company, but no explicit when-not or alternative tools are mentioned. An agent must infer from tool names alone; no guidance on when to prefer this over search_companies or get_company is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_company_officersA
Get all officers for a specific company. Returns current and historical officers with positions and dates.
| Name | Required | Description | Default |
|---|---|---|---|
| jurisdiction_code | Yes | Jurisdiction code (e.g. 'us_de', 'gb', 'de') | |
| company_number | Yes | Company registration number | |
| page | No | Page number for pagination (default 1) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It states that it returns current and historical officers with positions and dates, indicating a read operation. However, it does not mention pagination behavior, rate limits, or prerequisites beyond the required parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the tool's purpose and return content, with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple input (3 parameters) and no output schema, the description covers the main return content (current and historical officers with positions and dates). It lacks details on pagination handling, which is relevant given the 'page' parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds no parameter-specific details beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets all officers for a specific company. This distinguishes it from siblings like 'search_officers' (which searches across companies) and 'get_company' (which gets company details).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context: for a specific company using jurisdiction and company number. However, it does not explicitly exclude cases or compare with alternatives like 'search_officers' or 'get_company_filings'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_companiesB
Search companies by name in the OpenCorporates database. Returns matching companies with name, number, jurisdiction, status, incorporation date, and registered address.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Company name or search query | |
| jurisdiction_code | No | Jurisdiction code to filter results (e.g. 'us_de' for Delaware, 'gb' for UK, 'de' for Germany) | |
| page | No | Page number for pagination (default 1) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully convey behavioral traits. It only mentions that matching companies are returned, omitting details on pagination, data freshness, rate limits, or side effects. The list of return fields adds some value but insufficient transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, with two sentences that efficiently convey the primary action and return fields. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of an output schema, the description adequately lists return fields. However, it misses details on pagination behavior (the 'page' parameter is present but not explained) and does not address error handling or empty results. It is minimally adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters are described in the input schema (100% coverage). The description adds marginal context by linking the search action to the 'q' parameter, but does not provide additional semantics beyond what the schema already offers. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches for companies by name and lists the fields returned. However, it does not explicitly differentiate itself from sibling tools like get_company or search_officers, leaving the agent to infer distinctions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor any prerequisites or exclusions. The description only states the search action and filter options without context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_officersB
Search for officers (directors, shareholders, agents) across all companies in OpenCorporates.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Officer name or search query | |
| jurisdiction_code | No | Jurisdiction code to filter results (e.g. 'us_de', 'gb') | |
| page | No | Page number for pagination (default 1) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the purpose. It does not disclose behavioral traits such as authentication requirements, rate limits, result format, or error handling. The description is too brief for a search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, very concise and to the point. However, it could be slightly more detailed without losing conciseness, e.g., mentioning the return type. Still, it earns its place without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description is incomplete. It does not explain what the search returns, how results are structured, or provide usage context beyond the basic purpose. The tool is simple, but more context is needed for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds no additional meaning beyond the schema. The baseline of 3 is appropriate as it does not enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'search', the resource 'officers', and provides specific types (directors, shareholders, agents) and scope 'across all companies'. It distinguishes from siblings like get_company_officers which returns officers for a specific company.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for global officer search, but it does not explicitly state when to use it vs. alternatives like get_company_officers. No when-not-to-use or prerequisite guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v0.1.1- First observed
get_company - First observed
get_company_filings - First observed
get_company_officers - First observed
search_companies - First observed
search_officers
TDQS
Scored across 5 tools
Each tool targets a distinct aspect: single company, filings, officers, company search, and officer search. No overlap in functionality.
All tools follow a consistent verb_noun pattern: get_company, get_company_filings, get_company_officers, search_companies, search_officers. Perfectly uniform.
5 tools is well-scoped for a corporate data lookup server, covering both retrieval and search without being excessive.
The tool set covers the main operations for corporate data: retrieve a company, its filings and officers, and search across companies and officers. No obvious gaps for the domain.
Maintenance
Related MCP Connectors
OpenCorporates MCP — Global company registry data (free, no auth, rate limited)
Official company and director data: search, profiles, filings, and name normalization.
Live data from 27 official national company registries. Unmodified. For KYB and due diligence.
B2B data enrichment for 375M+ companies: legal entities, corporate hierarchies, and contacts.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables AI assistants to search and retrieve UK Companies House data including company profiles, officers, and filing history via the official API.4701MIT
- AlicenseNot gradedqualityCmaintenanceOpenCorporates MCP provides free, no-auth access to global company registry data with rate limiting, enabling AI agents to look up company information.9MIT
- AlicenseAqualityBmaintenanceExposes 29 official business-registry actors as MCP tools for KYC/AML, beneficial-owner (UBO), credit-risk and adverse-media workflows across 11 jurisdictions (EU, US, UAE). Sourced via Apify; pay-per-result.386MIT
- AlicenseNot gradedqualityCmaintenanceEnables querying UK company data including search, profiles, officers, filings, and persons with significant control via Companies House API.70MIT