OpenCorporates MCP — Global company registry data (free, no auth, rate limited)
Three tools with clear verb-noun naming (search_companies, get_company, search_officers) and reasonable descriptions (120-180 chars). All tools have input schemas with typed properties and descriptions. However, output schemas are completely undocumented, LLMs cannot predict response structure. Parameter descriptions lack constraints (e.g., country code format, jurisdiction code examples). No error handling guidance. Missing pagination details despite API returning paginated results. Descriptions include example values (e.g., 'Tesla', 'Elon Musk'), which LLMs tend to reuse literally.
Get full details for a specific company by jurisdiction and company number. Returns registration details, officers, filings, and industry codes. Example: get_company("us_de", "4483789") for a Delaware company.
Search global company registries by name. Returns company name, jurisdiction, status, type, incorporation date, and registered address. Covers 140+ jurisdictions worldwide. Example: search_companies("Tesla", country="us")
Search company officers and directors by name. Returns officer name, position, company, start/end dates, and nationality. Example: search_officers("Elon Musk")
Output schemas completely undocumented. LLMs cannot predict response structure (fields, types, nesting). formatCompany() and formatOfficer() functions exist but are not exposed in tool definitions.
Descriptions include concrete example values ('Tesla', 'Elon Musk', 'Acme Corp') that LLMs reuse literally instead of adapting to context. Should use enum constraints or format declarations instead.
Parameter descriptions lack format constraints. 'country' accepts 'ISO 2-letter country code' but no enum or pattern. 'jurisdiction' accepts codes like 'us_de' but format is undocumented. LLMs will hallucinate invalid values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
No error handling guidance. Errors thrown as raw messages ('OpenCorporates API error: 404') give LLMs no recovery path. Should categorize as retryable vs user-fixable and suggest next steps.
Pagination not documented. search_companies and search_officers return paginated results (total_pages, page, per_page in API response) but tool definitions do not expose page/limit parameters or explain pagination behavior.