Servidor MCP

ENTIA Entity Verification

io.github.entia-systems-core/entity-verification

Qué hace este MCP

Verifies businesses and professionals using entity, VAT, registry, competitor, risk-audit, and socioeconomic data for KYB and due diligence.

entity_lookup
Entity Lookup
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.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'q': {'type': 'string', 'maxLength': 500, 'minLength': 2, 'description': 'Company name, CIF/NIF (B82846825), EU VAT (ESB82846825), or LEI (20 chars)'}, 'name': {'type': 'string', 'description': 'Alias for `q` — accepted for compatibility with clients that send `name`.'}, 'query': {'type': 'string', 'description': 'Alias for `q` — accepted for compatibility with clients that send `query`.'}}}
Esquema de salida
{'type': 'object', 'properties': {'_meta': {'type': 'object'}, 'found': {'type': 'boolean', 'description': 'True only when an identity anchor corroborated the query'}, 'query': {'type': 'string'}, 'entity': {'type': 'object', 'description': 'Verified identity: legal name, tax id, address, sector'}, 'integrity': {'type': 'object', 'description': 'Tamper-evidence MAC. Not an electronic signature'}, 'error_code': {'type': 'string'}, 'provenance': {'type': 'object', 'description': 'Publisher and data sources of this answer'}, 'data_coverage': {'type': 'object', 'description': 'Which sources answered and which did not'}, 'registry_data': {'type': 'object', 'description': 'Official registry payload (BORME/GLEIF/VIES/native)'}, 'coherence_errors': {'type': 'array', 'items': {'type': 'string'}}, 'economic_profile': {'type': 'object'}}, 'description': "Identity resolution result. `found` is fail-closed: false means no identity anchor was corroborated, not 'try again'.", 'additionalProperties': True}
get_competitors
Get Competitors
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.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'type': 'object', 'required': ['sector', 'city'], 'properties': {'city': {'type': 'string', 'maxLength': 100, 'minLength': 2, 'description': 'City name in Spain (Madrid, Barcelona, Valencia, Sevilla, Bilbao)'}, 'limit': {'type': 'integer', 'default': 10, 'maximum': 30, 'minimum': 1, 'description': 'Max results (1-30)'}, 'sector': {'enum': ['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'], 'type': 'string', 'description': '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.'}}}
Esquema de salida
{'type': 'object', 'properties': {'city': {'type': 'string'}, '_meta': {'type': 'object', 'description': 'Carries sector_resolved_from / sector_resolved_to'}, 'count': {'type': 'integer'}, 'sector': {'type': 'string', 'description': 'Canonical slug actually used after alias resolution'}, 'country': {'type': 'string'}, 'competitors': {'type': 'array', 'items': {'type': 'object'}}}, 'description': 'Ranked competitors in the same sector and city. Spain only on the public surface.', 'additionalProperties': True}
get_entia_home
Get Entia Home
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.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'type': 'object', 'required': ['country', 'sector', 'city', 'slug'], 'properties': {'city': {'type': 'string', 'pattern': '^[a-z0-9-]+$', 'maxLength': 100, 'minLength': 1, 'description': 'City slug (madrid, barcelona, london)'}, 'slug': {'type': 'string', 'pattern': '^[a-z0-9-]+$', 'maxLength': 200, 'minLength': 1, 'description': 'Business slug (clinica-dental-sonrisa)'}, 'sector': {'type': 'string', 'pattern': '^[a-z0-9-]+$', 'maxLength': 50, 'minLength': 2, 'description': 'Industry slug (dental, legal, talleres, …)'}, 'country': {'type': 'string', 'pattern': '^[a-z]{2}$', 'maxLength': 2, 'minLength': 2, 'description': 'ISO 3166-1 alpha-2 (es, gb, fr)'}}, 'additionalProperties': False}
Esquema de salida
{'type': 'object', 'properties': {'_meta': {'type': 'object'}, '@graph': {'type': 'array', 'items': {'type': 'object'}, 'description': 'WebPage, Entity, Verification Report and Territorial Profile nodes'}, '@context': {'type': 'string'}}, 'description': 'Full Schema.org @graph of an Entia Home page — the same truth as its public HTML twin.', 'additionalProperties': True}
get_entity_home_projection
Get Entity Home Projection v1
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.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'type': 'object', 'required': ['country', 'sector', 'city', 'slug'], 'properties': {'city': {'type': 'string', 'pattern': '^[a-z0-9-]+$', 'maxLength': 100, 'minLength': 1, 'description': 'City slug (madrid, barcelona)'}, 'slug': {'type': 'string', 'pattern': '^[a-z0-9-]+$', 'maxLength': 200, 'minLength': 1, 'description': 'Business slug (clinica-dental-ceodent)'}, 'sector': {'type': 'string', 'pattern': '^[a-z0-9-]+$', 'maxLength': 50, 'minLength': 2, 'description': 'Industry slug (dental, legal, …)'}, 'country': {'type': 'string', 'pattern': '^[a-z]{2}$', 'maxLength': 2, 'minLength': 2, 'description': 'ISO 3166-1 alpha-2 (es, gb, fr)'}, 'include_render_context': {'type': 'boolean', 'default': False, 'description': 'If true, keep render_context (large). Default strips it for agents.'}}}
Esquema de salida
{'type': 'object', 'properties': {'gate': {'type': 'string', 'description': 'PUBLISH / PARTIAL / HOLD / REGISTRY_ONLY'}, '_meta': {'type': 'object'}, 'claims': {'type': 'object'}, 'policy': {'type': 'object'}, 'schema': {'type': 'string'}, 'subject': {'type': 'object'}, 'projection': {'type': 'object'}, 'generated_at': {'type': 'string'}, 'corroboration': {'type': 'object'}, 'materializer_version': {'type': 'string'}}, 'description': 'entia.entity_home_projection.v1 snapshot: claims, corroboration gate and policy.', 'additionalProperties': True}
get_full_dossier
Get Full Dossier
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.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'type': 'object', 'required': ['query'], 'properties': {'query': {'type': 'string', 'maxLength': 200, 'minLength': 2, 'description': 'Company name, CIF/NIF, EU VAT, or LEI'}}}
Esquema de salida
{'type': 'object', 'properties': {'_meta': {'type': 'object'}, 'found': {'type': 'boolean'}, 'query': {'type': 'string'}, 'entity': {'type': 'object'}, 'integrity': {'type': 'object'}, 'provenance': {'type': 'object'}, 'trust_score': {'type': 'object'}, 'verification': {'type': 'object'}, 'data_coverage': {'type': 'object'}}, 'description': 'Aggregated dossier: identity, registry, trust and verification in one call.', 'additionalProperties': True}
get_platform_stats
Get Platform Stats
Live platform stats: entities count, countries, sources, homes published.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de salida
{'type': 'object', 'properties': {'_meta': {'type': 'object'}, 'status': {'type': 'string'}, 'cache_ttl': {'type': 'integer'}, 'countries': {'type': 'array', 'items': {'type': 'string'}}, 'borme_acts': {'type': 'integer'}, '_unverified': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Figures NOT independently verified — honesty marker, do not quote as verified'}, 'last_updated': {'type': 'string'}, 'sources_active': {'type': 'integer'}, 'total_entities': {'type': 'integer'}, 'homes_published': {'type': 'integer'}, 'countries_active': {'type': 'integer'}, 'jsonld_generated': {'type': 'integer'}}, 'description': 'Live platform totals. Single source of truth for corpus size.', 'additionalProperties': True}
get_showcase
Get Showcase
Curated IBEX35 + EU entity examples. FREE — does not consume quota. Use to explore data depth.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'maximum': 5, 'minimum': 1, 'description': 'Sample size (default 3, max 5)'}, 'category': {'enum': ['all', 'ibex', 'tech', 'banking', 'energy', 'retail', 'spain', 'eu'], 'type': 'string', 'description': 'Subset to sample (default: all)'}}}
Esquema de salida
{'type': 'object', 'properties': {'_meta': {'type': 'object'}, 'unlock': {'type': 'object'}, 'checkout': {'type': 'object'}, 'entities': {'type': 'array', 'items': {'type': 'object'}}, 'upgrade_url': {'type': 'string'}, 'access_level': {'type': 'string'}, 'gated_fields': {'type': 'array', 'items': {'type': 'string'}}, 'upgrade_hint': {'type': 'string'}}, 'description': 'Curated sample entities for evaluation. Fields are gated by tier.', 'additionalProperties': True}
professional_lookup
Professional Lookup
Verify professional registrations across 24 Spanish health/legal/psychology verticals. Returns colegiado number, college, specialty, status.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'type': 'object', 'required': ['query'], 'properties': {'query': {'type': 'string', 'maxLength': 500, 'minLength': 2, 'description': 'Professional name, colegiado number, or REPS identifier'}, 'vertical': {'type': 'string', 'maxLength': 40, 'description': 'Healthcare/legal vertical (dental, medicos, psicologia, ...)'}}}
Esquema de salida
{'type': 'object', 'properties': {'_meta': {'type': 'object'}}, 'description': 'Professional registration verification across Spanish health, legal and psychology registries. Enterprise DPA required.', 'additionalProperties': True}
run_risk_audit
Run Risk Audit
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.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'type': 'object', 'required': ['domain'], 'properties': {'name': {'type': 'string', 'description': 'Optional business name for context'}, 'domain': {'type': 'string', 'pattern': '^[a-z0-9]([a-z0-9.-]*[a-z0-9])?\\.[a-z]{2,}$', 'maxLength': 253, 'minLength': 3, 'description': 'Domain to audit (clinicadental.es, example.com)'}, 'sector_id': {'type': 'string', 'description': 'Optional sector hint (dental, legal, talleres, …)'}}}
Esquema de salida
{'type': 'object', 'properties': {'_meta': {'type': 'object'}, 'audit': {'type': 'object'}, 'domain': {'type': 'string'}, 'job_id': {'type': 'string'}, 'status': {'type': 'string'}, 'risk_level': {'type': 'string'}, 'risk_score': {'type': 'number'}, 'audit_token': {'type': 'string'}}, 'description': 'AI-readiness and digital risk audit of a domain.', 'additionalProperties': True}
search_entities
Search Entities
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.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'type': 'object', 'required': ['q'], 'properties': {'q': {'type': 'string', 'maxLength': 500, 'minLength': 2, 'description': 'Search query — company name or keywords'}, 'city': {'type': 'string', 'maxLength': 100, 'minLength': 2, 'description': 'City name (Madrid, Barcelona, Valencia, Sevilla, London)'}, 'limit': {'type': 'integer', 'default': 10, 'maximum': 50, 'minimum': 1, 'description': 'Max results (default 10, max 50)'}, 'sector': {'enum': ['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'], 'type': 'string', 'description': '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': {'type': 'string', 'maxLength': 2, 'minLength': 2, 'description': 'ISO country code (es, gb, fr)'}}}
Esquema de salida
{'type': 'object', 'properties': {'_meta': {'type': 'object', 'description': 'Carries sector_resolved_from when an alias was translated'}, 'count': {'type': 'integer'}, 'filters': {'type': 'object', 'description': 'Filters actually applied — echoes q/sector/city/country'}, 'entities': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Each carries name, city, sector and canonical Entia Home URL'}}, 'description': 'Paged catalogue search over the verified corpus.', 'additionalProperties': True}
verify_vat
Verify VAT
Real-time EU VAT validation via VIES (27 countries). Returns {valid, name, address, vat_number, country}.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'q': {'type': 'string', 'maxLength': 20, 'minLength': 4, 'description': 'EU VAT number (ESA28015865, A28015865, IE6388047V)'}, 'vat': {'type': 'string', 'description': 'Alias for `q` — the VAT number.'}, 'query': {'type': 'string', 'description': 'Alias for `q`.'}}}
Esquema de salida
{'type': 'object', 'properties': {'_meta': {'type': 'object'}, 'query': {'type': 'string'}, 'result': {'type': 'object', 'description': 'VIES answer: validity, registered name and address'}, 'vat_number': {'type': 'string'}, 'country_code': {'type': 'string'}}, 'description': 'Real-time VIES validation.', 'additionalProperties': True}
zone_profile
Zone Profile
Socioeconomic profile of a Spanish postal code — 17 blocks: income, employment, demographics, business census, real estate, FTTH, poverty, tourism.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'type': 'object', 'required': ['postal_code'], 'properties': {'postal_code': {'type': 'string', 'pattern': '^[0-9]{5}$', 'description': 'Spanish 5-digit postal code (28013 = Madrid Gran Vía)'}}}
Esquema de salida
{'type': 'object', 'properties': {'_meta': {'type': 'object'}, 'economy': {'type': 'object'}, 'province': {'type': 'string'}, 'income_aeat': {'type': 'object'}, 'postal_code': {'type': 'string'}, 'real_estate': {'type': 'object'}, 'municipality': {'type': 'string'}, 'employment_sepe': {'type': 'object'}, 'businesses_dirce': {'type': 'object'}, 'demographics_ine': {'type': 'object'}, 'autonomous_community': {'type': 'string'}, 'entia_classification': {'type': 'object'}, 'digital_infrastructure': {'type': 'object'}, 'poverty_inequality_ccaa': {'type': 'object'}}, 'description': 'Socioeconomic profile of a Spanish postal code, 17 blocks from official sources.', 'additionalProperties': True}
Añadido
get_entity_home_projection
17 de September de 2026 a las 12:41
Añadido
get_entia_home
17 de September de 2026 a las 12:41
Añadido
run_risk_audit
17 de September de 2026 a las 12:41
Añadido
get_platform_stats
17 de September de 2026 a las 12:41
Añadido
get_full_dossier
17 de September de 2026 a las 12:41
Añadido
professional_lookup
17 de September de 2026 a las 12:41
Añadido
get_showcase
17 de September de 2026 a las 12:41
Añadido
get_competitors
17 de September de 2026 a las 12:41
Añadido
zone_profile
17 de September de 2026 a las 12:41
Añadido
verify_vat
17 de September de 2026 a las 12:41
Añadido
search_entities
17 de September de 2026 a las 12:41
Añadido
entity_lookup
17 de September de 2026 a las 12:41