ENTIA Entity Verification
Server Details
11.3M entities, 10 countries, 12 tools. EU VAT (VIES), BORME, GLEIF, KYB. Free: 100 req/month.
- Status
- Healthy
- Uptime
- 100.0% over 37 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2024-11-05
- URL
- Repository
- ENTIA-IA/entia-mcp-server
- GitHub Stars
- 1
- Server Listing
- ENTIA Entity Verification
TDQS
Scored across 12 tools
Most tools target distinct resources, but get_entia_home and get_entity_home_projection are near-duplicates representing the same Entia Home concept from slightly different technical angles. entity_lookup and get_full_dossier also overlap since entity_lookup already mentions returning the full paid dossier, and get_competitors is a specialized variant of search_entities.
The set mixes get_* names with bare action names like entity_lookup, search_entities, verify_vat, and professional_lookup, so there is no single consistent verb_noun pattern. The names are still readable and somewhat predictable, but the inconsistency is noticeable and get_entia_home vs get_entity_home_projection adds confusion.
Twelve tools is within a reasonable range for an entity-verification server, and most tools serve a distinct due-diligence purpose. However, a few tools are auxiliary or redundant: get_showcase and get_platform_stats are exploratory rather than core verification, and the two Entia Home retrieval tools could be consolidated.
The server covers the core verification lifecycle well: entity lookup by identifiers, flexible search, VAT validation, professional verification, competitor discovery, full dossiers, and risk auditing. Minor gaps exist, such as no direct way to fetch a raw single source like VIES or BORME independently and no entity relationship/ownership endpoint, but these are workable for typical KYB workflows.
Available Tools
12 toolsentity_lookupEntity LookupARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Company name, CIF/NIF (B82846825), EU VAT (ESB82846825), or LEI (20 chars) | |
| name | No | Alias for `q` — accepted for compatibility with clients that send `name`. | |
| query | No | Alias for `q` — accepted for compatibility with clients that send `query`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| _meta | No | |
| found | No | True only when an identity anchor corroborated the query |
| query | No | |
| entity | No | Verified identity: legal name, tax id, address, sector |
| integrity | No | Tamper-evidence MAC. Not an electronic signature |
| error_code | No | |
| provenance | No | Publisher and data sources of this answer |
| data_coverage | No | Which sources answered and which did not |
| registry_data | No | Official registry payload (BORME/GLEIF/VIES/native) |
| coherence_errors | No | |
| economic_profile | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is read-only, idempotent, and non-destructive, so the description only needs to add context beyond that. It does so by disclosing an auth-dependent output split: free callers get a trace-level preview, while authenticated callers get the full paid dossier. This is useful behavioral context that annotations do not capture.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the first states the core purpose and accepted identifiers, and the second adds the key access-level behavior. Every sentence earns its place, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only lookup with three optional parameters and an existing output schema, the description covers the essential context: what can be looked up and what different callers receive. It does not specify behavior when no query parameter is supplied, but the output schema and annotations reduce the impact of that gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%; q, name, and query are each documented in the schema, including alias relationships. The description adds no parameter-level detail beyond what the schema already provides, so it stays at the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('look up'), a resource ('business entity'), and the accepted identifier types (name, CIF/NIF, EU VAT, LEI). It is immediately clear what the tool does, though it does not explicitly differentiate itself from siblings like search_entities or get_full_dossier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The identifier list and 'look up any business entity' imply when the tool should be used, but the description gives no explicit guidance about alternatives or exclusions. With sibling tools such as verify_vat, search_entities, and get_full_dossier, the routing decision is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_competitorsGet CompetitorsARead-onlyIdempotentInspect
Find real competitors in the same sector and city. Ranked entities with identity + location + sector matching. Spain only on the public surface. sector is a closed vocabulary — see the enum; aliases such as abogados (the slug ENTIA uses in its own Entia Home URLs) resolve to their canonical slug.
| Name | Required | Description | Default |
|---|---|---|---|
| city | Yes | City name in Spain (Madrid, Barcelona, Valencia, Sevilla, Bilbao) | |
| limit | No | Max results (1-30) | |
| sector | Yes | ENTIA sector slug. Canonical: dental, legal, estetica, psicologia, medicos, talleres, veterinarios, reformas, inmobiliarias, asesorias, gimnasios… Aliases (abogados, salud, dentist, beautysalon…) resolve to a canonical slug and the response declares the translation in _meta.sector_resolved_from. |
Output Schema
| Name | Required | Description |
|---|---|---|
| city | No | |
| _meta | No | Carries sector_resolved_from / sector_resolved_to |
| count | No | |
| sector | No | Canonical slug actually used after alias resolution |
| country | No | |
| competitors | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate the tool is read-only, open-world, idempotent, and nondestructive. The description adds behavioral insight by explaining how sector aliases are resolved (e.g., `abogados` resolves to canonical slug) and that the response includes `_meta.sector_resolved_from`. This goes beyond annotations, though it does not detail rate limits or potential response variability.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (3 sentences) and front-loaded with the core purpose. The additional detail about sector vocabulary is placed naturally, but the last sentence could be slightly more streamlined to avoid over-explaining the alias resolution, though it remains valuable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema and clear annotations, the description covers the key aspects: purpose, sector vocabulary behavior, and geographic scope. It does not address pagination or ordering of results, which could be inferred from the `limit` parameter. For a ranking tool with clear constraints, this is nearly complete but missing an explicit statement about result ordering (e.g., by relevance).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds significant value beyond the schema by explaining that `sector` is a closed vocabulary with aliases that resolve to canonical slugs, and that the response will indicate the resolution. It also clarifies that `city` is limited to Spanish cities, reinforcing the geographic constraint. This rich semantic guidance helps the agent avoid errors with non-canonical values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Find real competitors in the same sector and city.' It specifies the criteria (identity, location, sector matching) and geographic scope (Spain only), which distinguishes it from siblings like `search_entities` or `entity_lookup` that likely have broader or different search capabilities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage guidance by specifying the geographic constraint ('Spain only on the public surface') and noting that the `sector` parameter uses a closed vocabulary with aliases. However, it does not explicitly mention when not to use this tool (e.g., for non-Spain competitors or non-public data) or compare it directly to sibling tools, though the sibling context suggests differentiation from `search_entities`.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_entia_homeGet Entia HomeARead-onlyIdempotentInspect
Retrieve the Schema.org JSON-LD @graph for a specific entity's Entia Home (machine layer at /v1/identity/{country}/{sector}/{city}/{slug}.jsonld). Requires country, sector, city, slug path segments — not cif/q. Obtain the path via entity_lookup / showcase (canonical_url). Fail-closed: never returns ENTIA corporate marketing as if it were the entity.
| Name | Required | Description | Default |
|---|---|---|---|
| city | Yes | City slug (madrid, barcelona, london) | |
| slug | Yes | Business slug (clinica-dental-sonrisa) | |
| sector | Yes | Industry slug (dental, legal, talleres, …) | |
| country | Yes | ISO 3166-1 alpha-2 (es, gb, fr) |
Output Schema
| Name | Required | Description |
|---|---|---|
| _meta | No | |
| @graph | No | WebPage, Entity, Verification Report and Territorial Profile nodes |
| @context | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false. The description adds critical context beyond annotations: it reveals the machine-layer URL structure, the exact data format (JSON-LD @graph), and the 'fail-closed' behavior that prevents confusion with corporate marketing. This is precisely the kind of behavioral detail annotations alone cannot provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely dense and front-loaded: two sentences with zero waste. The first sentence identifies the exact action, resource, and URL pattern. The second sentence provides critical usage guidance (path sourcing) and behavioral guarantee (fail-closed). Every clause serves a distinct purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema (covering return values), a clear input schema (100% coverage), and strong annotations, the description is complete for an agent: it explains what the tool retrieves, how to get the right path, and what failure behavior to expect. A 5 would require mentioning a prerequisite (e.g., 'entity_lookup must be called first to obtain the canonical_url') or potential error cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter having a description and regex pattern. The description reinforces the path-segment nature of the parameters ('country, sector, city, slug path segments') but adds no new constraints or semantics beyond what the schema already provides. A baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs ('Retrieve the Schema.org JSON-LD @graph') and names the exact resource ('Entia Home (machine layer at /v1/identity/{country}/{sector}/{city}/{slug}.jsonld)'). It clearly distinguishes itself from siblings like 'get_showcase' and 'entity_lookup' by detailing the path structure and data format.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states that the path must come from 'entity_lookup / showcase (canonical_url)' and clearly excludes using 'cif/q'. It does not, however, explicitly state when NOT to use this tool compared to siblings like 'get_entity_home_projection' or 'get_full_dossier', which would elevate it to a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_entity_home_projectionGet Entity Home Projection v1ARead-onlyIdempotentInspect
Read the materializer snapshot entia.entity_home_projection.v1 for an Entia Home (claims + projection + policy). Same truth as the public ficha HTML/JSON-LD twin. Serve from R2 sibling .projection.v1.json — no ad-hoc MCP enrichment.
| Name | Required | Description | Default |
|---|---|---|---|
| city | Yes | City slug (madrid, barcelona) | |
| slug | Yes | Business slug (clinica-dental-ceodent) | |
| sector | Yes | Industry slug (dental, legal, …) | |
| country | Yes | ISO 3166-1 alpha-2 (es, gb, fr) | |
| include_render_context | No | If true, keep render_context (large). Default strips it for agents. |
Output Schema
| Name | Required | Description |
|---|---|---|
| gate | No | PUBLISH / PARTIAL / HOLD / REGISTRY_ONLY |
| _meta | No | |
| claims | No | |
| policy | No | |
| schema | No | |
| subject | No | |
| projection | No | |
| generated_at | No | |
| corroboration | No | |
| materializer_version | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint. The description adds valuable behavioral context: it reads from a materializer snapshot, is served from R2, and has no enrichment. This goes beyond 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no waste. First sentence states purpose, second states equivalence, third states sourcing and limitation. It is front-loaded and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and rich annotations, the description covers the key aspects: what data is returned (claims+projection+policy), data source (materializer snapshot), equivalence to public ficha, and the render_context option. It is sufficiently complete for a read-only projection tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds no parameter-specific information; all parameters are fully documented in the schema. The description does not enhance understanding of parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads a materializer snapshot for an Entia Home containing claims, projection, and policy. It specifies it is the same truth as the public ficha HTML/JSON-LD twin and served from a specific R2 file. This specific verb+resource+scope distinguishes it from siblings like get_entia_home and get_full_dossier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by noting equivalence to the public ficha and that it lacks ad-hoc enrichment, but does not explicitly state when to use this tool versus alternatives like get_entia_home or get_full_dossier. The context is provided but no direct when-not or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_full_dossierGet Full DossierARead-onlyIdempotentInspect
Aggregator — 90+ fields about an entity in one call. Combines 4 ENTIA sources in parallel: identity, zone, BORME, VIES. Killer tool for due diligence/KYB.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Company name, CIF/NIF, EU VAT, or LEI |
Output Schema
| Name | Required | Description |
|---|---|---|
| _meta | No | |
| found | No | |
| query | No | |
| entity | No | |
| integrity | No | |
| provenance | No | |
| trust_score | No | |
| verification | No | |
| data_coverage | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior. The description adds useful behavioral context beyond annotations: it is an 'Aggregator' that combines four sources 'in parallel' and returns a large field set, which informs expectations about scope and data provenance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally compact: scope ('90+ fields in one call'), mechanics ('4 ENTIA sources in parallel'), and use case ('due diligence/KYB') each get a short, meaningful clause. There is no wasted text, and the key aggregation fact is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a read-only, idempotent annotation profile, a single well-documented parameter, and an output schema present, the description does not need to explain return values. It provides the essential behavioral identity, source composition, and intended use, leaving no significant gap for an agent deciding to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: the single 'query' parameter already documents accepted formats ('Company name, CIF/NIF, EU VAT, or LEI'). The description adds no additional parameter-level meaning beyond referring to the target as an entity, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as an aggregator returning '90+ fields about an entity in one call' and names the four combined sources. It conveys a broad entity dossier concept but does not explicitly contrast it with sibling lookup tools like entity_lookup or search_entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a target use case ('Killer tool for due diligence/KYB'), indicating when an agent would want comprehensive entity intelligence. However, it does not provide explicit when-to-use vs alternatives guidance or exclusions, leaving selection partially to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_platform_statsGet Platform StatsARead-onlyIdempotentInspect
Live platform stats: entities count, countries, sources, homes published.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| _meta | No | |
| status | No | |
| cache_ttl | No | |
| countries | No | |
| borme_acts | No | |
| _unverified | No | Figures NOT independently verified — honesty marker, do not quote as verified |
| last_updated | No | |
| sources_active | No | |
| total_entities | No | |
| homes_published | No | |
| countries_active | No | |
| jsonld_generated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering safety and idempotency. The description adds 'Live' to indicate real-time data, which is useful but not critical. No additional behavioral traits (e.g., rate limits, caching) are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently communicates the tool's purpose and output. Every word adds value, and there is no repetition or irrelevant detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with rich annotations and an output schema, the description is largely complete. It specifies the nature ('Live') and the data categories. However, it could briefly mention that the output is a structured object matching the schema, or clarify whether 'Live' implies real-time vs. cached.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so schema coverage is 100%. The description does not need to explain parameters. The baseline of 4 is appropriate since the tool requires no input and the description lists the output fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides 'Live platform stats' and lists specific metrics: entities count, countries, sources, homes published. The verb 'get' combined with resource 'platform stats' is unambiguous and distinct from siblings like entity_lookup or get_showcase.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. The sibling list includes other stats-like tools (e.g., get_entia_home, get_showcase), but the description offers no context for differentiation, such as scope or use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_showcaseGet ShowcaseARead-onlyIdempotentInspect
Curated IBEX35 + EU entity examples. FREE — does not consume quota. Use to explore data depth.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Sample size (default 3, max 5) | |
| category | No | Subset to sample (default: all) |
Output Schema
| Name | Required | Description |
|---|---|---|
| _meta | No | |
| unlock | No | |
| checkout | No | |
| entities | No | |
| upgrade_url | No | |
| access_level | No | |
| gated_fields | No | |
| upgrade_hint | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds meaningful behavior beyond that: it explicitly says the operation is FREE and does not consume quota, and notes that results are curated rather than exhaustive. This is useful operational context for an agent deciding whether to invoke it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences communicate scope, cost behavior, and intended use with no filler. The most important qualifier, 'does not consume quota', is front-loaded. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple, optional-parameter, read-only sampling tool with a full output schema and complete parameter documentation. The description supplies the missing operational context—curated, free, quota-free, exploratory—so an agent has everything needed to invoke it correctly without additional inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents limit and ategory well. The description's mention of 'IBEX35 + EU' loosely aligns with the category enum values but adds no new parameter information beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as returning curated IBEX35 and EU entity examples, which distinguishes its purpose as a sampler/exploration tool. It lacks an explicit verb like 'returns' or 'retrieves', and it does not directly contrast with sibling tools, but the resource and intent are clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Use to explore data depth' gives a clear intended context, and the quota note helps the agent know when cost is a concern. However, it does not explicitly state when to prefer this over alternatives such as search_entities or entity_lookup, nor does it provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
professional_lookupProfessional LookupARead-onlyIdempotentInspect
Verify professional registrations across 24 Spanish health/legal/psychology verticals. Returns colegiado number, college, specialty, status.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Professional name, colegiado number, or REPS identifier | |
| vertical | No | Healthcare/legal vertical (dental, medicos, psicologia, ...) |
Output Schema
| Name | Required | Description |
|---|---|---|
| _meta | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds scope context ('24 Spanish health/legal/psychology verticals') and lists returned fields, but does not disclose additional behavioral traits such as external source behavior, rate limits, or missing-result handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences: the first states the tool's core purpose, and the second lists the key return fields. It is front-loaded, free of filler, and every sentence adds useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter, read-only lookup with complete schema descriptions and an output schema, the description is largely sufficient. It could add a brief explicit pointer to sibling tools or an example, but nothing essential is missing for selecting and invoking it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with query described as 'Professional name, colegiado number, or REPS identifier' and vertical as 'Healthcare/legal vertical (dental, medicos, psicologia, ...)'. The tool description itself adds little parameter-level meaning beyond naming the vertical domains, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action and resource: 'Verify professional registrations' across 24 named Spanish health/legal/psychology verticals. It clearly separates this tool from generic siblings like entity_lookup or search_entities, and the listed return fields make the purpose concrete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: use it to verify professional registration data across Spanish verticals, and it names the vertical categories. It does not explicitly mention when not to use it or point to a sibling alternative, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_risk_auditRun Risk AuditARead-onlyIdempotentInspect
Run comprehensive AI-readiness + digital risk audit on any domain. Analyzes SSL, DNS, structured data, LLM visibility. Returns risk score 0-100. 5 req/min, 30s timeout.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional business name for context | |
| domain | Yes | Domain to audit (clinicadental.es, example.com) | |
| sector_id | No | Optional sector hint (dental, legal, talleres, …) |
Output Schema
| Name | Required | Description |
|---|---|---|
| _meta | No | |
| audit | No | |
| domain | No | |
| job_id | No | |
| status | No | |
| risk_level | No | |
| risk_score | No | |
| audit_token | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint, so the agent knows the tool is safe and idempotent. The description adds valuable behavioral details: the rate limit (5 req/min), timeout (30s), and the specific analysis areas (SSL, DNS, etc.). This goes beyond what annotations offer, though it does not describe error handling or edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences covering purpose, analysis scope, output, and constraints. Every sentence adds value, and the most critical information (what the tool does) is front-loaded. No redundant or unnecessary text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (multiple analysis areas), the presence of detailed annotations, 100% parameter schema coverage, and an output schema, the description is complete. It covers the core function, key inputs, behavioral constraints, and return value without needing to enumerate all possible outputs or error states.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters are described in the input schema (100% coverage), so the schema already provides meaning for each parameter. The description reiterates the domain focus but does not add new semantics beyond the schema. With high schema coverage, the baseline is 3, and the description does not elevate it further.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Run comprehensive AI-readiness + digital risk audit on any domain.' It specifies the verb (run audit), the resource (domain), and the analysis areas (SSL, DNS, structured data, LLM visibility). It also mentions the return value (risk score 0-100), making it distinct from sibling tools like entity_lookup or get_competitors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly tells the agent to use this tool when a risk audit is needed, but it does not explicitly contrast with sibling tools or provide when-not-to-use guidance. There is no mention of alternatives or exclusion criteria, leaving the agent to infer the use case from the tool's name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_entitiesSearch EntitiesARead-onlyIdempotentInspect
Search verified entities across 10 countries by name, keyword, country, city or sector. Answers 'find me a dentist in Madrid' / 'list law firms in Barcelona'. sector is a closed vocabulary — see the enum; aliases such as abogados resolve to their canonical slug. Anonymous callers receive a trace-level preview (name + city); authenticated TRACE+ keys unlock full records.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Search query — company name or keywords | |
| city | No | City name (Madrid, Barcelona, Valencia, Sevilla, London) | |
| limit | No | Max results (default 10, max 50) | |
| sector | No | Sector filter. Canonical: dental, legal, estetica, psicologia, medicos, talleres, veterinarios, reformas, inmobiliarias, asesorias, gimnasios… Aliases (abogados, salud, dentist, beautysalon…) resolve to a canonical slug and the response declares the translation in _meta.sector_resolved_from. | |
| country | No | ISO country code (es, gb, fr) |
Output Schema
| Name | Required | Description |
|---|---|---|
| _meta | No | Carries sector_resolved_from when an alias was translated |
| count | No | |
| filters | No | Filters actually applied — echoes q/sector/city/country |
| entities | No | Each carries name, city, sector and canonical Entia Home URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds meaningful behavioral context: anonymous vs. authenticated access levels affect result richness, and sector aliases resolve to canonical slugs with a _meta field. This goes beyond the annotations, though it does not disclose rate limits or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences that front-load the core purpose, include examples, and cover key behavioral nuances. Every sentence earns its place; there is no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, 56-sector enum, output schema exists), the description covers the most critical aspects: auth-level differences, alias resolution, and usage examples. However, it does not clarify which 10 countries or explain the city/country filtering behavior beyond the examples, leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds value by explaining that the sector parameter uses a closed vocabulary with alias resolution, that aliases resolve to canonical slugs, and that the response includes _meta.sector_resolved_from. This extra context about parameter behavior goes beyond the schema's enum listing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource ('verified entities across 10 countries') and action ('search'), with specific filters (name, keyword, country, city, sector) and example queries. It is specific and actionable, but does not explicitly distinguish from sibling tools like entity_lookup or get_competitors, which would justify a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage examples ('find me a dentist in Madrid') and notes that the sector parameter has a closed vocabulary with alias resolution. However, it lacks explicit guidance on when not to use this tool or which alternatives (e.g., entity_lookup for exact lookups) are more appropriate, leaving usage implied rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_vatVerify VATARead-onlyIdempotentInspect
Real-time EU VAT validation via VIES (27 countries). Returns {valid, name, address, vat_number, country}.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | EU VAT number (ESA28015865, A28015865, IE6388047V) | |
| vat | No | Alias for `q` — the VAT number. | |
| query | No | Alias for `q`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| _meta | No | |
| query | No | |
| result | No | VIES answer: validity, registered name and address |
| vat_number | No | |
| country_code | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the description does not need to restate safety. The description adds value by specifying the return shape ({valid, name, address, vat_number, country}), which complements the annotations and output schema. It also mentions 'Real-time' and 'VIES (27 countries)', providing context beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence (plus a return type snippet) that is fully front-loaded. Every word provides value: 'Real-time', 'EU VAT validation via VIES (27 countries)', and the return structure. No wasted or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a clear purpose, good annotations, and an output schema. The description adds the VIES source and return fields, making it complete for most common use cases. However, it does not address edge cases like VIES unavailability (common in production) or the fact that no parameters are required (a subtle issue). Given the tool's simplicity, this is slightly incomplete but still strong.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%—all three parameters (q, vat, query) are documented in the schema with examples and descriptions. The tool description does not add any parameter-specific meaning beyond what the schema provides, such as clarifying when to use each alias. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('validate'), a specific resource ('EU VAT'), and names the authoritative source ('VIES (27 countries)'). It distinguishes itself from sibling tools (e.g., entity_lookup, professional_lookup) by focusing on VAT validation rather than entity searches or risk audits. The one-line purpose is immediately clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is for real-time VAT checks against EU countries, but provides no explicit guidance on when to use it versus alternatives (e.g., when to prefer this over entity_lookup for VAT data). There are no exclusions or prerequisites stated, such as requiring a specific VAT format or noting VIES downtime. The context is clear but lacks 'when-not' details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zone_profileZone ProfileARead-onlyIdempotentInspect
Socioeconomic profile of a Spanish postal code — 17 blocks: income, employment, demographics, business census, real estate, FTTH, poverty, tourism.
| Name | Required | Description | Default |
|---|---|---|---|
| postal_code | Yes | Spanish 5-digit postal code (28013 = Madrid Gran Vía) |
Output Schema
| Name | Required | Description |
|---|---|---|
| _meta | No | |
| economy | No | |
| province | No | |
| income_aeat | No | |
| postal_code | No | |
| real_estate | No | |
| municipality | No | |
| employment_sepe | No | |
| businesses_dirce | No | |
| demographics_ine | No | |
| autonomous_community | No | |
| entia_classification | No | |
| digital_infrastructure | No | |
| poverty_inequality_ccaa | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare this tool as readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description largely reinforces the read-only nature by describing it as a 'profile', but it does not add behavioral context beyond the annotations. For example, it doesn't mention the size of the response (the output schema exists), or any potential limits on calls, which would add value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly packed sentence that communicates the core function and scope. It efficiently lists the key data domains without unnecessary elaboration. Every part of the sentence earns its place, and the information is front-loaded with the primary verb 'Socioeconomic profile'.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has a single required parameter with full schema coverage and an output schema exists, the description is minimally adequate. It explains what the tool does and what you need to provide. However, for a tool that outputs 17 blocks of data, it could be more helpful by briefly summarizing a few typical use cases or clarifying the breadth of each block (e.g., 'real estate' could mean house prices vs. construction permits). The output schema might cover this, but the description doesn't lean into it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage for the single parameter 'postal_code', including the pattern and an example. The description adds context by stating the tool is for Spanish codes, which reinforces the schema's Spanish designation. Since coverage is high, a baseline of 3 is justified; the description adds a concrete example, pushing it to a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides socioeconomic profiles for Spanish postal codes, listing 17 specific data blocks (income, employment, etc.). This gives a strong and specific sense of the tool's purpose, though it doesn't explicitly differentiate it from its siblings, particularly 'entity_lookup' or 'get_full_dossier', which might have overlapping geographic data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly defines usage context: when you need socioeconomic data for a Spanish postal code. It includes a realistic example (28013 = Madrid Gran Vía) that aids selection. However, there is no explicit guidance on when *not* to use it (e.g., if you need a broader region) or alternatives among the listed siblings, which would have earned a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- Changed
entity_lookup4 fields changed- added
Output schema / properties / integrityAdded value: +{ + "description": "Tamper-evidence MAC. Not an electronic signature", + "type": "object" +} - removed
Output schema / properties / legal_frameworkRemoved value: -{ - "type": "object" -} - added
Output schema / properties / provenanceAdded value: +{ + "description": "Publisher and data sources of this answer", + "type": "object" +} - removed
Output schema / properties / signatureRemoved value: -{ - "description": "Provenance signature of this answer", - "type": "string" -}
- Changed
get_full_dossier4 fields changed- added
Output schema / properties / integrityAdded value: +{ + "type": "object" +} - removed
Output schema / properties / legal_frameworkRemoved value: -{ - "type": "object" -} - added
Output schema / properties / provenanceAdded value: +{ + "type": "object" +} - removed
Output schema / properties / signatureRemoved value: -{ - "type": "string" -}
- Changed
get_showcase2 fields changed- added
Input schema / properties / categoryAdded value: +{ + "description": "Subset to sample (default: all)", + "enum": [ + "all", + "ibex", + "tech", + "banking", + "energy", + "retail", + "spain", + "eu" + ], + "type": "string" +} - added
Input schema / properties / limitAdded value: +{ + "description": "Sample size (default 3, max 5)", + "maximum": 5, + "minimum": 1, + "type": "integer" +}
- Changed
professional_lookup1 field changed- added
Input schema / properties / verticalAdded value: +{ + "description": "Healthcare/legal vertical (dental, medicos, psicologia, ...)", + "maxLength": 40, + "type": "string" +}
12 tool updates
- Changed
entity_lookup1 field changed- changed
Output 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" +}
- Changed
get_competitors1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "description": "Ranked competitors in the same sector and city. Spain only on the public surface.", + "properties": { + "_meta": { + "description": "Carries sector_resolved_from / sector_resolved_to", + "type": "object" + }, + "city": { + "type": "string" + }, + "competitors": { + "items": { + "type": "object" + }, + "type": "array" + }, + "count": { + "type": "integer" + }, + "country": { + "type": "string" + }, + "sector": { + "description": "Canonical slug actually used after alias resolution", + "type": "string" + } + }, + "type": "object" +}
- Changed
get_entia_home1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "description": "Full Schema.org @graph of an Entia Home page — the same truth as its public HTML twin.", + "properties": { + "@context": { + "type": "string" + }, + "@graph": { + "description": "WebPage, Entity, Verification Report and Territorial Profile nodes", + "items": { + "type": "object" + }, + "type": "array" + }, + "_meta": { + "type": "object" + } + }, + "type": "object" +}
- Changed
get_entity_home_projection1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "description": "entia.entity_home_projection.v1 snapshot: claims, corroboration gate and policy.", + "properties": { + "_meta": { + "type": "object" + }, + "claims": { + "type": "object" + }, + "corroboration": { + "type": "object" + }, + "gate": { + "description": "PUBLISH / PARTIAL / HOLD / REGISTRY_ONLY", + "type": "string" + }, + "generated_at": { + "type": "string" + }, + "materializer_version": { + "type": "string" + }, + "policy": { + "type": "object" + }, + "projection": { + "type": "object" + }, + "schema": { + "type": "string" + }, + "subject": { + "type": "object" + } + }, + "type": "object" +}
- Changed
get_full_dossier1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "description": "Aggregated dossier: identity, registry, trust and verification in one call.", + "properties": { + "_meta": { + "type": "object" + }, + "data_coverage": { + "type": "object" + }, + "entity": { + "type": "object" + }, + "found": { + "type": "boolean" + }, + "legal_framework": { + "type": "object" + }, + "query": { + "type": "string" + }, + "signature": { + "type": "string" + }, + "trust_score": { + "type": "object" + }, + "verification": { + "type": "object" + } + }, + "type": "object" +}
- Changed
get_platform_stats1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "description": "Live platform totals. Single source of truth for corpus size.", + "properties": { + "_meta": { + "type": "object" + }, + "_unverified": { + "description": "Figures NOT independently verified — honesty marker, do not quote as verified", + "items": { + "type": "string" + }, + "type": "array" + }, + "borme_acts": { + "type": "integer" + }, + "cache_ttl": { + "type": "integer" + }, + "countries": { + "items": { + "type": "string" + }, + "type": "array" + }, + "countries_active": { + "type": "integer" + }, + "homes_published": { + "type": "integer" + }, + "jsonld_generated": { + "type": "integer" + }, + "last_updated": { + "type": "string" + }, + "sources_active": { + "type": "integer" + }, + "status": { + "type": "string" + }, + "total_entities": { + "type": "integer" + } + }, + "type": "object" +}
- Changed
get_showcase1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "description": "Curated sample entities for evaluation. Fields are gated by tier.", + "properties": { + "_meta": { + "type": "object" + }, + "access_level": { + "type": "string" + }, + "checkout": { + "type": "object" + }, + "entities": { + "items": { + "type": "object" + }, + "type": "array" + }, + "gated_fields": { + "items": { + "type": "string" + }, + "type": "array" + }, + "unlock": { + "type": "object" + }, + "upgrade_hint": { + "type": "string" + }, + "upgrade_url": { + "type": "string" + } + }, + "type": "object" +}
- Changed
professional_lookup1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "description": "Professional registration verification across Spanish health, legal and psychology registries. Enterprise DPA required.", + "properties": { + "_meta": { + "type": "object" + } + }, + "type": "object" +}
- Changed
run_risk_audit1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "description": "AI-readiness and digital risk audit of a domain.", + "properties": { + "_meta": { + "type": "object" + }, + "audit": { + "type": "object" + }, + "audit_token": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "job_id": { + "type": "string" + }, + "risk_level": { + "type": "string" + }, + "risk_score": { + "type": "number" + }, + "status": { + "type": "string" + } + }, + "type": "object" +}
- Changed
search_entities1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "description": "Paged catalogue search over the verified corpus.", + "properties": { + "_meta": { + "description": "Carries sector_resolved_from when an alias was translated", + "type": "object" + }, + "count": { + "type": "integer" + }, + "entities": { + "description": "Each carries name, city, sector and canonical Entia Home URL", + "items": { + "type": "object" + }, + "type": "array" + }, + "filters": { + "description": "Filters actually applied — echoes q/sector/city/country", + "type": "object" + } + }, + "type": "object" +}
- Changed
verify_vat1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "description": "Real-time VIES validation.", + "properties": { + "_meta": { + "type": "object" + }, + "country_code": { + "type": "string" + }, + "query": { + "type": "string" + }, + "result": { + "description": "VIES answer: validity, registered name and address", + "type": "object" + }, + "vat_number": { + "type": "string" + } + }, + "type": "object" +}
- Changed
zone_profile1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "additionalProperties": true, + "description": "Socioeconomic profile of a Spanish postal code, 17 blocks from official sources.", + "properties": { + "_meta": { + "type": "object" + }, + "autonomous_community": { + "type": "string" + }, + "businesses_dirce": { + "type": "object" + }, + "demographics_ine": { + "type": "object" + }, + "digital_infrastructure": { + "type": "object" + }, + "economy": { + "type": "object" + }, + "employment_sepe": { + "type": "object" + }, + "entia_classification": { + "type": "object" + }, + "income_aeat": { + "type": "object" + }, + "municipality": { + "type": "string" + }, + "postal_code": { + "type": "string" + }, + "poverty_inequality_ccaa": { + "type": "object" + }, + "province": { + "type": "string" + }, + "real_estate": { + "type": "object" + } + }, + "type": "object" +}
2 tool updates
- Changed
get_competitors7 fields changed- changed
Input schema / properties / city / descriptionPrevious value: -"City name (Madrid, Barcelona, London, Paris)"New value: +"City name in Spain (Madrid, Barcelona, Valencia, Sevilla, Bilbao)" - added
Input schema / properties / limit / descriptionAdded value: +"Max results (1-30)" - changed
Input schema / properties / limit / maximumPrevious value: -50New value: +30 - changed
Input schema / properties / sector / descriptionPrevious value: -"ENTIA sector slug (estetica, dental, psicologia, legal, …)"New value: +"ENTIA sector slug. Canonical: dental, legal, estetica, psicologia, medicos, talleres, veterinarios, reformas, inmobiliarias, asesorias, gimnasios… Aliases (abogados, salud, dentist, beautysalon…) resolve to a canonical slug and the response declares the translation in _meta.sector_resolved_from." - added
Input schema / properties / sector / enumAdded value: +[ + "abogados", + "accountingservice", + "asesoria", + "asesorias", + "attorney", + "automocion", + "automotivebusiness", + "autorepair", + "barberia", + "barberias", + "beautysalon", + "belleza", + "clinicas", + "construccion", + "consultoria", + "dental", + "dentist", + "dentista", + "ecommerce", + "educacion", + "energia", + "estetica", + "exercisegym", + "farmacia", + "farmacias", + "financial", + "financialservice", + "fisio", + "fisioterapia", + "foodestablishment", + "generalcontractor", + "gestion", + "gestoria", + "gestorias", + "gimnasio", + "gimnasios", + "hairsalon", + "healthandbeautybusiness", + "healthcare", + "healthclub", + "homeandconstructionbusiness", + "hospital", + "hospitality", + "inmobiliaria", + "inmobiliarias", + "insurance", + "insuranceagency", + "legal", + "legalservice", + "medicalbusiness", + "medicalclinic", + "medico", + "medicos", + "nutricion", + "optica", + "opticas", + "optician", + "peluqueria", + "peluquerias", + "pharmacy", + "physician", + "physiotherapyclinic", + "podologia", + "psicologia", + "psychologist", + "realestate", + "realestateagent", + "reformas", + "restauracion", + "restaurant", + "restaurantes", + "rrhh", + "saas", + "salud", + "security", + "seguros", + "sportsactivitylocation", + "taller", + "talleres", + "telecom", + "turismo", + "veterinario", + "veterinarios", + "veterinarycare" +] - removed
Input schema / properties / sector / maxLengthRemoved value: -50 - removed
Input schema / properties / sector / minLengthRemoved value: -2
- Changed
search_entities3 fields changed- added
Input schema / properties / cityAdded value: +{ + "description": "City name (Madrid, Barcelona, Valencia, Sevilla, London)", + "maxLength": 100, + "minLength": 2, + "type": "string" +} - changed
Input schema / properties / sector / descriptionPrevious value: -"Sector filter (dental, legal, talleres, estetica, …)"New value: +"Sector filter. Canonical: dental, legal, estetica, psicologia, medicos, talleres, veterinarios, reformas, inmobiliarias, asesorias, gimnasios… Aliases (abogados, salud, dentist, beautysalon…) resolve to a canonical slug and the response declares the translation in _meta.sector_resolved_from." - added
Input schema / properties / sector / enumAdded value: +[ + "abogados", + "accountingservice", + "asesoria", + "asesorias", + "attorney", + "automocion", + "automotivebusiness", + "autorepair", + "barberia", + "barberias", + "beautysalon", + "belleza", + "clinicas", + "construccion", + "consultoria", + "dental", + "dentist", + "dentista", + "ecommerce", + "educacion", + "energia", + "estetica", + "exercisegym", + "farmacia", + "farmacias", + "financial", + "financialservice", + "fisio", + "fisioterapia", + "foodestablishment", + "generalcontractor", + "gestion", + "gestoria", + "gestorias", + "gimnasio", + "gimnasios", + "hairsalon", + "healthandbeautybusiness", + "healthcare", + "healthclub", + "homeandconstructionbusiness", + "hospital", + "hospitality", + "inmobiliaria", + "inmobiliarias", + "insurance", + "insuranceagency", + "legal", + "legalservice", + "medicalbusiness", + "medicalclinic", + "medico", + "medicos", + "nutricion", + "optica", + "opticas", + "optician", + "peluqueria", + "peluquerias", + "pharmacy", + "physician", + "physiotherapyclinic", + "podologia", + "psicologia", + "psychologist", + "realestate", + "realestateagent", + "reformas", + "restauracion", + "restaurant", + "restaurantes", + "rrhh", + "saas", + "salud", + "security", + "seguros", + "sportsactivitylocation", + "taller", + "talleres", + "telecom", + "turismo", + "veterinario", + "veterinarios", + "veterinarycare" +]
1 tool update
- Removed
ai_ready_profile
2 tool updates
- Changed
get_entia_home1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Removed
lookup_by_domain
1 tool update
- Added
get_entity_home_projection
2 tool updates
- Changed
entity_lookup3 fields changed- added
Input schema / properties / nameAdded value: +{ + "description": "Alias for `q` — accepted for compatibility with clients that send `name`.", + "type": "string" +} - added
Input schema / properties / queryAdded value: +{ + "description": "Alias for `q` — accepted for compatibility with clients that send `query`.", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "q" -]New value: +[]
- Changed
verify_vat3 fields changed- added
Input schema / properties / queryAdded value: +{ + "description": "Alias for `q`.", + "type": "string" +} - added
Input schema / properties / vatAdded value: +{ + "description": "Alias for `q` — the VAT number.", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "q" -]New value: +[]
1 tool update
- Removed
borme_lookup
2 tool updates
- Removed
full_dossier - Added
get_full_dossier
15 tool updates
- Changed
ai_ready_profile3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / query / descriptionPrevious value: -"Company name or domain. Returns the full AI-ready JSON-LD @graph (4 nodes: Organization, Place, LocalBusiness, PostalAddress)."New value: +"Company name or domain"
- Changed
borme_lookup3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / company / descriptionPrevious value: -"Company name or CIF to look up in BORME (Boletín Oficial del Registro Mercantil de España). Coverage: 40,345,410 mercantile acts since 2009."New value: +"Company name or CIF"
- Changed
entity_lookup3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / q / descriptionPrevious 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)"
- Added
full_dossier - Changed
get_competitors5 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / city / descriptionPrevious value: -"City name in the target country (e.g. Madrid, Barcelona, London, Paris)."New value: +"City name (Madrid, Barcelona, London, Paris)" - removed
Input schema / properties / limit / descriptionRemoved value: -"Maximum competitors to return (1-50, default 10)." - changed
Input schema / properties / sector / descriptionPrevious value: -"ENTIA sector slug (e.g. estetica, dental, psicologia, legal, inmobiliaria, restaurantes, gimnasios, salud)."New value: +"ENTIA sector slug (estetica, dental, psicologia, legal, …)"
- Changed
get_entia_home6 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / city / descriptionPrevious value: -"City slug, lowercase with hyphens (e.g. \"madrid\", \"barcelona\", \"london\")"New value: +"City slug (madrid, barcelona, london)" - changed
Input schema / properties / country / descriptionPrevious value: -"ISO 3166-1 alpha-2 country code, lowercase (e.g. \"es\", \"gb\", \"fr\")"New value: +"ISO 3166-1 alpha-2 (es, gb, fr)" - changed
Input schema / properties / sector / descriptionPrevious value: -"Industry slug (e.g. \"dental\", \"legal\", \"talleres\", \"estetica\", \"inmobiliarias\")"New value: +"Industry slug (dental, legal, talleres, …)" - changed
Input schema / properties / slug / descriptionPrevious value: -"URL-safe business name slug (e.g. \"clinica-dental-sonrisa\")"New value: +"Business slug (clinica-dental-sonrisa)"
- Removed
get_full_dossier - Changed
get_platform_stats2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / requiredAdded value: +[]
- Changed
get_showcase2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - added
Input schema / requiredAdded value: +[]
- Changed
lookup_by_domain3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / domain / descriptionPrevious value: -"Domain name to look up (e.g. \"example.com\" or \"www.example.com\"). The API normalizes the domain automatically."New value: +"Domain name (example.com or www.example.com)"
- Changed
professional_lookup3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / query / descriptionPrevious value: -"Professional name, colegiado number, or REPS identifier. Covers healthcare professionals (REPS), abogados (CGAE), psicólogos (COP), médicos, enfermería, dentistas, fisioterapeutas, logopedas, dietistas, podólogos, ópticos, veterinarios, terapeutas ocupacionales (17 CCAA)."New value: +"Professional name, colegiado number, or REPS identifier"
- Changed
run_risk_audit4 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / domain / descriptionPrevious value: -"Domain to audit (e.g. \"clinicadental.es\", \"example.com\")"New value: +"Domain to audit (clinicadental.es, example.com)" - changed
Input schema / properties / sector_id / descriptionPrevious value: -"Optional sector hint for more accurate scoring. Examples: dental, legal, talleres, estetica, inmobiliarias"New value: +"Optional sector hint (dental, legal, talleres, …)"
- Changed
search_entities4 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / country / descriptionPrevious value: -"ISO country code filter (e.g. \"es\", \"gb\", \"fr\")"New value: +"ISO country code (es, gb, fr)" - changed
Input schema / properties / sector / descriptionPrevious value: -"Sector filter. Examples: dental, legal, talleres, estetica, inmobiliarias, hosteleria, reformas, veterinarios, asesorias, gimnasios, psicologia, and 24+ more"New value: +"Sector filter (dental, legal, talleres, estetica, …)"
- Changed
verify_vat3 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / q / descriptionPrevious value: -"EU VAT number to validate against VIES. Accepts country prefix or bare number (e.g. ESA28015865, A28015865, IE6388047V)."New value: +"EU VAT number (ESA28015865, A28015865, IE6388047V)"
- Changed
zone_profile4 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / postal_code / descriptionPrevious value: -"Spanish 5-digit postal code (e.g. 28013 for Madrid Gran Vía). Spain only — UK/FR/etc. return empty."New value: +"Spanish 5-digit postal code (28013 = Madrid Gran Vía)" - changed
Input schema / properties / postal_code / patternPrevious value: -"^\\d{5}$"New value: +"^[0-9]{5}$"
1 tool update
- Added
get_full_dossier
7 tool updates
- Added
ai_ready_profile - Added
borme_lookup - Added
get_competitors - Added
get_showcase - Added
professional_lookup - Added
verify_vat - Added
zone_profile
6 tool updates
- First observed
entity_lookup - First observed
get_entia_home - First observed
get_platform_stats - First observed
lookup_by_domain - First observed
run_risk_audit - First observed
search_entities
Related MCP Connectors
Company, KYB, VAT, sanctions, LEI and address data for 15 EU countries.
Free EU VAT (VIES) + pan-EU company data (10 registers), payable in EURC/USDC via x402.
EU business checks: VAT/VIES, IBAN, Peppol, KBO lookup. 16 of 19 tools need no token.
191UBO, sanctions & ownership graph. 23 tools, 130.7M entities, 31 registries.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceCross-checks company/entity records against 23 national commercial registries (GLEIF, SIRENE, VIES, TED, Companies House) to flag missing or inconsistent registrations. Free tier: 100 calls/month via hosted API.-
- AlicenseAqualityDmaintenanceMCP server for EU company and business data. 9 tools: company search (GLEIF, 2M+ entities), LEI lookup, corporate structures (parent/subsidiaries), trade register search, EU VAT validation (VIES), GDP, unemployment, inflation, and business demography (Eurostat). All APIs free, no keys required.95MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to access official European business data across 15 EU countries, including company lookups, VAT validation, sanctions screening, and KYB reports.5,887 npm1MIT
- AlicenseNot gradedqualityBmaintenanceCompany data for Spain, France, the UK, Ireland and Poland — registry, KYB and sanctions.189 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.