# JustinX > Real-time data streaming infrastructure for AI agents. Connect any data source > (MQTT, Webhook, Kafka) and stream it through Redis into WebSockets, with > server-side TypeScript watchers for alerts, anomaly detection, and aggregation. > Designed for MCP integration with Claude Code, Cursor, and any MCP-compatible client. JustinX is a hosted service at https://justinx.ai. It exposes a set of MCP tools that let AI agents create data connections, inspect live streams, and deploy server-side processing scripts (watchers) — all without leaving the coding environment. Architecture: Data Source -> Redis Stream -> WebSocket relay -> Watchers ## Instructions for AI Agents - Use `create_connection` to connect a data source. Three types are supported: - **MQTT**: Connect to any MQTT broker (e.g. HiveMQ, EMQX, Mosquitto) - **Webhook**: Creates an HTTP ingest endpoint — external systems POST data to it - **Kafka**: Connect to a Kafka cluster via a consumer group - After creating a connection, use `read_stream` to sample live data before building anything - The WebSocket URL returned by `create_connection` can be passed to any consumer — a generated app, a script, a browser page — to receive live data directly - Watchers are server-side TypeScript processes for background logic. Deploy them with `create_watcher` - Watcher scripts receive `WATCHER_ID`, `WATCHER_CONFIG`, and `WATCHER_CONNECTION_ID` as environment variables - Always prefer `update_watcher_config` over `delete_watcher` + `create_watcher` when tuning parameters - Use `get_watcher_logs` to debug crashed or misbehaving watchers ## MCP Tools - [create_connection](/llms-full.txt): Create a data connection. For MQTT: connects to a broker and subscribes to topics. For Webhook: creates an HTTP ingest endpoint. For Kafka: connects to a Kafka broker via a consumer group and consumes from topics. All stream through Redis into a WebSocket. - [list_connections](/llms-full.txt): List all active connections and their status. - [get_connection](/llms-full.txt): Get status of a specific connection (message count, WebSocket clients, stream key). - [destroy_connection](/llms-full.txt): Destroy a connection — stops source, cleans up Redis stream, kills watchers. - [read_stream](/llms-full.txt): Read entries from a connection's live stream. Reads backfill + live entries directly from Redis, then returns them. Use this to inspect what data is flowing through a connection. - [create_watcher](/llms-full.txt): Deploy a watcher script on a connection. The script runs as a child process with access to the Redis stream. It receives WATCHER_ID, WATCHER_CONFIG, and WATCHER_CONNECTION_ID as environment variables. - [list_watchers](/llms-full.txt): List all watchers for a connection with their status, PID, and restart count. - [get_watcher](/llms-full.txt): Get details of a specific watcher including its source code, status, config, and restart count. - [get_watcher_logs](/llms-full.txt): Get stdout/stderr logs from a running or crashed watcher. - [update_watcher_config](/llms-full.txt): Update a watcher's config. The watcher process will be restarted with the new config. - [restart_watcher](/llms-full.txt): Restart a stopped or crashed watcher. Sets the watcher status back to running so it will be re-spawned by the reconciliation loop. - [delete_watcher](/llms-full.txt): Stop and remove a watcher from a connection. ## Getting Started - [Full Tool Reference with Parameters](/llms-full.txt): Auto-generated detailed reference for all MCP tools - [Sign Up](https://justinx.ai/signup): Create an account and get an API key - [Dashboard](https://justinx.ai/dashboard): Manage connections and watchers in the UI ## Optional - [Pricing](https://justinx.ai/pricing): Plans and pricing - [Contact](https://justinx.ai/product): Product details and contact form