Lightning Enable

Servidor MCP que permite que agentes de IA façam pagamentos Bitcoin Lightning, consultem saldos, acessem APIs L402 e gerenciem orçamentos de pagamento. Suporta carteiras Strike, OpenNode, NWC e LND.

Documentação

Parte do Lightning Enable — infraestrutura para comércio entre agentes via Lightning.

Servidor MCP Lightning Enable

Discord PyPI downloads NuGet downloads Docker pulls

Monetize sua própria API — teste gratuito de 30 dias

Agentes pagam sua API por requisição via Lightning — assinatura fixa de US$ 49/mês, e você fica com 100% de cada sat.

Ou cadastre-se sem sair do seu agente: chame a ferramenta create_lightning_enable_account.

Um servidor MCP (Model Context Protocol) de código aberto que permite que agentes de IA façam pagamentos pela Lightning Network e participem de comércio entre agentes. Ferramentas de carteira, fatura, L402, orçamento e descoberta de API funcionam prontamente com apenas uma carteira. Ferramentas de produtor (venda de acesso via L402) e ferramentas de Acordo de Serviço entre Agentes (ASA) (descoberta, solicitação, liquidação e atestado entre agentes via Nostr) são desbloqueadas com uma assinatura Agentic Commerce. Veja a lista completa de ferramentas.

Disponível em .NET e Python.

O Que Ele Faz

Dê ao seu agente de IA uma carteira Lightning e ele poderá:

  • Pagar faturas — Enviar Bitcoin via Lightning para qualquer fatura BOLT11
  • Acessar APIs L402 — Pagar automaticamente desafios L402 para acesso contínuo à API
  • Descobrir APIs — Pesquisar o registro de APIs L402 para encontrar APIs pagas por palavra-chave ou categoria, ou buscar o manifesto de uma API específica para detalhes completos de endpoints e preços
  • Rastrear gastos — Limites de orçamento, um registro de recibos durável e verificações de saldo
  • Criar faturas — Gerar faturas para receber pagamentos
  • Executar operações de carteira — Preço do BTC, câmbio de moedas e envios on-chain (Strike; on-chain também LND)
  • Auto-cadastrar uma conta Lightning Enable — create_lightning_enable_account paga uma taxa de ativação de ~100 sats via L402 e retorna uma chave de API de comerciante: o formulário de cadastro gratuito→pago que é o protocolo, desbloqueando as ferramentas de produtor + ASA sem navegador ou página de checkout.
  • Vender serviços (Produtor L402) — Configurar a conta de vendedor, colocar uma API atrás de L402, precificar suas rotas, listá-la publicamente, gerar desafios de pagamento e verificar tokens de pagador — tudo em uma única ferramenta, para que um agente possa ir de uma chave de API a um endpoint pago sem tocar em REST
  • Comércio entre agentes (ASA) — Descobrir, solicitar, liquidar e revisar serviços entre agentes no Nostr

Início 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. Primeira execução — setup_wallet

Nada mais funciona sem uma carteira, então comece por aí. Pergunte ao seu agente:

Run setup_wallet

Sem argumentos, ele informa qual carteira está configurada e de onde vieram as credenciais — o provedor e a origem, nunca a credencial em si. Se não houver carteira, ele devolve os passos de configuração.

O caminho mais curto é NWC. No seu aplicativo de carteira (Alby Hub, CoinOS ou qualquer carteira NIP-47), crie uma conexão Nostr Wallet Connect, copie a string nostr+walletconnect:// e entregue-a ao agente:

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

setup_wallet valida a string, conecta-se à carteira para provar que ela responde e, em seguida, grava-a em ~/.lightning-enable/config.json com as permissões do arquivo restritas ao seu usuário. Ele informa os métodos declarados da carteira e o saldo. Reinicie o servidor depois para que ele carregue a nova carteira.

Ou defina uma variável de ambiente (no config do Claude Desktop abaixo, por exemplo). L402 — o objetivo principal deste servidor — precisa de uma carteira que retorne o preimage do pagamento:

  • Strike — STRIKE_API_KEY, de https://dashboard.strike.me
  • NWC — NWC_CONNECTION_STRING, de CoinOS / CLINK / Alby Hub
  • LND (seu próprio nó — sempre retorna um preimage) — LND_REST_HOST + LND_MACAROON_HEX
    • Certificado de nó autoassinado? Defina LND_TLS_CERT_PATH para o tls.cert do nó (fixa TLS nesse certificado). LND_SKIP_TLS_VERIFY=true é a saída de emergência, não a recomendação. Opcional: LND_FEE_LIMIT_SATS, LND_PAYMENT_TIMEOUT_SECONDS.

⚠️ OpenNode (OPENNODE_API_KEY) funciona para faturamento / pagamentos diretos apenas — nunca retorna um preimage, portanto não pode pagar desafios L402. Não a torne sua única carteira se você quiser L402 (o caso de uso principal).

Se várias estiverem definidas, a prioridade é: LND > NWC > Strike > OpenNode, e variáveis de ambiente vencem o arquivo de configuração — setup_wallet se recusa a gravar uma string de conexão que uma variável de ambiente sobrescreveria e informa qual variável desdefinir. Veja Carteiras Suportadas para a matriz de compatibilidade completa.

3. Prove que o ciclo completo funciona — test_l402_payment

Pergunte ao seu agente:

Run test_l402_payment

Isso paga um endpoint L402 público de 1 sat de ponta a ponta, provando que sua carteira está conectada, retorna um preimage e pode concluir um pagamento L402 real. É a resposta de uma linha para "minha carteira está realmente funcionando?" — e custa cerca de 1 satoshi.

4. Depois, divirta-se — compre uma camiseta

Quando o ciclo funcionar, experimente a Loja Lightning Enable, uma loja web ao vivo alimentada por L402. Pergunte ao Claude:

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

(Este precisa de uma carteira com saldo e um endereço de entrega, por isso test_l402_payment — um sat, sem entrega — é a primeira prova mais rápida.)

Instalação manual no Claude Desktop (pacote MCPB)

Para uma instalação com um clique, sem editar arquivos de configuração, pegue o pacote MCPB empacotado do diretório mcpb/ em vez de editar JSON manualmente: compile-o localmente com npx -y @anthropic-ai/mcpb pack mcpb lightning-enable-mcp.mcpb (ou baixe o artefato .mcpb de uma execução de CI do mcpb.yml), depois clique duas vezes no arquivo .mcpb resultante ou arraste-o para Configurações → Extensões do Claude Desktop — o Claude Desktop solicita suas credenciais de carteira (Strike, NWC ou LND) e a chave opcional da API Lightning Enable pela própria interface de configurações, em vez de um arquivo de configuração de texto. Veja mcpb/README.md para o que está no pacote e mcpb/SUBMISSION.md para o status da submissão ao Diretório MCP da Anthropic.

Config do Claude Desktop

Adicione ao seu 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 o comando lightning-enable-mcp no seu PATH. Se o Claude Desktop não conseguir encontrá-lo, defina command para o caminho completo: "C:\\Users\\<you>\\.dotnet\\tools\\lightning-enable-mcp.exe" no Windows (o JSON precisa de barras invertidas duplicadas), /Users/<you>/.dotnet/tools/lightning-enable-mcp no macOS ou /home/<you>/.dotnet/tools/lightning-enable-mcp no Linux. O arquivo de configuração não expande variáveis de ambiente como %USERPROFILE% ou $HOME.

Python:

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

Locais do arquivo de configuração:

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

Implantação hospedada

Um pagamento acima do seu limite de aprovação automática precisa da aprovação de um humano: o servidor gera um código de confirmação curto, envia-o para você, e o agente só pode prosseguir quando você o ler de volta. O código nunca aparece em um resultado de ferramenta, então um agente com injeção de prompt não pode aprovar seus próprios gastos lendo o resultado.

Trate isso como um auxílio de confirmação de operador em um host local confiável, não como uma fronteira de aprovação independente: se o host do agente puder ler o console do servidor, o fluxo de logs, o arquivo de aprovação ou o destino do webhook, ele também poderá ler o código.

Isso só funciona se o código chegar a um humano. No seu laptop, ele vai para o console do servidor (stderr) e você o lê lá. Em um servidor hospedado — um conector do claude.ai, um contêiner Docker, uma frota — ninguém está observando o stderr, e em um host compartilhado o agente pode lê-lo sozinho. Então você escolhe o canal de aprovação.

CanalO que acontece acima do limiteUse quando
stderr (padrão)O código é impresso no console do servidor.Você executa o servidor localmente e observa sua saída.
refuseO pagamento é recusado. Nenhum código é gerado.Você o executa hospedado e ninguém pode receber um código.
webhookA confirmação pendente é enviada via POST para sua URL, assinada com HMAC. Você repassa o código ao agente.Você tem um canal de operações — chat, pager, um aplicativo de aprovação.
fileA mesma linha JSON é anexada a um arquivo que você monitora.Você coleta aprovações de logs.

Qualquer que seja o canal, duas regras valem: o código nunca é retornado ao agente, e um pagamento nunca é aprovado porque sua notificação falhou ao ser enviada — uma falha de entrega recusa o pagamento e retira o código.

Os códigos têm 6 caracteres, uso único e são vinculados ao valor, à ferramenta e ao destino exatos. No máximo 3 códigos podem estar pendentes ao mesmo tempo, e 5 tentativas inválidas de código em sequência revogam todos os códigos pendentes. Um código dura 120 segundos por padrão; defina confirmation.ttlSeconds (ou LIGHTNING_ENABLE_CONFIRMATION_TTL_SECONDS) para alterá-lo, limitado a 30-900. Para os canais assíncronos webhook e file, 300-600 é um valor prático.

Escolhendo um canal

Precedência: variável de ambiente, depois arquivo de configuração, depois automático.

{
  "confirmation": {
    "channel": "webhook",
    "webhookUrl": "https://ops.example.com/lightning-approvals",
    "webhookSecret": "<shared secret>",
    "filePath": "/var/log/lightning-enable/confirmations.jsonl",
    "ttlSeconds": 600
  }
}
Variável de ambienteSobrescreve
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 (padrão ~/.lightning-enable/confirmations.jsonl)
LIGHTNING_ENABLE_HOSTEDDefina como 1 para declarar uma implantação hospedada (veja abaixo)

Sem canal definido, o servidor decide:

stdinLIGHTNING_ENABLE_HOSTEDCanalAviso na inicialização
Um TTYqualquer coisastderrnenhum
Não é um TTYnão definido ou 0stderrsim — ninguém pode estar lendo
Não é um TTY1refusesim — pagamentos acima do limite são recusados

Um servidor MCP stdio sempre tem stdin canalizado, então o aviso é um empurrão, não um diagnóstico: se um humano realmente está observando o console, ignore-o. LIGHTNING_ENABLE_HOSTED=1 é a aceitação explícita que ativa a postura segura — nada muda seu comportamento automaticamente.

Um nome de canal que o servidor não consegue interpretar falha de forma segura para refuse e informa isso na inicialização, então um erro de digitação nunca restaura silenciosamente um código que ninguém lê.

O payload do webhook

POST com Content-Type: application/json e uma assinatura HMAC-SHA256 sobre {timestamp}.{body}, o mesmo esquema que a API Lightning Enable usa para assinar 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
}

O canal file grava exatamente este objeto, uma linha JSON por confirmação, e fixa o arquivo em 0600 no POSIX — ele contém códigos de aprovação ativos.

Duas coisas para saber sobre o webhook:

  • A URL deve ser pública. Ela passa pelo mesmo guarda de SSRF no momento da conexão que as URLs fornecidas pelo agente, então um endereço privado, de loopback ou de metadados é recusado na inicialização.
  • Redirecionamentos nunca são seguidos. Uma resposta 3xx é uma falha de entrega, então uma aprovação assinada só chega à URL que você configurou.

Os códigos expiram após 120 segundos e são vinculados ao valor, à ferramenta e ao destino exatos para os quais foram aprovados.

Carteiras Suportadas

CarteiraConfiguraçãoSuporte L402
StrikeChave de APISim
LNDREST + macaroonSim (garantido)
NWC (CoinOS)String de conexãoSim
NWC (CLINK)String de conexãoSim
NWC (Alby Hub)String de conexãoSim
OpenNodeChave de APINão (sem preimage)

Limites de gastos

Os limites ficam em ~/.lightning-enable/config.json e são somente leitura em tempo de execução — um agente pode apertar seus próprios limites, mas nunca aumentá-los. Você pode defini-los em USD, em satoshis ou em ambos.

{
  "limits": {
    "maxPerPayment": 500.00,
    "maxPerSession": 100.00,
    "maxPerPaymentSats": 5000,
    "maxPerSessionSats": 50000,
    "autoApproveSats": 100
  }
}
ChaveVariável de ambienteSignificado
maxPerPayment—Máximo em USD por pagamento
maxPerSession—Máximo em USD por sessão
maxPerPaymentSatsLIGHTNING_ENABLE_MAX_PER_PAYMENT_SATSMáximo em satoshis por pagamento
maxPerSessionSatsLIGHTNING_ENABLE_MAX_PER_SESSION_SATSMáximo em satoshis por sessão
autoApproveSatsLIGHTNING_ENABLE_AUTO_APPROVE_SATSSatoshis que um pagamento pode gastar sem confirmação enquanto o preço do BTC estiver indisponível

Por que definir os limites em sats. Um limite em USD precisa ser convertido ao preço atual do BTC, então quando todas as fontes de preço estiverem fora do ar, o pagamento não pode ser verificado e é recusado — correto, mas isso interrompe o agente. Um limite em satoshis não precisa de conversão, então um agente com orçamento em sats continua funcionando durante uma queda de preço. Defina ambas as chaves maxPer…Sats para fechar todas as lacunas.

Quando ambas as denominações estão definidas, o limite mais restritivo vence em cada verificação. budget(action="status") informa qual está em vigor (bindingDenomination), o teto efetivo em sats, se um preço estava disponível e se o modo de indisponibilidade está ativo.

O que acontece durante uma indisponibilidade de preço

Os tetos em satoshis ainda limitam o gasto. Mas um teto diz "nunca mais do que isso" — ele não diz "isso é aceitável sem supervisão", e a escada de níveis em USD que normalmente diz a segunda coisa não pode ser avaliada sem um preço. Então a aprovação falha de forma segura:

  • autoApproveSats definido — pagamentos iguais ou abaixo dele são aprovados automaticamente; qualquer valor acima segue o fluxo normal de confirmação (o agente pergunta ao humano pelo código exibido no console do servidor).
  • autoApproveSats não definido — todo pagamento precisa de confirmação até que uma fonte de preço se recupere.

autoApproveSats é um nível, não um teto: ele nunca pode ampliar maxPerPaymentSats ou maxPerSessionSats, que são verificados primeiro. Ele é totalmente ignorado enquanto um preço estiver disponível — então os níveis em USD decidem como de costume.

Os caminhos de pagamento automático (auto-pagamento L402, send_onchain, agent_services action=settle) recusam qualquer coisa que precise de confirmação em vez de solicitar. Durante uma indisponibilidade, isso significa que eles só prosseguem sob autoApproveSats.

Ferramentas

Inventário canônico: 17 ferramentas — 14 gratuitas (prontas para uso, basta uma carteira) + 3 que exigem LIGHTNING_ENABLE_API_KEY (uma assinatura Agentic Commerce). Esta tabela é a fonte única da verdade da qual todo número divulgado deriva — ela está vinculada ao código pelos testes de guarda do inventário de ferramentas em ambas as portas (falhas de drift quebram o CI).

Cinco delas são ferramentas de ação: passe action (ou source para receipts) para escolher a operação. Elas substituem 16 ferramentas de propósito único cujos esquemas costumavam ser carregados no contexto do agente a cada sessão — veja Perfis de ferramentas e nomes antigos de ferramentas. Todo nome antigo ainda funciona.

Nota de disponibilidade ASA. Contra a API hospedada do Lightning Enable, as ações agent_services discover, request, settle, publish, unpublish e reputation funcionam. attest é recusada, porque a API hospedada não tem rota que aceite atestações, então você não pode deixar uma avaliação por meio dela. Veja Acordos de Serviço de Agente.

FerramentaAcessoO que faz
setup_walletGratuitaRelata a carteira configurada, ou conecta uma colando uma string de conexão NWC
pay_invoiceGratuitaPaga uma fatura Lightning BOLT11 diretamente, obtém a pré-imagem
pay_l402_challengeGratuitaPaga um desafio L402 (fatura + macaroon), obtém o token
access_l402_resourceGratuitaBusca uma URL, pagando automaticamente qualquer desafio L402
test_l402_paymentGratuitaAutotesta a carteira contra um endpoint L402 público de 1 sat
discover_apiGratuitaPesquisa o registro de APIs L402 / busca um manifesto de API
create_invoiceGratuitaCria uma fatura BOLT11 para receber pagamento
check_invoice_statusGratuitaVerifica se uma fatura criada foi paga
get_balanceGratuitaSaldo da carteira: sats, todas as moedas (Strike) e informações da carteira
budgetGratuitaaction: status (ler limites e gasto da sessão) ou tighten (reduzir os tetos em tempo de execução)
receiptsGratuitasource: durable (o log de recibos somente anexação) ou session (os pagamentos desta sessão)
wallet_opsGratuitaaction: price, exchange ou send_onchain (Strike; send_onchain também LND). send_onchain aceita address, amountSats, confirmationNonce e um intentId opcional (forneça um novo apenas para pagar o mesmo endereço o mesmo valor novamente; uma repetição é relatada como status, nunca reenviada)
verify_confirmation_codeGratuitaVerifica um código de confirmação de pagamento fora da banda (somente verificação — nunca paga)
create_lightning_enable_accountGratuitaCadastro de autoatendimento: pague ~100 sats, obtenha uma chave de API de comerciante
l402_producerAgentic Commerceaction: configure_receive, status, create_proxy, add_endpoint, publish, list_challenges, create, verify — todo o lado do vendedor
agent_servicesAgentic Commerceaction: discover, request, settle, publish, unpublish, attest, reputation
renew_lightning_enable_subscriptionAgentic CommercePaga a fatura L402 com preço do servidor que compra ou estende 30 dias de Agentic Commerce para a chave de API configurada (maxSats tem como padrão 50.000)

create_lightning_enable_account é gratuita e autoprovisiona a chave de API que as 3 ferramentas restritas precisam — um agente com carteira paga uma taxa de ativação de ~100 sats e as desbloqueia na hora.

Toda ferramenta carrega anotações MCP: um título legível por humanos e um readOnlyHint explícito, além de destructiveHint em qualquer coisa que possa gastar a carteira. Ferramentas de ação são anotadas para sua ação mais ampla, então budget não é somente leitura (porque tighten escreve) e wallet_ops é destrutiva (porque send_onchain é).

Recursos

O log de recibos durável também é exposto como recursos MCP, para que um cliente possa anexá-lo ou exibi-lo sem que o modelo gaste uma rodada em uma chamada de ferramenta:

URIConteúdo
lightning-enable://receiptsOs 200 recibos mais recentes como JSONL (application/x-ndjson), do mais antigo para o mais novo
lightning-enable://receipts/{paymentHash}Todo recibo registrado para um hash de pagamento

Ambos leem pelo mesmo caminho da ferramenta receipts, que redige campos com formato de credencial no limite de leitura — uma pré-imagem nunca sai do processo. O hash de pagamento é a referência segura; a pré-imagem é a prova de pagamento e não é um campo de recibo. Os recursos não são afetados pelo perfil de ferramentas: eles não custam bytes de esquema no contexto do modelo.

Perfis de ferramentas e nomes antigos de ferramentas

O esquema JSON de toda ferramenta divulgada é carregado no contexto do agente no início de cada sessão, então a superfície de ferramentas é um custo de token a cada rodada. Escolha quanto divulgar com LIGHTNING_ENABLE_TOOL_PROFILE:

PerfilFerramentasUse quando
lite6 — setup_wallet, pay_invoice, access_l402_resource, get_balance, budget, receiptsO agente só precisa obter uma carteira, gastar e permanecer dentro do orçamento
standard (padrão)17 — a tabela acimaTudo, com cerca de 40% menos esquema do que a superfície antiga
full33 — standard mais todo nome pré-consolidaçãoVocê tem prompts ou scripts escritos com os nomes antigos de ferramentas
{
  "mcpServers": {
    "lightning-enable": {
      "command": "uvx",
      "args": ["lightning-enable-mcp"],
      "env": {
        "STRIKE_API_KEY": "your-strike-api-key",
        "LIGHTNING_ENABLE_TOOL_PROFILE": "lite"
      }
    }
  }
}

Perfis são somente listagem. Uma ferramenta que o perfil não divulga ainda pode ser chamada pelo nome, e todo nome antigo ainda despacha, sob todo perfil. Estreitar o perfil reduz os esquemas enviados ao contexto do modelo; nunca remove capacidade.

Nome antigo → nova chamada

Nomes antigos são aceitos, mas não divulgados (exceto sob full). Cada um encaminha para a nova ferramenta e seu resultado carrega um marcador deprecated nomeando a substituição. Removidos na v3.0.0 — migre para os novos nomes.

Ferramenta antigaNova chamada
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

Os três últimos são anteriores a esta consolidação e permanecem ocultos em todo perfil, full incluído.

Documentação

Estrutura do repositório

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

Vendendo com L402 (a ferramenta l402_producer)

Todo o lado do vendedor em uma única ferramenta. Passe action para escolher a operação. Toda ação precisa de LIGHTNING_ENABLE_API_KEY (uma assinatura Agentic Commerce); nenhuma ação pode gastar sua carteira.

Versão da API. create, verify, create_proxy, add_endpoint e publish funcionam contra toda compilação da API Lightning Enable. configure_receive precisa do canal de recebimento NWC e list_challenges precisa da rota de listagem de desafios, ambos incluídos no lançamento da API que esta versão tem como alvo. Execute l402_producer(action="status") primeiro — ele degrada graciosamente e informa o que a implantação para a qual você está apontado suporta.

AçãoArgumentosO que faz
configure_receivenwc_connection_string (opcional)Aponta pagamentos L402 para uma carteira que você controla
statuslimitPlano, carteira de recebimento, checklist de integração, mints recentes (somente leitura)
create_proxyname, target_base_url, description, default_price_satsColoca uma API existente atrás do L402
add_endpointproxy_id, endpoint_id, path, http_method, summary, price_satsPrecifica uma rota
publishproxy_id, service_name, service_description, categoriesLista o serviço para que outros agentes possam encontrá-lo
list_challengeschallenge_status, limit, offsetLê de volta o que você cunhou (somente leitura)
createresource, price_sats, descriptionCunha um desafio de fatura + macaroon de uso único
verifymacaroon, preimageVerifica o token de um pagador antes de conceder acesso

De uma chave de API a um endpoint pago

Sem painel, sem cliente REST, sem humano no fluxo. Cada etapa é uma chamada de ferramenta:

  1. Obtenha uma chave de API. create_lightning_enable_account — paga uma taxa de ativação de ~100 sats da sua carteira e grava a chave em ~/.lightning-enable/config.json. Reinicie o servidor para que as ferramentas restritas sejam desbloqueadas. (Pule se você já tiver uma chave.)
  2. Aponte os pagamentos para sua própria carteira. l402_producer(action="configure_receive") — sem argumento, ela reutiliza a carteira NWC que este servidor já usa para pagamentos; passe nwc_connection_string para usar uma diferente. A string nunca é exibida de volta, apenas <set>.
  3. Verifique sua situação. l402_producer(action="status") — plano, carteira de recebimento e a lista de verificação de integração, para que o agente veja o que ainda falta.
  4. Coloque sua API atrás do L402. l402_producer(action="create_proxy", name="Weather API", target_base_url="https://api.example.com", default_price_sats=25) — retorna um proxy_id e a URL base pública. Toda solicitação sob ela agora responde 402 até que seja paga.
  5. Defina o preço de cada rota. l402_producer(action="add_endpoint", proxy_id="weather-api", endpoint_id="forecast", path="/forecast", http_method="GET", price_sats=10) — repita para cada rota.
  6. Publique. l402_producer(action="publish", proxy_id="weather-api", service_description="Five-day forecasts for agents", categories=["weather"]) — retorna as URLs do OpenAPI e do manifesto. Outros agentes a encontram por meio de discover_api.
  7. Acompanhe o dinheiro chegar. l402_producer(action="list_challenges", challenge_status="paid") — hash de pagamento, recurso, valor e status. Nunca um macaroon, nunca uma preimage.

Para um recurso que você não está fazendo proxy — um arquivo, um relatório, uma resposta pontual — pule as etapas 4-6 e use create / verify diretamente.

Os pagamentos são liquidados na sua carteira. A Lightning Enable não retém os fundos.

Acordos de Serviço entre Agentes (a ferramenta agent_services)

Comércio entre agentes no Nostr, por trás de uma única ferramenta. Passe action para escolher a operação. agent_services exige LIGHTNING_ENABLE_API_KEY (uma assinatura do Agentic Commerce); action="settle" adicionalmente gasta o saldo da sua carteira, sujeito a limites de orçamento.

A API hospedada da Lightning Enable recusa attest, porque ela não tem uma rota que aceite atestados, então você não pode deixar uma avaliação por meio dela; discover, request, settle, publish, unpublish e reputation funcionam.

AçãoDescrição
discoverBusca capacidades de agentes por categoria, hashtag ou palavra-chave
publishPublica os serviços do seu agente na rede Nostr (kind 38400). Publique uma vez: cada chamada cria uma nova listagem e um proxy L402. Para alterar uma listagem, unpublish e publish novamente, ou edite-a no painel da Lightning Enable
unpublishRemove uma listagem publicada: encerra o proxy L402 e emite uma remoção NIP-09
requestSolicita um serviço de outro agente (kind 38401)
settlePaga por um serviço de agente via liquidação Lightning L402
attestDeixa uma avaliação/classificação para um agente após a conclusão do serviço (kind 38403)
reputationVerifica a pontuação de reputação de um agente a partir de atestados no protocolo

Como Funciona o Comércio entre Agentes

  1. Descobrir — agent_services(action="discover", category="translation") encontra agentes que oferecem tradução
  2. Solicitar — agent_services(action="request", capability_event_id=..., budget_sats=100) envia uma solicitação de serviço
  3. Liquidar — agent_services(action="settle", l402_endpoint=...) paga via Lightning e recebe o resultado
  4. Avaliar — agent_services(action="attest", subject_pubkey=..., agreement_id=..., rating=5) constrói reputação no protocolo (a API hospedada recusa esta ação)

Para preços dinâmicos, os provedores usam l402_producer(action="create") para gerar faturas no preço acordado. Os solicitantes pagam e os provedores verificam com l402_producer(action="verify").

Os sete nomes antigos de ferramentas (discover_agent_services, settle_agent_service, …) ainda funcionam — veja Nome antigo → nova chamada.

Projetos Relacionados

Privacidade

A Lightning Enable não retém fundos — a carteira conectada ou o provedor de pagamento (Strike, OpenNode, LND ou uma carteira NWC) é quem retém. O servidor MCP roda localmente e conversa com a carteira/provedor que você configura e, para descoberta L402, com o registro da API L402. As credenciais da carteira que você fornece permanecem na sua máquina (ou, para a API hospedada, são criptografadas em repouso). Consulte a Política de Privacidade completa para saber quais dados são coletados, terceiros envolvidos, retenção e contato (privacy@lightningenable.com).

Suporte

Se algo estiver quebrado ou não funcionando, envie um e-mail para support@lightningenable.com — uma pessoa real lê. Para perguntas gerais, entre no Discord: https://discord.gg/rX7NxHY8vx. Relatórios de bugs e solicitações de recursos: abra uma issue neste repositório.

Licença

MIT — veja LICENSE.

Links