Skip to main content
Glama
EdwardRadford

companies-house-mcp

get_company_profile

Read-onlyIdempotent

Retrieve a UK company's register entry: status, type, incorporation date, registered office, SIC codes, previous names, and filing deadlines. Also flags overdue filings, strike-off proposals, and whether charges exist.

Instructions

Get a company's register entry: name, status, type, incorporation date, registered office, business activities (SIC codes), previous names, and filing deadlines.

Read warnings first: it lists overdue accounts or confirmation statements, insolvency history, proposals to strike off, and a disputed or undeliverable registered office. has_charges says whether list_charges will find anything. One upstream request.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
company_numberYesCompanies House company number, e.g. 00445790 or SC123456. Spaces and missing leading zeros are fine. Get it from search_companies if you only have a name.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYes
typeYes
statusYes
accountsNo
warningsNoPlain-English red flags derived from the record: overdue filings, insolvency, a disputed, undeliverable or Companies House default registered office. Empty means none were found, not that the company has been vetted.
sic_codesNoDeclared business activities.
has_chargesNoTrue if any charge (secured lending) was ever registered.
dissolved_onNo
jurisdictionNo
status_detailNo
company_numberYes
previous_namesNo
incorporated_onNo
registered_officeNoOne line, as on the register.
confirmation_statementNo
has_insolvency_historyNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered structurally. The description adds genuine value beyond this: it flags that `warnings` must be read first and enumerates what it lists (overdue accounts, insolvency, strike-off proposals, disputed/undeliverable registered office), and discloses 'One upstream request' as a performance characteristic. This contextualizes behavior without contradicting the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact, purpose-built sentences: the first defines scope, the second delivers behavioral guidance (read warnings first, has_charges semantics), and the third is a one-line performance note. No filler, no repetition of annotation data, and the most important scoping information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The presence of an output schema relieves the description of explaining return values. For a single-parameter, read-only, idempotent tool with full annotation coverage, the description covers the key operational facts: what fields come back, which field to inspect first, the flag that gates a sibling call, and the upstream cost. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the company_number parameter carries a thorough schema description (format, example, tolerance for spaces/missing zeros, and routing to search_companies). With the schema doing the heavy lifting, the baseline of 3 applies. The tool description itself adds no parameter detail, but none is needed given the schema's completeness.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource pair ('Get a company's register entry') and enumerates the exact fields returned (name, status, type, incorporation date, SIC codes, previous names, filing deadlines). This specificity lets an agent distinguish it from siblings like list_filings, list_officers, and search_companies without opening any schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description references the sibling relationship: `has_charges` tells whether list_charges will find anything, implying when to chain to that tool. Additionally, the parameter description (in schema) routes agents to search_companies when only a name is known. This provides clear context, though it does not explicitly frame when-not-to-use scenarios or name exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.