UK company filings download
Companies House publishes every statutory filing every UK company has
ever submitted, free, including the document body. Most aggregators
surface the metadata only and leave the actual document on the upstream
portal. OpenRegistry returns the bytes inline through
fetch_document, so an AI agent or pipeline can read the
filing without a second round trip.
What CH publishes
A complete UK filing history typically includes the categories below.
Every one of them is reachable with the same two-tool pattern:
list_filings to enumerate, then fetch_document
on a chosen document_id to pull the actual bytes.
| Form / category | What it is | Format |
|---|---|---|
| IN01 | Application for incorporation. Original subscriber list, share split at incorporation, articles. | PDF (older), XHTML (newer) |
| CS01 / CS02 | Confirmation Statement. Modern equivalent of the AR01. Includes the Statement of Capital. | iXBRL XHTML or PDF |
| AR01 | Annual Return. Pre-2016 form, replaced by CS01. | |
| AA | Full annual accounts. | iXBRL XHTML |
| Micro-entity / abridged accounts | Smaller-company accounts under FRS 105 / FRS 102 1A. | iXBRL XHTML or PDF |
| MR01 — MR04 | Charges. Creation, satisfaction, particulars of mortgage or fixed/floating charge. | |
| AP01 / AP02 / AP03 / AP04 | Director or secretary appointment. | |
| TM01 / TM02 | Termination of director or secretary appointment. | |
| SH01 — SH19 | Share-capital changes, allotments, buy-backs, redenominations. | |
| DS01 / DS02 | Voluntary dissolution and withdrawal of dissolution. | |
| LIQ / LL01 | Liquidation, LLP-specific filings. | Various |
iXBRL is the format that matters
Modern UK accounts are filed as iXBRL: an XHTML document with embedded semantic tags. A current-generation LLM reads them natively. The structured numbers (turnover, gross profit, profit before tax, shareholders' funds, the lot) are tagged and unambiguous, even if a human reader sees a styled balance sheet.
OpenRegistry returns the raw iXBRL bytes through
fetch_document. No XBRL parser, no field renaming, no
schema mapping. The agent reads the document directly.
Worked example: download Monzo's most recent CS01
// 1. List filings, take the most recent CS01 list_filings({ jurisdiction: "GB", company_id: "09446231", category: "confirmation-statement", limit: 5 }) // 2. Fetch the actual document. max_bytes is optional; defaults inline. fetch_document({ jurisdiction: "GB", document_id: "<document_id from list_filings>", format: "xhtml" }) // → raw iXBRL document, ready for the LLM to read
Why aggregators skip this
The CH document API is rate-limited, returns binary blobs, and forces the caller to handle iXBRL, PDF, and the occasional historic image-only filing. It is more comfortable to surface metadata only and link out to the CH portal. OpenRegistry takes the work on so the agent does not have to.
Charges: a quick second look
A separate index returns registered charges directly without reading
the MR01-04 forms one by one. Use get_charges for the
structured summary, then fetch_document on the underlying
filing only when the persons-entitled or floating-charge particulars
are needed.
get_charges({ jurisdiction: "GB", company_id: "09446231" }) // → outstanding fixed and floating charges, persons entitled, status, // creation_date, satisfaction_date
Try it
Connect any MCP client to https://openregistry.sophymarine.com/mcp, free anonymous
tier, and ask: "Download the most recent annual accounts for Greggs
plc and tell me the gross profit." The agent runs list_filings,
finds the latest category: "accounts" filing, calls
fetch_document, reads the iXBRL, and answers.