Luxxon
Luxxon — TypeScript SDK + MCP server
Programmable vision for AI agents. Request live video or single frames from real-world locations, settled on-chain in USDC.
This repo contains:
Package | Purpose |
TypeScript HTTP client for the Luxxon API. Pure | |
MCP server exposing Luxxon as agent-callable tools (stdio transport, works with Claude Desktop / Cursor / any MCP client). | |
Runnable agent examples — copy, paste, run. |
API: docs.luxxon.dev — https://api.luxxon.dev/api/v1.
Why an MCP server
Agents have fetch(), not <video> tags. The MCP server turns Luxxon
into a set of tools any MCP-aware agent can call directly:
get_frame(sessionId)→ JPEG bytes ready for a vision modelget_session(sessionId)→ current state of a live sessioncancel_session(sessionId)→ early termination
Drop the server into your Claude Desktop config and your agent can see the world.
Related MCP server: StatePulse API
Quickstart — TypeScript SDK
import { Luxxon } from "@luxxon/sdk";
const lx = new Luxxon({ apiKey: process.env.LUXXON_API_KEY });
// Read the latest frame from a LIVE session (returns a Buffer).
const jpeg = await lx.sessions.frame("sess_abc123");Quickstart — MCP server
// ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"luxxon": {
"command": "npx",
"args": ["-y", "--package=@luxxon/mcp", "luxxon-mcp"],
"env": { "LUXXON_API_KEY": "lxxn_live_..." }
}
}
}Restart Claude Desktop; the three tools appear under "Luxxon".
Status
v0, building in public. The SDK + MCP cover the agent-read surface today (frames, session state, cancel). Session creation lands behind a custodial-wallet sign path that's still being built on the API side — for now you create sessions yourself via the REST API and use this SDK/MCP to consume them.
Public dev console + Python/Go/CLI SDKs follow. Watch this repo.
Available Tools
4 toolscancel_sessionA
Cancel a pre-LIVE Luxxon session (REQUESTED or ASSIGNED). For LIVE sessions, end the session via the REST API or a future end_session tool — this one will error with INVALID_STATE.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | UUID of the Luxxon session |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full responsibility for behavioral disclosure. It discloses that the tool errors on LIVE sessions with INVALID_STATE, hinting at state-dependent behavior. However, it does not detail side effects (e.g., irreversibility) or any potential cascading impacts, which would elevate 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 two sentences long. The first sentence front-loads the primary purpose and allowed states. The second sentence clarifies a key exclusion and error behavior. Every sentence earns its place with no fluff.
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 low complexity (one parameter, no output schema, no nested objects), the description is complete. It covers purpose, state constraints, error condition, and provides a comparison to other handling methods. There are no gaps for the agent's decision-making.
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 covers the single parameter (sessionId) with a basic description ('UUID of the Luxxon session'). The tool description adds no further detail about the parameter, such as format or constraints. Since schema_description_coverage is 100%, a score of 3 is appropriate as the description does not add value beyond the schema.
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 cancels a Luxxon session, specifies valid states (REQUESTED or ASSIGNED), and distinguishes itself from handling LIVE sessions via other means. This provides a specific verb and resource, and the state constraints differentiate it from sibling tools like get_session.
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 (for pre-LIVE sessions) and when not to use it (for LIVE sessions, which require a different method). It also warns that attempting to cancel a LIVE session will result in an INVALID_STATE error, offering clear guidance on alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_frameA
Fetch the latest decoded video frame from a LIVE Luxxon session as a JPEG image. Hand the returned image straight to a vision model. Returns 404 FRAME_NOT_AVAILABLE for ~3-5s after /start while the first keyframe arrives — retry if you hit that.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | UUID of the Luxxon session |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It explains the output type (JPEG), the possible 404 error, and the typical delay (3-5s) with retry advice. It does not cover auth requirements or rate limits, but for this simple tool the disclosure is sufficient.
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 sentences—and front-loads the core purpose, output, and error handling. Every sentence adds value without 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 has only one parameter and no output schema, the description covers the purpose, output format, and key error scenario. It could mention that the session must be started, but 'LIVE Luxxon session' implies that state. Overall, it is nearly complete.
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% description coverage for its single parameter (sessionId). The description adds context about the session being LIVE and timing but no new parameter-level details, so a 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 ('Fetch') and resource ('latest decoded video frame from a LIVE Luxxon session as a JPEG image'), and clearly states its purpose. It differentiates from sibling tools (cancel_session, get_session, get_stream_url) which handle session management and stream URLs, not frame capture.
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 provides clear context for when to use the tool—after starting a session—and includes retry guidance for the initial delay. It does not explicitly state when not to use it or mention alternatives, but the sibling tools imply different usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sessionA
Read the current state of a Luxxon session (REQUESTED, ASSIGNED, LIVE, ENDED, etc.) plus meter fields (cleanSeconds, chargedMicroUsdc, settlementTxHash).
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | UUID of the Luxxon session |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description indicates a read operation with no side effects and lists returned fields. Lacks explicit transparency on error handling or permissions.
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?
Single sentence that is clear and to the point, with no unnecessary information.
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?
Adequately describes the tool's functionality and return fields for a simple read operation. Could mention error behavior but not essential.
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?
Input schema covers the single parameter with a description. Description adds no further meaning to the parameter beyond what the schema provides.
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?
Description clearly states the tool reads the current state of a Luxxon session and lists example states and meter fields. It distinguishes from siblings like cancel_session and get_frame.
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?
Implicitly states when to use (to read session state), but no explicit guidance on when not to use or alternatives for related operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stream_urlA
Return a WHEP playback URL for a LIVE session. For agents with their own WebRTC stack; most agents should prefer get_frame instead.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | UUID of the Luxxon session |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It mentions returning a URL but lacks details on side effects, authentication, error handling, or session requirements.
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 with no unnecessary words; essential information is front-loaded.
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?
With one parameter and no output schema, the description is short but lacks details on return format or error conditions, leaving some ambiguity.
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?
Input schema has 100% coverage with description for sessionId. The description does not add extra meaning beyond the schema, so baseline 3 applies.
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?
Description clearly states it returns a WHEP playback URL for a LIVE session, distinguishing it from the sibling get_frame by noting that most agents should prefer get_frame.
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?
Explicitly tells when to use this tool (agents with their own WebRTC stack) and provides an alternative (get_frame) for most agents.
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.
4 tool updates
v1.0.0- First observed
cancel_session - First observed
get_frame - First observed
get_session - First observed
get_stream_url
TDQS
Each tool has a distinct purpose: cancel_session cancels pre-LIVE sessions, get_frame fetches a video frame, get_session reads session state, and get_stream_url provides a playback URL. No overlap exists.
All tools follow the verb_noun pattern (cancel_session, get_frame, get_session, get_stream_url) with consistent snake_case, making the naming predictable.
At 4 tools, the set is slightly small but still reasonable for a focused domain. It covers basic read operations and one mutation, though some common operations are missing.
The tool set is notably incomplete: it lacks end_session for LIVE sessions, forcing agents to use a REST API. The stated dead-end for cancel_session on LIVE sessions creates a significant gap in the domain lifecycle.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
63 pay-per-call tools for agents: vision, text, data, web, blockchain. USDC on Base via x402.
Pay-per-call tools for autonomous agents, settled in USDC on Base via x402.
161Real-time data feeds for AI agents with USDC micropayments on Base for premium tools.
8 pay-per-call web intel tools over MCP. Free discovery, calls settle in USDC on Base (x402).
Related MCP Servers
- AlicenseAqualityBmaintenanceProvides pay-per-use tools for AI agents like web screenshots and crypto intelligence using automatic USDC micropayments on the Base network. It simplifies access to premium APIs by handling blockchain transactions automatically when a payment is required.1220MIT
- AlicenseNot gradedqualityBmaintenance55+ pay-per-call tools for AI agents over MCP: live telemetry, blockchain/on-chain checks, environmental, transit, finance, and network utilities. No API key or signup — agents pay per request with x402 USDC micropayments (Base and Solana).MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to access crypto prices, DeFi yields, Polymarket data, Base chain info, and security scans with pay-per-call via USDC on Base mainnet.MIT
- AlicenseAqualityCmaintenanceProvides AI agents with live access to over 1 million traffic cameras worldwide, enabling search by bounding box, radius, route, or nearest point and fetching live frames.6MIT
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/luxxon-dev/luxxon-sdk'
If you have feedback or need assistance with the MCP directory API, please join our Discord server