ENTIA Entity Verification

Verified business identity for AI agents: 11.3M entities, EU VAT (VIES), BORME, GLEIF. Free trial.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
92%
Naming quality
95%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~4,400Tokens (tool definitions)
~3.2 KBTypical response size
Significant attention impact (3.44% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "entity-verification": {
      "url": "https://mcp.entia.systems/mcp"
    }
  }
}

Remote endpoints

https://mcp.entia.systems/mcpstreamable-http

What it can do

Tool inventory

Tools (12)

🟒 Read-only🟑 WriteπŸ”΄ Deleteβšͺ Unknown
🟒entity_lookup(q, query, name)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "minLength": 2,
      "maxLength": 500,
      "description": "Company name, CIF/NIF (B82846825), EU VAT (ESB82846825), or LEI (20 chars)"
    },
    "query": {
      "type": "string",
      "description": "Alias for `q` β€” accepted for compatibility with clients that send `query`."
    },
    "name": {
      "type": "string",
      "description": "Alias for `q` β€” accepted for compatibility with clients that send `name`."
    }
  },
  "required": []
}

Output Schema

{
  "type": "object",
  "properties": {
    "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"
    },
    "registry_data": {
      "type": "object",
      "description": "Official registry payload (BORME/GLEIF/VIES/native)"
    },
    "economic_profile": {
      "type": "object"
    },
    "data_coverage": {
      "type": "object",
      "description": "Which sources answered and which did not"
    },
    "provenance": {
      "type": "object",
      "description": "Publisher and data sources of this answer"
    },
    "coherence_errors": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "integrity": {
      "type": "object",
      "description": "Tamper-evidence MAC. Not an electronic signature"
    },
    "error_code": {
      "type": "string"
    },
    "_meta": {
      "type": "object"
    }
  },
  "description": "Identity resolution result. `found` is fail-closed: false means no identity anchor was corroborated, not 'try again'.",
  "additionalProperties": true
}
🟒search_entities(q, country, city, sector, limit)

Search businesses by name, keyword, country, city or sector. Results mix registry-backed companies and public business listings (local directories/maps), so not every result is registry-verified; use entity_lookup or verify_vat to verify one. 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.

Input Schema

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "minLength": 2,
      "maxLength": 500,
      "description": "Search query β€” company name or keywords"
    },
    "country": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "ISO country code (es, gb, fr)"
    },
    "city": {
      "type": "string",
      "minLength": 2,
      "maxLength": 100,
      "description": "City name (Madrid, Barcelona, Valencia, Sevilla, London)"
    },
    "sector": {
      "type": "string",
      "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"
      ],
      "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."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 10,
      "description": "Max results (default 10, max 50)"
    }
  },
  "required": [
    "q"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "count": {
      "type": "integer"
    },
    "entities": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "Each carries name, city, sector and canonical Entia Home URL"
    },
    "filters": {
      "type": "object",
      "description": "Filters actually applied β€” echoes q/sector/city/country"
    },
    "_meta": {
      "type": "object",
      "description": "Carries sector_resolved_from when an alias was translated"
    }
  },
  "description": "Paged catalogue search over the verified corpus.",
  "additionalProperties": true
}
🟒verify_vat(q, vat, query)

Real-time EU VAT validation via VIES (27 countries). Returns {valid, name, address, vat_number, country, checked_at}. Some Member States (Spain among them) do not disclose name/address through VIES: name/address come back null with name_disclosure=withheld_by_member_state; use entity_lookup for the registered name.

Input Schema

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "minLength": 4,
      "maxLength": 20,
      "description": "EU VAT number (ESA28015865, A28015865, IE6388047V)"
    },
    "vat": {
      "type": "string",
      "description": "Alias for `q` β€” the VAT number."
    },
    "query": {
      "type": "string",
      "description": "Alias for `q`."
    }
  },
  "required": []
}

Output Schema

{
  "type": "object",
  "properties": {
    "vat_number": {
      "type": "string"
    },
    "country_code": {
      "type": "string"
    },
    "query": {
      "type": "string"
    },
    "result": {
      "type": "object",
      "description": "VIES answer: validity, registered name and address"
    },
    "_meta": {
      "type": "object"
    }
  },
  "description": "Real-time VIES validation.",
  "additionalProperties": true
}
🟒zone_profile(postal_code)

Socioeconomic profile of a Spanish postal code β€” 17 blocks: income, employment, demographics, business census, real estate, FTTH, poverty, tourism.

Input Schema

{
  "type": "object",
  "properties": {
    "postal_code": {
      "type": "string",
      "pattern": "^[0-9]{4,5}$",
      "description": "Spanish 5-digit postal code (28013 = Madrid Gran VΓ­a)"
    }
  },
  "required": [
    "postal_code"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "postal_code": {
      "type": "string"
    },
    "municipality": {
      "type": "string"
    },
    "province": {
      "type": "string"
    },
    "autonomous_community": {
      "type": "string"
    },
    "income_aeat": {
      "type": "object"
    },
    "employment_sepe": {
      "type": "object"
    },
    "demographics_ine": {
      "type": "object"
    },
    "businesses_dirce": {
      "type": "object"
    },
    "real_estate": {
      "type": "object"
    },
    "digital_infrastructure": {
      "type": "object"
    },
    "poverty_inequality_ccaa": {
      "type": "object"
    },
    "economy": {
      "type": "object"
    },
    "entia_classification": {
      "type": "object"
    },
    "_meta": {
      "type": "object"
    }
  },
  "description": "Socioeconomic profile of a Spanish postal code, 17 blocks from official sources.",
  "additionalProperties": true
}
🟒get_competitors(sector, city, limit)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "sector": {
      "type": "string",
      "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"
      ],
      "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."
    },
    "city": {
      "type": "string",
      "minLength": 2,
      "maxLength": 100,
      "description": "City name in Spain (Madrid, Barcelona, Valencia, Sevilla, Bilbao)"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 30,
      "default": 10,
      "description": "Max results (1-30)"
    }
  },
  "required": [
    "sector",
    "city"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "sector": {
      "type": "string",
      "description": "Canonical slug actually used after alias resolution"
    },
    "city": {
      "type": "string"
    },
    "country": {
      "type": "string"
    },
    "count": {
      "type": "integer"
    },
    "competitors": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "_meta": {
      "type": "object",
      "description": "Carries sector_resolved_from / sector_resolved_to"
    }
  },
  "description": "Ranked competitors in the same sector and city. Spain only on the public surface.",
  "additionalProperties": true
}
🟒get_showcase(category, limit)

Curated IBEX35 + EU entity examples. FREE β€” does not consume quota. Use to explore data depth.

Input Schema

{
  "type": "object",
  "properties": {
    "category": {
      "type": "string",
      "enum": [
        "all",
        "ibex",
        "tech",
        "banking",
        "energy",
        "retail",
        "spain",
        "eu"
      ],
      "description": "Subset to sample (default: all)"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 5,
      "description": "Sample size (default 3, max 5)"
    }
  },
  "required": []
}

Output Schema

{
  "type": "object",
  "properties": {
    "entities": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "access_level": {
      "type": "string"
    },
    "gated_fields": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "unlock": {
      "type": "object"
    },
    "upgrade_url": {
      "type": "string"
    },
    "upgrade_hint": {
      "type": "string"
    },
    "checkout": {
      "type": "object"
    },
    "_meta": {
      "type": "object"
    }
  },
  "description": "Curated sample entities for evaluation. Fields are gated by tier.",
  "additionalProperties": true
}
🟒professional_lookup(query, vertical)

Verify professional registrations across 24 Spanish health/legal/psychology verticals. Returns colegiado number, college, specialty, status.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 2,
      "maxLength": 500,
      "description": "Professional name, colegiado number, or REPS identifier"
    },
    "vertical": {
      "type": "string",
      "maxLength": 40,
      "description": "Healthcare/legal vertical (dental, medicos, psicologia, ...)"
    }
  },
  "required": [
    "query"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "_meta": {
      "type": "object"
    }
  },
  "description": "Professional registration verification across Spanish health, legal and psychology registries. Enterprise DPA required.",
  "additionalProperties": true
}
🟒get_full_dossier(query)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 2,
      "maxLength": 200,
      "description": "Company name, CIF/NIF, EU VAT, or LEI"
    }
  },
  "required": [
    "query"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "found": {
      "type": "boolean"
    },
    "query": {
      "type": "string"
    },
    "entity": {
      "type": "object"
    },
    "trust_score": {
      "type": "object"
    },
    "verification": {
      "type": "object"
    },
    "data_coverage": {
      "type": "object"
    },
    "provenance": {
      "type": "object"
    },
    "integrity": {
      "type": "object"
    },
    "_meta": {
      "type": "object"
    }
  },
  "description": "Aggregated dossier: identity, registry, trust and verification in one call.",
  "additionalProperties": true
}
🟒get_platform_stats

Live platform stats: total entities and BORME acts, counted live. Country and Entia Home counts are null (marked _unverified) until they are measured.

Input Schema

{
  "type": "object",
  "properties": {},
  "required": []
}

Output Schema

{
  "type": "object",
  "properties": {
    "total_entities": {
      "type": "integer"
    },
    "countries_active": {
      "type": [
        "integer",
        "null"
      ]
    },
    "countries": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "string"
      }
    },
    "borme_acts": {
      "type": "integer"
    },
    "homes_published": {
      "type": "integer"
    },
    "jsonld_generated": {
      "type": "integer"
    },
    "sources_active": {
      "type": "integer"
    },
    "last_updated": {
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "cache_ttl": {
      "type": "integer"
    },
    "_unverified": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Figures NOT independently verified β€” honesty marker, do not quote as verified"
    },
    "_meta": {
      "type": "object"
    }
  },
  "description": "Live platform totals. Single source of truth for corpus size.",
  "additionalProperties": true
}
🟒run_risk_audit(domain, sector_id, name)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "minLength": 3,
      "maxLength": 253,
      "pattern": "^(?:https?://)?[A-Za-z0-9]([A-Za-z0-9.-]*[A-Za-z0-9])?\\.[A-Za-z]{2,}(?:[/?#].*)?$",
      "description": "Domain to audit (clinicadental.es, example.com)"
    },
    "sector_id": {
      "type": "string",
      "description": "Optional sector hint (dental, legal, talleres, …)"
    },
    "name": {
      "type": "string",
      "description": "Optional business name for context"
    }
  },
  "required": [
    "domain"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string"
    },
    "risk_score": {
      "type": "number"
    },
    "risk_level": {
      "type": "string"
    },
    "audit": {
      "type": "object"
    },
    "audit_token": {
      "type": "string"
    },
    "job_id": {
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "_meta": {
      "type": "object"
    }
  },
  "description": "AI-readiness and digital risk audit of a domain.",
  "additionalProperties": true
}
🟒get_entia_home(country, sector, city, slug)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "country": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "pattern": "^[a-z]{2}$",
      "description": "ISO 3166-1 alpha-2 (es, gb, fr)"
    },
    "sector": {
      "type": "string",
      "minLength": 2,
      "maxLength": 50,
      "pattern": "^[a-z0-9-]+$",
      "description": "Industry slug (dental, legal, talleres, …)"
    },
    "city": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "pattern": "^[a-z0-9-]+$",
      "description": "City slug (madrid, barcelona, london)"
    },
    "slug": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "pattern": "^[a-z0-9-]+$",
      "description": "Business slug (clinica-dental-sonrisa)"
    }
  },
  "required": [
    "country",
    "sector",
    "city",
    "slug"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "@context": {
      "type": "string"
    },
    "@graph": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "WebPage, Entity, Verification Report and Territorial Profile nodes"
    },
    "_meta": {
      "type": "object"
    }
  },
  "description": "Full Schema.org @graph of an Entia Home page β€” the same truth as its public HTML twin.",
  "additionalProperties": true
}
🟒get_entity_home_projection(country, sector, city, slug, include_render_context)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "country": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "pattern": "^[A-Za-z]{2}$",
      "description": "ISO 3166-1 alpha-2 (es, gb, fr)"
    },
    "sector": {
      "type": "string",
      "minLength": 2,
      "maxLength": 50,
      "pattern": "^[A-Za-z0-9-]+$",
      "description": "Industry slug (dental, legal, …)"
    },
    "city": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "pattern": "^[A-Za-z0-9-]+$",
      "description": "City slug (madrid, barcelona)"
    },
    "slug": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "pattern": "^[A-Za-z0-9-]+$",
      "description": "Business slug (clinica-dental-ceodent)"
    },
    "include_render_context": {
      "type": "boolean",
      "default": false,
      "description": "If true, keep render_context (large). Default strips it for agents."
    }
  },
  "required": [
    "country",
    "sector",
    "city",
    "slug"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "schema": {
      "type": "string"
    },
    "subject": {
      "type": "object"
    },
    "claims": {
      "type": "object"
    },
    "projection": {
      "type": "object"
    },
    "corroboration": {
      "type": "object"
    },
    "gate": {
      "type": "string",
      "description": "PUBLISH / PARTIAL / HOLD / REGISTRY_ONLY"
    },
    "policy": {
      "type": "object"
    },
    "generated_at": {
      "type": "string"
    },
    "materializer_version": {
      "type": "string"
    },
    "_meta": {
      "type": "object"
    }
  },
  "description": "entia.entity_home_projection.v1 snapshot: claims, corroboration gate and policy.",
  "additionalProperties": true
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded12 tools
verifiedversion not recorded12 tools
verifiedversion not recorded12 tools
verifiedversion not recorded12 tools
verifiedversion not recorded12 tools
verifiedversion not recorded12 tools