Skip to main content
Glama

capabilities

List UK company charges and mortgages from Companies House

company_uk_charges
Read-onlyIdempotent

Charges registered against a UK company at Companies House — mortgages, debentures and other security — with dates, classification, particulars and the persons entitled. Use when: Establish whether a UK company has outstanding security over its assets, and who holds it. Not for: You need insolvency proceedings — not currently supported (see the resource flags on company.uk.profile). Related: company_uk_profile; company_uk_filings; company_uk_status. Price: USD 0.006/call (x402), 0.005 (account key).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum charges to return per page (1-100). Default 3: a charge carries free-text particulars, secured details and the persons entitled, so it is several times the size of an officer or a filing row - the register-wide counts and page.total still describe the whole register.
detailNoHow much of each charge to return. Default summary. `full` adds the four members the register populates only for particular filings — acquired_on, resolved_on, assets_ceased_released and more_than_four_persons_entitled — which are null on the great majority of charges.
offsetNoZero-based index into the register's charge list (not into the filtered result). Pass back page.next_offset from the previous response to page.
statusNoWhich charges to return. Default `all`. `outstanding` returns the charges that are still security over the company (everything the register has not marked satisfied or fully-satisfied, including part-satisfied); `satisfied` returns the discharged ones. The register offers no server-side filter, so Eckari applies it after reading up to three register pages of 100 charges — read page.has_more rather than items.length.
company_numberYesCompanies House company number, also called the company registration number (CRN). Accepted shapes are the register's own — 1-8 digits (zero-padded to 8, e.g. 445790 → 00445790), one letter + 7 digits (R0000001), two letters + 6 digits (SC002180, NI000001, OC123456, OE000001), or the registered-society suffix forms (two letters + 5 digits + 1 letter; two letters + 4 digits + 2 letters). Case-insensitive; surrounding whitespace is ignored (which is why maxLength is 10); internal spaces and punctuation are not accepted. Any other value (for example PROBE) is rejected as INVALID_INPUT before payment and before any upstream call.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataYesCapability output; full JSON Schema at https://api.eckari.com/v1/capabilities/company.uk.charges
metaYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / company_number / description
      Previous value: -"Companies House company number, also called the company registration number (CRN). The identifier itself is 1-8 letters/digits; surrounding whitespace is ignored (which is why maxLength is 10), but the value must not contain internal spaces. Short numeric values are zero-padded to 8 characters. A whitespace-only or over-long value is rejected as INVALID_INPUT before any payment or upstream call."New value: +"Companies House company number, also called the company registration number (CRN). Accepted shapes are the register's own — 1-8 digits (zero-padded to 8, e.g. 445790 → 00445790), one letter + 7 digits (R0000001), two letters + 6 digits (SC002180, NI000001, OC123456, OE000001), or the registered-society suffix forms (two letters + 5 digits + 1 letter; two letters + 4 digits + 2 letters). Case-insensitive; surrounding whitespace is ignored (which is why maxLength is 10); internal spaces and punctuation are not accepted. Any other value (for example PROBE) is rejected as INVALID_INPUT before payment and before any upstream call."
    • changedInput schema / properties / company_number / pattern
      Previous value: -"^\\s*[A-Za-z0-9]{1,8}\\s*$"New value: +"^\\s*(?:[0-9]{1,8}|[A-Za-z][0-9]{7}|[A-Za-z]{2}[0-9]{6}|[A-Za-z]{2}[0-9]{5}[A-Za-z]|[A-Za-z]{2}[0-9]{4}[A-Za-z]{2})\\s*$"
  2. Changed1 schema field changed
    • changedInput schema / properties / limit / description
      Previous value: -"Maximum charges to return per page (1-100). Default 5."New value: +"Maximum charges to return per page (1-100). Default 3: a charge carries free-text particulars, secured details and the persons entitled, so it is several times the size of an officer or a filing row - the register-wide counts and page.total still describe the whole register."
  3. Changed3 schema fields changed
    • removedInput schema / properties / companyNumber
      Removed value: -{
      -  "description": "Companies House company number, also called the company registration number (CRN). The identifier itself is 1-8 letters/digits; surrounding whitespace is ignored (which is why maxLength is 10), but the value must not contain internal spaces. Short numeric values are zero-padded to 8 characters. A whitespace-only or over-long value is rejected as INVALID_INPUT before any payment or upstream call.",
      -  "maxLength": 10,
      -  "minLength": 1,
      -  "pattern": "^\\s*[A-Za-z0-9]{1,8}\\s*$",
      -  "type": "string"
      -}
    • addedInput schema / properties / company_number
      Added value: +{
      +  "description": "Companies House company number, also called the company registration number (CRN). The identifier itself is 1-8 letters/digits; surrounding whitespace is ignored (which is why maxLength is 10), but the value must not contain internal spaces. Short numeric values are zero-padded to 8 characters. A whitespace-only or over-long value is rejected as INVALID_INPUT before any payment or upstream call.",
      +  "maxLength": 10,
      +  "minLength": 1,
      +  "pattern": "^\\s*[A-Za-z0-9]{1,8}\\s*$",
      +  "type": "string"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "companyNumber"
      -]New value: +[
      +  "company_number"
      +]
  4. Changed11 schema fields changed
    • addedInput schema / properties / detail
      Added value: +{
      +  "description": "How much of each charge to return. Default summary. `full` adds the four members the register populates only for particular filings — acquired_on, resolved_on, assets_ceased_released and more_than_four_persons_entitled — which are null on the great majority of charges.",
      +  "enum": [
      +    "summary",
      +    "full"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / limit / description
      Previous value: -"Maximum charges to return per page (1-100). Default 25."New value: +"Maximum charges to return per page (1-100). Default 5."
    • changedInput schema / properties / offset / description
      Previous value: -"Zero-based index into the register's charge list. The list is returned whole (nothing is filtered out after reading), so offset + charges.length < total_count is the end-of-list test."New value: +"Zero-based index into the register's charge list (not into the filtered result). Pass back page.next_offset from the previous response to page."
    • addedInput schema / properties / status
      Added value: +{
      +  "description": "Which charges to return. Default `all`. `outstanding` returns the charges that are still security over the company (everything the register has not marked satisfied or fully-satisfied, including part-satisfied); `satisfied` returns the discharged ones. The register offers no server-side filter, so Eckari applies it after reading up to three register pages of 100 charges — read page.has_more rather than items.length.",
      +  "enum": [
      +    "outstanding",
      +    "satisfied",
      +    "all"
      +  ],
      +  "type": "string"
      +}
    • removedOutput schema / properties / data / additionalProperties
      Removed value: -false
    • changedOutput schema / properties / data / description
      Previous value: -"Contains public sector information licensed under the Open Government Licence v3.0 (Companies House)."New value: +"Capability output; full JSON Schema at https://api.eckari.com/v1/capabilities/company.uk.charges"
    • removedOutput schema / properties / data / properties
      Removed value: -{
      -  "charges": {
      -    "items": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "acquired_on": {
      -          "format": "date",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "assets_ceased_released": {
      -          "description": "Register cease/release information (mapped from the register field name).",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "charge_code": {
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "charge_number": {
      -          "type": "integer"
      -        },
      -        "classification": {
      -          "items": {
      -            "additionalProperties": false,
      -            "properties": {
      -              "description": {
      -                "type": "string"
      -              },
      -              "type": {
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "type",
      -              "description"
      -            ],
      -            "type": "object"
      -          },
      -          "type": "array"
      -        },
      -        "created_on": {
      -          "format": "date",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "delivered_on": {
      -          "format": "date",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "id": {
      -          "type": "string"
      -        },
      -        "is_outstanding": {
      -          "description": "Derived; false when status is satisfied or fully-satisfied (the two terminal keys), true otherwise — including part-satisfied, where security remains in force. An unrecognised future status is reported as outstanding rather than silently discharged.",
      -          "type": "boolean"
      -        },
      -        "more_than_four_persons_entitled": {
      -          "type": [
      -            "boolean",
      -            "null"
      -          ]
      -        },
      -        "particulars": {
      -          "items": {
      -            "additionalProperties": false,
      -            "properties": {
      -              "chargor_acting_as_bare_trustee": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "contains_fixed_charge": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "contains_floating_charge": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "contains_negative_pledge": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "description": {
      -                "type": "string"
      -              },
      -              "floating_charge_covers_all": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "type": {
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "type",
      -              "description"
      -            ],
      -            "type": "object"
      -          },
      -          "type": "array"
      -        },
      -        "persons_entitled": {
      -          "items": {
      -            "additionalProperties": false,
      -            "properties": {
      -              "name": {
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "name"
      -            ],
      -            "type": "object"
      -          },
      -          "type": "array"
      -        },
      -        "resolved_on": {
      -          "format": "date",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "satisfied_on": {
      -          "format": "date",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "secured_details": {
      -          "items": {
      -            "additionalProperties": false,
      -            "properties": {
      -              "description": {
      -                "type": "string"
      -              },
      -              "type": {
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "type",
      -              "description"
      -            ],
      -            "type": "object"
      -          },
      -          "type": "array"
      -        },
      -        "status": {
      -          "description": "Companies House charge status. outstanding — registered and not discharged. part-satisfied — partly discharged, security still in force for the remainder. satisfied and fully-satisfied — both terminal: the register uses two keys for a fully discharged charge and the public register renders either as \"Satisfied\", so filtering on one alone gives the wrong answer. Use is_outstanding instead.",
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "id",
      -        "charge_number",
      -        "status",
      -        "is_outstanding",
      -        "created_on",
      -        "delivered_on",
      -        "satisfied_on",
      -        "classification",
      -        "particulars",
      -        "persons_entitled"
      -      ],
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  "company_number": {
      -    "type": "string"
      -  },
      -  "offset": {
      -    "type": "integer"
      -  },
      -  "outstanding_count": {
      -    "description": "Derived, register-wide: total_count minus satisfied_count — the charges the register has not recorded as discharged. Part-satisfied charges are counted as outstanding because the security has not been fully released; part_satisfied_count reports them separately. That makes this equal to the public register's own \"Outstanding\" headline only when part_satisfied_count is 0; when it is not, this figure is larger by exactly that number, because the register lists part-satisfied charges under their own heading. Null when the register omits total_count or satisfied_count.",
      -    "type": [
      -      "integer",
      -      "null"
      -    ]
      -  },
      -  "part_satisfied_count": {
      -    "description": "Register-wide count of charges the register records as partly discharged. These are also included in outstanding_count.",
      -    "type": [
      -      "integer",
      -      "null"
      -    ]
      -  },
      -  "satisfied_count": {
      -    "description": "Register-wide count of charges the register records as fully discharged (status satisfied or fully-satisfied). Not a count of the returned page.",
      -    "type": [
      -      "integer",
      -      "null"
      -    ]
      -  },
      -  "total_count": {
      -    "description": "Total charges registered against the company. Register-wide",
      -    "not a count of the returned page.": null,
      -    "type": [
      -      "integer",
      -      "null"
      -    ]
      -  }
      -}
    • removedOutput schema / properties / data / required
      Removed value: -[
      -  "company_number",
      -  "total_count",
      -  "outstanding_count",
      -  "satisfied_count",
      -  "part_satisfied_count",
      -  "offset",
      -  "charges"
      -]
    • addedOutput schema / properties / meta / properties / attribution_url
      Added value: +{
      +  "format": "uri",
      +  "type": "string"
      +}
    • addedOutput schema / properties / meta / properties / retrieved_at / format
      Added value: +"date-time"
    • addedOutput schema / properties / meta / required
      Added value: +[
      +  "capability",
      +  "version",
      +  "retrieved_at",
      +  "source",
      +  "freshness",
      +  "request_id"
      +]
  5. First observed

TDQS

A4.3/5.0
Behavior3/5

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

The annotations already establish that this is read-only, idempotent, and non-destructive, so the safety profile is covered. The description adds the scope limitation about insolvency and points to resource flags, but does not disclose additional behavioral traits such as auth needs, rate limits, or output-shape caveats in prose. With the annotation bar lower, a 3 is appropriate.

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

Conciseness5/5

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

The description is front-loaded with the core result, then uses compact labeled sections for use, not-for, related tools, and price. Every sentence contributes selection or invocation value, and the longer parameter notes are justified by the tool's complexity.

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

Completeness5/5

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

For a five-parameter tool with a rich output schema, the definition covers what the tool does, when to use it, what it is not for, related resources, pricing, and the main limitations. The schema and annotations complete the operational details, so nothing needed for correct invocation is left ambiguous.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline applies. The prose description does not add parameter-level meaning beyond what the input schema already provides; the schema's detailed parameter notes are doing the work, but that is structured data rather than extra description value.

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

Purpose5/5

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

The description states exactly what the tool returns: charges registered against a UK company at Companies House, with charge types, dates, classification, particulars, and persons entitled. This is specific enough to distinguish it clearly from siblings like company_uk_filings, company_uk_profile, and company_uk_status.

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

Usage Guidelines5/5

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

The description gives explicit 'Use when' and 'Not for' guidance, names the relevant decision (outstanding security and who holds it), explicitly excludes insolvency proceedings, and lists related tools. An agent can determine when to select this tool without inferring the conditions.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources