Skip to main content
Glama

capabilities

Search legal entities by name in the GLEIF LEI register

entity_lei_search
Read-onlyIdempotent

Find Legal Entity Identifiers by company name in the global GLEIF register, optionally narrowed to one country. Returns the LEI, legal name, registration and entity status, jurisdiction, legal address and the local registry the entity is registered at — the identifier bridge between national company registers worldwide. Use when: What is the LEI for this company? Not for: You already have the LEI — use entity.lei.profile. Related: entity_lei_profile; company_uk_search; company_us_resolve. Price: USD 0.003/call (x402), 0.002 (account key).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
qYesLegal entity name or name fragment. GLEIF applies its own matching to this value; Eckari does not re-rank the results.
limitNoMaximum number of entities to return. Capped at 25 because that is the most records one fuzzy-completion fill-in pass can hydrate; a larger page could not be filled and would misreport how much GLEIF holds.
offsetNoZero-based offset into the result set for paging. Pass back page.next_offset from the previous response; page.has_more says whether there is one. GLEIF pages by page number, so an offset that is a multiple of limit is one upstream page - which is every offset page.next_offset produces. Capped at 9900 because GLEIF refuses page-based pagination beyond 10,000 records; beyond that, narrow the query.
countryNoISO 3166-1 alpha-2 country code of the entity's legal address, used to narrow the search (e.g. GB, US, DE).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataYesCapability output; full JSON Schema at https://api.eckari.com/v1/capabilities/entity.lei.search
metaYes

Schema Changelog

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

  1. Changed1 schema field changed
    • addedInput schema / properties / offset
      Added value: +{
      +  "description": "Zero-based offset into the result set for paging. Pass back page.next_offset from the previous response; page.has_more says whether there is one. GLEIF pages by page number, so an offset that is a multiple of limit is one upstream page - which is every offset page.next_offset produces. Capped at 9900 because GLEIF refuses page-based pagination beyond 10,000 records; beyond that, narrow the query.",
      +  "maximum": 9900,
      +  "minimum": 0,
      +  "type": "integer"
      +}
  2. Changed7 schema fields changed
    • removedOutput schema / properties / data / additionalProperties
      Removed value: -false
    • addedOutput schema / properties / data / description
      Added value: +"Capability output; full JSON Schema at https://api.eckari.com/v1/capabilities/entity.lei.search"
    • removedOutput schema / properties / data / properties
      Removed value: -{
      -  "country": {
      -    "description": "Upper-cased ISO 3166-1 alpha-2 filter applied, or null when no country filter was supplied.",
      -    "type": [
      -      "string",
      -      "null"
      -    ]
      -  },
      -  "items": {
      -    "description": "Entities in GLEIF's own order. Records matched by the authoritative name filter come first, then records added from GLEIF's fuzzy name completion, de-duplicated by LEI. Eckari applies no scoring of its own.",
      -    "items": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "entity_status": {
      -          "description": "Legal entity status recorded by GLEIF (e.g. ACTIVE, INACTIVE, NULL).",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "jurisdiction": {
      -          "description": "Legal jurisdiction as an ISO 3166 country or subdivision code (e.g. GB, US-CA).",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "legal_address": {
      -          "additionalProperties": false,
      -          "description": "Registered legal address as held by GLEIF.",
      -          "properties": {
      -            "city": {
      -              "description": "City or town.",
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "country": {
      -              "description": "ISO 3166-1 alpha-2 country code.",
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "lines": {
      -              "description": "Street address lines in GLEIF order.",
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "postal_code": {
      -              "description": "Postal code as held by GLEIF.",
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "region": {
      -              "description": "ISO 3166-2 subdivision code, or null.",
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            }
      -          },
      -          "required": [
      -            "lines",
      -            "city",
      -            "region",
      -            "country",
      -            "postal_code"
      -          ],
      -          "type": [
      -            "object",
      -            "null"
      -          ]
      -        },
      -        "legal_name": {
      -          "description": "Registered legal name as held by GLEIF, or null when the record carries no legal name. Never falls back to the LEI itself — an identifier is not a name.",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "legal_name_language": {
      -          "description": "ISO language code of the legal name, or null when GLEIF states none.",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "lei": {
      -          "description": "20-character ISO 17442 Legal Entity Identifier.",
      -          "type": "string"
      -        },
      -        "match_source": {
      -          "description": "How GLEIF surfaced this record — filter means the authoritative legal-name filter, fuzzy means GLEIF's name-completion service.",
      -          "enum": [
      -            "filter",
      -            "fuzzy"
      -          ],
      -          "type": "string"
      -        },
      -        "registered_as": {
      -          "description": "The entity's identifier in that local registry. When ra_code is RA000585 this is a UK company number usable with company.uk.profile and company.uk.status.",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "registered_at": {
      -          "additionalProperties": false,
      -          "description": "Business registry the entity is registered at, as an ISO 17442 Registration Authority code.",
      -          "properties": {
      -            "other": {
      -              "description": "Free-text authority name when the entity's registry has no RA code.",
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "ra_code": {
      -              "description": "Registration Authority code (e.g. RA000585 is UK Companies House, RA000598 is the California Secretary of State). RA999999 means no listed authority.",
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            }
      -          },
      -          "required": [
      -            "ra_code",
      -            "other"
      -          ],
      -          "type": "object"
      -        },
      -        "status": {
      -          "description": "LEI registration status (e.g. ISSUED, LAPSED, RETIRED, ANNULLED, MERGED). ISSUED means the registration is current.",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        }
      -      },
      -      "required": [
      -        "lei",
      -        "legal_name",
      -        "legal_name_language",
      -        "status",
      -        "entity_status",
      -        "jurisdiction",
      -        "legal_address",
      -        "registered_at",
      -        "registered_as",
      -        "match_source"
      -      ],
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  "query": {
      -    "description": "The trimmed query as sent to GLEIF.",
      -    "type": "string"
      -  },
      -  "total_results": {
      -    "description": "Total entities GLEIF reports for its authoritative legal-name filter, independent of the page size. GLEIF publishes no total for the fuzzy name-completion fill-ins, so they are not counted; the only adjustment is a floor at the number of items actually returned, so total_results is never smaller than items.length. It is not a pageable total — this capability returns one page and has no offset.",
      -    "minimum": 0,
      -    "type": "integer"
      -  }
      -}
    • removedOutput schema / properties / data / required
      Removed value: -[
      -  "query",
      -  "country",
      -  "total_results",
      -  "items"
      -]
    • 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"
      +]
  3. First observed

TDQS

A5/5.0
Behavior5/5

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

Annotations already mark read-only, open-world, idempotent. Description adds valuable behavioral context: GLEIF applies its own matching, Eckari does not re-rank, pagination limitations (limit capped at 25 due to hydration constraints, offset capped at 9900 due to GLEIF restrictions). This goes beyond what annotations provide.

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 plus structured usage/not-for/related section. No redundant information. Front-loaded with core purpose, then use guidance. Pricing included sans clutter.

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 tool complexity (4 parameters, output schema exists), the description covers purpose, usage, behavior, parameter semantics, and return fields (LEI, legal name, etc.). Output schema likely details return structure further, so description is sufficient without being overlong.

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

Parameters5/5

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

Schema coverage is 100%, so baseline 3. Description adds significant meaning: explains how GLEIF matching works for parameter q, why limit is capped at 25, offset pagination mechanics (page number vs offset), ISO code format for country. All param descriptions provide practical context beyond schema.

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 explicitly states it finds Legal Entity Identifiers by company name in the GLEIF register, with optional country filter, and lists returned fields. It distinguishes from sibling tools by specifying when to use entity_lei_profile instead and relation to company register tools.

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?

Directly states 'Use when: What is the LEI for this company?' and 'Not for: You already have the LEI — use entity.lei.profile.' Also names related tools, providing clear decision guidance. Includes pricing info helpful for cost-aware agents.

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.4/5.0
Disambiguation4/5

Tools are largely distinct, targeting specific entities (UK company, US company, domain, LEI, FX, location, parcel, weather) or sub-aspects (e.g., accounts vs. charges vs. directors). Overlap exists between company.uk.profile and company.uk.status (both contain status info, but the latter is cheaper and focused). Also, company.uk.filings and company.us.filings_latest could be confused if an agent generalizes 'filings' across jurisdictions.

Naming Consistency5/5

All tools follow a consistent pattern: domain_entity_subject (e.g., company_uk_accounts, domain_expiry, weather_us_alerts). Underscores and lower case are used throughout. Verbs are implied by the noun (e.g., 'search' for lookup, 'detect' for identification). No mixed conventions or unpredictable names.

Tool Count4/5

24 tools is on the high side but still reasonable for a general-purpose data server spanning multiple domains (company, domain, entity, fx, location, parcel, weather). Each domain gets a cohesive set, and the documentation justifies each tool. Could be slightly leaner if some niche tools (e.g., domain_expiry vs. registration) were merged, but overall scoping is acceptable.

Completeness4/5

Each domain offers good coverage: UK company tools cover CRUD-like operations (profile, status, search, filings, charges, directors, owners, registered office); similarly for US companies (profile, filings, resolve, latest filings). Weather has forecast, observation, alerts. Parcel only detects carrier (no tracking). Missing features like advanced filtering on company filings or less common domains, but core workflows are covered.

Resources