402ai-mcp
MCP server for 402ai.net, a Lightning-paid API proxy, providing AI model tools with automatic catalog synchronization and NWC auto-topup.
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/completionsin favor of/v1/responses(identical model sets) - Folds
/v1/audio/translationsintoalbom_audio_transcribevia boolean flag
Full Profile
One tool per catalog endpoint for comprehensive coverage:
albom_openai_chat_completionsalbom_openai_responsesalbom_openai_images_generationsalbom_openai_images_editsalbom_openai_images_variationsalbom_openai_audio_speechalbom_openai_audio_transcriptionsalbom_openai_audio_translationsalbom_openai_embeddingsalbom_openai_moderationsalbom_openai_video_generationsalbom_catalog_getalbom_raw_call(ifALBOM_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:
POST /api/v1/topupwith{"amount_usd": ALBOM_NWC_TOPUP_USD}- Pay the returned invoice over NWC with
pay_invoice POST /api/v1/topup/claimwith the returned preimage- 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_DAILYis 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 changesconfig.ts: Environment variable configuration and validationdedup.ts: Model set deduplication logic (Jaccard similarity)httpClient.ts: HTTP client with retry logic, multipart support, bearer authtools/: Tool implementations for compact and full profilesresults.ts: Response normalization and error handlinguploads.ts: File upload handling (path and base64)server.ts: MCP server implementation
Catalog Sync
- Fetches
/api/v1/catalogon startup - Caches for
ALBOM_CATALOG_TTL_MS - Periodically refreshes and compares
- Sends
notifications/tools/list_changedif catalog changes - 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 errors429 Rate Limited: Returns retry-after info5xx 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
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
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.
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.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
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.
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.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
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.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.