Verified UK company lookup & validation for AI agents — Companies House data, snapshot or live.
Three well-named, read-only tools with strong descriptions (150 - 250 chars each) that clearly state WHAT, WHEN, and WHY. All tools have input schemas with typed parameters and descriptions. Tool names follow verb_noun pattern (lookup_, validate_, search_). Descriptions are LLM-optimized and include dependency hints ('Set a free Companies House API key for real-time data'). Output schemas are not explicitly documented in the source, and error handling guidance is minimal. No parameter constraints (enums, ranges) visible. Overall solid foundation but lacks output schema documentation and structured error recovery patterns.
USE THIS to get a UK company's official registered details by its Companies House number — instead of recalling them, which models get wrong (invented names, wrong status). Returns the registered name, status, company type, incorporation date, registered-office postcode and SIC code from official Companies House data, or an honest 'not found'. By default a MONTHLY snapshot (status as of the dataset date; dissolved companies generally absent). Set a free Companies House API key (env COMPANIESWISE_CH_API_KEY) for real-time data incl. dissolved companies. UK-wide (England & Wales, Scotland, NI).
USE THIS to find a UK company's number from its name (reverse lookup) instead of guessing the number — returns companies matching your search words from official Companies House data (the monthly snapshot by default, or the live register when a Companies House API key is set).
USE THIS to check a UK company number is well-formed and identify its register/type before relying on it — never assume 8 characters are valid. Checks the format (8 digits, or a 2-letter prefix + 6 digits; there is NO check digit) and returns what the prefix denotes (e.g. SC = Scotland, NI = Northern Ireland, OC = LLP). Does NOT confirm the company exists — use lookup_company for that.
Output schemas not documented. Tool descriptions do not specify what fields are returned (e.g., lookup_company returns 'registered name, status, company type, incorporation date, registered-office postcode and SIC code' in prose, but no structured schema visible in code).
No input parameter constraints (enums, ranges, patterns). 'number' and 'query' parameters accept free-form strings with no validation hints. LLMs cannot infer valid formats (e.g., '00000006' vs 'SC123456' for company numbers).
Error handling lacks recovery guidance. src/server.ts catches errors and returns JSON with 'error' field, but does not categorize errors (retryable vs. user-fixable) or suggest next steps (e.g., 'Company not found. Try search_company() with a partial name.').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
search_company 'limit' parameter has no bounds. Default is 20, but no min/max documented. Unbounded numeric parameters risk LLMs passing absurd values (e.g., limit=999999).
No pagination guidance for search_company results. If >20 matches exist, tool returns only 20 but does not indicate whether more results are available or how to fetch them (offset, cursor, etc.).