NormAPI

Valida y genera facturas electrónicas alemanas (XRechnung, ZUGFeRD) según las reglas oficiales de KoSIT. Cada hallazgo de regla de negocio incluye una explicación en lenguaje sencillo. La validación no requiere cuenta; las facturas nunca se almacenan.

Servidor MCP alojado

npx add-mcp 'https://normapi.com/mcp'

Se instala en Claude Code, Codex, Cursor y más

Documentación

Endpoint y paquete

El servidor se ejecuta alojado en esta dirección (HTTP Streamable) y como paquete npm para clientes que inician servidores como proceso local (stdio). Ambos ofrecen las mismas herramientas.

Alojado

https://normapi.com/mcp

Local (stdio)

npx -y @normapi/mcp

Conexión

Los clientes con conectores solo necesitan la dirección; la primera vez que generas una factura, el cliente te inicia sesión en NormAPI con OAuth. Los clientes con un archivo de configuración pueden usar tu clave API como encabezado en su lugar.

  • Claude (claude.ai y Desktop): Configuración → Conectores → Añadir conector personalizado y pega la dirección.
  • ChatGPT: en modo desarrollador, crea un conector personalizado con esta dirección y autenticación OAuth.

Claude Code

claude mcp add --transport http normapi https://normapi.com/mcp

# or with your key instead of OAuth:
claude mcp add --transport http normapi https://normapi.com/mcp \
  --header "Authorization: Bearer nk_live_…"

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "normapi": {
      "url": "https://normapi.com/mcp",
      "headers": { "Authorization": "Bearer nk_live_…" }
    }
  }
}

VS Code (.vscode/mcp.json)

{
  "servers": {
    "normapi": { "type": "http", "url": "https://normapi.com/mcp" }
  }
}

Cualquier cliente stdio (p. ej., claude_desktop_config.json)

{
  "mcpServers": {
    "normapi": {
      "command": "npx",
      "args": ["-y", "@normapi/mcp"],
      "env": { "NORMAPI_API_KEY": "nk_live_…" }
    }
  }
}

Herramientas

Tres herramientas, cada una con un resultado estructurado y una versión de texto para modelos que solo leen texto.

HerramientaQué haceCuenta
validate_invoiceComprueba un XRechnung (UBL o CII, como texto) o un PDF ZUGFeRD/Factur-X (base64) según las reglas oficiales de KoSIT. Devuelve el veredicto, la versión del conjunto de reglas y cada hallazgo; cada hallazgo de regla de negocio incluye una explicación: qué exige la regla, por qué suele activarse y cómo corregirla.no
generate_invoiceProduce un XRechnung (UBL o CII) o un PDF ZUGFeRD a partir de datos de factura. Los totales se calculan en el servidor con aritmética decimal y el documento se valida antes de devolverse. Los datos que las reglas no permiten se rechazan con las reglas incumplidas y cómo corregir cada una, y no se cuentan.sí, cuenta contra la cuota
explain_ruleExplica una regla por su código (BR-DE-15, BR-CO-10, PEPPOL-EN16931-R010…), con un enlace a su página completa.no

Inicio de sesión y claves

Tres formas de acceso, según el cliente:

  • OAuth 2.1 (Claude, ChatGPT y otros conectores): inicias sesión en NormAPI y permites la conexión. Esta obtiene su propia clave API, nombrada según la aplicación (mcp-claude-…). Revoca esa clave en Claves API y la aplicación se desconecta de inmediato.
  • Una clave API como encabezado (Claude Code, Cursor, VS Code): Authorization: Bearer nk_live_… — la misma clave que para la API REST.
  • stdio: la clave en la variable de entorno NORMAPI_API_KEY.

Crea una clave API

Límites y privacidad

Las mismas reglas que la API REST:

  • Documentos de hasta 5 MB. Las llamadas sin clave están bajo los límites anónimos de la API; las llamadas con clave, bajo los límites de esa clave.
  • Cada factura generada cuenta contra la cuota mensual (25 gratuitas); la validación nunca cuenta.
  • Las facturas se procesan en memoria y nunca se almacenan — tampoco por el servidor MCP.
  • Validación técnica, no asesoramiento fiscal ni legal.