{
  "schema_version": "1.1",
  "name": "super-tecnico-ai-tools",
  "title": "Super Técnico — herramientas técnicas para IAs",
  "status": "mixed_public_preview",
  "execution_enabled": true,
  "execution_scope": [
    "supertecnico_search_regulations",
    "supertecnico_search_connectors",
    "supertecnico_get_connector",
    "supertecnico_resolve_connector_contact",
    "supertecnico_search_embedded_platforms",
    "supertecnico_get_embedded_platform",
    "supertecnico_recommend_embedded_platforms"
  ],
  "provider_neutral": true,
  "instructions": "Primero usa supertecnico_check_coverage. Solicita después solo el nivel mínimo que resuelva el caso. Conserva marcas, familias, unidades, lugar de lectura, lado y orientación; no mezcles variantes. Muestra incertidumbre y procedencia. Usa ElectroIA únicamente cuando ya hayas decidido la topología y los componentes.",
  "routing_policy": {
    "preflight_first": true,
    "smallest_sufficient_result": true,
    "bulk_export_allowed": false,
    "unknown_result": "Return a structured not_found or insufficient_context result; never invent a record."
  },
  "billing_policy": {
    "status": "free_preview_measurement_before_commercial_release",
    "coverage_preflight": "free",
    "economic_classes": ["micro", "standard", "advanced", "heavy"],
    "classification": {
      "micro": "Unit conversions, deterministic validations and tiny calculations.",
      "standard": "Compact knowledge, procedures and focused deterministic calculations.",
      "advanced": "Diagnostics, case matching, next measurements and technical validation.",
      "heavy": "Simulation and evaluation workloads only after explicit cost approval."
    },
    "internal_compute_cost_is_private": true,
    "prices_published_before_benchmark": false
  },
  "default_output_schema": {
    "type": "object",
    "additionalProperties": false,
    "required": ["ok", "status", "request_id", "service_version", "tool_id", "tool_version", "result", "confidence", "source_ids", "warnings", "usage"],
    "properties": {
      "ok": {"type": "boolean"},
      "status": {"type": "string", "enum": ["success", "not_found", "insufficient_context", "rejected", "error"]},
      "request_id": {"type": "string", "minLength": 8, "maxLength": 64},
      "service_version": {"type": "string"},
      "tool_id": {"type": "string", "minLength": 3, "maxLength": 100},
      "tool_version": {"type": "string", "minLength": 1, "maxLength": 40},
      "result": {"type": ["object", "array", "null"]},
      "confidence": {
        "type": ["object", "null"],
        "additionalProperties": false,
        "properties": {
          "score": {"type": "number", "minimum": 0, "maximum": 1},
          "level": {"type": "string", "enum": ["high", "medium", "low", "unknown"]},
          "basis": {"type": "string", "maxLength": 500}
        }
      },
      "source_ids": {"type": "array", "maxItems": 30, "items": {"type": "string", "maxLength": 180}},
      "warnings": {"type": "array", "maxItems": 12, "items": {"type": "string", "maxLength": 400}},
      "missing_context": {"type": "array", "maxItems": 8, "items": {"type": "string", "maxLength": 160}},
      "usage": {
        "type": "object",
        "additionalProperties": false,
        "required": ["billing_tier", "billable_units", "cache_status"],
        "properties": {
          "billing_tier": {"type": "string"},
          "billable_units": {"type": "integer", "minimum": 0},
          "cache_status": {"type": "string", "enum": ["hit", "miss", "not_applicable"]},
          "response_bytes": {"type": "integer", "minimum": 0},
          "estimated_tokens_avoided": {"type": ["integer", "null"], "minimum": 0},
          "estimated_searches_avoided": {"type": ["integer", "null"], "minimum": 0}
        }
      }
    }
  },
  "tools": [
    {
      "name": "supertecnico_get_capabilities",
      "title": "Consultar capacidades",
      "description": "Indica cobertura, versiones y límites antes de resolver una consulta.",
      "state": "planned",
      "result_level": "coverage",
      "billing_tier": "free",
      "target_output_tokens": 250,
      "annotations": {"readOnlyHint": true, "destructiveHint": false, "openWorldHint": false},
      "input_schema": {"type": "object", "additionalProperties": false, "properties": {}}
    },
    {
      "name": "supertecnico_check_coverage",
      "title": "Comprobar cobertura",
      "description": "Comprueba gratuitamente si Super Técnico dispone de datos aplicables y qué contexto mínimo falta.",
      "state": "planned",
      "result_level": "coverage",
      "billing_tier": "free",
      "target_output_tokens": 250,
      "annotations": {"readOnlyHint": true, "destructiveHint": false, "openWorldHint": false},
      "input_schema": {
        "type": "object",
        "additionalProperties": false,
        "required": ["domain", "query"],
        "properties": {
          "domain": {"type": "string", "enum": ["hvac", "refrigeration", "electronics", "components", "connectors", "field_cases", "diagrams", "regulations", "drainage"]},
          "query": {"type": "string", "minLength": 2, "maxLength": 300},
          "brand": {"type": "string", "maxLength": 80},
          "model_or_family": {"type": "string", "maxLength": 120}
        }
      }
    },
    {
      "name": "supertecnico_get_compact_context",
      "title": "Obtener contexto técnico compacto",
      "description": "Devuelve únicamente los registros, campos y fragmentos necesarios para un objetivo técnico concreto, con IDs, versiones, confianza y procedencia.",
      "state": "planned",
      "result_level": "basic",
      "billing_tier": "metered_basic_planned",
      "economic_class": "standard",
      "target_output_tokens": 600,
      "annotations": {"readOnlyHint": true, "destructiveHint": false, "openWorldHint": false},
      "input_schema": {
        "type": "object",
        "additionalProperties": false,
        "required": ["domain", "query", "objective"],
        "properties": {
          "domain": {"type": "string", "enum": ["hvac", "refrigeration", "electronics", "components", "connectors", "field_cases", "diagrams", "regulations", "drainage"]},
          "query": {"type": "string", "minLength": 2, "maxLength": 300},
          "objective": {"type": "string", "minLength": 3, "maxLength": 300},
          "source_ids": {"type": "array", "maxItems": 20, "items": {"type": "string", "maxLength": 180}},
          "max_records": {"type": "integer", "minimum": 1, "maximum": 8, "default": 4},
          "max_output_tokens": {"type": "integer", "minimum": 200, "maximum": 1200, "default": 600}
        }
      }
    },
    {
      "name": "supertecnico_validate_measurements",
      "title": "Validar medidas técnicas",
      "description": "Comprueba unidades, calidad declarada, rangos físicos y contradicciones entre medidas sin convertir estimaciones en lecturas reales.",
      "state": "planned_domain_by_domain",
      "result_level": "basic",
      "billing_tier": "metered_basic_planned",
      "economic_class": "micro",
      "target_output_tokens": 500,
      "annotations": {"readOnlyHint": true, "destructiveHint": false, "openWorldHint": false},
      "input_schema": {
        "type": "object",
        "additionalProperties": false,
        "required": ["domain", "measurements"],
        "properties": {
          "domain": {"type": "string", "enum": ["refrigeration", "hvac", "electrical", "combustion", "airflow", "water"]},
          "context": {"type": "string", "maxLength": 600},
          "measurements": {
            "type": "array",
            "minItems": 1,
            "maxItems": 40,
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": ["name", "value", "unit", "quality"],
              "properties": {
                "name": {"type": "string", "minLength": 1, "maxLength": 100},
                "value": {"type": "number"},
                "unit": {"type": "string", "minLength": 1, "maxLength": 40},
                "quality": {"type": "string", "enum": ["measured", "machine_read", "observed_estimate", "unknown"]}
              }
            }
          }
        }
      }
    },
    {
      "name": "supertecnico_get_next_measurement",
      "title": "Obtener la siguiente medición útil",
      "description": "Devuelve una sola medición de alto valor para continuar el análisis; inicialmente delega en el motor frigorista.",
      "state": "refrigeration_browser_available_remote_planned",
      "result_level": "diagnostic",
      "billing_tier": "metered_diagnostic_planned",
      "economic_class": "advanced",
      "target_output_tokens": 350,
      "delegate": "../frigorista/tool-manifest.json#frigorista_get_next_measurement",
      "annotations": {"readOnlyHint": true, "destructiveHint": false, "openWorldHint": false},
      "input_schema": {
        "type": "object",
        "additionalProperties": false,
        "required": ["domain", "measurements"],
        "properties": {
          "domain": {"type": "string", "enum": ["refrigeration"]},
          "refrigerant": {"type": "string", "minLength": 2, "maxLength": 40},
          "goal": {"type": "string", "enum": ["pt_only", "superheat", "subcooling", "basic_system_study", "deep_analysis"], "default": "basic_system_study"},
          "measurements": {"type": "object"}
        }
      }
    },
    {
      "name": "supertecnico_analyze_mollier_cycle",
      "title": "Analizar ciclo frigorífico mediante Mollier",
      "description": "Representa los puntos medidos en presión-entalpía y devuelve efecto frigorífico, trabajo específico, calor rechazado, COP del ciclo, contradicciones y datos pendientes.",
      "state": "refrigeration_browser_available_remote_planned",
      "result_level": "diagnostic",
      "billing_tier": "metered_diagnostic_planned",
      "economic_class": "advanced",
      "target_output_tokens": 800,
      "delegate": "../frigorista/tool-manifest.json#frigorista_analyze_mollier_cycle",
      "annotations": {"readOnlyHint": true, "destructiveHint": false, "openWorldHint": false},
      "input_schema": {
        "type": "object",
        "additionalProperties": false,
        "required": ["refrigerant", "measurements"],
        "properties": {
          "refrigerant": {"type": "string", "minLength": 2, "maxLength": 40},
          "measurements": {"type": "object"}
        }
      }
    },
    {
      "name": "supertecnico_validate_answer",
      "title": "Validar una respuesta técnica",
      "description": "Descompone una respuesta en afirmaciones y marca las respaldadas, contradictorias, no verificables o fuera del alcance de las fuentes aportadas.",
      "state": "planned_after_reviewed_rule_coverage",
      "result_level": "diagnostic",
      "billing_tier": "metered_diagnostic_planned",
      "economic_class": "advanced",
      "target_output_tokens": 1000,
      "annotations": {"readOnlyHint": true, "destructiveHint": false, "openWorldHint": false},
      "input_schema": {
        "type": "object",
        "additionalProperties": false,
        "required": ["domain", "answer"],
        "properties": {
          "domain": {"type": "string", "enum": ["hvac", "refrigeration", "electronics", "components", "connectors", "diagrams", "regulations", "drainage"]},
          "answer": {"type": "string", "minLength": 10, "maxLength": 6000},
          "source_ids": {"type": "array", "maxItems": 30, "items": {"type": "string", "maxLength": 180}},
          "strictness": {"type": "string", "enum": ["safety_critical", "technical", "informational"], "default": "technical"}
        }
      }
    },
    {
      "name": "supertecnico_resolve_hvac_code",
      "title": "Resolver código HVAC",
      "description": "Separa significados por marca, familia, unidad y lugar de lectura y devuelve el resultado aplicable con fuentes.",
      "state": "planned",
      "result_level": "basic",
      "billing_tier": "metered_basic",
      "target_output_tokens": 700,
      "annotations": {"readOnlyHint": true, "destructiveHint": false, "openWorldHint": false},
      "input_schema": {
        "type": "object",
        "additionalProperties": false,
        "required": ["brand", "code"],
        "properties": {
          "brand": {"type": "string", "minLength": 2, "maxLength": 80},
          "code": {"type": "string", "minLength": 1, "maxLength": 24},
          "model_or_family": {"type": "string", "maxLength": 120},
          "unit_scope": {"type": "string", "enum": ["indoor", "outdoor", "controller", "board", "system", "unknown"]},
          "display_location": {"type": "string", "maxLength": 120}
        }
      }
    },
    {
      "name": "supertecnico_get_diagnostic",
      "title": "Obtener diagnóstico guiado",
      "description": "Devuelve causas, comprobaciones ordenadas, valores disponibles, advertencias y trazabilidad para un caso ya identificado.",
      "state": "planned",
      "result_level": "diagnostic",
      "billing_tier": "metered_diagnostic",
      "target_output_tokens": 1400,
      "annotations": {"readOnlyHint": true, "destructiveHint": false, "openWorldHint": false},
      "input_schema": {
        "type": "object",
        "additionalProperties": false,
        "required": ["record_id"],
        "properties": {
          "record_id": {"type": "string", "minLength": 4, "maxLength": 120},
          "symptoms": {"type": "array", "maxItems": 8, "items": {"type": "string", "maxLength": 160}},
          "measurements": {"type": "array", "maxItems": 12, "items": {"type": "string", "maxLength": 160}}
        }
      }
    },
    {
      "name": "supertecnico_search_components",
      "title": "Buscar componentes",
      "description": "Busca referencias o marcajes y conserva ambigüedades, calidad, confianza y estado de verificación.",
      "state": "planned",
      "result_level": "basic",
      "billing_tier": "metered_basic",
      "target_output_tokens": 700,
      "annotations": {"readOnlyHint": true, "destructiveHint": false, "openWorldHint": false},
      "input_schema": {
        "type": "object",
        "additionalProperties": false,
        "required": ["query"],
        "properties": {
          "query": {"type": "string", "minLength": 1, "maxLength": 120},
          "package": {"type": "string", "maxLength": 80},
          "category": {"type": "string", "maxLength": 80},
          "minimum_confidence": {"type": "number", "minimum": 0, "maximum": 1},
          "limit": {"type": "integer", "minimum": 1, "maximum": 20, "default": 8}
        }
      }
    },
    {
      "name": "supertecnico_compare_components",
      "title": "Comparar componentes",
      "description": "Compara dos referencias y destaca diferencias críticas y datos ausentes sin garantizar sustitución directa.",
      "state": "planned",
      "result_level": "diagnostic",
      "billing_tier": "metered_diagnostic",
      "target_output_tokens": 1200,
      "annotations": {"readOnlyHint": true, "destructiveHint": false, "openWorldHint": false},
      "input_schema": {
        "type": "object",
        "additionalProperties": false,
        "required": ["left_part_number", "right_part_number"],
        "properties": {
          "left_part_number": {"type": "string", "minLength": 1, "maxLength": 120},
          "right_part_number": {"type": "string", "minLength": 1, "maxLength": 120},
          "application": {"type": "string", "maxLength": 240}
        }
      }
    },
    {
      "name": "supertecnico_search_connectors",
      "title": "Buscar conectores y pinouts",
      "description": "Busca por nombre, interfaz, forma o señal y conserva lado, vista, variante, estado de revisión y procedencia.",
      "state": "public_http_beta",
      "result_level": "basic",
      "billing_tier": "free_preview",
      "http_endpoint": "../../api/index.php?action=connector-search",
      "target_output_tokens": 500,
      "delegate": "../connectors/tool-manifest.json#supertecnico_search_connectors",
      "annotations": {"readOnlyHint": true, "destructiveHint": false, "openWorldHint": false},
      "input_schema": {
        "type": "object",
        "additionalProperties": false,
        "required": ["query"],
        "properties": {
          "query": {"type": "string", "minLength": 1, "maxLength": 120},
          "category": {"type": "string", "maxLength": 40},
          "review_status": {"type": "string", "enum": ["reviewed", "source_identified", "pending_review"]},
          "limit": {"type": "integer", "minimum": 1, "maximum": 20, "default": 8}
        }
      }
    },
    {
      "name": "supertecnico_get_connector",
      "title": "Obtener ficha de conector",
      "description": "Devuelve contactos, orientación, variantes, advertencias y fuentes de un conector ya identificado.",
      "state": "public_http_beta",
      "result_level": "basic",
      "billing_tier": "free_preview",
      "http_endpoint": "../../api/index.php?action=connector-get",
      "target_output_tokens": 800,
      "delegate": "../connectors/tool-manifest.json#supertecnico_get_connector",
      "annotations": {"readOnlyHint": true, "destructiveHint": false, "openWorldHint": false},
      "input_schema": {"type": "object", "additionalProperties": false, "required": ["connector_id"], "properties": {"connector_id": {"type": "string", "minLength": 3, "maxLength": 80}}}
    },
    {
      "name": "supertecnico_resolve_connector_contact",
      "title": "Resolver contacto de conector",
      "description": "Localiza una señal o contacto dentro de una ficha ya identificada y devuelve también la vista y el estado de revisión.",
      "state": "public_http_beta",
      "result_level": "basic",
      "billing_tier": "free_preview",
      "http_endpoint": "../../api/index.php?action=connector-resolve",
      "target_output_tokens": 400,
      "delegate": "../connectors/tool-manifest.json#supertecnico_resolve_connector_contact",
      "annotations": {"readOnlyHint": true, "destructiveHint": false, "openWorldHint": false},
      "input_schema": {"type": "object", "additionalProperties": false, "required": ["connector_id", "contact_or_signal"], "properties": {"connector_id": {"type": "string", "minLength": 3, "maxLength": 80}, "contact_or_signal": {"type": "string", "minLength": 1, "maxLength": 80}}}
    },
    {
      "name": "supertecnico_search_embedded_platforms",
      "title": "Buscar plataformas embebidas",
      "description": "Busca placas por nombre, fabricante, arquitectura, interfaz o uso y conserva riesgo, revisión y procedencia.",
      "state": "public_http_beta",
      "result_level": "basic",
      "billing_tier": "free_preview",
      "http_endpoint": "../../api/index.php?action=embedded-search",
      "target_output_tokens": 600,
      "delegate": "../embedded-platforms/tool-manifest.json#supertecnico_search_embedded_platforms",
      "annotations": {"readOnlyHint": true, "destructiveHint": false, "openWorldHint": false},
      "input_schema": {"type": "object", "additionalProperties": false, "required": ["query"], "properties": {"query": {"type": "string", "minLength": 1, "maxLength": 160}, "manufacturer": {"type": "string", "maxLength": 80}, "platform_class": {"type": "string", "maxLength": 60}, "limit": {"type": "integer", "minimum": 1, "maximum": 20, "default": 8}}}
    },
    {
      "name": "supertecnico_get_embedded_platform",
      "title": "Obtener ficha de plataforma embebida",
      "description": "Devuelve arquitectura, alimentación, interfaces, riesgo, pruebas de recepción, integración y procedencia.",
      "state": "public_http_beta",
      "result_level": "basic",
      "billing_tier": "free_preview",
      "http_endpoint": "../../api/index.php?action=embedded-get",
      "target_output_tokens": 800,
      "delegate": "../embedded-platforms/tool-manifest.json#supertecnico_get_embedded_platform",
      "annotations": {"readOnlyHint": true, "destructiveHint": false, "openWorldHint": false},
      "input_schema": {"type": "object", "additionalProperties": false, "required": ["platform_id"], "properties": {"platform_id": {"type": "string", "minLength": 3, "maxLength": 100}}}
    },
    {
      "name": "supertecnico_recommend_embedded_platforms",
      "title": "Preseleccionar plataformas embebidas",
      "description": "Ordena candidatos por caso de uso e interfaces y devuelve explícitamente una preselección, nunca una decisión final.",
      "state": "public_http_beta",
      "result_level": "basic",
      "billing_tier": "free_preview",
      "http_endpoint": "../../api/index.php?action=embedded-recommend",
      "target_output_tokens": 900,
      "delegate": "../embedded-platforms/tool-manifest.json#supertecnico_recommend_embedded_platforms",
      "annotations": {"readOnlyHint": true, "destructiveHint": false, "openWorldHint": false},
      "input_schema": {"type": "object", "additionalProperties": false, "required": ["use_case"], "properties": {"use_case": {"type": "string", "minLength": 3, "maxLength": 300}, "required_interfaces": {"type": "string", "maxLength": 200}, "needs_linux": {"type": "boolean", "default": false}, "limit": {"type": "integer", "minimum": 1, "maximum": 10, "default": 5}}}
    },
    {
      "name": "supertecnico_search_field_cases",
      "title": "Buscar casos reales",
      "description": "Busca casos moderados por referencia de placa, equipo y síntoma y distingue soluciones propuestas de reparaciones confirmadas.",
      "state": "planned",
      "result_level": "field",
      "billing_tier": "metered_field",
      "target_output_tokens": 900,
      "annotations": {"readOnlyHint": true, "destructiveHint": false, "openWorldHint": false},
      "input_schema": {
        "type": "object",
        "additionalProperties": false,
        "required": ["query"],
        "properties": {
          "query": {"type": "string", "minLength": 3, "maxLength": 300},
          "board_reference": {"type": "string", "maxLength": 120},
          "brand": {"type": "string", "maxLength": 80},
          "confirmed_only": {"type": "boolean", "default": true},
          "limit": {"type": "integer", "minimum": 1, "maximum": 10, "default": 5}
        }
      }
    },
    {
      "name": "supertecnico_search_regulations",
      "title": "Buscar normativa oficial",
      "description": "Localiza texto dentro de reglamentos oficiales y devuelve documento, página, huellas de fuente y estado de revisión sin convertir una coincidencia en una conclusión legal automática.",
      "state": "public_free_preview",
      "result_level": "basic",
      "billing_tier": "free_preview",
      "target_output_tokens": 850,
      "delegate": "../regulations/tool-manifest.json",
      "http_endpoint": "../../api/index.php?action=regulation-search",
      "authentication": "not_required_during_free_preview",
      "annotations": {"readOnlyHint": true, "destructiveHint": false, "openWorldHint": false},
      "input_schema": {
        "type": "object",
        "additionalProperties": false,
        "required": ["query"],
        "properties": {
          "query": {"type": "string", "minLength": 2, "maxLength": 300},
          "document_id": {"type": "string", "maxLength": 64},
          "domain": {"type": "string", "maxLength": 80},
          "exact_phrase": {"type": "boolean", "default": false},
          "evidence_level": {"type": "string", "enum": ["document_hit", "reviewed_rule", "deterministic_result"], "default": "document_hit"},
          "jurisdiction": {"type": "string", "enum": ["ES"], "default": "ES"},
          "limit": {"type": "integer", "minimum": 1, "maximum": 20, "default": 10}
        }
      }
    },
    {
      "name": "supertecnico_size_condensate_drain",
      "title": "Dimensionar desagüe de condensados",
      "description": "Acumula el agua de varias unidades y calcula diámetro interior y caída por tramo con hipótesis y advertencias explícitas.",
      "state": "browser_available_remote_planned",
      "result_level": "basic",
      "billing_tier": "metered_basic_planned",
      "target_output_tokens": 650,
      "delegate": "../condensate/tool-manifest.json",
      "annotations": {"readOnlyHint": true, "destructiveHint": false, "openWorldHint": false},
      "input_schema": {
        "type": "object",
        "additionalProperties": false,
        "required": ["units", "slope_percent"],
        "properties": {
          "slope_percent": {"type": "number", "exclusiveMinimum": 0, "maximum": 10},
          "units": {
            "type": "array",
            "minItems": 1,
            "maxItems": 100,
            "items": {
              "type": "object",
              "required": ["name", "connection_mm", "segment_length_m"],
              "properties": {
                "name": {"type": "string", "minLength": 1, "maxLength": 80},
                "capacity": {"type": "number", "exclusiveMinimum": 0},
                "capacity_unit": {"type": "string", "enum": ["kw", "frig_h", "btu_h"]},
                "climate": {"type": "string", "enum": ["normal", "humid", "very_humid"]},
                "flow_l_h": {"type": "number", "exclusiveMinimum": 0},
                "connection_mm": {"type": "number", "exclusiveMinimum": 0},
                "segment_length_m": {"type": "number", "minimum": 0}
              }
            }
          }
        }
      }
    },
    {
      "name": "supertecnico_render_diagram",
      "title": "Generar diagrama electrotécnico",
      "description": "Delega en ElectroIA la validación y el renderizado SVG de un documento estructurado ya decidido por la IA.",
      "state": "private_preview_via_electroia",
      "result_level": "diagram",
      "billing_tier": "metered_diagram_planned",
      "target_output_tokens": 500,
      "delegate": "../electroia/tool-manifest.json#electroia_render_diagram",
      "annotations": {"readOnlyHint": true, "destructiveHint": false, "openWorldHint": false},
      "input_schema": {
        "type": "object",
        "additionalProperties": false,
        "required": ["document"],
        "properties": {"document": {"$ref": "../electroia/diagram-document.schema.json"}}
      }
    }
  ]
}
