Skip to main content
Glama

ENTIA Entity Verification

Entity Lookup

entity_lookup
Read-onlyIdempotent

FREE (no API key needed). Use when the user asks whether a company exists, who is behind a CIF/NIF, EU VAT or LEI, its registered legal name, city, sector or BORME (Spanish Commercial Registry) status. Look up any business entity by name, CIF/NIF, EU VAT, or LEI. Free callers receive a trace-level identity preview; authenticated callers receive the full paid dossier.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "entity_lookup"
  }
}

Input Schema

NameRequiredDescriptionDefault
qNoCompany name, CIF/NIF (B82846825), EU VAT (ESB82846825), or LEI (20 chars)
nameNoAlias for `q` — accepted for compatibility with clients that send `name`.
queryNoAlias for `q` — accepted for compatibility with clients that send `query`.

Output Schema

NameRequiredDescriptionDefault
_metaNo
foundNoTrue only when an identity anchor corroborated the query
queryNo
entityNoVerified identity: legal name, tax id, address, sector
integrityNoTamper-evidence MAC. Not an electronic signature
error_codeNo
provenanceNoPublisher and data sources of this answer
data_coverageNoWhich sources answered and which did not
registry_dataNoOfficial registry payload (BORME/GLEIF/VIES/native)
coherence_errorsNo
economic_profileNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedOutput schema / properties / integrity
      Added value: +{
      +  "description": "Tamper-evidence MAC. Not an electronic signature",
      +  "type": "object"
      +}
    • removedOutput schema / properties / legal_framework
      Removed value: -{
      -  "type": "object"
      -}
    • addedOutput schema / properties / provenance
      Added value: +{
      +  "description": "Publisher and data sources of this answer",
      +  "type": "object"
      +}
    • removedOutput schema / properties / signature
      Removed value: -{
      -  "description": "Provenance signature of this answer",
      -  "type": "string"
      -}
  2. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "description": "Identity resolution result. `found` is fail-closed: false means no identity anchor was corroborated, not 'try again'.",
      +  "properties": {
      +    "_meta": {
      +      "type": "object"
      +    },
      +    "coherence_errors": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "data_coverage": {
      +      "description": "Which sources answered and which did not",
      +      "type": "object"
      +    },
      +    "economic_profile": {
      +      "type": "object"
      +    },
      +    "entity": {
      +      "description": "Verified identity: legal name, tax id, address, sector",
      +      "type": "object"
      +    },
      +    "error_code": {
      +      "type": "string"
      +    },
      +    "found": {
      +      "description": "True only when an identity anchor corroborated the query",
      +      "type": "boolean"
      +    },
      +    "legal_framework": {
      +      "type": "object"
      +    },
      +    "query": {
      +      "type": "string"
      +    },
      +    "registry_data": {
      +      "description": "Official registry payload (BORME/GLEIF/VIES/native)",
      +      "type": "object"
      +    },
      +    "signature": {
      +      "description": "Provenance signature of this answer",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  3. Changed3 schema fields changed
    • addedInput schema / properties / name
      Added value: +{
      +  "description": "Alias for `q` — accepted for compatibility with clients that send `name`.",
      +  "type": "string"
      +}
    • addedInput schema / properties / query
      Added value: +{
      +  "description": "Alias for `q` — accepted for compatibility with clients that send `query`.",
      +  "type": "string"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "q"
      -]New value: +[]
  4. Changed3 schema fields changed
    • removedInput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
    • removedInput schema / additionalProperties
      Removed value: -false
    • changedInput schema / properties / q / description
      Previous value: -"Company name, CIF/NIF (e.g. B82846825), EU VAT ID (e.g. ESB82846825), or LEI code (20 chars). The API auto-detects the input type."New value: +"Company name, CIF/NIF (B82846825), EU VAT (ESB82846825), or LEI (20 chars)"
  5. First observed

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so the safety profile is covered. The description adds genuinely useful behavior beyond that: the call is free with no API key, and the response depth is tiered (trace-level identity preview when unauthenticated versus the full paid dossier when authenticated). It stops short of stating rate limits or what the trace-level preview actually contains.

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

Conciseness4/5

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

Four short sentences, front-loaded with the strongest differentiator ("FREE (no API key needed)") and then the usage trigger. The identifier list in sentence three partially repeats sentence two, a small redundancy, but nothing else is wasted.

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

Completeness4/5

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

An output schema exists, so return-shape explanation is not required, and the free-versus-authenticated response tiers are the key thing an agent needs to set user expectations. The remaining gap is disambiguation from the many lookup-adjacent siblings and what happens with no arguments at all.

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%, so q and its aliases (name, query) are fully documented in the schema, including formats and length bounds. The description restates the same identifier types but adds no syntax, precedence rules for when both q and name are supplied, or guidance on the empty-argument case (zero required params). Baseline 3 applies.

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

Purpose4/5

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

States a concrete verb+resource ("Look up any business entity") plus the accepted identifier types, and enumerates the questions it answers (existence, ownership, legal name, city, sector, BORME status). It does not name or distinguish itself from siblings like search_entities, professional_lookup, or get_full_dossier, which overlap heavily with this space.

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

Usage Guidelines4/5

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

"Use when the user asks whether a company exists, who is behind a CIF/NIF, EU VAT or LEI..." gives explicit trigger conditions tied to user intent, which is strong. There are no when-not conditions and no named alternatives, so an agent still has to guess whether search_entities or professional_lookup is the better fit.

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.