{
  "name": "Suapea",
  "description": "Estimaciones de ahorro de luz en España y continuación segura en Suapea. Las recomendaciones identificadas requieren el informe privado.",
  "documentation": "https://suapea.com/developers",
  "url": "https://suapea.com/mcp",
  "endpoint": "https://suapea.com/mcp",
  "transport": "streamable-http",
  "authentication": {
    "type": "none",
    "access": "public-tools-only",
    "delegated_account_access": false
  },
  "tools": [
    "get_pvpc_prices",
    "explain_energy_term",
    "get_price_index",
    "get_market_overview",
    "compare_tariff_costs",
    "analyze_invoice",
    "get_tariff_changes",
    "get_retailer_status",
    "search",
    "fetch"
  ],
  "openapi": "https://suapea.com/openapi.json",
  "privacy_policy": "https://suapea.com/legal/privacidad",
  "deprecation_policy": "https://suapea.com/developers#versiones",
  "continuation": {
    "public_result": "estimated-savings-only; no private tariff identities",
    "next_step": "Use the returned continuation_url unchanged to reach the existing teaser and voluntary signup.",
    "account_benefits": [
      "save-analysis",
      "private-recommendation",
      "more-invoices-within-account-limits"
    ],
    "monitoring": "6 promotional months when the person signs up and confirms the tariff switch request; afterwards an optional paid subscription is required. Signup alone does not activate monitoring.",
    "pricing": "https://suapea.com/precios",
    "permissions": "Explicit user permission for signup, PDF access, retailer contact and subscription. No delegated account access."
  },
  "instructions": "https://suapea.com/mcp.txt",
  "product_summary": "Estimaciones de ahorro de luz en España y continuación segura en Suapea. Las recomendaciones identificadas requieren el informe privado.",
  "capabilities": [
    "Read public Spanish electricity prices, market sources and energy explanations.",
    "Compare anonymous indicative costs without identifying private tariff recommendations.",
    "Analyze a user-authorized invoice and return estimated savings with a private continuation URL."
  ],
  "mcp": {
    "endpoint": "https://suapea.com/mcp",
    "api_endpoint": "https://api.suapea.com/api/v1/public/gpt/mcp",
    "transport": "streamable-http",
    "authentication": {
      "type": "none"
    },
    "tools": [
      {
        "name": "get_pvpc_prices",
        "description": "Muestra los precios por hora de la tarifa regulada (PVPC) que publica REE. Indica la fecha y avisa si faltan datos. No sirven para la mayoría de tarifas del mercado libre."
      },
      {
        "name": "explain_energy_term",
        "description": "Explica un término de tu factura con el glosario de Suapea y enlaza la fuente."
      },
      {
        "name": "get_price_index",
        "description": "Consulta el índice solo cuando hay datos verificados; nunca inventa precios."
      },
      {
        "name": "get_market_overview",
        "description": "Resume las tarifas públicas que podemos verificar, con su fuente y sus límites."
      },
      {
        "name": "compare_tariff_costs",
        "description": "Muestra hasta tres costes del catálogo con supuestos; no calcula ahorro personalizado sin factura real. Para comprobar ahorro, pide un PDF voluntario y usa analyze_invoice o enlaza a /analizar-factura-luz-pdf."
      },
      {
        "name": "analyze_invoice",
        "description": "Analiza la factura PDF que la persona aporta: lee consumo, potencia e importe y recalcula esa misma factura con las tarifas vigentes para decir cuánto podría ahorrar. Solo con un PDF que aportes tú de forma expresa; no crea cuentas ni cambia contratos."
      },
      {
        "name": "get_tariff_changes",
        "description": "Consulta solo cambios de tarifa publicados, con fuente oficial y URL canónica de Suapea."
      },
      {
        "name": "get_retailer_status",
        "description": "Consulta el estado documentado en el BOE, con fuente oficial y URL canónica de Suapea."
      },
      {
        "name": "search",
        "description": "Busca fuentes canónicas de Suapea para responder con URLs citables."
      },
      {
        "name": "fetch",
        "description": "Recupera una fuente pública canónica de Suapea con URL absoluta."
      }
    ]
  },
  "public_endpoints": [
    {
      "method": "POST",
      "path": "/api/v1/public/gpt/mcp",
      "url": "https://api.suapea.com/api/v1/public/gpt/mcp",
      "summary": "Herramientas públicas MCP de Suapea",
      "auth": "none",
      "protocol": "MCP JSON-RPC",
      "rate_limit": {
        "requests": 300,
        "window_seconds": 3600,
        "policy": "300;w=3600"
      },
      "response_content_type": "application/json",
      "response_content_types": [
        "application/json",
        "text/event-stream"
      ]
    },
    {
      "method": "GET",
      "url": "https://api.suapea.com/api/v1/public/gpt/tariffs/current",
      "path": "/api/v1/public/gpt/tariffs/current",
      "request_headers": {
        "Accept": "application/json"
      },
      "operation_id": "getCurrentTariffs",
      "summary": "Disponibilidad de opciones electricas actuales",
      "auth": "none",
      "rate_limit": {
        "requests": 100,
        "window_seconds": 3600,
        "policy": "100;w=3600"
      },
      "response_content_type": "application/json",
      "response_content_types": [
        "application/json"
      ]
    },
    {
      "method": "POST",
      "url": "https://api.suapea.com/api/v1/public/gpt/tariffs/compare",
      "path": "/api/v1/public/gpt/tariffs/compare",
      "request_headers": {
        "Accept": "application/json"
      },
      "operation_id": "compareTariffs",
      "summary": "Comparar costes orientativos según consumo mensual",
      "auth": "none",
      "rate_limit": {
        "requests": 50,
        "window_seconds": 3600,
        "policy": "50;w=3600"
      },
      "response_content_type": "application/json",
      "response_content_types": [
        "application/json"
      ]
    },
    {
      "method": "GET",
      "url": "https://api.suapea.com/api/v1/public/gpt/prices/pvpc/today",
      "path": "/api/v1/public/gpt/prices/pvpc/today",
      "request_headers": {
        "Accept": "application/json"
      },
      "operation_id": "getPvpcToday",
      "summary": "Precios PVPC por hora de hoy",
      "auth": "none",
      "rate_limit": {
        "requests": 200,
        "window_seconds": 3600,
        "policy": "200;w=3600"
      },
      "response_content_type": "application/json",
      "response_content_types": [
        "application/json"
      ]
    },
    {
      "method": "GET",
      "url": "https://suapea.com/datos/descargas/pvpc-{month}.csv",
      "path": "/datos/descargas/pvpc-{month}.csv",
      "request_headers": {
        "Accept": "text/csv"
      },
      "operation_id": "downloadPvpcCsv",
      "summary": "PVPC horario mensual; solo días completos y válidos",
      "auth": "none",
      "rate_limit": {
        "requests": 1200,
        "window_seconds": 3600,
        "policy": "1200;w=3600"
      },
      "response_content_type": "text/csv",
      "response_content_types": [
        "text/csv"
      ]
    },
    {
      "method": "GET",
      "url": "https://suapea.com/datos/descargas/indice-precios.csv",
      "path": "/datos/descargas/indice-precios.csv",
      "request_headers": {
        "Accept": "text/csv"
      },
      "operation_id": "downloadPriceIndexCsv",
      "summary": "Índice de precios; hasta 36 ediciones, como index/history?months=36",
      "auth": "none",
      "rate_limit": {
        "requests": 1200,
        "window_seconds": 3600,
        "policy": "1200;w=3600"
      },
      "response_content_type": "text/csv",
      "response_content_types": [
        "text/csv"
      ]
    },
    {
      "method": "GET",
      "url": "https://suapea.com/datos/descargas/cambios-tarifa.csv",
      "path": "/datos/descargas/cambios-tarifa.csv",
      "request_headers": {
        "Accept": "text/csv"
      },
      "operation_id": "downloadTariffChangesCsv",
      "summary": "Solo eventos tariff_change publicados",
      "auth": "none",
      "rate_limit": {
        "requests": 1200,
        "window_seconds": 3600,
        "policy": "1200;w=3600"
      },
      "response_content_type": "text/csv",
      "response_content_types": [
        "text/csv"
      ]
    },
    {
      "method": "GET",
      "url": "https://api.suapea.com/api/v1/public/pvpc/today",
      "path": "/api/v1/public/pvpc/today",
      "request_headers": {
        "Accept": "application/json"
      },
      "operation_id": "getPublicPvpcToday",
      "summary": "Consultar el PVPC del día",
      "auth": "none",
      "rate_limit": {
        "requests": 1200,
        "window_seconds": 3600,
        "policy": "1200;w=3600"
      },
      "response_content_type": "application/json",
      "response_content_types": [
        "application/json"
      ]
    },
    {
      "method": "GET",
      "url": "https://api.suapea.com/api/v1/public/pvpc/{date}",
      "path": "/api/v1/public/pvpc/{date}",
      "request_headers": {
        "Accept": "application/json"
      },
      "operation_id": "getPublicPvpcByDate",
      "summary": "Consultar el PVPC de una fecha",
      "auth": "none",
      "rate_limit": {
        "requests": 1200,
        "window_seconds": 3600,
        "policy": "1200;w=3600"
      },
      "response_content_type": "application/json",
      "response_content_types": [
        "application/json"
      ]
    },
    {
      "method": "GET",
      "url": "https://api.suapea.com/api/v1/public/index/latest",
      "path": "/api/v1/public/index/latest",
      "request_headers": {
        "Accept": "application/json"
      },
      "operation_id": "getPublicPriceIndexLatest",
      "summary": "Consultar la última edición del índice de precios",
      "auth": "none",
      "rate_limit": {
        "requests": 1200,
        "window_seconds": 3600,
        "policy": "1200;w=3600"
      },
      "response_content_type": "application/json",
      "response_content_types": [
        "application/json"
      ]
    },
    {
      "method": "GET",
      "url": "https://api.suapea.com/api/v1/public/index/history",
      "path": "/api/v1/public/index/history",
      "request_headers": {
        "Accept": "application/json"
      },
      "operation_id": "getPublicPriceIndexHistory",
      "summary": "Consultar el histórico del índice de precios",
      "auth": "none",
      "rate_limit": {
        "requests": 1200,
        "window_seconds": 3600,
        "policy": "1200;w=3600"
      },
      "response_content_type": "application/json",
      "response_content_types": [
        "application/json"
      ]
    },
    {
      "method": "GET",
      "url": "https://api.suapea.com/api/v1/public/datos",
      "path": "/api/v1/public/datos",
      "request_headers": {
        "Accept": "application/json"
      },
      "operation_id": "getPublicDataObservatory",
      "summary": "Consultar el observatorio de datos",
      "auth": "none",
      "rate_limit": {
        "requests": 1200,
        "window_seconds": 3600,
        "policy": "1200;w=3600"
      },
      "response_content_type": "application/json",
      "response_content_types": [
        "application/json"
      ]
    }
  ],
  "links": {
    "documentation": "https://suapea.com/developers",
    "deprecation_policy": "https://suapea.com/developers#versiones",
    "openapi": "https://suapea.com/openapi.json",
    "openapi_yaml": "https://suapea.com/gpt-openapi.yaml",
    "mcp": "https://suapea.com/.well-known/mcp",
    "llms": "https://suapea.com/llms.txt",
    "instructions": "https://suapea.com/mcp.txt"
  },
  "safe_usage_rules": [
    "Public tools require no authentication and provide no delegated private account access.",
    "Only analyze PDFs explicitly supplied or authorized by the user.",
    "Never publish private tariff identities, account credentials or continuation tokens.",
    "Use the returned continuation_url unchanged; do not index it, log it in analytics or share it with third parties.",
    "Registration, consent, retailer contact and optional subscription stay in the existing secure Suapea flow and require explicit user permission.",
    "On HTTP 429 wait before retrying; unavailable data must never be replaced by invented savings."
  ]
}
