Skip to main content
Glama

Get Charity Profile

charity_profile
Read-onlyIdempotent

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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
charity_numberYesCharity Commission registration number (e.g. '1234567'). Returned by charity_search.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
addressNoRegistered address of the charity (joined address lines).
insolventNoTrue if the charity is flagged as insolvent.
reg_statusNoRegistration status code ('R', 'RM').
charity_nameNoRegistered charity name.
charity_typeNoCharity type.
latest_incomeNoLatest filed annual income in GBP.
trustee_namesNoTrustees on record. Truncated to 30 entries.
charity_numberYesCharity registration number.
who_what_whereNoWho/What/Where classification entries. The list may be truncated truncated to 50 entries.
reg_status_labelNoHuman-readable registration status.
in_administrationNoTrue if the charity is in administration.
latest_expenditureNoLatest filed annual expenditure in GBP.
trustee_names_totalNoTotal trustees upstream before truncation.
date_of_registrationNoDate of first registration.
who_what_where_totalNoTotal classification entries upstream before truncation.
charity_co_reg_numberNoCompanies House number for charities also registered as companies (Charitable Incorporated Organisations, etc.).
countries_of_operationNoCountries the charity operates in (capped at 10 upstream).
trustee_names_truncatedNoTrue if the trustee list was truncated.
who_what_where_truncatedNoTrue if the classification list was truncated.

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Added
  2. Removed
  3. Changed2 schema fields changed
    • changedOutput schema / properties / trustee_names / description
      Previous value: -"Trustees on record. The list may be truncated per the `max_trustees` input."New value: +"Trustees on record. Truncated to 30 entries."
    • changedOutput schema / properties / who_what_where / description
      Previous value: -"Who/What/Where classification entries. The list may be truncated per the `max_classifications` input."New value: +"Who/What/Where classification entries. The list may be truncated truncated to 50 entries."
  4. Added
  5. Removed
  6. Changed27 schema fields changed
    • addedInput schema / properties / max_classifications
      Added value: +{
      +  "default": 50,
      +  "description": "Cap on the number of Who/What/Where classification entries returned. Large charities have 100+. Default 50.",
      +  "maximum": 500,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / max_trustees
      Added value: +{
      +  "default": 30,
      +  "description": "Cap on the number of trustees returned. Prolific charities have 50+ trustees on file. Default 30.",
      +  "maximum": 500,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • removedInput schema / properties / response_format
      Removed value: -{
      -  "default": "markdown",
      -  "description": "Output format: 'markdown' or 'json'",
      -  "type": "string"
      -}
    • changedOutput schema / description
      Previous value: -"Generic wrapper for non-object return types."New value: +"Full Charity Commission profile for a single charity."
    • addedOutput schema / properties / address
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Registered address of the charity (joined address lines)."
      +}
    • addedOutput schema / properties / charity_co_reg_number
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Companies House number for charities also registered as companies (Charitable Incorporated Organisations, etc.)."
      +}
    • addedOutput schema / properties / charity_name
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Registered charity name."
      +}
    • addedOutput schema / properties / charity_number
      Added value: +{
      +  "description": "Charity registration number.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / charity_type
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Charity type."
      +}
    • addedOutput schema / properties / countries_of_operation
      Added value: +{
      +  "description": "Countries the charity operates in (capped at 10 upstream).",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / date_of_registration
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Date of first registration."
      +}
    • addedOutput schema / properties / in_administration
      Added value: +{
      +  "default": false,
      +  "description": "True if the charity is in administration.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / insolvent
      Added value: +{
      +  "default": false,
      +  "description": "True if the charity is flagged as insolvent.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / latest_expenditure
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Latest filed annual expenditure in GBP."
      +}
    • addedOutput schema / properties / latest_income
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Latest filed annual income in GBP."
      +}
    • addedOutput schema / properties / raw
      Added value: +{
      +  "additionalProperties": true,
      +  "description": "Full raw Charity Commission profile payload for any field not surfaced explicitly on this model.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / reg_status
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Registration status code ('R', 'RM')."
      +}
    • addedOutput schema / properties / reg_status_label
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Human-readable registration status."
      +}
    • removedOutput schema / properties / result
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / trustee_names
      Added value: +{
      +  "description": "Trustees on record. The list may be truncated per the `max_trustees` input.",
      +  "items": {
      +    "description": "A single charity trustee record.",
      +    "properties": {
      +      "trustee_name": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Trustee name."
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / trustee_names_total
      Added value: +{
      +  "default": 0,
      +  "description": "Total trustees upstream before truncation.",
      +  "type": "integer"
      +}
    • addedOutput schema / properties / trustee_names_truncated
      Added value: +{
      +  "default": false,
      +  "description": "True if the trustee list was truncated.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / who_what_where
      Added value: +{
      +  "description": "Who/What/Where classification entries. The list may be truncated per the `max_classifications` input.",
      +  "items": {
      +    "description": "Who/What/Where classification descriptor.",
      +    "properties": {
      +      "classification_desc": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Classification description text."
      +      },
      +      "classification_type": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "description": "Classification axis: 'What', 'Who', or 'Where'."
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / who_what_where_total
      Added value: +{
      +  "default": 0,
      +  "description": "Total classification entries upstream before truncation.",
      +  "type": "integer"
      +}
    • addedOutput schema / properties / who_what_where_truncated
      Added value: +{
      +  "default": false,
      +  "description": "True if the classification list was truncated.",
      +  "type": "boolean"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "result"
      -]New value: +[
      +  "charity_number"
      +]
    • removedOutput schema / x-fastmcp-wrap-result
      Removed value: -true
  7. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly, non-destructive, and idempotent. The description adds meaningful behavioral context about what data to expect (trustees, income/expenditure, insolvency flags) and that it returns a 'full' profile. This goes beyond the annotations without contradicting them.

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?

Two sentences, front-loaded with the core action, and no filler. The second sentence efficiently lists return contents. Every word earns its place.

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?

Given the simple one-parameter schema and availability of an output schema, the description covers the essential context: what it fetches, what it returns, and the prerequisite step. No significant gaps remain.

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 coverage is 100% and the parameter description already explains the format and origin ('Returned by charity_search'). The tool description reinforces the usage but doesn't add new meaning beyond the schema beyond implying the parameter is central to the lookup.

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 uses the specific verb 'Fetch' with a clear resource ('full Charity Commission profile') and the input parameter ('charity number'). It lists concrete data fields returned (trustees, income/expenditure, insolvency flags, etc.), which distinguishes this from sibling tools like charity_search or company_profile.

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?

Explicitly instructs to use charity_search first to obtain the charity number, which is a clear prerequisite and aligns with the sibling tool. This tells the agent when to use this tool versus the search alternative.

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.

TDQS

A4.2/5.0
Disambiguation4/5

The domain-specific tools are clearly distinct (search vs profile for each register), and the generic search/fetch tools are designed to route across them. Potential overlap between company_officers and company_psc is resolved by clear descriptions of officers vs beneficial ownership. Slight ambiguity exists between generic fetch/search and the domain-specific counterparts, but the routing logic is well-documented.

Naming Consistency4/5

Most tools follow a consistent resource_action pattern with clear prefixes (charity_, company_, disqualified_, gazette_). Exceptions like company_officers, company_psc, sanctions_screen, and vat_validate deviate from the verb-first convention, and generic tools (fetch, search, get_prompt, list_prompts) do not follow the pattern. Overall, the naming is readable and predictable despite a few outliers.

Tool Count4/5

With 17 tools, the server sits slightly above the typical 3-15 well-scoped range, but the breadth of the domain (Companies House, Charity Commission, disqualifications, Gazette insolvency, sanctions, land registry, VAT) justifies the count. Each tool serves a distinct data source or action, and the two prompt-management tools are standard MCP utilities. The count feels appropriate rather than excessive.

Completeness4/5

The server covers the core due diligence workflow: searching and retrieving profiles for companies, charities, and disqualified directors, plus insolvency notices, sanctions screening, land transactions, and VAT validation. Minor gaps exist, such as no direct tool for company accounts or court judgments, but these are not core to the apparent purpose and can be worked around.