Lightning Enable

Servidor MCP que permite a agentes de IA realizar pagos Bitcoin Lightning, consultar saldos, acceder a APIs L402 y gestionar presupuestos de pago. Compatible con billeteras Strike, OpenNode, NWC y LND.

Documentación

Parte de Lightning Enable — infraestructura para comercio entre agentes sobre Lightning.

Servidor MCP de Lightning Enable

Discord PyPI downloads NuGet downloads Docker pulls

Monetiza tu propia API — prueba gratuita de 30 días

Los agentes pagan tu API por solicitud a través de Lightning — suscripción plana a $49/mes, y tú te quedas con el 100% de cada sat.

O regístrate sin salir de tu agente: llama a la herramienta create_lightning_enable_account.

Un servidor MCP (Model Context Protocol) de código abierto que permite a los agentes de IA realizar pagos a través de la red Lightning y participar en comercio entre agentes. Las herramientas de billetera, factura, L402, presupuesto y descubrimiento de API funcionan de inmediato con solo una billetera. Las herramientas de productor (vender acceso mediante L402) y las herramientas de ASA (Agent Service Agreement) (descubrimiento, solicitud, liquidación y atestación entre agentes sobre Nostr) se desbloquean con una suscripción a Agentic Commerce. Consulta la lista completa de herramientas.

Disponible en .NET y Python.

Qué hace

Dale a tu agente de IA una billetera Lightning y podrá:

  • Pagar facturas — Enviar Bitcoin vía Lightning a cualquier factura BOLT11
  • Acceder a APIs L402 — Pagar automáticamente los desafíos L402 para un acceso fluido a las APIs
  • Descubrir APIs — Buscar en el registro de APIs L402 para encontrar APIs de pago por palabra clave o categoría, u obtener el manifiesto de una API específica para ver detalles completos de endpoints y precios
  • Rastrear gastos — Límites de presupuesto, un registro de recibos duradero y verificaciones de saldo
  • Crear facturas — Generar facturas para recibir pagos
  • Ejecutar operaciones de billetera — Precio de BTC, cambio de divisas y envíos en cadena (Strike; en cadena también LND)
  • Auto-inicializar una cuenta de Lightning Enable — create_lightning_enable_account paga una tarifa de activación de ~100 sats mediante L402 y devuelve una clave de API de comerciante: el formulario de registro gratuito→de pago que es el protocolo, desbloqueando las herramientas de productor + ASA sin navegador ni página de pago.
  • Vender servicios (Productor L402) — Configura la cuenta de vendedor, pon una API detrás de L402, fija el precio de sus rutas, publícala, genera desafíos de pago y verifica tokens de pagador — todo desde una sola herramienta, para que un agente pueda pasar de una clave de API a un endpoint de pago sin tocar REST
  • Comercio entre agentes (ASA) — Descubre, solicita, liquida y revisa servicios entre agentes en Nostr

Inicio rápido

1. Instalar

# .NET
dotnet tool install -g LightningEnable.Mcp

# Python
pip install lightning-enable-mcp

# Python (no install)
uvx lightning-enable-mcp

# Docker
docker pull refinedelement/lightning-enable-mcp:latest

2. Primera ejecución — setup_wallet

Nada más funciona sin una billetera, así que empieza ahí. Pregúntale a tu agente:

Run setup_wallet

Sin argumentos, informa qué billetera está configurada y de dónde provienen las credenciales — el proveedor y la fuente, nunca la credencial en sí. Si no hay billetera, devuelve los pasos de configuración.

El camino más corto es NWC. En tu aplicación de billetera (Alby Hub, CoinOS o cualquier billetera NIP-47) crea una conexión Nostr Wallet Connect, copia la cadena nostr+walletconnect:// y dásela al agente:

Run setup_wallet with this connection string: nostr+walletconnect://...

setup_wallet valida la cadena, se conecta a la billetera para demostrar que responde, y luego la escribe en ~/.lightning-enable/config.json con los permisos del archivo restringidos a tu usuario. Informa los métodos declarados y el saldo de la billetera. Reinicia el servidor después para que cargue la nueva billetera.

O establece una variable de entorno (en la configuración de Claude Desktop a continuación, por ejemplo). L402 — el propósito principal de este servidor — necesita una billetera que devuelva el preimagen del pago:

  • Strike — STRIKE_API_KEY, desde https://dashboard.strike.me
  • NWC — NWC_CONNECTION_STRING, desde CoinOS / CLINK / Alby Hub
  • LND (tu propio nodo — siempre devuelve un preimagen) — LND_REST_HOST + LND_MACAROON_HEX
    • ¿Certificado de nodo autofirmado? Establece LND_TLS_CERT_PATH al tls.cert del nodo (fija TLS a ese certificado). LND_SKIP_TLS_VERIFY=true es la salida de emergencia, no la recomendación. Opcional: LND_FEE_LIMIT_SATS, LND_PAYMENT_TIMEOUT_SECONDS.

⚠️ OpenNode (OPENNODE_API_KEY) funciona para facturación / pagos directos únicamente — nunca devuelve un preimagen, por lo que no puede pagar desafíos L402. No la conviertas en tu única billetera si quieres L402 (el caso de uso principal).

Si hay varias configuradas, la prioridad es: LND > NWC > Strike > OpenNode, y las variables de entorno ganan sobre el archivo de configuración — setup_wallet se niega a escribir una cadena de conexión que una variable de entorno anularía, y te indica qué variable desactivar. Consulta Billeteras compatibles para la matriz de compatibilidad completa.

3. Demuestra que todo el ciclo funciona — test_l402_payment

Pregúntale a tu agente:

Run test_l402_payment

Esto paga un endpoint L402 público de 1 sat de principio a fin, demostrando que tu billetera está conectada, devuelve un preimagen y puede completar un pago L402 real. Es la respuesta de una línea a "¿mi billetera realmente funciona?" — y cuesta alrededor de 1 satoshi.

4. Luego diviértete — compra una camiseta

Una vez que el ciclo funciona, prueba la Tienda de Lightning Enable, una tienda web en vivo impulsada por L402. Pregúntale a Claude:

Buy me a Lightning Enable t-shirt from store.lightningenable.com

(Esta necesita una billetera con fondos y una dirección de envío, por lo que test_l402_payment — un sat, sin envío — es la primera prueba más rápida.)

Instalación manual en Claude Desktop (paquete MCPB)

Para una instalación de un clic sin editar archivos de configuración, toma el paquete MCPB empaquetado del directorio mcpb/ en lugar de editar JSON a mano: constrúyelo localmente con npx -y @anthropic-ai/mcpb pack mcpb lightning-enable-mcp.mcpb (o descarga el artefacto .mcpb de una ejecución de CI de mcpb.yml), luego haz doble clic en el archivo .mcpb resultante o arrástralo a Configuración → Extensiones de Claude Desktop — Claude Desktop solicita tus credenciales de billetera (Strike, NWC o LND) y la clave de API opcional de Lightning Enable a través de su propia interfaz de configuración en lugar de un archivo de configuración de texto. Consulta mcpb/README.md para ver qué contiene el paquete y mcpb/SUBMISSION.md para el estado de su envío al Directorio MCP de Anthropic.

Configuración de Claude Desktop

Agrega a tu claude_desktop_config.json:

.NET:

{
  "mcpServers": {
    "lightning-enable": {
      "command": "lightning-enable-mcp",
      "env": {
        "STRIKE_API_KEY": "your-strike-api-key"
      }
    }
  }
}

dotnet tool install -g LightningEnable.Mcp coloca el comando lightning-enable-mcp en tu PATH. Si Claude Desktop no puede encontrarlo, establece command a la ruta completa: "C:\\Users\\<you>\\.dotnet\\tools\\lightning-enable-mcp.exe" en Windows (JSON necesita las barras invertidas duplicadas), /Users/<you>/.dotnet/tools/lightning-enable-mcp en macOS, o /home/<you>/.dotnet/tools/lightning-enable-mcp en Linux. El archivo de configuración no expande variables de entorno como %USERPROFILE% o $HOME.

Python:

{
  "mcpServers": {
    "lightning-enable": {
      "command": "uvx",
      "args": ["lightning-enable-mcp"],
      "env": {
        "STRIKE_API_KEY": "your-strike-api-key"
      }
    }
  }
}

Ubicaciones del archivo de configuración:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Linux: ~/.config/claude/claude_desktop_config.json

Despliegue alojado

Un pago por encima de tu umbral de aprobación automática necesita la aprobación de un humano: el servidor genera un código de confirmación corto, lo envía a ti, y el agente solo puede continuar una vez que lo lees de vuelta. El código nunca aparece en un resultado de herramienta, por lo que un agente con inyección de prompt no puede aprobar su propio gasto leyendo el resultado.

Trata esto como una ayuda de confirmación del operador en un host local de confianza, no como un límite de aprobación independiente: si el host del agente puede leer la consola del servidor, el flujo de registros, el archivo de aprobación o el destino del webhook, también puede leer el código.

Eso solo funciona si el código llega a un humano. En tu portátil va a la consola del servidor (stderr) y lo lees allí. En un servidor alojado — un conector de claude.ai, un contenedor Docker, una flota — nadie está mirando stderr, y en un host compartido el agente podría leerlo él mismo. Así que eliges el canal de aprobación.

CanalQué sucede por encima del umbralÚsalo cuando
stderr (predeterminado)El código se imprime en la consola del servidor.Ejecutas el servidor localmente y observas su salida.
refuseEl pago se rechaza. No se genera ningún código.Lo ejecutas alojado y nadie puede recibir un código.
webhookLa confirmación pendiente se envía por POST a tu URL, firmada con HMAC. Tú transmites el código al agente.Tienes un canal de operaciones — chat, buscapersonas, una aplicación de aprobación.
fileLa misma línea JSON se agrega a un archivo que sigues.Recopilas aprobaciones de registros.

Sea cual sea el canal, se cumplen dos reglas: el código nunca se devuelve al agente, y un pago nunca se aprueba porque su notificación falló al enviarse — un fallo de entrega rechaza el pago y retira el código.

Los códigos son de 6 caracteres, de un solo uso, y están vinculados al monto, la herramienta y el destino exactos. Puede haber como máximo 3 códigos pendientes a la vez, y 5 intentos de código inválido consecutivos revocan todos los códigos pendientes. Un código vive 120 segundos por defecto; establece confirmation.ttlSeconds (o LIGHTNING_ENABLE_CONFIRMATION_TTL_SECONDS) para cambiarlo, limitado a 30-900. Para los canales asíncronos webhook y file, 300-600 es un valor práctico.

Elegir un canal

Precedencia: variable de entorno, luego archivo de configuración, luego automático.

{
  "confirmation": {
    "channel": "webhook",
    "webhookUrl": "https://ops.example.com/lightning-approvals",
    "webhookSecret": "<shared secret>",
    "filePath": "/var/log/lightning-enable/confirmations.jsonl",
    "ttlSeconds": 600
  }
}
Variable de entornoAnula
LIGHTNING_ENABLE_CONFIRMATION_CHANNELconfirmation.channel (stderr | refuse | webhook | file)
LIGHTNING_ENABLE_CONFIRMATION_WEBHOOK_URLconfirmation.webhookUrl
LIGHTNING_ENABLE_CONFIRMATION_WEBHOOK_SECRETconfirmation.webhookSecret
LIGHTNING_ENABLE_CONFIRMATION_FILEconfirmation.filePath (predeterminado ~/.lightning-enable/confirmations.jsonl)
LIGHTNING_ENABLE_HOSTEDEstablécelo a 1 para declarar un despliegue alojado (ver más abajo)

Sin canal configurado, el servidor decide:

stdinLIGHTNING_ENABLE_HOSTEDCanalAdvertencia de inicio
Una TTYcualquier cosastderrninguna
No es una TTYsin establecer o 0stderrsí — nadie puede estar leyéndolo
No es una TTY1refusesí — los pagos por encima del umbral se rechazan

Un servidor MCP stdio siempre tiene stdin canalizado, por lo que la advertencia es un aviso, no un diagnóstico: si un humano realmente está mirando la consola, ignórala. LIGHTNING_ENABLE_HOSTED=1 es la opción explícita que activa la postura segura — nada cambia tu comportamiento automáticamente.

Un nombre de canal que el servidor no puede analizar falla de forma segura a refuse y lo indica al inicio, por lo que un error tipográfico nunca restaura silenciosamente un código que nadie lee.

El payload del webhook

POST con Content-Type: application/json y una firma HMAC-SHA256 sobre {timestamp}.{body}, el mismo esquema que la API de Lightning Enable usa para firmar webhooks de comerciantes:

X-LightningEnable-Signature: t=1757203200,v1=9f86d081...
{
  "type": "payment.confirmation_required",
  "nonce": "AB12CD",
  "tool": "pay_invoice",
  "amountSats": 50000,
  "amountUsd": 12.34,
  "destination": "lnbc500u1pj9npjpp5abcdefghijklmnopqr...",
  "description": "lnbc500u1pj9npjpp5...",
  "summary": "pay_invoice — $12.34 (50,000 sats), invoice lnbc500u1pj9npjpp5...",
  "createdAt": "2026-09-07T12:00:00Z",
  "expiresAt": "2026-09-07T12:02:00Z",
  "expiresInSeconds": 120
}

El canal file escribe este objeto exacto, una línea JSON por confirmación, y fija el archivo a 0600 en POSIX — contiene códigos de aprobación en vivo.

Dos cosas que debes saber sobre el webhook:

  • La URL debe ser pública. Pasa por la misma protección SSRF en tiempo de conexión que las URLs proporcionadas por agentes, por lo que una dirección privada, de loopback o de metadatos se rechaza al inicio.
  • Las redirecciones nunca se siguen. Una respuesta 3xx es un fallo de entrega, por lo que una aprobación firmada solo llega a la URL que configuraste.

Los códigos expiran después de 120 segundos y están vinculados al monto, la herramienta y el destino exactos para los que fueron aprobados.

Billeteras compatibles

BilleteraConfiguraciónSoporte L402
StrikeClave de APISí
LNDREST + macaroonSí (garantizado)
NWC (CoinOS)Cadena de conexiónSí
NWC (CLINK)Cadena de conexiónSí
NWC (Alby Hub)Cadena de conexiónSí
OpenNodeClave de APINo (sin preimagen)

Límites de gasto

Los límites viven en ~/.lightning-enable/config.json y son de solo lectura en tiempo de ejecución — un agente puede ajustar sus propios topes pero nunca aumentarlos. Puedes configurarlos en USD, en satoshis, o en ambos.

{
  "limits": {
    "maxPerPayment": 500.00,
    "maxPerSession": 100.00,
    "maxPerPaymentSats": 5000,
    "maxPerSessionSats": 50000,
    "autoApproveSats": 100
  }
}
ClaveVariable de entornoSignificado
maxPerPayment—Máximo USD por pago
maxPerSession—Máximo USD por sesión
maxPerPaymentSatsLIGHTNING_ENABLE_MAX_PER_PAYMENT_SATSMáximo satoshis por pago
maxPerSessionSatsLIGHTNING_ENABLE_MAX_PER_SESSION_SATSMáximo satoshis por sesión
autoApproveSatsLIGHTNING_ENABLE_AUTO_APPROVE_SATSSatoshis que un pago puede gastar sin confirmación mientras el precio de BTC no esté disponible

Por qué establecer los límites en sats. Un límite en USD tiene que convertirse al precio actual de BTC, así que cuando todas las fuentes de precio están caídas, el pago no puede verificarse y se rechaza — correcto, pero detiene al agente. Un límite en satoshis no necesita conversión, así que un agente con presupuesto en sats sigue funcionando durante una interrupción del precio. Establece ambas claves maxPer…Sats para cubrir todos los vacíos.

Cuando ambas denominaciones están configuradas, el límite más estricto gana en cada verificación. budget(action="status") informa cuál es el que aplica (bindingDenomination), el límite efectivo en sats, si había un precio disponible y si el modo de interrupción está activo.

Qué sucede durante una interrupción del precio

Los techos en satoshis siguen limitando el gasto. Pero un techo dice "nunca más que esto" — no dice "esta cantidad está bien sin supervisión", y la escalera de niveles en USD que normalmente dice lo segundo no puede evaluarse sin un precio. Así que la aprobación falla de forma segura:

  • autoApproveSats configurado — los pagos iguales o inferiores se aprueban automáticamente; cualquier cosa superior sigue el flujo normal de confirmación (el agente le pide al humano el código impreso en la consola del servidor).
  • autoApproveSats no configurado — cada pago necesita confirmación hasta que una fuente de precio se recupere.

autoApproveSats es un nivel, no un techo: nunca puede ampliar maxPerPaymentSats o maxPerSessionSats, que se verifican primero. Se ignora por completo mientras haya un precio disponible — entonces los niveles en USD deciden como de costumbre.

Las rutas de pago automático (pago automático L402, send_onchain, agent_services action=settle) rechazan cualquier cosa que necesite confirmación en lugar de preguntar. Durante una interrupción, eso significa que solo proceden bajo autoApproveSats.

Herramientas

Inventario canónico: 17 herramientas — 14 gratuitas (listas para usar, solo con una wallet) + 3 que requieren LIGHTNING_ENABLE_API_KEY (una suscripción a Agentic Commerce). Esta tabla es la única fuente de verdad de la que se derivan todos los recuentos publicitados — está vinculada al código mediante las pruebas de guardia del inventario de herramientas en ambos puertos (el fallo rompe la CI).

Cinco de estas son herramientas de acción: pasa action (o source para receipts) para elegir la operación. Reemplazan a 16 herramientas de un solo propósito cuyos esquemas solían cargarse en el contexto del agente en cada sesión — consulta Perfiles de herramientas y nombres antiguos. Todos los nombres antiguos siguen funcionando.

Nota de disponibilidad de ASA. Contra la API alojada de Lightning Enable, las acciones agent_services discover, request, settle, publish, unpublish y reputation funcionan. attest se rechaza, porque la API alojada no tiene una ruta que acepte atestaciones, así que no puedes dejar una reseña a través de ella. Consulta Acuerdos de Servicio de Agentes.

HerramientaAccesoQué hace
setup_walletGratuitaInformar sobre la wallet configurada, o conectar una pegando una cadena de conexión NWC
pay_invoiceGratuitaPagar una factura Lightning BOLT11 directamente, obtener la preimagen
pay_l402_challengeGratuitaPagar un desafío L402 (factura + macarrón), obtener el token
access_l402_resourceGratuitaObtener una URL, pagando automáticamente cualquier desafío L402
test_l402_paymentGratuitaAutoprueba de la wallet contra un endpoint L402 público de 1 sat
discover_apiGratuitaBuscar en el registro de API L402 / obtener un manifiesto de API
create_invoiceGratuitaCrear una factura BOLT11 para recibir pagos
check_invoice_statusGratuitaVerificar si una factura creada fue pagada
get_balanceGratuitaSaldo de la wallet: sats, todas las monedas (Strike) e información de la wallet
budgetGratuitaaction: status (leer límites y gasto de sesión) o tighten (bajar los topes de ejecución)
receiptsGratuitasource: durable (el registro de recibos de solo añadidura) o session (los pagos de esta sesión)
wallet_opsGratuitaaction: price, exchange o send_onchain (Strike; send_onchain también LND). send_onchain toma address, amountSats, confirmationNonce y un intentId opcional (proporciona uno nuevo solo para pagar la misma dirección la misma cantidad otra vez; una repetición se informa como estado, nunca se reenvía)
verify_confirmation_codeGratuitaVerificar un código de confirmación de pago fuera de banda (solo verificación — nunca paga)
create_lightning_enable_accountGratuitaRegistro de autoservicio: paga ~100 sats, obtén una clave de API de comerciante
l402_producerAgentic Commerceaction: configure_receive, status, create_proxy, add_endpoint, publish, list_challenges, create, verify — todo el lado vendedor
agent_servicesAgentic Commerceaction: discover, request, settle, publish, unpublish, attest, reputation
renew_lightning_enable_subscriptionAgentic CommercePagar la factura L402 con precio del servidor que compra o extiende 30 días de Agentic Commerce para la clave de API configurada (maxSats por defecto es 50,000)

create_lightning_enable_account es gratuita y autoaprovisiona la clave de API que necesitan las 3 herramientas restringidas — un agente con una wallet paga una tarifa de activación de ~100 sats y las desbloquea al instante.

Cada herramienta lleva anotaciones MCP: un título legible por humanos y un readOnlyHint explícito, además de destructiveHint en cualquier cosa que pueda gastar la wallet. Las herramientas de acción están anotadas para su acción más amplia, así que budget no es de solo lectura (porque tighten escribe) y wallet_ops es destructiva (porque send_onchain lo es).

Recursos

El registro de recibos duradero también se expone como recursos MCP, para que un cliente pueda adjuntarlo o mostrarlo sin que el modelo gaste un turno en una llamada de herramienta:

URIContenido
lightning-enable://receiptsLos 200 recibos más recientes como JSONL (application/x-ndjson), del más antiguo al más nuevo
lightning-enable://receipts/{paymentHash}Cada recibo registrado para un hash de pago

Ambos leen a través de la misma ruta que la herramienta receipts, que redacta campos con forma de credencial en el límite de lectura — una preimagen nunca sale del proceso. El hash de pago es la referencia segura; la preimagen es la prueba de pago y no es un campo de recibo. Los recursos no se ven afectados por el perfil de herramientas: no cuestan bytes de esquema en el contexto del modelo.

Perfiles de herramientas y nombres antiguos

El esquema JSON de cada herramienta publicitada se carga en el contexto del agente al inicio de cada sesión, así que la superficie de herramientas es un costo de tokens en cada turno. Elige cuánto publicitar con LIGHTNING_ENABLE_TOOL_PROFILE:

PerfilHerramientasÚsalo cuando
lite6 — setup_wallet, pay_invoice, access_l402_resource, get_balance, budget, receiptsEl agente solo necesita obtener una wallet, gastar y mantenerse dentro de su presupuesto
standard (predeterminado)17 — la tabla anteriorTodo, con aproximadamente un 40% menos de esquema que la superficie anterior
full33 — standard más cada nombre anterior a la consolidaciónTienes prompts o scripts escritos con los nombres antiguos de herramientas
{
  "mcpServers": {
    "lightning-enable": {
      "command": "uvx",
      "args": ["lightning-enable-mcp"],
      "env": {
        "STRIKE_API_KEY": "your-strike-api-key",
        "LIGHTNING_ENABLE_TOOL_PROFILE": "lite"
      }
    }
  }
}

Los perfiles son solo de listado. Una herramienta que el perfil no publicita sigue siendo invocable por nombre, y cada nombre antiguo sigue despachando, bajo cualquier perfil. Reducir el perfil recorta los esquemas que se empujan al contexto del modelo; nunca elimina capacidad.

Nombre antiguo → nueva llamada

Los nombres antiguos se aceptan pero no se publicitan (excepto bajo full). Cada uno reenvía a la nueva herramienta y su resultado lleva un marcador deprecated que nombra el reemplazo. Eliminados en v3.0.0 — muévete a los nuevos nombres.

Herramienta antiguaNueva llamada
get_budget_statusbudget(action="status")
configure_budgetbudget(action="tighten")
get_receiptsreceipts(source="durable")
get_payment_historyreceipts(source="session")
get_btc_pricewallet_ops(action="price")
exchange_currencywallet_ops(action="exchange")
send_onchainwallet_ops(action="send_onchain")
create_l402_challengel402_producer(action="create")
verify_l402_paymentl402_producer(action="verify")
discover_agent_servicesagent_services(action="discover")
request_agent_serviceagent_services(action="request")
settle_agent_serviceagent_services(action="settle")
publish_agent_capabilityagent_services(action="publish")
unpublish_agent_capabilityagent_services(action="unpublish")
publish_agent_attestationagent_services(action="attest")
get_agent_reputationagent_services(action="reputation")
confirm_paymentverify_confirmation_code
check_wallet_balanceget_balance
get_all_balancesget_balance

Los últimos tres son anteriores a esta consolidación y permanecen ocultos en todos los perfiles, incluido full.

Documentación

Estructura del repositorio

lightning-enable-mcp/
├── dotnet/
│   ├── src/LightningEnable.Mcp/         # .NET MCP server
│   ├── tests/LightningEnable.Mcp.Tests/  # .NET tests
│   └── LightningEnable.Mcp.sln          # Solution file
├── python/
│   └── lightning-enable-mcp/             # Python MCP server
├── .github/workflows/publish-mcp.yml     # CI/CD
├── LICENSE                               # MIT
└── README.md                             # This file

Vender con L402 (la herramienta l402_producer)

Todo el lado vendedor detrás de una sola herramienta. Pasa action para elegir la operación. Cada acción necesita LIGHTNING_ENABLE_API_KEY (una suscripción a Agentic Commerce); ninguna acción puede gastar tu wallet.

Versión de API. create, verify, create_proxy, add_endpoint y publish funcionan contra cada compilación de la API de Lightning Enable. configure_receive necesita el carril de recepción NWC y list_challenges necesita la ruta de listado de desafíos, ambos incluidos con la versión de API a la que apunta esta versión. Ejecuta l402_producer(action="status") primero — se degrada con elegancia y te dice qué soporta el despliegue al que apuntas.

AcciónArgumentosQué hace
configure_receivenwc_connection_string (opcional)Apuntar los pagos L402 a una wallet que controles
statuslimitPlan, wallet receptora, lista de verificación de incorporación, acuñaciones recientes (solo lectura)
create_proxyname, target_base_url, description, default_price_satsPoner una API existente detrás de L402
add_endpointproxy_id, endpoint_id, path, http_method, summary, price_satsFijar el precio de una ruta
publishproxy_id, service_name, service_description, categoriesListar el servicio para que otros agentes puedan encontrarlo
list_challengeschallenge_status, limit, offsetLeer lo que acuñaste (solo lectura)
createresource, price_sats, descriptionAcuñar un desafío de factura + macarrón de una sola vez
verifymacaroon, preimageVerificar el token de un pagador antes de otorgar acceso

De una clave de API a un endpoint de pago

Sin panel de control, sin cliente REST, sin humano en el bucle. Cada paso es una llamada de herramienta:

  1. Obtén una clave de API. create_lightning_enable_account — paga una tarifa de activación de ~100 sats desde tu wallet y escribe la clave en ~/.lightning-enable/config.json. Reinicia el servidor para que las herramientas restringidas se desbloqueen. (Omite este paso si ya tienes una clave.)
  2. Dirige los pagos a tu propia wallet. l402_producer(action="configure_receive") — sin argumentos reutiliza la wallet NWC con la que este servidor ya paga; pasa nwc_connection_string para usar una diferente. La cadena nunca se muestra de vuelta, solo <set>.
  3. Verifica tu estado. l402_producer(action="status") — plan, wallet de recepción y la lista de verificación de incorporación, para que el agente pueda ver qué falta.
  4. Protege tu API con L402. l402_producer(action="create_proxy", name="Weather API", target_base_url="https://api.example.com", default_price_sats=25) — devuelve un proxy_id y la URL base pública. Cada solicitud bajo esa URL ahora responde 402 hasta que se pague.
  5. Pon precio a cada ruta. l402_producer(action="add_endpoint", proxy_id="weather-api", endpoint_id="forecast", path="/forecast", http_method="GET", price_sats=10) — repite por cada ruta.
  6. Publícala. l402_producer(action="publish", proxy_id="weather-api", service_description="Five-day forecasts for agents", categories=["weather"]) — devuelve las URLs de OpenAPI y del manifiesto. Otros agentes la encuentran a través de discover_api.
  7. Observa llegar el dinero. l402_producer(action="list_challenges", challenge_status="paid") — hash de pago, recurso, monto y estado. Nunca un macaroon, nunca un preimage.

Para un recurso que no estás proxyando — un archivo, un informe, una respuesta única — omite los pasos 4-6 y usa create / verify directamente.

Los pagos se liquidan en tu wallet. Lightning Enable no retiene los fondos.

Acuerdos de Servicio entre Agentes (la herramienta agent_services)

Comercio entre agentes en Nostr, detrás de una sola herramienta. Pasa action para elegir la operación. agent_services requiere LIGHTNING_ENABLE_API_KEY (una suscripción Agentic Commerce); action="settle" además gasta el saldo de tu wallet, sujeto a límites de presupuesto.

La API alojada de Lightning Enable rechaza attest, porque no tiene una ruta que acepte atestaciones, por lo que no puedes dejar una reseña a través de ella; discover, request, settle, publish, unpublish y reputation funcionan.

AcciónDescripción
discoverBusca capacidades de agentes por categoría, hashtag o palabra clave
publishPublica los servicios de tu agente en la red Nostr (kind 38400). Publica una vez: cada llamada crea un nuevo listado y proxy L402. Para cambiar un listado, unpublish y publish de nuevo, o edítalo en el panel de Lightning Enable
unpublishRetira un listado publicado: retira el proxy L402 y emite una eliminación NIP-09
requestSolicita un servicio a otro agente (kind 38401)
settlePaga un servicio de agente mediante liquidación Lightning L402
attestDeja una reseña/calificación para un agente después de completar el servicio (kind 38403)
reputationConsulta la puntuación de reputación de un agente a partir de atestaciones en el protocolo

Cómo Funciona el Comercio entre Agentes

  1. Descubre — agent_services(action="discover", category="translation") encuentra agentes que ofrecen traducción
  2. Solicita — agent_services(action="request", capability_event_id=..., budget_sats=100) envía una solicitud de servicio
  3. Liquida — agent_services(action="settle", l402_endpoint=...) paga vía Lightning y recibe el resultado
  4. Reseña — agent_services(action="attest", subject_pubkey=..., agreement_id=..., rating=5) construye reputación en el protocolo (la API alojada rechaza esta acción)

Para precios dinámicos, los proveedores usan l402_producer(action="create") para generar facturas al precio acordado. Los solicitantes pagan y los proveedores verifican con l402_producer(action="verify").

Los siete nombres antiguos de herramientas (discover_agent_services, settle_agent_service, …) aún funcionan — consulta Nombre antiguo → nueva llamada.

Proyectos Relacionados

Privacidad

Lightning Enable no retiene fondos — la wallet conectada o el proveedor de pagos (Strike, OpenNode, LND o una wallet NWC) lo hace. El servidor MCP se ejecuta localmente y se comunica con la wallet/proveedor que configures y, para el descubrimiento L402, con el registro de la API L402. Las credenciales de wallet que proporciones permanecen en tu máquina (o, para la API alojada, están cifradas en reposo). Consulta la Política de Privacidad completa para ver qué datos se recopilan, terceros involucrados, retención y contacto (privacy@lightningenable.com).

Soporte

Si algo está roto o no funciona, envía un correo a support@lightningenable.com — una persona real lo lee. Para preguntas generales, únete al Discord: https://discord.gg/rX7NxHY8vx. Informes de errores y solicitudes de funciones: abre un issue en este repositorio.

Licencia

MIT — consulta LICENSE.

Enlaces