402ai-mcp

402ai-mcp

MCP server for 402ai.net, a Lightning-paid API proxy, providing AI model tools with automatic catalog synchronization and NWC auto-topup.

Category
Visit Server

README

402ai-mcp

MCP (Model Context Protocol) server for 402ai.net - a Lightning-paid API proxy. Provides catalog-aware tools with compact/full profiles, bearer-first authentication, and dynamic tool refresh notifications.

Please update me when there are feature changes.

Features

  • Two Tool Profiles: Compact (optimized for agents) or Full (comprehensive endpoint coverage)
  • Catalog Synchronization: Auto-fetches and tracks API catalog changes
  • Bearer Token Auth: First-class support for prepaid balance tokens
  • Dynamic Tool Updates: Notifies clients when catalog changes via MCP notifications
  • Smart Consolidation: Compact profile merges overlapping endpoints to reduce tool clutter
  • TypeScript Native: Full TypeScript implementation with type safety
  • Comprehensive Testing: Unit tests for catalog validation, deduplication, HTTP handling, and multipart uploads

Quick Start

Installation

npm install
npm run build
npm test

Run via stdio

ALBOM_BEARER_TOKEN=<your_token> npm start

NPM Package

npm install 402ai-mcp

Configuration

Configure via environment variables:

Variable Default Description
ALBOM_BASE_URL https://402ai.net API base URL
ALBOM_BEARER_TOKEN (none) Prepaid balance token (strongly recommended)
ALBOM_NWC_URI (none) Client-side NWC connection URI used to auto-pay topup invoices locally
ALBOM_NWC_THRESHOLD_SATS 1000 Trigger auto-topup when API responses report balance below this threshold
ALBOM_NWC_TOPUP_USD 2.00 USD amount to add for each automatic topup
ALBOM_NWC_MAX_DAILY 10.00 Max USD the MCP client will auto-top up over a rolling 24h window
ALBOM_TOOL_PROFILE compact Tool profile: compact or full
ALBOM_INCLUDE_MODERATION false (compact), true (full) Include moderation tools
ALBOM_INCLUDE_EMBEDDINGS false (compact), true (full) Include embedding tools
ALBOM_INCLUDE_VIDEO true Include video generation tools
ALBOM_ALLOW_RAW_TOOL false Expose albom_raw_call tool (full profile only)
ALBOM_CATALOG_TTL_MS 300000 (5 min) Catalog cache TTL
ALBOM_HTTP_TIMEOUT_MS 90000 (90 sec) HTTP request timeout
ALBOM_MAX_RETRIES 2 Max retry attempts for failed requests
ALBOM_MAX_UPLOAD_BYTES 26214400 (25 MB) Max upload file size

Tool Profiles

Compact Profile (Default)

Optimized for AI agents with minimal tool ambiguity. Consolidates overlapping endpoints into semantic tools:

Tool Purpose Maps to Endpoint
albom_catalog_get Get live API catalog /api/v1/catalog
albom_text_generate Generate text completions /v1/responses
albom_image_generate Generate images /v1/images/generations
albom_image_edit Edit images /v1/images/edits
albom_audio_transcribe Transcribe audio (with optional translation) /v1/audio/transcriptions (+ /translations)
albom_audio_speech Generate speech /v1/audio/speech
albom_video_generate Generate videos (if enabled) /v1/video/generations
albom_safety_moderate Content moderation (if enabled) /v1/moderations
albom_embedding_create Create embeddings (if enabled) /v1/embeddings

Consolidations:

  • Hides /v1/chat/completions in favor of /v1/responses (identical model sets)
  • Folds /v1/audio/translations into albom_audio_transcribe via boolean flag

Full Profile

One tool per catalog endpoint for comprehensive coverage:

  • albom_openai_chat_completions
  • albom_openai_responses
  • albom_openai_images_generations
  • albom_openai_images_edits
  • albom_openai_images_variations
  • albom_openai_audio_speech
  • albom_openai_audio_transcriptions
  • albom_openai_audio_translations
  • albom_openai_embeddings
  • albom_openai_moderations
  • albom_openai_video_generations
  • albom_catalog_get
  • albom_raw_call (if ALBOM_ALLOW_RAW_TOOL=true)

Authentication

Bearer Token (Recommended)

Set ALBOM_BEARER_TOKEN to your prepaid balance token. All requests will use Authorization: Bearer <token>.

Get a token:

# 1. Create topup invoice
curl -X POST https://402ai.net/api/v1/topup \
  -H "Content-Type: application/json" \
  -d '{"amount_sats":1000}'

# 2. Pay invoice with Lightning wallet, then claim
curl -X POST https://402ai.net/api/v1/topup/claim \
  -H "Content-Type: application/json" \
  -d '{"preimage":"<hex-preimage>"}'

NWC Auto-Topup

Set ALBOM_NWC_URI to a nostr+walletconnect://... URI to let the MCP client auto-pay topup invoices locally. The NWC secret stays in the MCP client process and is never sent to the 402ai server.

When a tool response includes balance_sats or available_sats below ALBOM_NWC_THRESHOLD_SATS, the MCP client will:

  1. POST /api/v1/topup with {"amount_usd": ALBOM_NWC_TOPUP_USD}
  2. Pay the returned invoice over NWC with pay_invoice
  3. POST /api/v1/topup/claim with the returned preimage
  4. Update the in-memory bearer token if the claim returns a newer token

Notes:

  • Auto-topup is client-side only. The NWC URI never touches the 402ai server.
  • ALBOM_NWC_MAX_DAILY is a rolling 24-hour USD spend cap for automatic topups.
  • Auto-topup does not bootstrap a brand new account by itself. Start with a valid ALBOM_BEARER_TOKEN, then NWC can keep that balance funded.

No Token (L402 Flow)

Without a token, calls will return 402 Payment Required with a Lightning invoice. The MCP server will surface this as an error with payment details.

Usage Examples

With Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "402ai": {
      "command": "node",
      "args": ["/path/to/402ai-mcp/dist/server.js"],
      "env": {
        "ALBOM_BEARER_TOKEN": "abl_your_token_here",
        "ALBOM_NWC_URI": "nostr+walletconnect://...",
        "ALBOM_NWC_THRESHOLD_SATS": "1000",
        "ALBOM_NWC_TOPUP_USD": "2.00",
        "ALBOM_NWC_MAX_DAILY": "10.00",
        "ALBOM_TOOL_PROFILE": "compact"
      }
    }
  }
}

Programmatic Usage

import { createAlbomServer } from '402ai-mcp';

const server = createAlbomServer({
  baseUrl: 'https://402ai.net',
  bearerToken: process.env.ALBOM_BEARER_TOKEN,
  toolProfile: 'compact'
});

// Start server
await server.run();

Development

Build

npm run build

Documentation Discipline

Keep ARCHITECTURE.md and WORKLOG.md accurate when tool behavior, transport assumptions, auth flows, or deployment expectations change.

Test

npm test              # Run all tests
npm run test:watch    # Watch mode

Dev Server

npm run dev           # Watch and rebuild
npm run start:dev     # Run without build

Smoke Test (Live API)

ALBOM_BEARER_TOKEN=<token> npm run smoke:live

Architecture

Core Modules

  • catalog.ts: Fetches and validates /api/v1/catalog, detects changes
  • config.ts: Environment variable configuration and validation
  • dedup.ts: Model set deduplication logic (Jaccard similarity)
  • httpClient.ts: HTTP client with retry logic, multipart support, bearer auth
  • tools/: Tool implementations for compact and full profiles
  • results.ts: Response normalization and error handling
  • uploads.ts: File upload handling (path and base64)
  • server.ts: MCP server implementation

Catalog Sync

  1. Fetches /api/v1/catalog on startup
  2. Caches for ALBOM_CATALOG_TTL_MS
  3. Periodically refreshes and compares
  4. Sends notifications/tools/list_changed if catalog changes
  5. Clients re-fetch tool definitions

Error Handling

HTTP errors are normalized to MCP-friendly format:

  • 402 Payment Required: Returns payment details (invoice, amount, expires_in)
  • 400 Bad Request: Returns validation errors
  • 429 Rate Limited: Returns retry-after info
  • 5xx Server Error: Returns error message
  • Network errors: Automatic retry with exponential backoff

Testing

Test suite covers:

  • Catalog validation and normalization
  • Model set deduplication (Jaccard similarity)
  • HTTP error normalization
  • Multipart upload encoding (path + base64)
  • Tool list change detection
  • Bearer token authentication
  • Retry logic

Run tests:

npm test

Publishing

# 1. Build and test
npm run build
npm test

# 2. Check package contents
npm pack --dry-run

# 3. Publish
npm login
npm version patch  # or minor/major
npm publish --access public

Project Structure

.
├── src/
│   ├── catalog.ts         # Catalog fetching and tracking
│   ├── config.ts          # Environment configuration
│   ├── dedup.ts           # Model set deduplication
│   ├── httpClient.ts      # HTTP client with retries
│   ├── server.ts          # MCP server implementation
│   ├── tools/             # Tool implementations
│   │   ├── compact.ts     # Compact profile tools
│   │   ├── full.ts        # Full profile tools
│   │   └── shared.ts      # Shared tool utilities
│   ├── results.ts         # Response normalization
│   ├── uploads.ts         # File upload handling
│   ├── types.ts           # TypeScript types
│   └── index.ts           # Public exports
├── test/                  # Test suite
├── scripts/               # Utility scripts
├── dist/                  # Compiled output
└── 402AI_MCP_IMPLEMENTATION_SPEC.md  # Design spec

Documentation:
└── 402AI_MCP_IMPLEMENTATION_SPEC.md

MCP Specification

This server implements MCP spec revision 2025-11-25.

Supported features:

  • Tools capability
  • Notifications capability (tools/list_changed)
  • Tool annotations (title, readOnlyHint, idempotentHint)
  • stdio transport

License

MIT - See LICENSE file.

Contributing

See WORKLOG.md for recent changes and development history.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured