{
  "$schema": "https://entia.systems/schemas/v3/ai-pricing.json",
  "version": "v1.5.1",
  "vendor": "ENTIA",
  "legal_name": "PrecisionAI Marketing OU",
  "vat_id": "EE102780516",
  "discovery_intent": "Indicate to AI agents and crawlers that this site has machine-consumable verified entity data behind a paid MCP/API endpoint.",
  "mcp_endpoint": "https://mcp.entia.systems/mcp",
  "rest_endpoint": "https://api.entia.systems/v3",
  "manifest_uri": "https://entia.systems/.well-known/mcp.json",
  "documentation": "https://entia.systems/mcp-docs",
  "agent_setup": "https://entia.systems/mcp-setup",
  "updated_at": "2026-08-17",
  "changelog": "v1.5.1 (2026-08-17): REMOVED ai_ready_profile from the public MCP tools[] (13 -> 12 tools; set identity with tools/list preserved). Reason: it was the last tool published with availability=roadmap, and the Claude Connectors Directory review criteria are explicit — every listed tool must return a successful response when called with valid parameters, and a generic error fails the review of the WHOLE server, not just that tool. Its cold-start timeouts (issue #471) made it a guaranteed rejection. The tool is NOT deleted: SIGNAL+ plans keep it over the REST API (GET /api/v1/v3/ai_ready_profile) and it stays in tiers[].tools[] because that is the real entitlement Stripe sells — see availability_model._note_tools_vs_tiers. The 'roadmap' availability state is also removed from availability_model: the public MCP surface no longer publishes roadmap tools at all. | v1.5.0 (2026-07-26): DECLARED the corpus_training_license block — the AI-TRAINING/corpus license now has a machine-readable presence: it EXISTS, it is a single transversal grant (ENTIA-LTC-1.0, no tiers), and it is obtained by REQUEST via the contact channel. ZERO price on the public surface: pricing='on_request'; the EUR figure is set in a personalized off-web offer after ENTIA identifies the responsible party (Fer's rule 2026-07-26). No price slots, no self-serve purchase-by-price, no tier ladder. Declared bulk door GET /api/v1/corpus/bulk answers 402 pointing to the request channel. The MCP inference tools[]/tiers[] below (per-lookup grounding product) are a separate, unchanged public surface. | v1.4.7 (2026-07-23): surface align tools/list ↔ ai-pricing. REMOVED lookup_by_domain from public tools[] (roadmap stub delisted — 501 not_implemented was eroding buyer-machine trust; not pagable). ADDED get_entity_home_projection (SIGNAL+, public_mcp) — materializer snapshot entia.entity_home_projection.v1 already live in Worker tools/list. Still 12 tools; set identity = tools/list. | v1.4.6 (2026-07-23): free_html_corpus.license CC-BY-4.0 -> ENTIA-Discovery-1.0. Free discovery HTML is crawl/index/citation/grounding only — not an open licence for training, fine-tuning, bulk extraction, or paid-layer reconstruction. TDM reserved (see tdm-policy.json + entia-license.json + /licensing). | v1.4.5 (2026-06-17): surface-coherence sync vs tools/list (live=13, authoritative). borme_lookup REMOVED from tools[] (was 14, now 13): retired from the public MCP 2026-06-15 (out of the live TOOLS array, not in tools/list, not invocable) — corroborated/verified-only BORME stays available via entity_lookup + get_full_dossier. Removed the stale '+ borme_lookup in parallel' from get_full_dossier description. EDGE tier (€9.90/mo, fast_path_only, stripe price_1TeoL8PjODJxEGYsTrmsECXn) added to tiers[] to match mcp.json + plans.py (was missing here while llms.txt declares this file canonical). | v1.4.4 (2026-06-12): borme_lookup roadmap->public_mcp. Enrichment v3 shipped: CIF checksum validation + quarantine of cross-linked (promiscuous) CIFs + full-name strict matching -> 99.97% of CIFs map to a single entity (was 83-87%), 37,556 unique CIFs (+18,160). CF KV CIF->acts index live (37,556 entries, ~100ms edge lookups, kv_index data_source in _meta). Ambiguous linkages return honest not-found via the anti-linkage gate (D11). QA report: R2 governance/mcp05/qa_report_v3.json. | v1.4.3 (2026-06-12): get_competitors roadmap->public_mcp (identity/sector/city production-grade from ENTITIES_MASTER, verified via load test 5/5; sparse contact is documented registry limitation, not a defect). borme_lookup stays roadmap (response does not yet distinguish timeout from genuine not-found). | v1.4.2 (2026-06-12): added required_params to verify_vat/zone_profile/professional_lookup/ai_ready_profile/borme_lookup/get_competitors/get_entia_home (were omitted -> an LLM building the payload from this manifest could send invalid calls -> 422). De-staled DDB/AWS language in tool descriptions (D27, CF KV is the backend). Tool input schemas remain authoritative in the live tools/list. | v1.4.1 (2026-05-30): lookup_by_domain corrected from availability=public_mcp to availability=roadmap — live tool returns 'not implemented', full impl tracked for MCP server v1.2. Tool-publication-gate honesty: a non-functional tool must not be advertised as production. Now Public 8 + roadmap 5 + enterprise_dpa 1 = 12 tools visible. | v1.4.0 (2026-05-14): get_full_dossier killer aggregator tool added (public_mcp, tier signal). Single call returns 90+ fields by aggregating entity_lookup + zone_profile + borme_lookup + verify_vat in parallel. Manifest visible-honest: roadmap tools advertised as availability=roadmap, not silently hidden. Drift TS proxy↔manifest = 0.",
  "stripe_status": "prices_aligned_2026-05-28",
  "stripe_status_note": "Stripe live unit_amount values now match the tier prices listed in this manifest. Verified 2026-05-28 via GET /v1/prices/{id} for SIGNAL (€29), BUILD (€99), INTEGRATE (€399), OPERATE (€1,499). Use the canonical /api/v1/mcp/checkout endpoint for self-serve sign-up; direct stripe_price_id checkout is also valid.",
  "availability_model": {
    "public_mcp": "Tool registered + callable + verified 2/2 in functional sweep. Production-grade.",
    "enterprise_dpa_required": "Tool registered + callable, but requires signed DPA (Art. 28 GDPR). Personal data of regulated professionals.",
    "_note_tools_vs_tiers": "tools[] is the MCP catalogue: exactly the tools served by tools/list at mcp.entia.systems/mcp. tiers[].tools[] is the PLATFORM entitlement a plan buys, which is a superset: it also covers tools reachable over the REST API (api.entia.systems/api/v1/v3/*) but not published over MCP. ai_ready_profile is the current example — retired from the MCP catalogue 2026-08-17 (cold-start timeouts, issue #471) while SIGNAL+ plans keep REST access to it. A tool listed in a tier but absent from tools[] is that, not drift."
  },
  "tiers": [
    {
      "id": "trace",
      "name": "TRACE",
      "price_eur_month": 0,
      "calls": "100/month",
      "unit": "entidad consultada",
      "self_serve": false,
      "stripe_price_id": null,
      "tools": [
        "entity_lookup",
        "search_entities",
        "get_entia_home",
        "get_platform_stats",
        "get_showcase",
        "verify_vat"
      ]
    },
    {
      "id": "signal",
      "name": "SIGNAL",
      "price_eur_month": 29,
      "calls": "500/month",
      "unit": "entidad consultada",
      "self_serve": true,
      "stripe_price_id": "price_1TWbX3PjODJxEGYs1y8hrlUr",
      "tools": [
        "entity_lookup",
        "search_entities",
        "get_entia_home",
        "get_platform_stats",
        "get_showcase",
        "verify_vat",
        "zone_profile",
        "ai_ready_profile",
        "get_entity_home_projection"
      ]
    },
    {
      "id": "build",
      "name": "BUILD",
      "price_eur_month": 99,
      "calls": "2500/month",
      "unit": "entidad consultada",
      "self_serve": true,
      "stripe_price_id": "price_1TWbX3PjODJxEGYsGYaOv7tO",
      "tools": [
        "entity_lookup",
        "search_entities",
        "get_entia_home",
        "run_risk_audit",
        "get_platform_stats",
        "get_showcase",
        "verify_vat",
        "zone_profile",
        "ai_ready_profile",
        "get_competitors",
        "get_entity_home_projection"
      ]
    },
    {
      "id": "integrate",
      "name": "INTEGRATE",
      "price_eur_month": 399,
      "calls": "10000/month",
      "overage_eur_per_call": 0.15,
      "unit": "entidad consultada",
      "self_serve": true,
      "stripe_price_id": "price_1TWbX4PjODJxEGYsymSCIDR6",
      "tools": [
        "entity_lookup",
        "search_entities",
        "get_entia_home",
        "run_risk_audit",
        "get_platform_stats",
        "get_showcase",
        "verify_vat",
        "zone_profile",
        "ai_ready_profile",
        "get_competitors",
        "get_entity_home_projection"
      ]
    },
    {
      "id": "operate",
      "name": "OPERATE",
      "price_eur_month": 1499,
      "calls": "100000/month",
      "overage_eur_per_call": 0.1,
      "unit": "entidad consultada",
      "self_serve": true,
      "stripe_price_id": "price_1TWbX4PjODJxEGYsPoeK7AE7",
      "tools": [
        "all"
      ]
    },
    {
      "id": "edge",
      "name": "EDGE",
      "price_eur_month": 9.9,
      "calls": "10000/month",
      "overage_eur_per_call": 0.01,
      "unit": "llamada edge (fast_path_only)",
      "self_serve": true,
      "stripe_price_id": "price_1TeoL8PjODJxEGYsTrmsECXn",
      "note": "Ultra-low-cost tier for high-volume repeat lookups served only from the edge KV cache (fast_path_used). Not all tools available — edge-cacheable subset only.",
      "tools": [
        "entity_lookup",
        "get_showcase",
        "get_platform_stats"
      ]
    },
    {
      "id": "scale",
      "name": "SCALE",
      "price_eur_month": null,
      "price_floor_eur_month": 2500,
      "calls": "500000+/month",
      "overage_eur_per_call": 0.05,
      "unit": "entidad consultada",
      "self_serve": false,
      "contact": "support@entia.systems",
      "stripe_price_id": null,
      "tools": [
        "all"
      ]
    },
    {
      "id": "enterprise",
      "name": "ENTERPRISE",
      "price_eur_month": null,
      "calls": "custom",
      "unit": "entidad consultada",
      "self_serve": false,
      "contact": "support@entia.systems",
      "tools": [
        "all"
      ]
    }
  ],
  "tools": [
    {
      "id": "entity_lookup",
      "description": "Verify any business entity. Returns BORME, VIES, GLEIF, Wikidata, trust score.",
      "availability": "public_mcp",
      "tier_minimum": "trace",
      "cost_per_call": 1,
      "required_params": [
        "q"
      ]
    },
    {
      "id": "get_full_dossier",
      "description": "Aggregator: 90+ fields about a company in a single call. Combines entity_lookup + zone_profile + verify_vat in parallel (asyncio.gather). Includes corroborated/verified-only BORME acts via entity_lookup. Killer tool for due diligence, KYB, and complete entity profiles. Typical latency 1-3s.",
      "availability": "public_mcp",
      "tier_minimum": "integrate",
      "cost_per_call": 4,
      "required_params": [
        "query"
      ],
      "added_in_version": "v1.4.0"
    },
    {
      "id": "search_entities",
      "description": "Search 11.3M entities across 10 countries (anchored to official registries) by sector, city, country.",
      "availability": "public_mcp",
      "tier_minimum": "trace",
      "cost_per_call": 1,
      "required_params": [
        "q"
      ],
      "optional_params": [
        "country",
        "sector",
        "limit"
      ]
    },
    {
      "id": "run_risk_audit",
      "description": "Run an AI-readiness and digital risk audit on any domain. Checks SSL, DNS, structured data, trust signals.",
      "availability": "public_mcp",
      "tier_minimum": "signal",
      "cost_per_call": 1,
      "required_params": [
        "domain"
      ],
      "optional_params": [
        "sector_id",
        "name"
      ]
    },
    {
      "id": "get_platform_stats",
      "description": "Get real-time ENTIA platform statistics: total registered entities, country coverage, signed corpus root hash.",
      "availability": "public_mcp",
      "tier_minimum": "trace",
      "cost_per_call": 0,
      "free_tier_safe": true
    },
    {
      "id": "get_showcase",
      "description": "Curated IBEX35 + EU entity examples. FREE — does not consume quota. Use to explore data depth before purchasing.",
      "availability": "public_mcp",
      "tier_minimum": "trace",
      "cost_per_call": 0,
      "free_tier_safe": true
    },
    {
      "id": "verify_vat",
      "description": "Real-time EU VAT validation via VIES (27 countries).",
      "availability": "public_mcp",
      "tier_minimum": "trace",
      "cost_per_call": 1,
      "required_params": [
        "q"
      ]
    },
    {
      "id": "zone_profile",
      "description": "Socioeconomic profile of any Spanish postal code. Income, unemployment, FTTH, property value.",
      "availability": "public_mcp",
      "tier_minimum": "signal",
      "cost_per_call": 1,
      "required_params": [
        "postal_code"
      ]
    },
    {
      "id": "professional_lookup",
      "description": "Verify professional registrations (REPS, colegios profesionales, healthcare).",
      "availability": "enterprise_dpa_required",
      "tier_minimum": "enterprise",
      "cost_per_call": 1,
      "gdpr_note": "REPS + colegios. Datos personales de profesionales sanitarios. Requiere DPA firmado (Art. 28 GDPR) + base legal documentada. Endpoint con minimización aplicada (colegiado_id + titulo + provincia, sin nombre completo) hasta opt-out endpoint live.",
      "required_params": [
        "query"
      ]
    },
    {
      "id": "get_competitors",
      "description": "Find real competitors in the same sector and geography via CF KV index. Identity + sector + city are verified from ENTITIES_MASTER; contact fields (phone/website) may be sparse — use entity_lookup for verified contact data.",
      "availability": "public_mcp",
      "tier_minimum": "build",
      "cost_per_call": 0,
      "required_params": [
        "sector",
        "city"
      ]
    },
    {
      "id": "get_entia_home",
      "description": "Retrieve the Schema.org JSON-LD @graph (WebPage, Entity, Verification, Territorial Profile) for an entity Entia Home page. Free. Requires the exact canonical path (country/sector/city/slug) — use search_entities first to obtain the slug.",
      "availability": "public_mcp",
      "tier_minimum": "trace",
      "cost_per_call": 0,
      "required_params": [
        "country",
        "sector",
        "city",
        "slug"
      ]
    },
    {
      "id": "get_entity_home_projection",
      "description": "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. Served from R2 sibling .projection.v1.json — no ad-hoc MCP enrichment.",
      "availability": "public_mcp",
      "tier_minimum": "signal",
      "cost_per_call": 1,
      "required_params": [
        "country",
        "sector",
        "city",
        "slug"
      ],
      "optional_params": [
        "include_render_context"
      ],
      "added_in_version": "v1.4.7"
    }
  ],
  "free_html_corpus": {
    "base_url": "https://entia.systems/v1/identity/",
    "license": "ENTIA-Discovery-1.0",
    "note": "Free for crawl, indexing, citation/grounding of discovery HTML; NOT open license for training, fine-tuning, bulk extraction, or paid-layer reconstruction. TDM reserved. See /.well-known/tdm-policy.json and /.well-known/entia-license.json and /licensing",
    "entities": "5,211,584",
    "countries": 34,
    "rfc3161_timestamped_root": "10dc98d5002721b8ba00dc7586d04c316a5a98d885a986fea4594a9f4f30ee05",
    "rfc3161_proof_url": "https://entia.systems/.well-known/entia-corpus-root.asice"
  },
  "corpus_training_license": {
    "description": "Declared machine-readable presence of the ENTIA AI Training & Corpus License: using the ENTIA verified-entity corpus for AI model TRAINING (pretraining, fine-tuning, continued training, dataset creation) and bulk extraction requires this license. This is what lifts the TDM reservation (tdm-policy.json) for a licensed operator. Separate from the MCP inference tools[] above (those price per-lookup grounding, not training).",
    "instrument": "ENTIA-LTC-1.0",
    "grant_model": "single_transversal_license",
    "grant_model_note": "One license for all operators — no tiers, no phases, no sub-delegation.",
    "pricing": "on_request",
    "pricing_note": "No public price. The EUR figure is set per-contact in a personalized off-web offer after ENTIA identifies the responsible party.",
    "terms_url": "https://entia.systems/.well-known/entia-training-license.json",
    "offer_url": "https://entia.systems/.well-known/entia-corpus-license-offer.json",
    "human_terms": {
      "en": "https://entia.systems/legal/en/ai-training-license",
      "es": "https://entia.systems/legal/es/licencia-entrenamiento-ia"
    },
    "bulk_access_endpoint": "https://api.entia.systems/api/v1/corpus/bulk",
    "bulk_access_response": "402 Payment Required (unlicensed) pointing to the request channel — no price, no self-serve purchase. 200 with a valid entia_lic_ credential. Free discovery HTML is unaffected — stays 200.",
    "license_request": {
      "how": "Request via the contact channel; the fee is set in a personalized off-web offer.",
      "partnerships": "partnerships@entia.systems",
      "legal": "legal@entia.systems"
    }
  },
  "compliance": [
    "GDPR",
    "eIDAS-2.0",
    "ETSI-EN-319-421",
    "RFC-3161",
    "EU-AI-Act-2024-1689"
  ]
}
