Luxxon

by daniel-underpass

360 downloads
Not rated
GitHub

About

On-demand live vision for AI agents. Open a session at a lat/lng, receive a JPEG snapshot or WebRTC stream, settle per-second in USDC on Base. The agent-first way to give an LLM eyes on the physical world.

Details

Author
daniel-underpass
Downloads
360
Categories
Developer Tools, AI

- On-demand live video from any global location.
- Get a JPEG snapshot (get_frame) or a WebRTC stream URL (get_stream_url).
- Per-second billing settled on-chain in USDC on Base.
- Read-oriented tool surface: get_session, get_frame, get_stream_url, cancel_session.
- Uses WHIP/WHEP protocols for publisher/subscriber connections.
- Non-custodial, EIP-712-authorized metered payments.

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Luxxon
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Install the server in any MCP-compatible host (Claude Desktop, Cursor, Claude Code, Cline, etc.) by adding the JSON configuration with the npx command and your LUXXON_API_KEY environment variable. Use the tools to request a live view, get a snapshot, or subscribe to a stream. Currently, the consumer wallet must sign per-session via the console; a request_live_view tool will ship later.

request_live_view

Open a Luxxon session at a lat/lng, push-dispatch the longest-idle operator in range, and wait for the operator to go LIVE. Returns the sessionId either way: if LIVE within timeoutMs, the response includes whepUrl + a hint to call get_frame; if still ASSIGNED/REQUESTED after timeoutMs, the response includes the sessionId + current state + a hint to call wait_for_live or cancel_session. Only NO_COVERAGE (no operator in range at dispatch time) errors hard. Charges the workspace's pool per second of LIVE time at session end.

wait_for_live

Continue waiting on an existing session (REQUESTED or ASSIGNED) until it reaches LIVE. Use this after request_live_view returned with state≠LIVE, or after re-discovering a sessionId via list_sessions. Returns whepUrl on success. If the operator still hasn't gone LIVE within timeoutMs, returns the current state + sessionId so you can call again or cancel_session.

list_sessions

List sessions in the caller's workspace, newest first. Useful for recovering a sessionId when a previous request_live_view returned without one, or for auditing recent activity. Filter client-side by state (REQUESTED, ASSIGNED, LIVE, ENDED, EXPIRED, CANCELLED).

get_session

Read the current state of a Luxxon session (REQUESTED, ASSIGNED, LIVE, ENDED, etc.) plus meter fields (cleanSeconds, chargedMicroUsdc, settlementTxHash).

get_frame

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 FRAME_NOT_AVAILABLE for ~3-5s after a session goes LIVE while the first keyframe arrives — retry if you hit that.

get_stream_url

Return a WHEP playback URL for a LIVE session. For agents with their own WebRTC stack; most agents should prefer get_frame instead.

end_session

End a LIVE Luxxon session. Closes the meter; computes cleanSeconds; the relayer settles on-chain shortly after. For pre-LIVE sessions use cancel_session instead.

cancel_session

Cancel a pre-LIVE Luxxon session (REQUESTED or ASSIGNED). For LIVE sessions use end_session — this one will error with INVALID_STATE.

get_pricing_quote

Get a price quote for a session at a lat/lng + duration. Returns a quoteId, rate per second, and an estimated total — all in µUSDC (1 USDC = 1,000,000 µUSDC). Optional input for request_live_view to lock the rate.

get_coverage

Public list of live operator coverage circles (centroid + radius + device kind). Anonymized — no operator ids. Useful as a pre-flight check before request_live_view.

get_wallet

Workspace pool balance + last on-chain sync block. Use to decide whether to top up before a session.

get_settlement

On-chain settlement state + tx hash for a session after end_session. State machine: NOT_READY → PENDING → SUBMITTED → CONFIRMED. txHash is set once SUBMITTED.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "luxxon": {
            "luxxon": {
                "command": "npx",
                "args": [
                    "-y",
                    "--package=@luxxon/mcp",
                    "luxxon-mcp"
                ],
                "env": {
                    "LUXXON_API_KEY": "<YOUR_LUXXON_API_KEY>"
                }
            }
        }
    }
}

McpServers

{
    "luxxon": {
        "command": "npx",
        "args": [
            "-y",
            "--package=@luxxon/mcp",
            "luxxon-mcp"
        ],
        "env": {
            "LUXXON_API_KEY": "<YOUR_LUXXON_API_KEY>"
        }
    }
}

Luxxon — vision for AI agents

On-demand live video from anywhere on Earth. An AI agent that needs to see a place — to verify a claim, score a property, watch a corridor, inspect a site — opens a Luxxon session at a lat/lng. A human operator (or future drone/PTZ camera) attaches a publisher via WHIP. The agent gets either a JPEG snapshot (get_frame) or a WebRTC subscriber URL (get_stream_url). Every chargeable second settles on-chain in USDC on Base. Currently on Base Sepolia testnet. Mainnet ships when the platform announces readiness. ## Install Drop into your MCP-compatible host (Claude Desktop, Cursor, Claude Code, Cline, or any custom agent runtime): ``json { "mcpServers": { "luxxon": { "command": "npx", "args": ["-y", "--package=@luxxon/mcp", "luxxon-mcp"], "env": { "LUXXON_API_KEY": "<YOUR_LUXXON_API_KEY>" } } } } ` Get an API key from console.luxxon.dev — connect a wallet, create a workspace, mint a key (TEST environment, ~30 seconds). ## Tools | Tool | Purpose | |---|---| | get_session | Read current state (REQUESTED / ASSIGNED / LIVE / ENDED) + meter fields. | | get_frame | Single JPEG observation of a LIVE session. Returns the image as an inline content block — the LLM describes the frame directly, no vision stack required on the caller. | | get_stream_url | WHEP playback URL for full WebRTC subscription. | | cancel_session | Cancel a pre-LIVE session. | request_live_view` (open a session from the agent without per-call wallet signature) lands when the session-keys integration ships — currently the consumer wallet must sign per-session via console.luxxon.dev. ## Why it exists Most "give my agent eyes" stacks ship a SaaS web app + a custodial wallet + an arbitrary fee schedule. Luxxon is the inverse: a public API, an EIP-712-authorized per-second meter, non-custodial settlement on Base, and a marketplace of human and machine operators. The - API: api.luxxon.dev - Source: github.com/daniel-underpass/luxxon-sdk - Twitter: @luxxondev ## Status Alpha, testnet. The wire protocol is stable; the MCP tool surface is read-oriented today. Pairing with an early integrator? Open the console + ping on Twitter.
No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.