Server definition
- Hash
- sha256:c3d85a70a2119dc3f82281f4f8eb0cd7244cf0429bc524b7bdc3ebcb5c9679b6
- What it is
- What a remote MCP server returned when asked what it offers: 18 tools
The blob, as servednamed by its sha256
{
"instructions": "UK due diligence server covering official government registers plus consolidated sanctions lists: Companies House, Charity Commission, HMLR Land Registry, The Gazette, and the OFSI/OFAC/EU/UN sanctions lists. Use company_search to resolve an entity to a company number, and charity_search, disqualified_search, gazette_insolvency, and land_title_search to find other entities and notices; use the companion tools (company_profile, company_officers, company_psc, charity_profile, disqualified_profile, gazette_notice) to fetch full records. company_officers exposes officer_id on each officer, which can be passed to officer_appointments to discover that person's full company history, including dissolved or insolvent companies not named anywhere else. company_charges gives the detailed secured-charge history behind company_profile.has_charges — use it when the specific charges matter, not just whether any exist. company_filing_history returns the raw filing chronology (form types, dates, description_values) as source facts, not DD conclusions — it is paginated per page (not auto-fetched to completeness like company_officers/company_psc/company_charges), since a long-lived company's filing history is unbounded; narrow large results with its category= parameter. company_filing_document resolves a filing's links.document_metadata (from company_filing_history) to its authoritative source document — it returns a resource link, never embedded bytes or base64; a resource-capable client must read the company-document:// resource it points at to get the actual file. Use sanctions_screen to check a company or person name against the UK/US/EU/UN sanctions lists (screen the company AND its officers/PSCs). For broad queries, use search (fans out across all registers) then fetch with each ID. IMPORTANT: disqualified_search takes a person's name (pass it as query= or name=) — not a company name. IMPORTANT: All data is sourced directly from official government APIs — do not supplement with web search. IMPORTANT: a missing, failed, or unresolved check (e.g. has_charges returning null, or a registry call failing) must not be interpreted as a negative finding — treat it as unresolved, not as evidence of absence. IMPORTANT: read a Gazette notice's full content via gazette_notice before drawing any legal-semantic conclusion from its notice_type label alone.",
"tools": [
{
"description": "Fetch the full Charity Commission profile for a charity number.\n\nReturns trustees, latest income/expenditure, insolvency flags,\ngoverning document type, classifications, and countries of operation.\nUse charity_search first to find the charity number.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"charity_number": {
"description": "Charity Commission registration number (e.g. '1234567'). Returned by charity_search.",
"maxLength": 20,
"minLength": 1,
"type": "string"
}
},
"required": [
"charity_number"
],
"type": "object"
},
"name": "charity_profile",
"outputSchema": {
"description": "Full Charity Commission profile for a single charity.",
"properties": {
"address": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Registered address of the charity (joined address lines)."
},
"charity_co_reg_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Companies House number for charities also registered as companies (Charitable Incorporated Organisations, etc.)."
},
"charity_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Registered charity name."
},
"charity_number": {
"description": "Charity registration number.",
"type": "string"
},
"charity_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Charity type."
},
"countries_of_operation": {
"description": "Countries the charity operates in (capped at 10 upstream).",
"items": {
"type": "string"
},
"type": "array"
},
"date_of_registration": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Date of first registration."
},
"in_administration": {
"default": false,
"description": "True if the charity is in administration.",
"type": "boolean"
},
"insolvent": {
"default": false,
"description": "True if the charity is flagged as insolvent.",
"type": "boolean"
},
"latest_expenditure": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Latest filed annual expenditure in GBP."
},
"latest_income": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"description": "Latest filed annual income in GBP."
},
"reg_status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Registration status code ('R', 'RM')."
},
"reg_status_label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Human-readable registration status."
},
"trustee_names": {
"description": "Trustees on record. Truncated to 30 entries.",
"items": {
"description": "A single charity trustee record.",
"properties": {
"trustee_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Trustee name."
}
},
"type": "object"
},
"type": "array"
},
"trustee_names_total": {
"default": 0,
"description": "Total trustees upstream before truncation.",
"type": "integer"
},
"trustee_names_truncated": {
"default": false,
"description": "True if the trustee list was truncated.",
"type": "boolean"
},
"who_what_where": {
"description": "Who/What/Where classification entries. The list may be truncated truncated to 50 entries.",
"items": {
"description": "Who/What/Where classification descriptor.",
"properties": {
"classification_desc": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Classification description text."
},
"classification_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Classification axis: 'What', 'Who', or 'Where'."
}
},
"type": "object"
},
"type": "array"
},
"who_what_where_total": {
"default": 0,
"description": "Total classification entries upstream before truncation.",
"type": "integer"
},
"who_what_where_truncated": {
"default": false,
"description": "True if the classification list was truncated.",
"type": "boolean"
}
},
"required": [
"charity_number"
],
"type": "object"
}
},
{
"description": "Search the Charity Commission register of England and Wales by name or keyword.\n\nReturns matching charities with registration number, status, and\nregistration date. Use charity_profile for full details once you\nhave the charity number. The upstream `searchCharityName` endpoint\nreturns the full list in one shot — pagination is applied\nclient-side via offset/limit. A query that matches nothing is a\nsuccessful empty result (`charities: []`), not an error — the\nupstream endpoint signals \"no matches\" with an HTTP 404, which is\ntranslated back into an empty result here rather than surfaced as\na not-found failure.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"limit": {
"default": 20,
"description": "Max items to return in this page. Default 20; raise to 100 for bulk views.",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"offset": {
"default": 0,
"description": "Number of items to skip before this page. Default 0.",
"maximum": 10000,
"minimum": 0,
"type": "integer"
},
"query": {
"description": "Charity name or keyword to search for",
"maxLength": 200,
"minLength": 2,
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "charity_search",
"outputSchema": {
"description": "Paginated result of a Charity Commission name search.",
"properties": {
"charities": {
"description": "Matching charity records.",
"items": {
"description": "A single hit in a Charity Commission name search.",
"properties": {
"charity_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Registered charity name."
},
"charity_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Charity Commission registration number. Pass to charity_profile for the full record."
},
"date_of_registration": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Date of first registration (ISO YYYY-MM-DD)."
},
"reg_status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Registration status code as returned upstream: 'R' registered, 'RM' removed."
},
"reg_status_label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Human-readable registration status ('Registered', 'Removed')."
}
},
"type": "object"
},
"type": "array"
},
"has_more": {
"description": "True if more items may exist beyond this page. Re-call with offset=offset+returned to continue.",
"type": "boolean"
},
"limit": {
"description": "Max items requested for this page.",
"type": "integer"
},
"offset": {
"description": "Number of items skipped before this page (client-side).",
"type": "integer"
},
"query": {
"description": "Search term applied.",
"type": "string"
},
"returned": {
"description": "Items actually returned on this page.",
"type": "integer"
},
"total": {
"description": "Total matches returned by upstream.",
"type": "integer"
}
},
"required": [
"query",
"total",
"offset",
"limit",
"returned",
"has_more"
],
"type": "object"
}
},
{
"description": "Fetch the complete Companies House charge history for a company.\n\nReturns every registered charge (secured debt) — current and\nhistoric — with status, dates, secured parties, and what each\ncharge covers (fixed/floating/negative-pledge flags and any\nfree-text particulars). Satisfaction is represented as\nsatisfied_on plus a charge-satisfaction filing entry, not a\nseparate 'release' record. company_profile.has_charges is a\nTrue/False/unknown summary derived from this same data; use this\ntool when the specific charges matter, not just whether any exist.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"company_number": {
"description": "Companies House company number (8 digits, e.g. '03782379'). Returned by company_search.",
"maxLength": 10,
"minLength": 1,
"type": "string"
}
},
"required": [
"company_number"
],
"type": "object"
},
"name": "company_charges",
"outputSchema": {
"description": "Complete charge history for a company.",
"properties": {
"charges": {
"description": "Every charge, current and historic.",
"items": {
"description": "A single Companies House charge (secured debt registration).\n\nSatisfaction is represented via satisfied_on and a transactions[]\nentry with filing_type == 'charge-satisfaction' — there is no\nseparate 'release' concept upstream, so none is invented here.",
"properties": {
"charge_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Human-readable charge ID (e.g. '063334690005'). Absent on some older charges (e.g. pre-2006 debentures) — use charge_number as the reliable identifier."
},
"charge_number": {
"description": "Sequential charge number for this company. Always present, unlike charge_code.",
"type": "integer"
},
"classification": {
"anyOf": [
{
"description": "Charge type classification (e.g. 'A registered charge', 'Debenture').",
"properties": {
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Human-readable charge type (e.g. 'A registered charge', 'Debenture')."
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Classification type as returned by CH (e.g. 'charge-description')."
}
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Charge type classification."
},
"created_on": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Date the charge was created (ISO YYYY-MM-DD)."
},
"delivered_on": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Date the charge was delivered/registered (ISO YYYY-MM-DD)."
},
"links": {
"additionalProperties": true,
"description": "Upstream relational links, e.g. links.self = charge record path.",
"type": "object"
},
"particulars": {
"anyOf": [
{
"description": "What a charge covers — free text and/or boolean flags.\n\nField presence varies by charge age/type: pre-2006 debentures often\ncarry only type/description with no boolean flags; MR01-style charges\n(2013+) often carry only the boolean flags with no free text. Every\nfield is optional — do not assume any subset is always present.",
"properties": {
"contains_fixed_charge": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "True if the charge includes a fixed charge."
},
"contains_floating_charge": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "True if the charge includes a floating charge."
},
"contains_negative_pledge": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "True if the charge includes a negative pledge (restricting further charges)."
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Free-text description of what the charge covers, where filed."
},
"floating_charge_covers_all": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "True if the floating charge covers the whole undertaking/all assets."
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Particulars entry type as returned by CH (e.g. 'brief-description', 'short-particulars')."
}
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "What the charge covers — free text and/or boolean flags, depending on charge age/type."
},
"persons_entitled": {
"description": "Secured parties named on this charge.",
"items": {
"description": "A secured party named on a charge.",
"properties": {
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Name of the person or entity entitled under this charge, as filed."
}
},
"type": "object"
},
"type": "array"
},
"satisfied_on": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Date the charge was satisfied, or null if still live."
},
"secured_details": {
"anyOf": [
{
"description": "Free-text 'amount secured' description.\n\nSeen only on older/pre-2006 charge filings — absent on newer\nMR01-style charges, which express scope entirely through\nChargeParticulars' boolean flags instead. Optional, not assume-present.",
"properties": {
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Free-text description of the amount/obligation secured."
},
"type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Secured-details entry type as returned by CH (e.g. 'amount-secured')."
}
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Free-text amount-secured description. Present only on some older charges."
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Charge status as returned upstream (e.g. 'outstanding', 'part-satisfied', 'fully-satisfied')."
},
"transactions": {
"description": "Filing events against this charge — creation, satisfaction, etc. Satisfaction is represented here (filing_type='charge-satisfaction') and via satisfied_on, not a separate 'release' concept.",
"items": {
"description": "A filing event against a charge (creation, satisfaction, etc.).",
"properties": {
"delivered_on": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Date this filing was delivered (ISO YYYY-MM-DD)."
},
"filing_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filing type (e.g. 'create-charge-with-deed', 'charge-satisfaction')."
},
"links": {
"additionalProperties": true,
"description": "Upstream relational links, e.g. links.filing = filing-history path.",
"type": "object"
}
},
"type": "object"
},
"type": "array"
}
},
"required": [
"charge_number"
],
"type": "object"
},
"type": "array"
},
"company_number": {
"description": "Companies House company number.",
"type": "string"
},
"part_satisfied_count": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Upstream count of part-satisfied charges, or null if not provided."
},
"satisfied_count": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Upstream count of satisfied charges, or null if not provided."
},
"total_count": {
"description": "Total charges returned.",
"type": "integer"
},
"unfiltered_count": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Upstream unfiltered charge count, or null if not provided."
}
},
"required": [
"company_number",
"total_count"
],
"type": "object"
}
},
{
"description": "Resolve a filing's document_metadata link to its authoritative source document.\n\nReturns a resource_link (never embedded bytes, never base64) pointing\nat a company-document:// MCP resource — fetch it via resources/read\nto get the actual PDF. This tool only reads metadata (category,\npages, available content types, byte size); it never downloads the\ndocument itself. Use company_filing_history first to find a filing's\ndocument_metadata URL.\n\nRequires a resource-capable MCP client to retrieve the actual bytes\n— a tool-only client can see this result's metadata (company,\ncategory, page count, size) but cannot obtain the file through this\ntool call alone.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"document_metadata_url": {
"description": "The document_metadata URL from a filing's links.document_metadata (returned by company_filing_history) — pass it through verbatim, not a document_id. Must be an exact https://document-api.company-information.service.gov.uk/document/{id} URL.",
"maxLength": 500,
"type": "string"
},
"mime_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Which content representation to select, e.g. 'application/pdf'. Omit when the document has only one representation (the near-universal case) — it is auto-selected. Required if the document has more than one; omitting it in that case returns a validation error listing the choices."
}
},
"required": [
"document_metadata_url"
],
"type": "object"
},
"name": "company_filing_document",
"outputSchema": null
},
{
"description": "Fetch one page of a company's Companies House filing chronology.\n\nReturns the raw source facts for each filing — transaction ID,\nform type/category, dates, and the description_values CH uses to\nrender its own text — as delivered upstream, not interpreted into\nDD conclusions. links.document_metadata on each filing is the\nidentifier a future document-retrieval tool would need; no\ndocument content is fetched here.\n\nUnlike company_officers/company_psc/company_charges, this does\nNOT auto-fetch every page — a long-lived company's filing history\nis unbounded in practice (a decades-old PLC can carry thousands\nof filings). total_count/returned/has_more are always reported\ntruthfully for whatever page and category filter was requested;\nnothing is silently truncated. Narrow with category= for a\nspecific slice (e.g. category='mortgage' for charge-related\nfilings, category='insolvency' for administration/liquidation\nfilings) — a note is included when an unfiltered history is large.\n\nA company_number that doesn't resolve to any company returns a\nstructured not_found error, distinct from a genuine zero-filing\nresult — Companies House's filing-history endpoint alone cannot\ntell these apart, so existence is confirmed separately when the\nresult would otherwise be empty.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"category": {
"anyOf": [
{
"maxLength": 200,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filter by CH filing category — comma-separated for multiple, e.g. 'mortgage' or 'mortgage,officers'. Omit for all categories. Common values: accounts, confirmation-statement, officers, address, capital, mortgage, persons-with-significant-control, incorporation, insolvency, resolution, annual-return, change-of-name, change-of-constitution, gazette, miscellaneous."
},
"company_number": {
"description": "Companies House company number (8 digits, e.g. '03782379'). Returned by company_search.",
"maxLength": 10,
"minLength": 1,
"type": "string"
},
"items_per_page": {
"default": 100,
"description": "Results per page (Companies House caps at 100 regardless of a higher value). Default 100.",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"start_index": {
"default": 0,
"description": "Pagination offset. Default 0. Re-call with start_index=start_index+returned while has_more is true.",
"minimum": 0,
"type": "integer"
}
},
"required": [
"company_number"
],
"type": "object"
},
"name": "company_filing_history",
"outputSchema": {
"description": "One page of Companies House filing-history results for a company.\n\nNot an auto-fetch-all collection like officers/PSC/charges — a\ncompany's filing history is unbounded in practice (a long-lived PLC\ncan carry thousands of filings, multiple megabytes serialized), so\npagination is exposed to the caller rather than hidden. Re-call with\nstart_index=start_index+returned while has_more is true.",
"properties": {
"category": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The category filter applied to this query, or null if unfiltered."
},
"company_number": {
"description": "Companies House company number.",
"type": "string"
},
"filing_history_status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Upstream filing-history status (e.g. 'filing-history-available')."
},
"filings": {
"description": "Filings on this page.",
"items": {
"description": "A single Companies House filing-history entry.\n\nresolutions/associated_filings/annotations are nested filing-like\ndicts (their own category/type/description/description_values) but\ncarry no transaction_id or links of their own — not independently\ndocument-retrievable — so they are passed through raw rather than\nmodeled. subcategory is usually a string but has been observed as a\nlist of strings upstream (e.g. [\"compulsory\", \"court-order\"]);\npreserved as whichever shape upstream sent, not normalized.",
"properties": {
"action_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Effective date of the underlying event, where distinct from the filing date (e.g. a change filed weeks after it took effect)."
},
"annotations": {
"description": "CH clarification notes attached to this filing after the fact.",
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
"associated_filings": {
"description": "Other filings bundled with this one (e.g. a same-day statement of capital).",
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
"barcode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "CH barcode for this filing. Absent on many older filings."
},
"category": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filing category (e.g. 'accounts', 'mortgage', 'officers', 'insolvency', 'resolution')."
},
"date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filing/delivery date (ISO YYYY-MM-DD)."
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filing description slug as returned by CH (e.g. 'incorporation-company'), not prose."
},
"description_values": {
"additionalProperties": true,
"description": "Free-form values referenced by the description slug. Keys vary entirely by filing type.",
"type": "object"
},
"links": {
"additionalProperties": true,
"description": "Upstream relational links. links.self is always present; links.document_metadata (Document API URL) is present on most but not all filings — absent on some pre-2008 filings.",
"type": "object"
},
"pages": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Page count of the underlying filed document (not filing-history pagination)."
},
"paper_filed": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "True if filed on paper rather than electronically."
},
"resolutions": {
"description": "Nested resolution filings, where this entry is a RESOLUTIONS bundle.",
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
"subcategory": {
"anyOf": [
{
"type": "string"
},
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Filing subcategory as returned upstream — usually a string, occasionally a list of strings."
},
"transaction_id": {
"description": "Companies House filing transaction ID. Path segment in links.self.",
"type": "string"
},
"type": {
"description": "CH filing form code (e.g. 'AA', 'CS01', 'MR04', 'CH01', 'RESOLUTIONS').",
"type": "string"
}
},
"required": [
"transaction_id",
"type"
],
"type": "object"
},
"type": "array"
},
"has_more": {
"description": "True if start_index + returned < total_count.",
"type": "boolean"
},
"items_per_page": {
"description": "Page size actually used (CH caps at 100 regardless of a higher request).",
"type": "integer"
},
"note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Advisory note, e.g. suggesting a category filter when total_count is large and no category was applied. Informational only — never a truncation."
},
"returned": {
"description": "Filings returned on this page.",
"type": "integer"
},
"start_index": {
"description": "Pagination offset used for this page.",
"type": "integer"
},
"total_count": {
"description": "Total filings matching this query (across all pages).",
"type": "integer"
}
},
"required": [
"company_number",
"total_count",
"start_index",
"items_per_page",
"returned",
"has_more"
],
"type": "object"
}
},
{
"description": "Fetch officers for a Companies House company number.\n\nReturns directors, secretaries, and other officers with appointment\ndates, nationality, and country of residence. Resigned officers are\nexcluded by default; set include_resigned=true for historical DD.\nPagination is handled internally.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"company_number": {
"description": "Companies House company number (8 digits, e.g. '03782379'). Returned by company_search.",
"maxLength": 10,
"minLength": 1,
"type": "string"
},
"include_resigned": {
"default": false,
"description": "Include resigned/historic officers. Default false for backwards-compatible current-officer queries.",
"type": "boolean"
},
"items_per_page": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Ignored — pagination is handled internally. Only accepted to avoid call failures."
},
"start_index": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Ignored — pagination is handled internally. Only accepted to avoid call failures."
}
},
"required": [
"company_number"
],
"type": "object"
},
"name": "company_officers",
"outputSchema": {
"description": "List of officers for a given company.",
"properties": {
"company_number": {
"description": "Companies House company number.",
"type": "string"
},
"high_appointment_count_flag": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Number of active officers with 10+ total appointments, or null if appointment counts were not fetched. Non-zero values are a nominee/phoenix director risk signal."
},
"include_resigned": {
"description": "Whether resigned officers were included in this result.",
"type": "boolean"
},
"officers": {
"description": "Officer records.",
"items": {
"description": "A single officer (director, secretary, etc.) of a company.",
"properties": {
"address": {
"additionalProperties": true,
"description": "Officer correspondence address.",
"type": "object"
},
"appointed_on": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Date of appointment (ISO YYYY-MM-DD)."
},
"appointment_count": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Total number of other active appointments held by this officer, or null if unavailable. The Companies House officer list endpoint does not include this count; a separate per-officer call is required to populate it."
},
"country_of_residence": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Declared country of residence."
},
"date_of_birth": {
"additionalProperties": true,
"description": "Partial date of birth (month/year) as returned by CH.",
"type": "object"
},
"links": {
"additionalProperties": true,
"description": "Upstream relational links (e.g. officer profile URL).",
"type": "object"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Officer name as recorded at CH."
},
"nationality": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Declared nationality."
},
"occupation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Declared occupation."
},
"officer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Companies House officer ID, extracted from links.officer.appointments. Pass to officer_appointments to discover this person's full appointment history across companies, including dissolved or insolvent ones."
},
"officer_role": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Officer role (e.g. 'director', 'secretary', 'llp-member')."
},
"resigned_on": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Date of resignation if resigned, otherwise null."
}
},
"type": "object"
},
"type": "array"
},
"total": {
"description": "Total officers returned (filtered by include_resigned).",
"type": "integer"
}
},
"required": [
"company_number",
"include_resigned",
"total"
],
"type": "object"
}
},
{
"description": "Fetch the full Companies House profile for a company number.\n\nReturns status, registered address, SIC codes, filing compliance\n(overdue accounts and confirmation statement flags), and whether\nthe company has outstanding charges. Use company_search first to\nfind the company number.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"company_number": {
"description": "Companies House company number (8 digits, e.g. '03782379'). Returned by company_search.",
"maxLength": 10,
"minLength": 1,
"type": "string"
}
},
"required": [
"company_number"
],
"type": "object"
},
"name": "company_profile",
"outputSchema": {
"description": "Full Companies House profile for a single company number.",
"properties": {
"accounts": {
"description": "Accounts filing status and due dates.",
"properties": {
"last_accounts_made_up_to": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "ISO date the most recent filed accounts were made up to."
},
"next_due": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "ISO date the next set of accounts is due."
},
"overdue": {
"default": false,
"description": "True if accounts are past their due date at Companies House.",
"type": "boolean"
}
},
"type": "object"
},
"company_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Registered company name."
},
"company_number": {
"description": "Companies House company number.",
"type": "string"
},
"company_status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Current status (active, dissolved, in liquidation, etc.)."
},
"company_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Companies House company type code."
},
"confirmation_statement": {
"description": "Confirmation statement filing status and next due date.",
"properties": {
"next_due": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "ISO date the next confirmation statement is due."
},
"overdue": {
"default": false,
"description": "True if the confirmation statement is past its due date.",
"type": "boolean"
}
},
"type": "object"
},
"date_of_creation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Incorporation date (ISO YYYY-MM-DD)."
},
"has_charges": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"description": "True if the company has at least one outstanding or part-satisfied charge (secured debt) — not yet fully discharged. False if every charge on record is fully satisfied, or there are none. Null if the charges check could not be completed, or if a charge was returned with an unrecognized status that can't be confidently classified. Use company_charges for the full charge-by-charge detail."
},
"registered_office_address": {
"additionalProperties": true,
"description": "Registered office address as returned by Companies House.",
"type": "object"
},
"sic_codes": {
"description": "Standard Industrial Classification codes.",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"company_number"
],
"type": "object"
}
},
{
"description": "Fetch Persons with Significant Control (beneficial ownership) for a company.\n\nReturns PSC entries with natures of control, nationality, and\ncountry of residence. Flags overseas corporate PSC entries as a\nbeneficial ownership risk signal. Returns an explanatory note for\nwidely-held PLCs with no registrable PSC.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"company_number": {
"description": "Companies House company number (8 digits, e.g. '03782379'). Returned by company_search.",
"maxLength": 10,
"minLength": 1,
"type": "string"
}
},
"required": [
"company_number"
],
"type": "object"
},
"name": "company_psc",
"outputSchema": {
"description": "List of Persons with Significant Control for a company.",
"properties": {
"company_number": {
"description": "Companies House company number.",
"type": "string"
},
"note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Explanatory note when total=0. Typical for widely-held listed PLCs where no single person or entity holds 25%+ of shares or voting rights."
},
"overseas_corporate_psc_flag": {
"default": 0,
"description": "Number of corporate PSCs registered outside the UK. Non-zero values indicate an offshore beneficial ownership chain.",
"type": "integer"
},
"psc": {
"description": "Persons with Significant Control records.",
"items": {
"description": "A single Person with Significant Control record.",
"properties": {
"address": {
"additionalProperties": true,
"description": "PSC correspondence address.",
"type": "object"
},
"ceased_on": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Date PSC status ceased, if applicable."
},
"country_of_residence": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Declared country of residence for individual PSCs."
},
"date_of_birth": {
"additionalProperties": true,
"description": "Partial date of birth (month/year) for individual PSCs as returned by CH.",
"type": "object"
},
"identification": {
"additionalProperties": true,
"description": "Identification block for corporate PSCs: place_registered, registration_number, country_registered, legal_authority, etc.",
"type": "object"
},
"kind": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Upstream 'kind' (e.g. 'individual-person-with-significant-control', 'corporate-entity-person-with-significant-control')."
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "PSC name (individual or entity)."
},
"nationality": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Declared nationality for individual PSCs."
},
"natures_of_control": {
"description": "List of 'nature of control' descriptors (e.g. 'ownership-of-shares-75-to-100-percent'). Individual entries may be truncated to 300 characters each.",
"items": {
"type": "string"
},
"type": "array"
},
"notified_on": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Date notified as a PSC (ISO YYYY-MM-DD)."
}
},
"type": "object"
},
"type": "array"
},
"total": {
"description": "Total PSC entries returned for this company.",
"type": "integer"
}
},
"required": [
"company_number",
"total"
],
"type": "object"
}
},
{
"description": "Search the Companies House register by company name or keyword.\n\nReturns a paginated list of matching companies with name, number,\nstatus, SIC codes, incorporation date, and registered address.\nUse company_profile for the full record once you have the company\nnumber. Re-call with start_index=start_index+items_per_page to\nfetch the next page.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"company_status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filter by company status (e.g. 'active', 'dissolved'). Omit to search all."
},
"company_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filter by company type (e.g. 'ltd', 'llp'). Omit to search all."
},
"items_per_page": {
"default": 20,
"description": "Number of results to return (max 100). Default 20.",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"query": {
"description": "Company name or keyword to search for",
"maxLength": 200,
"minLength": 2,
"type": "string"
},
"start_index": {
"default": 0,
"description": "Pagination offset. Default 0.",
"maximum": 10000,
"minimum": 0,
"type": "integer"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "company_search",
"outputSchema": {
"description": "Paginated result of a Companies House company search.",
"properties": {
"has_more": {
"description": "True if more results exist beyond this page. Re-call with start_index=start_index+items_per_page to fetch the next page.",
"type": "boolean"
},
"items": {
"description": "Matching companies. Use the `company_number` field to call company_profile, company_officers, or company_psc for full detail.",
"items": {
"description": "A single entry in a Companies House search result.",
"properties": {
"address": {
"additionalProperties": true,
"description": "Registered office address as returned by the Companies House API.",
"type": "object"
},
"company_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Companies House company number (e.g. '12345678')."
},
"company_status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Company status (e.g. 'active', 'dissolved', 'liquidation')."
},
"company_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Companies House company type code (e.g. 'ltd', 'plc', 'llp')."
},
"date_of_creation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Incorporation date in ISO format (YYYY-MM-DD)."
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Short upstream description (usually number + status + creation date)."
},
"sic_codes": {
"description": "Standard Industrial Classification codes associated with the company.",
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Registered company name."
}
},
"type": "object"
},
"type": "array"
},
"items_per_page": {
"description": "Page size requested from the API for this call.",
"type": "integer"
},
"query": {
"description": "The query string that was searched.",
"type": "string"
},
"returned": {
"description": "Number of items actually returned on this page.",
"type": "integer"
},
"start_index": {
"description": "Number of results skipped before this page (upstream start_index).",
"type": "integer"
},
"total_results": {
"description": "Total matching companies in Companies House (server-side).",
"type": "integer"
}
},
"required": [
"query",
"total_results",
"start_index",
"items_per_page",
"returned",
"has_more"
],
"type": "object"
}
},
{
"description": "Fetch the full disqualification record for a director by officer ID.\n\nReturns all disqualification orders: reason, Act/section cited,\ndisqualification period, and associated company names. Use\ndisqualified_search first to find the officer ID.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"officer_id": {
"description": "Companies House officer ID. Returned by disqualified_search.",
"maxLength": 100,
"minLength": 1,
"type": "string"
}
},
"required": [
"officer_id"
],
"type": "object"
},
"name": "disqualified_profile",
"outputSchema": {
"description": "Full disqualification record for a disqualified officer.",
"properties": {
"date_of_birth": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Date of birth on record."
},
"disqualifications": {
"description": "All disqualification orders attached to this officer.",
"items": {
"description": "A single disqualification order attached to a disqualified director.",
"properties": {
"address": {
"additionalProperties": true,
"description": "Address on record at the time of the order.",
"type": "object"
},
"case_identifier": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Upstream case_identifier, when provided."
},
"company_names": {
"description": "Companies associated with this disqualification. The list may be truncated to 20 entries.",
"items": {
"type": "string"
},
"type": "array"
},
"company_names_total": {
"default": 0,
"description": "Total number of companies originally attached to this order before truncation (may equal `len(company_names)`).",
"type": "integer"
},
"company_names_truncated": {
"default": false,
"description": "True if the company_names list was truncated to max_companies.",
"type": "boolean"
},
"disqualified_from": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Start date of the disqualification period."
},
"disqualified_until": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "End date of the disqualification period."
},
"heard_on": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Date the order was heard, when provided."
},
"last_variation": {
"additionalProperties": true,
"description": "Details of the last variation of this order, if any.",
"type": "object"
},
"reason": {
"additionalProperties": true,
"description": "Reason block as returned upstream: act, section, description_identifier, article, etc.",
"type": "object"
},
"undertaken_on": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Date the undertaking was given, when provided."
}
},
"type": "object"
},
"type": "array"
},
"forename": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Given name, if split upstream."
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Officer name."
},
"nationality": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Declared nationality."
},
"officer_id": {
"description": "Companies House officer ID looked up.",
"type": "string"
},
"officer_kind": {
"description": "Which CH endpoint returned the record: 'natural' (individual) or 'corporate' (legal entity).",
"type": "string"
},
"surname": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Family name, if split upstream."
}
},
"required": [
"officer_id",
"officer_kind"
],
"type": "object"
}
},
{
"description": "Check whether a named individual is banned from acting as a UK company director.\n\nUse this tool when asked to check disqualified, banned, or barred directors.\nQuery must be an individual's name (e.g. \"Richard Howson\") — NOT a company\nname, which always returns zero results.\n\nReturns names, dates of birth, disqualification period snippets, and\nofficer IDs that can be used with disqualified_profile for full details.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"items_per_page": {
"default": 20,
"description": "Results per page (max 100). Default 20.",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"name": {
"anyOf": [
{
"maxLength": 200,
"minLength": 2,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Alias for query — the person's name."
},
"query": {
"anyOf": [
{
"maxLength": 200,
"minLength": 2,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Person's name to search for, e.g. query='Richard Howson'. NOT a company name."
},
"start_index": {
"default": 0,
"description": "Pagination offset (0-based). Default 0.",
"maximum": 10000,
"minimum": 0,
"type": "integer"
}
},
"type": "object"
},
"name": "disqualified_search",
"outputSchema": {
"description": "Paginated disqualified officers search result.",
"properties": {
"has_more": {
"description": "True if more items may exist beyond this page. Re-call with start_index=start_index+items_per_page to continue.",
"type": "boolean"
},
"items": {
"description": "Matching disqualified officer records.",
"items": {
"description": "A single hit in a disqualified officers search.",
"properties": {
"address": {
"additionalProperties": true,
"description": "Last known address of the disqualified officer.",
"type": "object"
},
"date_of_birth": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Date of birth as returned by the search API."
},
"links": {
"additionalProperties": true,
"description": "Upstream relational links (self, etc.).",
"type": "object"
},
"officer_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Companies House officer ID extracted from the self link. Pass to disqualified_profile for the full disqualification record."
},
"snippet": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Upstream match snippet highlighting query terms."
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Display title (typically the officer's name)."
}
},
"type": "object"
},
"type": "array"
},
"items_per_page": {
"description": "Page size requested.",
"type": "integer"
},
"query": {
"description": "Search query applied.",
"type": "string"
},
"returned": {
"description": "Items actually returned on this page.",
"type": "integer"
},
"start_index": {
"description": "Pagination offset for this page.",
"type": "integer"
},
"total_results": {
"description": "Total matching records upstream at Companies House.",
"type": "integer"
}
},
"required": [
"query",
"total_results",
"start_index",
"items_per_page",
"returned",
"has_more"
],
"type": "object"
}
},
{
"description": "Fetch the full record for an ID returned by search.\n\nRoutes by prefix to the appropriate register:\n- company:{number} → Companies House full profile\n- charity:{number} → Charity Commission full profile\n- disqualification:{officer_id} → Disqualified director full record\n- notice:{notice_id} → Gazette notice full legal text",
"inputSchema": {
"additionalProperties": false,
"properties": {
"id": {
"description": "Prefixed record ID returned by search. Format: company:{number}, charity:{number}, disqualification:{officer_id}, or notice:{notice_id}",
"maxLength": 100,
"minLength": 3,
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "fetch",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Search The Gazette's insolvency notice index by entity name.\n\nSearches The Gazette's corporate-insolvency notice index using the\nauthoritative Gazette notice-code taxonomy. Results are sorted by an\ninternal DD severity score; the notice label itself remains a source fact.\n\nEach result includes a notice_numeric_id. Read the full legal wording\nvia the notice://{notice_numeric_id} resource.\n\nThe Gazette is the official UK public record. A notice here means\nthe event has been formally published and is legally effective.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"end_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filter notices up to this date (YYYY-MM-DD)"
},
"entity_name": {
"anyOf": [
{
"maxLength": 200,
"minLength": 2,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Deprecated alias for name."
},
"max_notices": {
"default": 20,
"description": "Cap on notices returned, applied after severity/date sort. Default 20. The Gazette insolvency feed returns up to 100 results per search — raise to 100 to see the full set.",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"name": {
"anyOf": [
{
"maxLength": 200,
"minLength": 2,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Company or individual name to search for in Gazette insolvency notices"
},
"notice_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filter by Gazette notice code (e.g. '2450' petition to wind up a company, '2452' winding-up order, '2410' appointment of administrators). Omit to search all."
},
"query": {
"anyOf": [
{
"maxLength": 200,
"minLength": 2,
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Alias for name."
},
"start_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filter notices from this date (YYYY-MM-DD)"
}
},
"type": "object"
},
"name": "gazette_insolvency",
"outputSchema": {
"description": "Aggregated Gazette insolvency notice search result.",
"properties": {
"end_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Upper bound of the date range filter, if any."
},
"entity_name": {
"description": "Entity name that was searched.",
"type": "string"
},
"max_notices_cap": {
"description": "The max_notices cap applied. Upstream may have more matching notices.",
"type": "integer"
},
"notice_type_filter": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Notice code filter applied, or null if all codes searched."
},
"notices": {
"description": "Matching notices, sorted by severity (desc) then date (desc).",
"items": {
"description": "A single corporate insolvency notice from The Gazette.",
"properties": {
"content": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Brief notice excerpt from the search feed (HTML stripped). For full legal wording read notice://{notice_numeric_id}."
},
"date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Publication date (ISO YYYY-MM-DD)."
},
"notice_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Gazette notice code (e.g. '2450' petition to wind up a company, '2452' winding-up order for a company)."
},
"notice_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Gazette notice URI (e.g. 'https://www.thegazette.co.uk/id/notice/5122793')."
},
"notice_numeric_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Numeric notice ID. Read full notice content via the notice://{notice_numeric_id} resource."
},
"notice_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Human-readable notice type label (e.g. 'Winding-Up Order')."
},
"severity": {
"default": 0,
"description": "Internal severity score 0-10. Higher = more serious (10 = winding-up order, 9 = administration/receiver/liquidator appointment, 0 = informational or unclassified).",
"type": "integer"
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Notice title."
}
},
"type": "object"
},
"type": "array"
},
"start_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Lower bound of the date range filter, if any."
},
"total_notices": {
"description": "Total notices returned after deduplication, sorting, and cap.",
"type": "integer"
}
},
"required": [
"entity_name",
"total_notices",
"max_notices_cap"
],
"type": "object"
}
},
{
"description": "Fetch the full legal wording of a Gazette notice by numeric notice ID.\n\nReturns the complete JSON-LD linked-data record for the notice: parties,\nlegal basis, court, and full text. Use gazette_insolvency first to find\nnotice_numeric_id values.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"notice_id": {
"description": "Numeric Gazette notice ID. Returned as notice_numeric_id by gazette_insolvency.",
"maxLength": 20,
"minLength": 1,
"type": "string"
}
},
"required": [
"notice_id"
],
"type": "object"
},
"name": "gazette_notice",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
},
{
"description": "Search HM Land Registry Price Paid Index by postcode or address.\n\nReturns up to 10 recent sale transactions for the postcode: price,\ndate, address, property type, and tenure (Freehold/Leasehold).\nCovers England and Wales only. Postcode gives the most reliable\nresults — a full address is also accepted and the postcode is\nextracted automatically.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"address_or_postcode": {
"description": "UK property address or postcode. Postcode is most reliable: e.g. 'NG1 1AB'. Full address also accepted.",
"maxLength": 200,
"minLength": 4,
"type": "string"
}
},
"required": [
"address_or_postcode"
],
"type": "object"
},
"name": "land_title_search",
"outputSchema": {
"description": "HMLR Price Paid Index search result for a given postcode.",
"properties": {
"postcode": {
"description": "Normalised UK postcode extracted from the input.",
"type": "string"
},
"total": {
"description": "Number of Price Paid transactions returned. Capped at 10 by the upstream SPARQL query.",
"type": "integer"
},
"transactions": {
"description": "Recent Price Paid transactions for the postcode, sorted newest first.",
"items": {
"description": "A single Price Paid transaction for a property.",
"properties": {
"county": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "County."
},
"estate_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Tenure / estate type label (e.g. 'Freehold', 'Leasehold')."
},
"paon": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Primary addressable object name (house number or name)."
},
"postcode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Property postcode."
},
"price_paid": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Sale price in GBP (integer pounds)."
},
"property_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Property type label extracted from the HMLR URI (e.g. 'Terraced', 'Semi Detached', 'Flat')."
},
"saon": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Secondary addressable object name (flat/unit identifier)."
},
"street": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Street name."
},
"town": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Town/city."
},
"transaction_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Transaction date (ISO YYYY-MM-DD)."
}
},
"type": "object"
},
"type": "array"
}
},
"required": [
"postcode",
"total"
],
"type": "object"
}
},
{
"description": "Fetch a person's full company appointment history by officer ID.\n\nReturns every appointment — current and historic — with each\ncompany's number, name, status, role, and appointment/resignation\ndates. Use company_officers first to find an officer_id, then this\ntool to discover other companies that person has been a director\nor secretary of, including dissolved or insolvent ones not\nmentioned anywhere else. Always returns full history; there is no\ncurrent-only filter, since historical discovery is the point.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"officer_id": {
"description": "Companies House officer ID. Returned as officer_id on entries from company_officers.",
"maxLength": 100,
"minLength": 1,
"type": "string"
}
},
"required": [
"officer_id"
],
"type": "object"
},
"name": "officer_appointments",
"outputSchema": {
"description": "A person's full appointment history across companies, by officer ID.",
"properties": {
"active_count": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Upstream count of appointments Companies House categorizes as 'active' — this reflects the officer's own appointment/resignation state at that company, NOT whether the company itself is currently trading. An appointment at a company in liquidation or administration still counts as active here if the officer was never formally resigned. Check each appointment's own company_status field for the company's actual status. Null if not provided upstream."
},
"appointments": {
"description": "Every appointment, current and historic.",
"items": {
"description": "A single appointment from an officer's full appointment history.",
"properties": {
"address": {
"additionalProperties": true,
"description": "Officer correspondence address for this appointment.",
"type": "object"
},
"appointed_on": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Date of appointment (ISO YYYY-MM-DD)."
},
"company_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Company name as recorded at CH for this appointment."
},
"company_number": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Companies House company number for this appointment."
},
"company_status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Company status at the time of lookup (e.g. 'active', 'liquidation', 'dissolved'), as returned upstream. Companies House does not auto-resign directors on insolvency, so resigned_on may be null even when company_status shows the company is no longer trading — check company_status, not just resigned_on, to assess a relationship."
},
"country_of_residence": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Declared country of residence."
},
"links": {
"additionalProperties": true,
"description": "Upstream relational links, e.g. links.company = '/company/{number}'.",
"type": "object"
},
"nationality": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Declared nationality."
},
"officer_role": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Officer role at this company (e.g. 'director', 'secretary')."
},
"resigned_on": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Date of resignation, or null if not resigned."
}
},
"type": "object"
},
"type": "array"
},
"date_of_birth": {
"additionalProperties": true,
"description": "Partial date of birth (month/year), or empty if not disclosed upstream.",
"type": "object"
},
"inactive_count": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Upstream count of appointments Companies House categorizes as 'inactive', passed through as-is. Exact categorization semantics have not been independently verified against per-appointment data — treat as an unverified upstream fact, not a derived signal, or null if not provided."
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Officer name as recorded at CH."
},
"officer_id": {
"description": "Companies House officer ID.",
"type": "string"
},
"resigned_count": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Upstream count of resigned appointments, or null if not provided."
},
"total": {
"description": "Total appointments returned.",
"type": "integer"
}
},
"required": [
"officer_id",
"total"
],
"type": "object"
}
},
{
"description": "Screen a name against the UK (OFSI), US (OFAC), EU and UN consolidated sanctions lists.\n\nReturns every list entry whose primary name or alias matches, with the\nregime, source reference and listing date. Use it to check whether a\ncounterparty — or its officers / persons with significant control —\nappears on a sanctions list.\n\nMATCHING is deterministic: normalised exact + alias match (case-, accent-\nand punctuation-insensitive). A company/entity legal name matches reliably;\nPERSON names with transliteration variants may not (e.g. 'Mohammed' vs\n'Muhamad'). An empty result is therefore NOT a guarantee of clearance, and a\nhit on a common name may be a false positive to disambiguate. This is a\nscreening aid, not a compliance determination.\n\n`lists_screened` reports which of OFSI/OFAC/EU/UN were actually loaded — if\nany is missing the result is partial. `as_at` is when the lists were last\nrefreshed on this server.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"entity_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional filter: 'person' or 'entity'. Omit to screen both."
},
"name": {
"description": "Person or company/entity name to screen against the consolidated sanctions lists.",
"maxLength": 200,
"minLength": 2,
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "sanctions_screen",
"outputSchema": {
"description": "Result of screening one name against the consolidated sanctions lists.",
"properties": {
"as_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "When this server last refreshed the loaded lists (ISO timestamp). Provenance for the screen — the lists update on designation."
},
"entity_type_filter": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "entity_type filter applied to the screen ('person'/'entity'), or null."
},
"hits": {
"description": "Matching list entries. An empty list means no exact/alias match on the screened lists — NOT a guarantee of clearance (see the tool description on matching limits).",
"items": {
"description": "A single sanctions-list entry matching a screened name.",
"properties": {
"entity_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "'person' or 'entity' where the source distinguishes it; otherwise null."
},
"is_alias": {
"default": false,
"description": "True if the match was on an alias/AKA rather than the primary listed name.",
"type": "boolean"
},
"list_source": {
"description": "Which consolidated list matched: 'OFSI (UK)', 'OFAC (US)', 'EU', or 'UN'.",
"type": "string"
},
"listed_on": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Date the entity was listed, where the source provides it (ISO YYYY-MM-DD)."
},
"matched_name": {
"description": "The exact name or alias on the list that matched the query.",
"type": "string"
},
"reference": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The source's own reference for the listing (OFSI Group ID, OFAC uid, EU reference number, or UN reference number)."
},
"regime": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Sanctions programme/regime the listing falls under (e.g. 'Russia', 'CUBA', 'DRC')."
}
},
"required": [
"list_source",
"matched_name"
],
"type": "object"
},
"type": "array"
},
"lists_screened": {
"description": "Which consolidated lists were loaded and actually screened for this call. A list absent here failed to load and was NOT screened — treat the result as partial if any of OFSI/OFAC/EU/UN is missing.",
"items": {
"type": "string"
},
"type": "array"
},
"match_count": {
"description": "Number of list entries that matched the query.",
"type": "integer"
},
"normalized_query": {
"description": "The normalised form used for matching (upper-cased, accent- and punctuation-stripped, whitespace-collapsed).",
"type": "string"
},
"query": {
"description": "The name that was screened.",
"type": "string"
}
},
"required": [
"query",
"normalized_query",
"match_count"
],
"type": "object"
}
},
{
"description": "Search across all UK due diligence registers simultaneously.\n\nSearches Companies House, Charity Commission, disqualified directors,\nand Gazette insolvency notices in parallel. Returns a list of result\nIDs — use fetch with each ID to retrieve the full record.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"query": {
"description": "Company name, charity name, director name, or keyword to search for across all UK due diligence registers",
"maxLength": 200,
"minLength": 2,
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "search",
"outputSchema": {
"additionalProperties": true,
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:c3d85a70a2119dc3f82281f4f8eb0cd7244cf0429bc524b7bdc3ebcb5c9679b6 | sha256sum