EmailmoversMyDataHub docs
Browse the docs

Reference / MCP tool reference

Reference

Look up a company

lookup_company: Looks up one company by Companies House number, domain or name and returns its Companies House fields and compliance facts, and for a signed-in caller the contacts held there by job level.

Generated from the contractsView as Markdown

Looks up one company by Companies House number, domain or name and returns its Companies House fields and compliance facts, and for a signed-in caller the contacts held there by job level. It returns no contact details: use enrich_contact for one known person, or count_audience for everyone at the company. Free and needs no account, though the contacts held are a single company count that needs an account (null when signed out). Lawful basis is UK GDPR Article 6(1)(f) legitimate interests; email audiences include corporate subscribers only by default (PECR), so sole traders and ordinary partnerships are left out unless the toggle is changed.

PropertyValue
Tool namelookup_company
Position in tools/list18 of 22
CostFree
ScopeNone. Works without an account.
AnnotationsreadOnlyHint true, destructiveHint false, idempotentHint true, openWorldHint false
KindRead only; idempotent, not destructive, closed world
REST equivalentPOST /v1/companies/lookup

Input

The schema sets additionalProperties to false, so a member that is not listed is refused.

MemberTypeRequiredDescription
company_numberstringnoEight characters in upper case, such as 05046417 or SC123456.
domainstringno
namestringno
townstringnoNarrows a name search.

Example call

The params of a tools/call request:

{
  "name": "lookup_company",
  "arguments": {
    "company_number": "12345678"
  }
}

Output

The result carries structuredContent that matches this schema, and one line of text that leads with the number.

MemberTypeAlways presentDescription
match_confidencenumber (0 to 1)yes
dataset_versionstringyesThe immutable weekly build a count is bound to, such as 2026-W39. The last 52 stay queryable.
companyobjectyes
company.companies_house_numberstring or nullyes
company.namestringyes
company.statusstringyes
company.typestringyes
company.subscriber_classenum: ltd, plc, llp, scottish_partnership, public_body, charity_incorporated, sole_trader, ordinary_partnership, and 1 moreyes
company.incorporation_datestring (date) or nullyes
company.sic_2007array of SicCodeyes
company.employee_bandstring or nullyes
company.turnover_bandstring or nullyes
company.website_domainstring or nullyes
company.registered_officeobjectyes
contacts_heldinteger (0 or more) or under 10 or suppressed or nullyesContacts we hold at the company: a single-company count, so signed-in callers only (null otherwise) and logged. Trial callers see it rounded.
contacts_by_levelarray of LevelCount or nullyesThe same count by job level, most senior first, with Level not known last; null when signed out.
contacts_by_level[].levelstringyes
contacts_by_level[].contactsinteger (0 or more) or under 10 or suppressedyesA whole number; "under 10" when disclosure control withholds a small cell; or "suppressed" when secondary suppression hides a cell of 10 or more in a cross-tab or breakdown, so totals cannot be differenced. Anonymous and trial callers see cells rounded to the nearest 5.
disclosureDisclosureyesWhether these numbers are exact or protected: "under 10" cells, rounding to 5 and secondary suppression for anonymous and trial callers.
disclosure.levelenum: exact, roundedyesexact for authenticated paid callers; rounded for anonymous and trial callers, whose counts under 100 and every cell are rounded to the nearest 5.
disclosure.rounded_tointeger or nullyes5 when numbers are rounded; null when they are exact.
disclosure.secondary_suppressionbooleanyesTrue when cross-tab or breakdown cells of 10 or more were hidden as "suppressed" so totals cannot be differenced.
disclosure.notesarray of stringyes
complianceCompanyComplianceyesThe company facts of the compliance object, for results with no contact.
compliance.lawful_basisenum: legitimate_interests_art6_1_fyes
compliance.subscriber_classenum: ltd, plc, llp, scottish_partnership, public_body, charity_incorporated, sole_trader, ordinary_partnership, and 1 moreyes
compliance.corporate_subscriberbooleanyes
compliance.email_marketing_basisenum: pecr_corporate_subscriber, consent_requiredyes
compliance.subscriber_evidenceobjectyes
compliance.provenanceobjectyes
compliance.attributionstring or nullyes
credits_charged0yes

Errors

A failed call returns isError true. The text content leads with the sentence a person acts on, then the whole problem as JSON, with code, detail, next_step and did_you_mean. A 401 and a step-up 403 are answered at HTTP level so the client can start authorisation. See Errors.