opencorporates_search
Search OpenCorporates for company information using a company name query to support OSINT investigations and security research.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"query": "<query>"
},
"name": "opencorporates_search"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Company name to search for in OpenCorporates |
Implementation Reference
- src/tools/corporate.ts:13-25 (handler)The actual implementation of the OpenCorporates search logic, which executes an API request to OpenCorporates.
async searchCompanies(query: string): Promise<any[]> { const apiKey = process.env.OPENCORPORATES_API_KEY; // OpenCorporates works without a key but is very limited const url = `https://api.opencorporates.com/v0.4/companies/search?q=${encodeURIComponent(query)}${apiKey ? `&api_token=${apiKey}` : ""}`; try { const response = await fetch(url); const data = await response.json() as any; return data.results?.companies || []; } catch (error) { throw new McpError(ErrorCode.InternalError, `OpenCorporates error: ${(error as Error).message}`); } } - src/index.ts:709-718 (registration)Registration of the "opencorporates_search" tool in the MCP server.
server.tool( "opencorporates_search", { query: z.string().describe("Company name to search for in OpenCorporates") }, async ({ query }) => { const result = await corpClient.searchCompanies(query); return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }], }; } );