Quick Checks

Quick checks

New to your camera? Start here. These are tiny, copy-paste scripts, one per operation, that let you confirm everything works before you wire up a full AI integration. Pick the Local or Cloud tab, grab a snippet, run it, and you should get an image or clip saved right next to it. If these work, you’re ready to build.

📡
Your EOT-1 must be on your network at http://eyeofthetiger.local. Run curl -fsS http://eyeofthetiger.local/docs to verify it’s reachable.
🐍
The Python MCP scripts require the mcp package. Install it with: pip install mcp httpx

HTTP API

Call the camera’s HTTP endpoints directly with curl. No dependencies beyond curl itself.

Capture image

Call the HTTP endpoint directly with curl to capture a still frame and save it as image.jpg.

bash
#!/usr/bin/env bash
# Capture a still image from a local EOT-1, saved as image.jpg.

curl -fsS http://eyeofthetiger.local/v1/image -o image.jpg
echo "Saved image.jpg"

Record a clip

Start a recording, wait 10 seconds, stop it, then download the resulting MP4.

bash
#!/usr/bin/env bash
# Record a 10-second clip from a local EOT-1, saved as recording.mp4.

curl -fsS -X POST http://eyeofthetiger.local/v1/start > /dev/null
echo "Started recording..."
sleep 10
curl -fsS -X POST http://eyeofthetiger.local/v1/stop > /dev/null

curl -fsS http://eyeofthetiger.local/v1/recording -o recording.mp4
echo "Saved recording.mp4"

Set quality

Use the HTTP API to switch the still and video quality presets.

bash
#!/usr/bin/env bash
# Switch to low video quality.

BASE="http://eyeofthetiger.local/v1"

# Check current settings
curl -fsS "$BASE/configuration" | python3 -m json.tool

# Set video quality to low
curl -fsS -X POST "$BASE/configuration/video/quality?level=low"

echo "Ready to record at 1536x864"

MCP server

Talk to the camera’s built-in MCP server from Python.

Capture image (Python)

Connect to the device's built-in MCP server and call take_snapshot to capture an image.

python
"""Capture a still image via the local MCP server, saved as image.jpg."""

import asyncio
import base64

from mcp.client.session import ClientSession
from mcp.client.streamable_http import streamablehttp_client


async def main():
    # Trailing slash matters: /mcp redirects and the client won't follow it.
    async with streamablehttp_client("http://eyeofthetiger.local/mcp/") as (read, write, _):
        async with ClientSession(read, write) as session:
            await session.initialize()
            result = await session.call_tool("take_snapshot", {})

    for item in result.content:
        if item.type == "image":
            with open("image.jpg", "wb") as f:
                f.write(base64.b64decode(item.data))
            print("Saved image.jpg")


asyncio.run(main())

Record a clip (Python)

Use the MCP record_video tool to record a 10-second clip, then download it.

python
"""Record a clip via the local MCP server, then save it as recording.mp4."""

import asyncio
import httpx
from mcp.client.session import ClientSession
from mcp.client.streamable_http import streamablehttp_client

DEVICE = "http://eyeofthetiger.local"

async def main():
    async with streamablehttp_client(f"{DEVICE}/mcp/") as (read, write, _):
        async with ClientSession(read, write) as session:
            await session.initialize()
            await session.call_tool("record_video", {"duration_s": 10})

    clip = httpx.get(f"{DEVICE}/v1/recording").content
    with open("recording.mp4", "wb") as f:
        f.write(clip)
    print("Saved recording.mp4")


asyncio.run(main())

Set quality (Python)

Use the MCP tools to set still quality to high and video quality to low, then capture.

python
"""Set quality presets via the local MCP server, then capture a still."""

import asyncio
import base64
from mcp.client.session import ClientSession
from mcp.client.streamable_http import streamablehttp_client

DEVICE = "http://eyeofthetiger.local"


async def main():
    async with streamablehttp_client(f"{DEVICE}/mcp/") as (read, write, _):
        async with ClientSession(read, write) as session:
            await session.initialize()

            # High quality stills, low quality video
            await session.call_tool("set_still_quality", {"level": "high"})
            await session.call_tool("set_video_quality", {"level": "low"})

            config = await session.call_tool("get_configuration", {})
            print(config.content[0].text)

            result = await session.call_tool("take_snapshot", {})

    for item in result.content:
        if item.type == "image":
            with open("image.jpg", "wb") as f:
                f.write(base64.b64decode(item.data))
            print("Saved image.jpg (4608x2592, high still quality)")


asyncio.run(main())