LiveAuth MCP Server
LiveAuth MCP Server
Аутентификация, поминутная тарификация и подписанные квитанции для ИИ-агентов и MCP-инструментов: нативно для Bitcoin, на базе Lightning и совместимо с L402.
Этот MCP-сервер позволяет любому ИИ-агенту аутентифицироваться в вашем API с помощью proof-of-work (бесплатно, без аккаунта) или микроплатежей Lightning Network (саты), а затем учитывать и монетизировать последующие вызовы инструментов с оплатой за вызов, идемпотентными событиями дохода и HMAC-подписанными квитанциями, которые аудиторы могут проверять офлайн.
Используйте его, когда хотите:
Ограничить доступ к API или MCP-инструменту реальной стоимостью вычислений или реальными сатами (анти-спам по дизайну, а не через CAPTCHA).
Взимать плату с ИИ-агентов за каждый вызов без регистрации аккаунта.
Выдавать защищённый от подделки аудиторский след (подписанные
mcp-call-receipt-v1) для каждого платного вызова инструмента.Предлагать доступ к пакетам L402 на базе Lightning для предоплаченных MCP-сессий.
Попробуйте за 5 секунд — без аккаунта и API-ключа:
npx @liveauth-labs/mcp-serverБез конфигурации сервер использует анонимный демо-проект LiveAuth и реальный поток PoW. Добавляйте LIVEAUTH_API_KEY только когда нужна политика, цены или атрибуция конкретного проекта.
Доступные инструменты (автообнаружение Glama / MCP)
Инструмент | Назначение |
| Начать сессию. Возвращает PoW-задачу, счёт Lightning или подсказку для L402-пакета. |
| Отправить решённую PoW-задачу, оплаченный счёт Lightning или L402-макарун → получить JWT. |
| Учесть использование после вызова. С |
| Обменять refresh-токен на новый JWT — повторная аутентификация не требуется. |
| Проверить статус сессии/платежа (подтверждение Lightning, срок действия). |
| Получить BOLT11-счёт для сессии (совместимо с lnget). |
| Запросить оставшийся бюджет, использованные вызовы и окна ограничения скорости. |
Полные схемы параметров и ответов приведены в Справочнике инструментов ниже.
Related MCP server: Agent Receipts
Быстрый старт за 5 минут
Вариант 1 — PoW без учётных данных (без аккаунта, ключа и кошелька)
npx @liveauth-labs/mcp-serverВ MCP-клиенте вызовите liveauth_mcp_start, затем liveauth_mcp_confirm, передав только возвращённый quoteId. Пакет повторно использует свой локальный решатель PoW, а API LiveAuth проверяет подписанную задачу перед выдачей краткосрочного JWT для сессии.
Вариант 2 — Производственный режим
Получите API-ключ на liveauth.app.
Добавьте в
claude_desktop_config.jsonдля Claude Desktop:
{
"mcpServers": {
"liveauth": {
"command": "npx",
"args": ["-y", "@liveauth-labs/mcp-server"],
"env": {
"LIVEAUTH_API_BASE": "https://api.liveauth.app",
"LIVEAUTH_API_KEY": "la_pk_your_public_key"
}
}
}
}Перезапустите Claude. Готово.
Вариант 3 — Программный (CLI / SDK)
export LIVEAUTH_API_KEY=la_pk_xxx
npx @liveauth-labs/mcp-serverПакет также является TypeScript SDK — см. Использование SDK ниже. Бинарный файл CLI — liveauth-mcp.
Почему LiveAuth?
Для поставщиков API / разработчиков инструментов:
Остановите ботов на уровне протокола. PoW и саты Lightning невоспроизводимы, не поддаются фишингу и не требуют учётных записей пользователей.
Взимайте плату за вызов в сатах. Мы подписываем квитанцию, которую вы можете показать аудиторам, клиентам или бухгалтеру.
Оберните любой MCP-инструмент одной строкой (
createMcpGate) и получите доход по каждому инструменту, минимальную/максимальную цену и идемпотентные повторы.
Для ИИ-агентов / разработчиков агентов:
Доступ без разрешений к платным API — решите PoW или оплатите сатами, получите JWT. Без регистрации, email или OAuth-танцев.
Используйте PoW, счета Lightning или L402-макаруны для доступа агентов.
Проекты могут рассчитываться через собственный Lightning-узел при настройке; в противном случае платежи проходят через узел, настроенный в LiveAuthCore.
Математика, которая имеет значение: если ваш инструмент скрейпит бот, взимание 1 сата за вызов достаточно, чтобы сделать скрейпер нерентабельным. Мы называем это экономикой стоимости атаки, и это причина нашего существования.
Установка
npm install -g @liveauth-labs/mcp-serverИли используйте напрямую через npx:
npx @liveauth-labs/mcp-serverGoose
LiveAuth для Goose использует тот же стандартный stdio MCP-сервер, что и любой другой клиент — нет обёртки Goose, демона или дублирующей среды аутентификации.
Или выведите официальную глубокую ссылку и текущие запасные варианты:
npx @liveauth-labs/mcp-server setup gooseДля разовой сессии Goose CLI:
goose session --with-extension "liveauth:npx -y @liveauth-labs/mcp-server"Ручная настройка stdio для Goose, когда глубокая ссылка недоступна:
extensions:
liveauth:
type: stdio
name: LiveAuth
enabled: true
cmd: npx
args: ["-y", "@liveauth-labs/mcp-server"]
env_keys: []
envs: {}
timeout: 300Не редактируйте существующую конфигурацию Goose деструктивно. Предпочитайте глубокую ссылку или goose configure; если вы позже добавите конфигурацию проекта, вводите её через настройки секретов расширения Goose, а не через общий открытый текст YAML.
Быстрый тест Goose
Спросите Goose:
Используйте LiveAuth для запуска стандартного потока аутентификации. Подтвердите возвращённую котировку, затем покажите моё использование LiveAuth.
Начальный поток использует PoW-задачу анонимного демо-проекта и не требует кошелька. Публичный ключ проекта необязателен:
Переменная | Когда её устанавливать |
| Политика, цены и атрибуция конкретного проекта. |
| Самостоятельно размещённый API LiveAuth вместо |
| Явно выбрать более старую локально симулированную демонстрацию Lightning. |
Когда запрашивается платный поток, результаты инструмента сохраняют существующие поля счёта и также включают переносимые структурированные данные:
{
"lightning": {
"invoice": "lnbc...",
"lightningUri": "lightning:lnbc...",
"amountSats": 21,
"expiresAt": "2030-03-17T17:46:40.000Z",
"status": "pending"
}
}Клиенты с поддержкой MCP Apps могут отображать включённый QR-код, действие Open Wallet, срок действия и живое состояние оплачено/ожидает/истекло. Другие клиенты получают JSON и содержимое QR-изображения как обычные результаты MCP.
Устранение неполадок Goose
Если ссылка не открывается, выполните
npx @liveauth-labs/mcp-server setup gooseи используйте его односессионный или ручной запасной вариант.Если
npxнедоступен, установите актуальную версию Node.js (Node 18 или новее).Если предоставленный ключ проекта отклонён, удалите его, чтобы проверить анонимный поток PoW; недействительные и отозванные ключи намеренно не переключаются на демо.
Если счёт Lightning истёк, вызовите
liveauth_mcp_startснова, чтобы получить новую котировку.Храните refresh-токены и любые непубличные учётные данные вне журналов и открытых конфигураций.
LiveAuth позволяет агентам получать авторизацию во время выполнения, вместо того чтобы требовать предварительного предоставления постоянных учётных данных для каждого инструмента.
Использование SDK
Пакет также можно импортировать как TypeScript/JavaScript SDK. Импорт пакета не запускает stdio MCP-сервер; CLI находится в бинарном файле liveauth-mcp.
Клиентский помощник аутентификации
import { createMcpClient } from '@liveauth-labs/mcp-server';
const liveauth = createMcpClient({
publicKey: 'la_pk_xxx',
baseUrl: 'https://api.liveauth.app',
onInvoice(invoice) {
// Render invoice.bolt11 as a QR code for a paid Lightning test.
console.log(invoice.bolt11);
},
});
const session = await liveauth.start();
const token = await liveauth.confirm(session);
console.log(token.jwt);Клиент хранит подтверждённые JWT, обновляет их до истечения срока, если возвращён refresh-токен, и предоставляет текущий токен через liveauth.token. Вызовите liveauth.destroy(), когда ваше приложение завершает работу, чтобы очистить состояние токена и таймеры обновления.
Чтобы потребовать реальный платный счёт:
const session = await liveauth.start({ forceLightning: true });
console.log(session.invoice?.bolt11);
// Poll this after the invoice is paid.
const token = await liveauth.confirmLightning(session);Серверный помощник шлюза
import { createMcpGate } from '@liveauth-labs/mcp-server';
const gate = createMcpGate({
publicKey: 'la_pk_xxx',
baseUrl: 'https://api.liveauth.app',
});
const result = await gate.invoke(
jwtFromYourTransport,
{ message: 'hello' },
async (input, context) => ({
content: [{ type: 'text', text: input.message }],
charge: context.liveAuth.charge,
}),
{}
);gate.invoke(...) проверяет JWT, списывает настроенную стоимость в сатах или значение по умолчанию из бэкенд-проекта и передаёт context.liveAuth в ваш обработчик. Старое имя gate.gateTool(...) по-прежнему поддерживается.
Атрибуция платных инструментов
Если ваш MCP-сервер имеет зарегистрированный идентификатор инструмента LiveAuth, передайте toolId при создании шлюза. Тогда платежи направляются на:
POST /api/mcp/tools/{toolId}/chargeвместо устаревшей общей конечной точки:
POST /api/mcp/chargeВы также можете передать зарегистрированный слаг/имя инструмента как toolName. В этом режиме платежи направляются на общую конечную точку с идентификацией инструмента в теле:
POST /api/mcp/chargeПлатежи за инструменты сохраняют те же проверки бюджета сессии, но также записывают неизменяемое событие дохода с валовыми сатами, комиссией платформы LiveAuth, чистыми сатами разработчика, именем метода инструмента, платящим проектом/сессией/токеном, метаданными и ключом идемпотентности. Когда costSats опущен, LiveAuthCore использует зарегистрированную цену инструмента по умолчанию; без toolId или toolName он использует глобальную цену MCP проекта.
Зарегистрированные инструменты также могут иметь URL вебхука для платных вызовов. При каждом успешном новом платном вызове LiveAuthCore ставит в очередь вебхук liveauth.mcp.tool.paid_call с идентификацией инструмента, валовыми/платформенными/чистыми сатами, идентификатором события дохода, метаданными и подписанной квитанцией. Если URL вебхука инструмента пуст, LiveAuthCore использует URL вебхука проекта; идемпотентные повторы не создают дубликатов.
import { createMcpGate } from '@liveauth-labs/mcp-server';
const gate = createMcpGate({
publicKey: process.env.LIVEAUTH_PUBLIC_KEY!,
baseUrl: process.env.LIVEAUTH_API_URL ?? 'https://api.liveauth.app',
toolName: 'paid-research-tool',
});
const result = await gate.invoke(
jwtFromYourTransport,
{ url: 'https://example.com' },
async (input, context) => {
const page = await fetch(input.url).then(r => r.text());
return {
text: page,
revenueEventId: context.liveAuth.charge.revenueEventId,
receipt: context.liveAuth.charge.receipt,
netSats: context.liveAuth.charge.netSats,
};
},
{ requestId: 'req_123' },
{
toolMethodName: 'web_fetch',
idempotencyKey: 'req_123',
agentId: 'agent_abc',
metadata: {
urlHost: new URL('https://example.com').hostname,
},
}
);Когда заданы toolId или toolName, GateToolOptions поддерживает:
Опция | Назначение |
| Необязательные саты для списания за этот вызов. Опустите, чтобы использовать цену зарегистрированного инструмента или глобальную цену проекта. |
| Необязательное переопределение слага/имени инструмента для вызова при использовании общей конечной точки. |
| Метод внутри инструмента, например |
| Ключ, безопасный для повторов. Повторное использование для того же инструмента возвращает исходное событие дохода и подписанную квитанцию вместо двойного списания. |
| Необязательный идентификатор вызывающего/агента для отчётности. |
| Небольшой JSON-объект для контекста аудита. Не храните здесь приватный вывод инструмента. |
Ответы на платежи за инструменты включают обычные счётчики бюджета плюс учёт дохода:
{
"status": "ok",
"callsUsed": 3,
"satsUsed": 15,
"grossSats": 5,
"platformFeeSats": 1,
"netSats": 4,
"feeBasisPoints": 500,
"revenueEventId": "event-guid",
"toolId": "tool-guid",
"toolName": "Paid Research Tool",
"toolSlug": "paid-research-tool",
"receipt": {
"version": "mcp-call-receipt-v1",
"payload": "base64url-canonical-json",
"signature": "base64url-hmac-sha256",
"signatureAlgorithm": "HMAC-SHA256",
"keyId": "liveauth-mcp-receipt-v1",
"body": {
"receiptId": "mcp_receipt_eventguid",
"revenueEventId": "event-guid",
"mcpToolId": "tool-guid",
"toolName": "Paid Research Tool",
"toolSlug": "paid-research-tool",
"toolMethodName": "web_fetch",
"grossSats": 5,
"platformFeeSats": 1,
"netSats": 4,
"idempotencyKey": "req_123"
}
}
}Квитанция — это подписанный аудиторский артефакт для каждого вызова, возвращаемый LiveAuthCore для платных платежей за инструменты. Храните её вместе с результатом инструмента, когда вам нужно доказательство оплаты или последующая сверка.
Если toolId или toolName не настроены, SDK продолжает использовать /api/mcp/charge для обратно совместимого учёта использования.
Конфигурация
Claude Desktop
Добавьте в ваш claude_desktop_config.json:
{
"mcpServers": {
"liveauth": {
"command": "npx",
"args": ["-y", "@liveauth-labs/mcp-server"],
"env": {
"LIVEAUTH_API_BASE": "https://api.liveauth.app",
"LIVEAUTH_API_KEY": "la_pk_your_public_key"
}
}
}
}Режим без учётных данных: Если вы опустите LIVEAUTH_API_KEY, сервер вызывает обычные конечные точки MCP без заголовка проекта. LiveAuth привязывает настроенный анонимный демо-проект, возвращает подписанную PoW-задачу и сохраняет обычные границы проверки, JWT, ограничения скорости и учёта. LIVEAUTH_DEMO=true остаётся явным выбором более старого локально симулированного предпросмотра Lightning.
Другие переменные окружения:
Переменная | По умолчанию | Назначение |
| (не задано) | Публичный ключ вашего проекта LiveAuth ( |
|
| Переопределение для самостоятельно размещённого LiveAuth. |
|
| Явно использовать устаревшую локально симулированную демонстрацию Lightning. |
Другие MCP-клиенты
Сервер говорит на stdio (JSON-RPC 2.0). Запустите его с помощью:
liveauth-mcpОн также работает с любым MCP-совместимым клиентом: Cursor, VS Code, ChatGPT, Windsurf, Continue, Cline.
Справочник инструментов
Полные схемы для каждого MCP-инструмента. Каждый инструмент совместим с JSON-RPC 2.0 и протестирован в src/index.test.ts и src/cli.test.ts.
liveauth_mcp_start
Запускает новую сессию LiveAuth MCP. По умолчанию возвращает PoW-задачу или Lightning-инвойс, если forceLightning=true.
Параметры:
forceLightning(boolean, optional): Если true, запросить Lightning-инвойс вместо PoW-задачиforceL402(boolean, optional): Если true, запустить сессию, которая должна быть подтверждена макаруном L402-бандла
Возвращает (PoW):
{
"quoteId": "uuid-of-session",
"powChallenge": {
"projectId": "guid",
"projectPublicKey": "la_pk_...",
"challengeHex": "a1b2c3...",
"targetHex": "0000ffff...",
"difficultyBits": 18,
"expiresAtUnix": 1234567890,
"signature": "sig..."
},
"invoice": null
}Возвращает (Lightning):
{
"quoteId": "uuid-of-session",
"powChallenge": null,
"invoice": {
"bolt11": "lnbc...",
"amountSats": 50,
"expiresAtUnix": 1234567890,
"paymentHash": "abc123..."
},
"lightning": {
"invoice": "lnbc...",
"lightningUri": "lightning:lnbc...",
"amountSats": 50,
"expiresAt": "2009-02-13T23:31:30.000Z",
"expiresAtUnix": 1234567890,
"status": "pending"
}
}Возвращает (L402 bundle):
{
"quoteId": "uuid-of-session",
"powChallenge": null,
"invoice": null,
"authHint": "l402_bundle"
}liveauth_mcp_confirm
Отправьте решённую задачу доказательства работы, позвольте пакету решить его кэшированную задачу, опросите Lightning-платёж или предъявите L402-макарун, чтобы получить JWT-токен аутентификации.
Параметры:
quoteId(string): quoteId из ответа startchallengeHex(string, optional, только PoW): hex-значение задачи из ответа startnonce(number, optional, только PoW): nonce, решающий PoW-задачуhashHex(string, optional, только PoW): результирующий хэш (sha256 отprojectPublicKey:challengeHex:nonce)expiresAtUnix(number, optional, только PoW): временная метка истечения из задачиdifficultyBits(number, optional, только PoW): биты сложности из задачиsignature(string, optional, только PoW): подпись из задачиmacaroon(string, только L402): макарун бандла, возвращённый из процесса получения L402-бандла
Если задача пришла с этого MCP-сервера, вызов confirm с одним quoteId повторно использует существующий PoW-решатель пакета. Явные поля решения по-прежнему поддерживаются для совместимости.
Возвращает:
{
"jwt": "eyJhbGc...",
"expiresIn": 600,
"remainingBudgetSats": 10000,
"refreshToken": "abc123def456..."
}Примечание: Храните refreshToken в безопасности. Он возвращается в данных MCP-инструмента, но никогда не записывается в stderr или журналы приложения. Используйте liveauth_mcp_refresh, чтобы получить новый JWT без повторной аутентификации.
liveauth_mcp_charge
Учитывайте использование API после выполнения аутентифицированного вызова. Встроенный MCP-сервер вызывает общий эндпоинт /api/mcp/charge. Указание toolName позволяет LiveAuth найти зарегистрированный инструмент, применить его настроенную цену и создать событие дохода от платного инструмента; опускание toolName сохраняет обратно совместимый общий учёт.
Параметры:
callCostSats(number, optional): Стоимость вызова API в сатах. Опустите, чтобы использовать ценообразование бэкенда.toolName(string, optional): Зарегистрированный slug/имя MCP-инструмента для ценообразования и атрибуции по каждому инструменту.
Возвращает:
{
"status": "ok",
"callsUsed": 5,
"satsUsed": 15
}Если бюджет превышен:
{
"status": "deny",
"callsUsed": 100,
"satsUsed": 1000,
"reason": "budget_exceeded"
}liveauth_mcp_status
Проверьте статус MCP-сессии. Используйте для опроса подтверждения Lightning-платежа.
Параметры:
quoteId(string): quoteId из ответа start
Возвращает:
{
"quoteId": "uuid-of-session",
"status": "pending",
"paymentStatus": "pending",
"expiresAt": "2026-02-17T12:00:00Z"
}Когда paymentStatus равен "paid", сессия подтверждена. Вызовите liveauth_mcp_confirm ещё раз, чтобы получить JWT.
liveauth_mcp_lnurl
Получите Lightning-инвойс для сессии (совместимо с lnget). Используйте это для получения BOLT11-инвойса для оплаты любым Lightning-кошельком.
Параметры:
quoteId(string): quoteId из ответа start
Возвращает:
{
"pr": "lnbc2100n1...",
"routes": []
}Примечание: Это совместимо с lnget и другими инструментами Lightning-платежей. Используйте это для опроса инвойса, когда liveauth_mcp_confirm возвращает "payment pending".
liveauth_mcp_usage
Запросите текущее использование и оставшийся бюджет без списания. Используйте это для проверки статуса перед выполнением API-вызовов.
Параметры: (не требуется)
Возвращает:
{
"status": "active",
"callsUsed": 5,
"satsUsed": 15,
"maxSatsPerDay": 10000,
"remainingBudgetSats": 9985,
"maxCallsPerMinute": 60,
"expiresAt": "2026-02-17T12:00:00Z",
"dayWindowStart": "2026-02-17T00:00:00Z"
}liveauth_mcp_refresh
Обновите JWT-токен без повторной аутентификации. Используйте refreshToken, возвращённый из confirm, чтобы получить новый JWT, когда текущий истечёт.
Параметры:
refreshToken(string): refreshToken из ответа confirm
Возвращает:
{
"jwt": "eyJhbGc...",
"expiresIn": 600,
"remainingBudgetSats": 9985
}Примечание: Сохраните refreshToken в безопасности. Он понадобится вам для продления сессии без решения новой PoW-задачи или совершения ещё одного Lightning-платежа.
Пример использования
Аутентификация PoW
Вызовите
liveauth_mcp_start, чтобы получить PoW-задачу и quoteIdВызовите
liveauth_mcp_confirmс quoteId; MCP-сервер решает свою кэшированную задачу с помощью существующего решателя пакетаПродвинутые клиенты могут по-прежнему отправлять явное решение (
hash = sha256(projectPublicKey:challengeHex:nonce), гдеhash < targetHex)Используйте JWT в заголовке
Authorization: Bearer <token>для API-запросовПосле каждого обычного API-вызова вызывайте
liveauth_mcp_chargeсо стоимостью вызова или опустите её, чтобы использовать глобальную MCP-цену проектаДля монетизированных MCP-инструментов оборачивайте обработчики с помощью
createMcpGate({ toolId })илиcreateMcpGate({ toolName }), чтобы каждый вызов создавал событие дохода и подписанную квитанцию
Аутентификация Lightning
Вызовите
liveauth_mcp_startсforceLightning: true, чтобы получить Lightning-инвойсИспользуйте
liveauth_mcp_lnurl(или опрашивайтеliveauth_mcp_status), чтобы получить BOLT11-инвойсОплатите инвойс с помощью вашего Lightning-узла/кошелька
Опрашивайте
liveauth_mcp_statusс quoteId, пока paymentStatus не станет "paid"Вызовите
liveauth_mcp_confirmтолько с quoteId, чтобы получить JWTИспользуйте JWT либо с общим учётом
liveauth_mcp_charge, либо с атрибуцией платных инструментов SDK
Процесс аутентификации
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ AI Agent │────▶│ MCP Server │────▶│ LiveAuth API │
│ │ │ │ │ │
│ 1. Start │ │ /api/mcp/start │ │ Returns PoW │
│ 2. Solve PoW │ │ │ │ challenge │
│ 3. Confirm │ │ /api/mcp/confirm│ │ Returns JWT │
│ 4. API calls │ │ │ │ │
│ 5. Charge │ │ /api/mcp/charge │ │ Meter usage │
└─────────────────┘ └─────────────────┘ └─────────────────┘Серверы платных инструментов используют тот же JWT, но списывают средства через атрибутированный эндпоинт:
Agent calls MCP tool
→ Tool server calls POST /api/mcp/tools/{toolId}/charge
or POST /api/mcp/charge with toolName
→ LiveAuth validates JWT and budget
→ LiveAuth records gross / platform fee / net revenue and returns a signed receipt
→ Tool handler runs and returns the resultПроцесс L402-бандла
LiveAuthCore поддерживает L402-бандлы на основе Lightning для предоплаченного доступа к MCP. Купите бандл, получите макарун после оплаты, затем запустите MCP-сессию в режиме L402 и подтвердите её этим макаруном.
# 1. Create a bundle invoice.
curl -X POST https://api.liveauth.app/api/public/l402/bundle/invoice \
-H "Content-Type: application/json" \
-d '{"publicKey":"la_pk_xxx","tier":"starter","agentId":"agent_abc"}'
# 2. After the invoice is paid, claim a macaroon.
curl -X POST https://api.liveauth.app/api/public/l402/bundle/claim \
-H "Content-Type: application/json" \
-d '{"publicKey":"la_pk_xxx","paymentHash":"payment_hash_from_step_1"}'
# 3. Start and confirm an MCP session with the macaroon.
curl -X POST https://api.liveauth.app/api/mcp/start \
-H "X-LW-Public: la_pk_xxx" \
-H "Content-Type: application/json" \
-d '{"forceL402":true}'
curl -X POST https://api.liveauth.app/api/mcp/confirm \
-H "X-LW-Public: la_pk_xxx" \
-H "Content-Type: application/json" \
-d '{"quoteId":"quote_id_from_step_3","macaroon":"macaroon_from_step_2"}'Разработка
# Install dependencies
npm install
# Build
npm run build
# Run locally
node dist/cli.jsРесурсы
Лицензия
MIT
Категории: authentication · payments · lightning · l402 · bitcoin · pay-per-call · metering · agent-tools · anti-abuse · mcp-server · typescript
Available Tools
7 toolsliveauth_mcp_chargeA
Meter API usage after making an authenticated call. Call this with the cost in sats for each API request made using the JWT.
| Name | Required | Description | Default |
|---|---|---|---|
| toolName | No | Optional registered MCP tool slug or name for per-tool pricing and revenue attribution. | |
| callCostSats | No | Optional cost of the API call in sats. Omit to use LiveAuth project or tool pricing. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral traits on its own. It mentions the action 'Meter API usage' but does not explain side effects like deducting sats, idempotency (e.g., calling twice), prerequisites beyond JWT authentication, or error behavior. As a monetary/charge operation, the lack of these details is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—two short sentences that front-load the core action ('Meter API usage') and then provide the invocation details. There is no redundant or filler content; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with two optional parameters, the description gives a decent overview of purpose and usage. However, with no annotations or output schema, it omits important context such as the expected response, idempotency, and failure modes. It is minimally sufficient but not fully complete for a financial metering operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides full documentation for both parameters (100% coverage). The description adds minor context (e.g., 'cost in sats for each API request') but does not meaningfully enrich the understanding of toolName or callCostSats beyond their schema descriptions. The high schema coverage justifies the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Meter API usage after making an authenticated call.' It identifies a specific verb (meter/charge) and resource (API usage), and the context (after an authenticated call) distinguishes it from sibling tools like liveauth_mcp_usage, which likely queries usage rather than recording it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs when to call the tool: 'Call this with the cost in sats for each API request made using the JWT.' This clearly conveys per-request usage after authentication. However, it doesn't explicitly mention alternatives or conditions when not to use it, preventing a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
liveauth_mcp_confirmA
Submit the solved proof-of-work challenge (or poll for Lightning payment) to receive a JWT. For Lightning, call with just quoteId to check/poll payment status.
| Name | Required | Description | Default |
|---|---|---|---|
| nonce | No | The nonce that solves the PoW challenge (PoW only) | |
| hashHex | No | The resulting hash hex (PoW only) | |
| quoteId | Yes | The quoteId from the start response | |
| macaroon | No | L402 bundle macaroon (L402 only) | |
| signature | No | Signature from the challenge (PoW only) | |
| challengeHex | No | The challenge hex from the start response (PoW only) | |
| expiresAtUnix | No | Expiration timestamp from the challenge (PoW only) | |
| difficultyBits | No | Difficulty bits from the challenge (PoW only) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses the dual-mode behavior (PoW vs Lightning), that polling is possible, and the outcome (JWT). However, it does not disclose failure modes, side effects like challenge invalidation, or retry semantics, leaving important behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the main action, and the second provides a specific usage tip. No waste or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 8 parameters and two distinct flows, with no annotations and no output schema. The description covers the core purpose and outcome but lacks details on error conditions, success/failure responses, and safety of repeated calls. It is adequate but not comprehensive for the complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds mode-specific guidance: 'call with just quoteId' for Lightning, implying PoW uses the other fields. This clarifies how to select parameters by mode, going beyond the schema's individual descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action: submitting a solved proof-of-work challenge or polling for Lightning payment to receive a JWT. This clearly distinguishes it from siblings like start (which likely initiates) and status (which likely checks overall status).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit guidance: for Lightning, call with just quoteId to check/poll payment status, and PoW requires the challenge-solution fields. It does not explicitly name alternatives or when-not-to-use, but the sibling names and context make it inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
liveauth_mcp_lnurlB
Get the Lightning invoice for a session (lnget-compatible). Use this to retrieve the BOLT11 invoice for payment.
| Name | Required | Description | Default |
|---|---|---|---|
| quoteId | Yes | The quoteId from the start response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states that the tool retrieves an invoice, but does not clarify side effects, return format, expiration, or whether it is a read-only operation. The mention of 'lnget-compatible' is vague and adds little transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, but the two sentences are somewhat redundant: 'Get the Lightning invoice' is repeated as 'retrieve the BOLT11 invoice.' It could be condensed into a single sentence without losing information, so it is not maximally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has only one parameter with good schema coverage, but no output schema and no annotations. The description does not explain what the response looks like, potential errors, or any behavioral context like payment flow or invoice validity. Given the lack of structured metadata, this is insufficient for an agent to fully understand the tool's role.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage by describing quoteId as 'The quoteId from the start response.' The description adds no additional meaning about the parameter, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get the Lightning invoice for a session' and also mentions 'retrieve the BOLT11 invoice for payment.' This provides a specific verb and resource, but it does not explicitly differentiate from sibling tools like start, status, or charge, so it does not reach a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says 'Use this to retrieve the BOLT11 invoice for payment,' which implies the tool is for obtaining an invoice after starting a session. However, it does not explicitly state when to use it versus alternatives, nor does it mention any prerequisites or exclusions. This falls under implied usage rather than clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
liveauth_mcp_refreshA
Refresh the JWT token without re-authenticating. Use the refreshToken returned from confirm to get a new JWT.
| Name | Required | Description | Default |
|---|---|---|---|
| refreshToken | Yes | The refreshToken from the confirm response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses a key behavior (no re-authentication required) and the outcome (new JWT). However, it does not mention token rotation, single-use semantics, error handling, or response format, leaving gaps for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, no filler. The main purpose is front-loaded, and the parameter guidance is integrated naturally. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description is nearly complete: it explains the purpose, the input source, and the expected result (new JWT). It lacks only minor details like potential errors or whether the refresh token is reusable, but these are not critical for basic invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description for refreshToken already provides full coverage (100%), and the tool description essentially restates the same source. Since the schema does the heavy lifting, the description adds minimal extra meaning, hence the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb+resource ('refresh the JWT token') and explicitly states what it achieves ('get a new JWT'). It also distinguishes itself from siblings by referencing the confirm response, making its role in the auth flow clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states when to use this tool: after confirm, using the refreshToken from confirm. It implies it is the alternative to re-authenticating, providing a clear context. It does not explicitly list exclusions or alternatives, but the sibling set makes the intended use obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
liveauth_mcp_startA
Start a new LiveAuth MCP session. Returns a PoW challenge (default), Lightning invoice, or L402 bundle auth hint.
| Name | Required | Description | Default |
|---|---|---|---|
| forceL402 | No | If true, request an L402 bundle auth session | |
| forceLightning | No | If true, request Lightning invoice instead of PoW challenge |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully disclose behavioral traits. It does state the return types and the default PoW challenge, but it omits potential side effects, such as whether starting a new session invalidates existing ones or requires prior authentication. This leaves important behavioral context undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that directly states the action and the possible outcomes. It contains no redundant or filler phrases, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with two optional parameters and no output schema, the description covers the core return types and default behavior. While it could provide more detail about the response structure or next steps, the information given is sufficient to understand the tool's basic operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with descriptive definitions for both boolean parameters. The description adds no additional parameter-level meaning, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Start' and resource 'LiveAuth MCP session', making the purpose unambiguous. It distinguishes itself from sibling tools by clearly indicating this is the initialization action, and it enumerates the distinct return types (PoW challenge, Lightning invoice, L402 bundle).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is the entry point for starting a session, but it does not explicitly state when to use it versus sibling tools like liveauth_mcp_status or liveauth_mcp_charge. No prerequisites or alternative usage scenarios are provided, so the guidance remains at an implied level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
liveauth_mcp_statusA
Check the status of an MCP session. Use to poll for Lightning payment confirmation. Also returns the invoice via lnurl compatibility.
| Name | Required | Description | Default |
|---|---|---|---|
| quoteId | Yes | The quoteId from the start response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It reveals that the tool returns an invoice via lnurl compatibility and implies a read-only polling nature, but it doesn't explicitly state read-only behavior, side effects, or what constitutes a 'status.' This is adequate but lacks rich safety or state-change disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose, and includes a specific usage example. Every sentence adds value with no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (single parameter, no output schema), the description covers the essential context: what it does, when to use it, and a hint about the returned invoice. However, it doesn't describe the full status response structure or possible statuses, which might be useful for a polling tool, but overall it's sufficient for the low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with the only parameter 'quoteId' described as 'The quoteId from the start response.' The description adds no additional parameter-level meaning, but the schema already covers it fully, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Check the status of an MCP session' with a specific use case ('poll for Lightning payment confirmation'). It also distinguishes itself from siblings by focusing on status and polling, and the added detail about lnurl compatibility further clarifies the tool's unique role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use to poll for Lightning payment confirmation,' which provides clear guidance for when to invoke this tool. It doesn't mention alternatives or exclusions, but the polling context is sufficient for a status tool in a payment flow, making it clear this is the follow-up to start/confirm actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
liveauth_mcp_usageA
Query current usage and remaining budget for the MCP session. Use this to check how many sats and calls have been used without making a charge.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It does disclose a key behavioral trait: 'without making a charge' indicates the call is non-destructive and free. However, it doesn't clarify whether the usage query itself counts as a call or affect the budget, nor does it explain any side effects or limit conditions. This is a minor gap for a read-only usage tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the core purpose, and contains no filler. Every word contributes to understanding the tool's function and when to use it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no parameters and no output schema, the description is complete. It clearly states what it queries (usage and remaining budget), the metrics (sats and calls), and the key safety aspect (no charge). No additional context is necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description adds no parameter details, but none are needed. It correctly focuses on the tool's purpose and usage rather than param syntax.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Query' and identifies a clear resource: 'current usage and remaining budget for the MCP session.' It also distinguishes itself from siblings like 'status' and 'charge' by focusing on budget/calls usage, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'Use this to check how many sats and calls have been used without making a charge.' This provides clear context and implies it's a non-charging alternative to 'liveauth_mcp_charge'. It doesn't explicitly name alternatives or exclusions, but the guidance is practical and sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
7 tool updates
v1.0.8- First observed
liveauth_mcp_charge - First observed
liveauth_mcp_confirm - First observed
liveauth_mcp_lnurl - First observed
liveauth_mcp_refresh - First observed
liveauth_mcp_start - First observed
liveauth_mcp_status - First observed
liveauth_mcp_usage
TDQS
Each tool maps to a distinct auth lifecycle step: start initiates, lnurl fetches invoice, confirm resolves auth, refresh renews token, charge/usage handle metering, and status reports state. Slight overlap exists between status and confirm when polling payment, but descriptions clarify their primary roles.
All tools share the consistent liveauth_mcp_ prefix and snake_case format. Most use verbs (start, confirm, refresh, charge), but status, usage, and lnurl are noun-based, creating minor deviations from a strict verb pattern.
With 7 tools, the set is well-scoped for the server's purpose. Each tool covers a specific function without redundancy, fitting comfortably in the ideal 3-15 tool range.
The toolset provides full lifecycle coverage: starting a session, retrieving invoices, confirming authentication, refreshing tokens, and tracking/metering usage. No significant operational gaps are apparent for the stated authentication and payment domain.
Maintenance
Related MCP Connectors
Pay-per-action access to APIs and MCP tools over Lightning L402 and Base USDC x402.
Pay-per-call APIs and MCP services for agents, no accounts or keys, with verifiable receipts.
External counterparty-risk checks and signed receipts for autonomous agents and machine payments.
Bitcoin-anchored, tamper-evident audit-permanence layer for AI agents, FRE 902(13)/(14)-shaped.
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP server that enables AI agents to make autonomous Bitcoin Lightning Network payments using the L402 protocol. Agents can pay for API access, purchase resources, and complete transactions without human intervention — invoice comes in, sats go out, done.179MIT
- AlicenseAqualityCmaintenanceCryptographic accountability for AI agents. Ed25519-signed receipts for every MCP tool call. Constraints, chains, AI judgment, invoicing, and local dashboard included.24131MIT
- AlicenseAqualityAmaintenanceL402 + x402 client MCP. AI agents discover, pay for, and consume any payment-gated API autonomously. Supports Lightning (NWC), Cashu ecash, stablecoins, and human-in-the-loop payments.11284MIT
- AlicenseAqualityCmaintenanceMCP server that gates API calls to AI agents using proof-of-work (free) or Lightning payment (3 sats), providing challenge, verify, and status tools for per-call authentication without accounts.3761MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/dulzuradev/liveauth-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server