Skip to main content
Glama

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

packages/sdk

TypeScript HTTP client for the Luxxon API. Pure fetch, no native deps.

packages/mcp

MCP server exposing Luxxon as agent-callable tools (stdio transport, works with Claude Desktop / Cursor / any MCP client).

examples/

Runnable agent examples — copy, paste, run.

API: docs.luxxon.devhttps://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 model

  • get_session(sessionId) → current state of a live session

  • cancel_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 tools
cancel_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYesUUID of the Luxxon session

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYesUUID of the Luxxon session

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYesUUID of the Luxxon session

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionIdYesUUID of the Luxxon session

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

  1. 4 tool updatesv1.0.0
    • First observedcancel_session
    • First observedget_frame
    • First observedget_session
    • First observedget_stream_url

TDQS

A4/5.0
Disambiguation5/5

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.

Naming Consistency5/5

All tools follow the verb_noun pattern (cancel_session, get_frame, get_session, get_stream_url) with consistent snake_case, making the naming predictable.

Tool Count4/5

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.

Completeness2/5

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

ActivityInactive
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    55+ 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
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables 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

Latest Blog Posts

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