UK Due Diligence

UK due diligence — Companies House, Charity Commission, Land Registry, Gazette, HMRC VAT

사용해야 할까요

품질 및 안전성

A
설명 품질
100%
스키마 완전성
95%
이름 품질
82%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~13,604토큰 (도구 정의)
~8.1 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 10.63%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "uk-due-diligence-mcp": {
      "command": "uvx",
      "args": [
        "uk-due-diligence-mcp"
      ]
    }
  }
}

실행 가능한 패키지

pypiuk-due-diligence-mcp1.0.3stdio

원격 엔드포인트

https://uk-due-diligence-mcp.fly.dev/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (18)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢company_search(query, company_status, company_type, items_per_page, start_index)

Search the Companies House register by company name or keyword. Returns a paginated list of matching companies with name, number, status, SIC codes, incorporation date, and registered address. Use company_profile for the full record once you have the company number. Re-call with start_index=start_index+items_per_page to fetch the next page.

입력 스키마

{
  "type": "object",
  "properties": {
    "query": {
      "description": "Company name or keyword to search for",
      "maxLength": 200,
      "minLength": 2,
      "type": "string"
    },
    "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"
    },
    "start_index": {
      "default": 0,
      "description": "Pagination offset. Default 0.",
      "maximum": 10000,
      "minimum": 0,
      "type": "integer"
    }
  },
  "required": [
    "query"
  ],
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "query": {
      "description": "The query string that was searched.",
      "type": "string"
    },
    "total_results": {
      "description": "Total matching companies in Companies House (server-side).",
      "type": "integer"
    },
    "start_index": {
      "description": "Number of results skipped before this page (upstream start_index).",
      "type": "integer"
    },
    "items_per_page": {
      "description": "Page size requested from the API for this call.",
      "type": "integer"
    },
    "returned": {
      "description": "Number of items actually returned on this page.",
      "type": "integer"
    },
    "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": {
          "company_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Companies House company number (e.g. '12345678')."
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Registered company name."
          },
          "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)."
          },
          "sic_codes": {
            "description": "Standard Industrial Classification codes associated with the company.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "address": {
            "additionalProperties": true,
            "description": "Registered office address as returned by the Companies House API.",
            "type": "object"
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Short upstream description (usually number + status + creation date)."
          }
        },
        "type": "object"
      },
      "type": "array"
    }
  },
  "required": [
    "query",
    "total_results",
    "start_index",
    "items_per_page",
    "returned",
    "has_more"
  ],
  "description": "Paginated result of a Companies House company search."
}
🟢company_profile(company_number)

Fetch the full Companies House profile for a company number. Returns status, registered address, SIC codes, filing compliance (overdue accounts and confirmation statement flags), and whether the company has outstanding charges. Use company_search first to find the company number.

입력 스키마

{
  "type": "object",
  "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"
  ],
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "company_number": {
      "description": "Companies House company number.",
      "type": "string"
    },
    "company_name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Registered company name."
    },
    "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."
    },
    "date_of_creation": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Incorporation date (ISO YYYY-MM-DD)."
    },
    "sic_codes": {
      "description": "Standard Industrial Classification codes.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "registered_office_address": {
      "additionalProperties": true,
      "description": "Registered office address as returned by Companies House.",
      "type": "object"
    },
    "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."
    },
    "accounts": {
      "description": "Accounts filing status and due dates.",
      "properties": {
        "overdue": {
          "default": false,
          "description": "True if accounts are past their due date at Companies House.",
          "type": "boolean"
        },
        "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."
        }
      },
      "type": "object"
    },
    "confirmation_statement": {
      "description": "Confirmation statement filing status and next due date.",
      "properties": {
        "overdue": {
          "default": false,
          "description": "True if the confirmation statement is past its due date.",
          "type": "boolean"
        },
        "next_due": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "ISO date the next confirmation statement is due."
        }
      },
      "type": "object"
    }
  },
  "required": [
    "company_number"
  ],
  "description": "Full Companies House profile for a single company number."
}
🟢company_officers(company_number, include_resigned, items_per_page, start_index)

Fetch officers for a Companies House company number. Returns directors, secretaries, and other officers with appointment dates, nationality, and country of residence. Resigned officers are excluded by default; set include_resigned=true for historical DD. Pagination is handled internally.

입력 스키마

{
  "type": "object",
  "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"
  ],
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "company_number": {
      "description": "Companies House company number.",
      "type": "string"
    },
    "include_resigned": {
      "description": "Whether resigned officers were included in this result.",
      "type": "boolean"
    },
    "total": {
      "description": "Total officers returned (filtered by include_resigned).",
      "type": "integer"
    },
    "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."
    },
    "officers": {
      "description": "Officer records.",
      "items": {
        "description": "A single officer (director, secretary, etc.) of a company.",
        "properties": {
          "name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Officer name as recorded at CH."
          },
          "officer_role": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Officer role (e.g. 'director', 'secretary', 'llp-member')."
          },
          "appointed_on": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Date of appointment (ISO YYYY-MM-DD)."
          },
          "resigned_on": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Date of resignation if resigned, otherwise null."
          },
          "nationality": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Declared nationality."
          },
          "country_of_residence": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Declared country of residence."
          },
          "occupation": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Declared occupation."
          },
          "date_of_birth": {
            "additionalProperties": true,
            "description": "Partial date of birth (month/year) as returned by CH.",
            "type": "object"
          },
          "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."
          },
          "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."
          },
          "address": {
            "additionalProperties": true,
            "description": "Officer correspondence address.",
            "type": "object"
          },
          "links": {
            "additionalProperties": true,
            "description": "Upstream relational links (e.g. officer profile URL).",
            "type": "object"
          }
        },
        "type": "object"
      },
      "type": "array"
    }
  },
  "required": [
    "company_number",
    "include_resigned",
    "total"
  ],
  "description": "List of officers for a given company."
}
🟢company_psc(company_number)

Fetch Persons with Significant Control (beneficial ownership) for a company. Returns PSC entries with natures of control, nationality, and country of residence. Flags overseas corporate PSC entries as a beneficial ownership risk signal. Returns an explanatory note for widely-held PLCs with no registrable PSC.

입력 스키마

{
  "type": "object",
  "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"
  ],
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "company_number": {
      "description": "Companies House company number.",
      "type": "string"
    },
    "total": {
      "description": "Total PSC entries returned for this company.",
      "type": "integer"
    },
    "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": {
          "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)."
          },
          "notified_on": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Date notified as a PSC (ISO YYYY-MM-DD)."
          },
          "ceased_on": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Date PSC status ceased, if applicable."
          },
          "nationality": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Declared nationality for individual PSCs."
          },
          "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"
          },
          "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"
          },
          "identification": {
            "additionalProperties": true,
            "description": "Identification block for corporate PSCs: place_registered, registration_number, country_registered, legal_authority, etc.",
            "type": "object"
          },
          "address": {
            "additionalProperties": true,
            "description": "PSC correspondence address.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "type": "array"
    },
    "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."
    }
  },
  "required": [
    "company_number",
    "total"
  ],
  "description": "List of Persons with Significant Control for a company."
}
🟢officer_appointments(officer_id)

Fetch a person's full company appointment history by officer ID. Returns every appointment — current and historic — with each company's number, name, status, role, and appointment/resignation dates. Use company_officers first to find an officer_id, then this tool to discover other companies that person has been a director or secretary of, including dissolved or insolvent ones not mentioned anywhere else. Always returns full history; there is no current-only filter, since historical discovery is the point.

입력 스키마

{
  "type": "object",
  "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"
  ],
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "officer_id": {
      "description": "Companies House officer ID.",
      "type": "string"
    },
    "name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Officer name as recorded at CH."
    },
    "date_of_birth": {
      "additionalProperties": true,
      "description": "Partial date of birth (month/year), or empty if not disclosed upstream.",
      "type": "object"
    },
    "total": {
      "description": "Total appointments returned.",
      "type": "integer"
    },
    "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."
    },
    "resigned_count": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Upstream count of resigned appointments, or null if not provided."
    },
    "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."
    },
    "appointments": {
      "description": "Every appointment, current and historic.",
      "items": {
        "description": "A single appointment from an officer's full appointment history.",
        "properties": {
          "company_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Companies House company number for this appointment."
          },
          "company_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Company name as recorded at CH 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."
          },
          "officer_role": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Officer role at this company (e.g. 'director', 'secretary')."
          },
          "appointed_on": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Date of appointment (ISO YYYY-MM-DD)."
          },
          "resigned_on": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Date of resignation, or null if not resigned."
          },
          "nationality": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Declared nationality."
          },
          "country_of_residence": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Declared country of residence."
          },
          "address": {
            "additionalProperties": true,
            "description": "Officer correspondence address for this appointment.",
            "type": "object"
          },
          "links": {
            "additionalProperties": true,
            "description": "Upstream relational links, e.g. links.company = '/company/{number}'.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "type": "array"
    }
  },
  "required": [
    "officer_id",
    "total"
  ],
  "description": "A person's full appointment history across companies, by officer ID."
}
🟢company_charges(company_number)

Fetch the complete Companies House charge history for a company. Returns every registered charge (secured debt) — current and historic — with status, dates, secured parties, and what each charge covers (fixed/floating/negative-pledge flags and any free-text particulars). Satisfaction is represented as satisfied_on plus a charge-satisfaction filing entry, not a separate 'release' record. company_profile.has_charges is a True/False/unknown summary derived from this same data; use this tool when the specific charges matter, not just whether any exist.

입력 스키마

{
  "type": "object",
  "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"
  ],
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "company_number": {
      "description": "Companies House company number.",
      "type": "string"
    },
    "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."
    },
    "satisfied_count": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Upstream count of satisfied charges, or null if not provided."
    },
    "part_satisfied_count": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Upstream count of part-satisfied charges, or null if not provided."
    },
    "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_number": {
            "description": "Sequential charge number for this company. Always present, unlike charge_code.",
            "type": "integer"
          },
          "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."
          },
          "status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Charge status as returned upstream (e.g. 'outstanding', 'part-satisfied', 'fully-satisfied')."
          },
          "classification": {
            "anyOf": [
              {
                "description": "Charge type classification (e.g. 'A registered charge', 'Debenture').",
                "properties": {
                  "type": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Classification type as returned by CH (e.g. 'charge-description')."
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Human-readable charge type (e.g. 'A registered charge', 'Debenture')."
                  }
                },
                "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)."
          },
          "satisfied_on": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Date the charge was satisfied, or null if still live."
          },
          "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": {
                  "type": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Particulars entry type as returned by CH (e.g. 'brief-description', 'short-particulars')."
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Free-text description of what the charge covers, where filed."
                  },
                  "contains_floating_charge": {
                    "anyOf": [
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "True if the charge includes a floating charge."
                  },
                  "contains_fixed_charge": {
                    "anyOf": [
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "True if the charge includes a fixed charge."
                  },
                  "floating_charge_covers_all": {
                    "anyOf": [
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "True if the floating charge covers the whole undertaking/all assets."
                  },
                  "contains_negative_pledge": {
                    "anyOf": [
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "True if the charge includes a negative pledge (restricting further charges)."
                  }
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "What the charge covers — free text and/or boolean flags, depending on charge age/type."
          },
          "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": {
                  "type": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Secured-details entry type as returned by CH (e.g. 'amount-secured')."
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Free-text description of the amount/obligation secured."
                  }
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Free-text amount-secured description. Present only on some older charges."
          },
          "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"
          },
          "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": {
                "filing_type": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Filing type (e.g. 'create-charge-with-deed', 'charge-satisfaction')."
                },
                "delivered_on": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Date this filing was delivered (ISO YYYY-MM-DD)."
                },
                "links": {
                  "additionalProperties": true,
                  "description": "Upstream relational links, e.g. links.filing = filing-history path.",
                  "type": "object"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "links": {
            "additionalProperties": true,
            "description": "Upstream relational links, e.g. links.self = charge record path.",
            "type": "object"
          }
        },
        "required": [
          "charge_number"
        ],
        "type": "object"
      },
      "type": "array"
    }
  },
  "required": [
    "company_number",
    "total_count"
  ],
  "description": "Complete charge history for a company."
}
🟢company_filing_history(company_number, category, items_per_page, start_index)

Fetch one page of a company's Companies House filing chronology. Returns the raw source facts for each filing — transaction ID, form type/category, dates, and the description_values CH uses to render its own text — as delivered upstream, not interpreted into DD conclusions. links.document_metadata on each filing is the identifier a future document-retrieval tool would need; no document content is fetched here. Unlike company_officers/company_psc/company_charges, this does NOT auto-fetch every page — a long-lived company's filing history is unbounded in practice (a decades-old PLC can carry thousands of filings). total_count/returned/has_more are always reported truthfully for whatever page and category filter was requested; nothing is silently truncated. Narrow with category= for a specific slice (e.g. category='mortgage' for charge-related filings, category='insolvency' for administration/liquidation filings) — a note is included when an unfiltered history is large. A company_number that doesn't resolve to any company returns a structured not_found error, distinct from a genuine zero-filing result — Companies House's filing-history endpoint alone cannot tell these apart, so existence is confirmed separately when the result would otherwise be empty.

입력 스키마

{
  "type": "object",
  "properties": {
    "company_number": {
      "description": "Companies House company number (8 digits, e.g. '03782379'). Returned by company_search.",
      "maxLength": 10,
      "minLength": 1,
      "type": "string"
    },
    "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."
    },
    "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"
  ],
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "company_number": {
      "description": "Companies House company number.",
      "type": "string"
    },
    "category": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "The category filter applied to this query, or null if unfiltered."
    },
    "filing_history_status": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Upstream filing-history status (e.g. 'filing-history-available')."
    },
    "total_count": {
      "description": "Total filings matching this query (across all pages).",
      "type": "integer"
    },
    "start_index": {
      "description": "Pagination offset used for this page.",
      "type": "integer"
    },
    "items_per_page": {
      "description": "Page size actually used (CH caps at 100 regardless of a higher request).",
      "type": "integer"
    },
    "returned": {
      "description": "Filings returned on this page.",
      "type": "integer"
    },
    "has_more": {
      "description": "True if start_index + returned < total_count.",
      "type": "boolean"
    },
    "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."
    },
    "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": {
          "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"
          },
          "date": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Filing/delivery date (ISO YYYY-MM-DD)."
          },
          "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)."
          },
          "category": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Filing category (e.g. 'accounts', 'mortgage', 'officers', 'insolvency', 'resolution')."
          },
          "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."
          },
          "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"
          },
          "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."
          },
          "barcode": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "CH barcode for this filing. Absent on many older filings."
          },
          "resolutions": {
            "description": "Nested resolution filings, where this entry is a RESOLUTIONS bundle.",
            "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"
          },
          "annotations": {
            "description": "CH clarification notes attached to this filing after the fact.",
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": "array"
          },
          "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"
          }
        },
        "required": [
          "transaction_id",
          "type"
        ],
        "type": "object"
      },
      "type": "array"
    }
  },
  "required": [
    "company_number",
    "total_count",
    "start_index",
    "items_per_page",
    "returned",
    "has_more"
  ],
  "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."
}
🟢company_filing_document(document_metadata_url, mime_type)

Resolve a filing's document_metadata link to its authoritative source document. Returns a resource_link (never embedded bytes, never base64) pointing at a company-document:// MCP resource — fetch it via resources/read to get the actual PDF. This tool only reads metadata (category, pages, available content types, byte size); it never downloads the document itself. Use company_filing_history first to find a filing's document_metadata URL. Requires a resource-capable MCP client to retrieve the actual bytes — a tool-only client can see this result's metadata (company, category, page count, size) but cannot obtain the file through this tool call alone.

입력 스키마

{
  "type": "object",
  "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"
  ],
  "additionalProperties": false
}
🟢charity_search(query, offset, limit)

Search the Charity Commission register of England and Wales by name or keyword. Returns matching charities with registration number, status, and registration date. Use charity_profile for full details once you have the charity number. The upstream `searchCharityName` endpoint returns the full list in one shot — pagination is applied client-side via offset/limit. A query that matches nothing is a successful empty result (`charities: []`), not an error — the upstream endpoint signals "no matches" with an HTTP 404, which is translated back into an empty result here rather than surfaced as a not-found failure.

입력 스키마

{
  "type": "object",
  "properties": {
    "query": {
      "description": "Charity name or keyword to search for",
      "maxLength": 200,
      "minLength": 2,
      "type": "string"
    },
    "offset": {
      "default": 0,
      "description": "Number of items to skip before this page. Default 0.",
      "maximum": 10000,
      "minimum": 0,
      "type": "integer"
    },
    "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"
    }
  },
  "required": [
    "query"
  ],
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "query": {
      "description": "Search term applied.",
      "type": "string"
    },
    "total": {
      "description": "Total matches returned by upstream.",
      "type": "integer"
    },
    "offset": {
      "description": "Number of items skipped before this page (client-side).",
      "type": "integer"
    },
    "limit": {
      "description": "Max items requested for this page.",
      "type": "integer"
    },
    "returned": {
      "description": "Items actually returned on this page.",
      "type": "integer"
    },
    "has_more": {
      "description": "True if more items may exist beyond this page. Re-call with offset=offset+returned to continue.",
      "type": "boolean"
    },
    "charities": {
      "description": "Matching charity records.",
      "items": {
        "description": "A single hit in a Charity Commission name search.",
        "properties": {
          "charity_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Charity Commission registration number. Pass to charity_profile for the full record."
          },
          "charity_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Registered charity name."
          },
          "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')."
          },
          "date_of_registration": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Date of first registration (ISO YYYY-MM-DD)."
          }
        },
        "type": "object"
      },
      "type": "array"
    }
  },
  "required": [
    "query",
    "total",
    "offset",
    "limit",
    "returned",
    "has_more"
  ],
  "description": "Paginated result of a Charity Commission name search."
}
🟢charity_profile(charity_number)

Fetch the full Charity Commission profile for a charity number. Returns trustees, latest income/expenditure, insolvency flags, governing document type, classifications, and countries of operation. Use charity_search first to find the charity number.

입력 스키마

{
  "type": "object",
  "properties": {
    "charity_number": {
      "description": "Charity Commission registration number (e.g. '1234567'). Returned by charity_search.",
      "maxLength": 20,
      "minLength": 1,
      "type": "string"
    }
  },
  "required": [
    "charity_number"
  ],
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "charity_number": {
      "description": "Charity registration number.",
      "type": "string"
    },
    "charity_name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Registered charity name."
    },
    "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."
    },
    "charity_type": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Charity type."
    },
    "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.)."
    },
    "date_of_registration": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Date of first registration."
    },
    "address": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Registered address of the charity (joined address lines)."
    },
    "latest_income": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Latest filed annual income in GBP."
    },
    "latest_expenditure": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Latest filed annual expenditure in GBP."
    },
    "insolvent": {
      "default": false,
      "description": "True if the charity is flagged as insolvent.",
      "type": "boolean"
    },
    "in_administration": {
      "default": false,
      "description": "True if the charity is in administration.",
      "type": "boolean"
    },
    "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_truncated": {
      "default": false,
      "description": "True if the trustee list was truncated.",
      "type": "boolean"
    },
    "trustee_names_total": {
      "default": 0,
      "description": "Total trustees upstream before truncation.",
      "type": "integer"
    },
    "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_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Classification axis: 'What', 'Who', or 'Where'."
          },
          "classification_desc": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Classification description text."
          }
        },
        "type": "object"
      },
      "type": "array"
    },
    "who_what_where_truncated": {
      "default": false,
      "description": "True if the classification list was truncated.",
      "type": "boolean"
    },
    "who_what_where_total": {
      "default": 0,
      "description": "Total classification entries upstream before truncation.",
      "type": "integer"
    },
    "countries_of_operation": {
      "description": "Countries the charity operates in (capped at 10 upstream).",
      "items": {
        "type": "string"
      },
      "type": "array"
    }
  },
  "required": [
    "charity_number"
  ],
  "description": "Full Charity Commission profile for a single charity."
}
🟢disqualified_search(query, name, items_per_page, start_index)

Check whether a named individual is banned from acting as a UK company director. Use this tool when asked to check disqualified, banned, or barred directors. Query must be an individual's name (e.g. "Richard Howson") — NOT a company name, which always returns zero results. Returns names, dates of birth, disqualification period snippets, and officer IDs that can be used with disqualified_profile for full details.

입력 스키마

{
  "type": "object",
  "properties": {
    "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."
    },
    "name": {
      "anyOf": [
        {
          "maxLength": 200,
          "minLength": 2,
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Alias for query — the person's name."
    },
    "items_per_page": {
      "default": 20,
      "description": "Results per page (max 100). Default 20.",
      "maximum": 100,
      "minimum": 1,
      "type": "integer"
    },
    "start_index": {
      "default": 0,
      "description": "Pagination offset (0-based). Default 0.",
      "maximum": 10000,
      "minimum": 0,
      "type": "integer"
    }
  },
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "query": {
      "description": "Search query applied.",
      "type": "string"
    },
    "total_results": {
      "description": "Total matching records upstream at Companies House.",
      "type": "integer"
    },
    "start_index": {
      "description": "Pagination offset for this page.",
      "type": "integer"
    },
    "items_per_page": {
      "description": "Page size requested.",
      "type": "integer"
    },
    "returned": {
      "description": "Items actually returned on this page.",
      "type": "integer"
    },
    "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": {
          "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."
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Display title (typically the officer's name)."
          },
          "date_of_birth": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Date of birth as returned by the search API."
          },
          "snippet": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Upstream match snippet highlighting query terms."
          },
          "address": {
            "additionalProperties": true,
            "description": "Last known address of the disqualified officer.",
            "type": "object"
          },
          "links": {
            "additionalProperties": true,
            "description": "Upstream relational links (self, etc.).",
            "type": "object"
          }
        },
        "type": "object"
      },
      "type": "array"
    }
  },
  "required": [
    "query",
    "total_results",
    "start_index",
    "items_per_page",
    "returned",
    "has_more"
  ],
  "description": "Paginated disqualified officers search result."
}
🟢disqualified_profile(officer_id)

Fetch the full disqualification record for a director by officer ID. Returns all disqualification orders: reason, Act/section cited, disqualification period, and associated company names. Use disqualified_search first to find the officer ID.

입력 스키마

{
  "type": "object",
  "properties": {
    "officer_id": {
      "description": "Companies House officer ID. Returned by disqualified_search.",
      "maxLength": 100,
      "minLength": 1,
      "type": "string"
    }
  },
  "required": [
    "officer_id"
  ],
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "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"
    },
    "name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Officer name."
    },
    "forename": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Given name, if split upstream."
    },
    "surname": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Family name, if split upstream."
    },
    "date_of_birth": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Date of birth on record."
    },
    "nationality": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Declared nationality."
    },
    "disqualifications": {
      "description": "All disqualification orders attached to this officer.",
      "items": {
        "description": "A single disqualification order attached to a disqualified director.",
        "properties": {
          "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."
          },
          "reason": {
            "additionalProperties": true,
            "description": "Reason block as returned upstream: act, section, description_identifier, article, etc.",
            "type": "object"
          },
          "company_names": {
            "description": "Companies associated with this disqualification. The list may be truncated to 20 entries.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "company_names_truncated": {
            "default": false,
            "description": "True if the company_names list was truncated to max_companies.",
            "type": "boolean"
          },
          "company_names_total": {
            "default": 0,
            "description": "Total number of companies originally attached to this order before truncation (may equal `len(company_names)`).",
            "type": "integer"
          },
          "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."
          },
          "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"
          },
          "undertaken_on": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Date the undertaking was given, when provided."
          }
        },
        "type": "object"
      },
      "type": "array"
    }
  },
  "required": [
    "officer_id",
    "officer_kind"
  ],
  "description": "Full disqualification record for a disqualified officer."
}
🟢land_title_search(address_or_postcode)

Search HM Land Registry Price Paid Index by postcode or address. Returns up to 10 recent sale transactions for the postcode: price, date, address, property type, and tenure (Freehold/Leasehold). Covers England and Wales only. Postcode gives the most reliable results — a full address is also accepted and the postcode is extracted automatically.

입력 스키마

{
  "type": "object",
  "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"
  ],
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "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": {
          "price_paid": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Sale price in GBP (integer pounds)."
          },
          "transaction_date": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Transaction date (ISO YYYY-MM-DD)."
          },
          "postcode": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Property postcode."
          },
          "paon": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Primary addressable object name (house number or name)."
          },
          "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."
          },
          "county": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "County."
          },
          "property_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Property type label extracted from the HMLR URI (e.g. 'Terraced', 'Semi Detached', 'Flat')."
          },
          "estate_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Tenure / estate type label (e.g. 'Freehold', 'Leasehold')."
          }
        },
        "type": "object"
      },
      "type": "array"
    }
  },
  "required": [
    "postcode",
    "total"
  ],
  "description": "HMLR Price Paid Index search result for a given postcode."
}
🟢gazette_notice(notice_id)

Fetch the full legal wording of a Gazette notice by numeric notice ID. Returns the complete JSON-LD linked-data record for the notice: parties, legal basis, court, and full text. Use gazette_insolvency first to find notice_numeric_id values.

입력 스키마

{
  "type": "object",
  "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"
  ],
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "additionalProperties": true
}
🟢gazette_insolvency(name, query, entity_name, notice_type, start_date, ...)

Search The Gazette's insolvency notice index by entity name. Searches The Gazette's corporate-insolvency notice index using the authoritative Gazette notice-code taxonomy. Results are sorted by an internal DD severity score; the notice label itself remains a source fact. Each result includes a notice_numeric_id. Read the full legal wording via the notice://{notice_numeric_id} resource. The Gazette is the official UK public record. A notice here means the event has been formally published and is legally effective.

입력 스키마

{
  "type": "object",
  "properties": {
    "name": {
      "anyOf": [
        {
          "maxLength": 200,
          "minLength": 2,
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Company or individual name to search for in Gazette insolvency notices"
    },
    "query": {
      "anyOf": [
        {
          "maxLength": 200,
          "minLength": 2,
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Alias for name."
    },
    "entity_name": {
      "anyOf": [
        {
          "maxLength": 200,
          "minLength": 2,
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Deprecated alias for name."
    },
    "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."
    },
    "start_date": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Filter notices from this date (YYYY-MM-DD)"
    },
    "end_date": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Filter notices up to this date (YYYY-MM-DD)"
    },
    "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"
    }
  },
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "entity_name": {
      "description": "Entity name that was searched.",
      "type": "string"
    },
    "notice_type_filter": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Notice code filter applied, or null if all codes searched."
    },
    "start_date": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Lower bound of the date range filter, if any."
    },
    "end_date": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Upper bound of the date range filter, if any."
    },
    "total_notices": {
      "description": "Total notices returned after deduplication, sorting, and cap.",
      "type": "integer"
    },
    "max_notices_cap": {
      "description": "The max_notices cap applied. Upstream may have more matching notices.",
      "type": "integer"
    },
    "notices": {
      "description": "Matching notices, sorted by severity (desc) then date (desc).",
      "items": {
        "description": "A single corporate insolvency notice from The Gazette.",
        "properties": {
          "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_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_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"
          },
          "date": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Publication date (ISO YYYY-MM-DD)."
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Notice title."
          },
          "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}."
          }
        },
        "type": "object"
      },
      "type": "array"
    }
  },
  "required": [
    "entity_name",
    "total_notices",
    "max_notices_cap"
  ],
  "description": "Aggregated Gazette insolvency notice search result."
}
🟢sanctions_screen(name, entity_type)

Screen a name against the UK (OFSI), US (OFAC), EU and UN consolidated sanctions lists. Returns every list entry whose primary name or alias matches, with the regime, source reference and listing date. Use it to check whether a counterparty — or its officers / persons with significant control — appears on a sanctions list. MATCHING is deterministic: normalised exact + alias match (case-, accent- and punctuation-insensitive). A company/entity legal name matches reliably; PERSON names with transliteration variants may not (e.g. 'Mohammed' vs 'Muhamad'). An empty result is therefore NOT a guarantee of clearance, and a hit on a common name may be a false positive to disambiguate. This is a screening aid, not a compliance determination. `lists_screened` reports which of OFSI/OFAC/EU/UN were actually loaded — if any is missing the result is partial. `as_at` is when the lists were last refreshed on this server.

입력 스키마

{
  "type": "object",
  "properties": {
    "name": {
      "description": "Person or company/entity name to screen against the consolidated sanctions lists.",
      "maxLength": 200,
      "minLength": 2,
      "type": "string"
    },
    "entity_type": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Optional filter: 'person' or 'entity'. Omit to screen both."
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "properties": {
    "query": {
      "description": "The name that was screened.",
      "type": "string"
    },
    "normalized_query": {
      "description": "The normalised form used for matching (upper-cased, accent- and punctuation-stripped, whitespace-collapsed).",
      "type": "string"
    },
    "entity_type_filter": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "entity_type filter applied to the screen ('person'/'entity'), or null."
    },
    "match_count": {
      "description": "Number of list entries that matched the query.",
      "type": "integer"
    },
    "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"
    },
    "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."
    },
    "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": {
          "list_source": {
            "description": "Which consolidated list matched: 'OFSI (UK)', 'OFAC (US)', 'EU', or 'UN'.",
            "type": "string"
          },
          "matched_name": {
            "description": "The exact name or alias on the list that matched the query.",
            "type": "string"
          },
          "is_alias": {
            "default": false,
            "description": "True if the match was on an alias/AKA rather than the primary listed name.",
            "type": "boolean"
          },
          "entity_type": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "'person' or 'entity' where the source distinguishes it; otherwise null."
          },
          "regime": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Sanctions programme/regime the listing falls under (e.g. 'Russia', 'CUBA', 'DRC')."
          },
          "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)."
          },
          "listed_on": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Date the entity was listed, where the source provides it (ISO YYYY-MM-DD)."
          }
        },
        "required": [
          "list_source",
          "matched_name"
        ],
        "type": "object"
      },
      "type": "array"
    }
  },
  "required": [
    "query",
    "normalized_query",
    "match_count"
  ],
  "description": "Result of screening one name against the consolidated sanctions lists."
}
🟢search(query)

Search across all UK due diligence registers simultaneously. Searches Companies House, Charity Commission, disqualified directors, and Gazette insolvency notices in parallel. Returns a list of result IDs — use fetch with each ID to retrieve the full record.

입력 스키마

{
  "type": "object",
  "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"
  ],
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "additionalProperties": true
}
🟢fetch(id)

Fetch the full record for an ID returned by search. Routes by prefix to the appropriate register: - company:{number} → Companies House full profile - charity:{number} → Charity Commission full profile - disqualification:{officer_id} → Disqualified director full record - notice:{notice_id} → Gazette notice full legal text

입력 스키마

{
  "type": "object",
  "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"
  ],
  "additionalProperties": false
}

출력 스키마

{
  "type": "object",
  "additionalProperties": true
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 18개
검증됨버전이 기록되지 않음도구 18개
검증됨버전이 기록되지 않음도구 18개