IVR Flow Linter
Validates IVR flow definitions (JSON) to detect errors like unreachable nodes, dead ends, and missing fallbacks, providing scores and fix suggestions. Includes interactive visualization widget for ChatGPT and Claude Desktop integration.
README
IVR Flow Linter
Deterministic IVR Flow Linter via MCP + ChatGPT Skybridge Widget
A Model Context Protocol (MCP) server that validates IVR flows (JSON) providing a score, error detection (unreachable nodes, dead ends), and suggested fixes. Includes a Skybridge-pattern HTML widget for visualizing results directly in ChatGPT.

Features
- Strict Validations: Unreachable nodes, dead ends, missing fallbacks, undefined variables.
- Best Practices: Warning on long prompts, multiple questions, and irreversible actions without confirmation.
- Idempotency: Consistent results via flow hashing.
- Skybridge Widget: Interactive HTML/JS visualization with zero external dependencies.
- MCP Compatible: Works with both ChatGPT Actions and Claude Desktop.
Architecture
- Server: FastAPI with JSON-RPC 2.0 (
/mcp) - Linter: Pure Python deterministic engine
- Widget: Inline HTML injection (text/html+skybridge)
Local Development
Prerequisites
- Python 3.9+
- git
Setup
# Clone
git clone https://github.com/arebury/ivr-flow-linter.git
cd ivr-flow-linter
# Virtual Environment
python -m venv venv
source venv/bin/activate
# Install
pip install -r requirements.txt
# Run Server
uvicorn src.main:app --host 0.0.0.0 --port 8000 --reload
Visit http://localhost:8000/demo for an interactive simulator.
Validating the Demo
- Run server:
uvicorn src.main:app --host 0.0.0.0 --port 8000 --reload - Open
http://localhost:8000/demo - Select "Invalid: Dead End" from the dropdown.
- Click Lint & Render.
- Verify:
- "Parsed Result" tab shows errors.
- Widget renders the flow with error indicators.
Deployment (Render)
This project includes a render.yaml for 1-click deployment on Render.
- Create a new Web Service on Render.
- Connect your GitHub repository:
https://github.com/arebury/ivr-flow-linter. - Select "Python 3" runtime.
- Build Command:
pip install -r requirements.txt - Start Command:
uvicorn src.main:app --host 0.0.0.0 --port $PORT
Connecting to ChatGPT (Apps SDK / MCP)
This server acts as an MCP Server that exposes the lint_flow tool. The tool returns a Skybridge-compatible widget (text/html+skybridge) for rich visualization.
- Deploy the service to a public URL (e.g.,
https://your-app.onrender.com). - Register the app in the OpenAI Developer Portal (for Apps SDK) using the manifest at
/.well-known/ai-plugin.json. - Alternatively, for Custom Actions (GPTs):
- Import configuration from
https://your-app.onrender.com/openapi.yaml. - Ensure the model knows how to interpret the
uifield in the response (Skybridge pattern).
- Import configuration from
Connecting to Claude (Desktop)
Add the server to your Claude Desktop configuration (claude_desktop_config.json):
Local:
{
"mcpServers": {
"ivr-linter": {
"command": "uvicorn",
"args": ["src.main:app", "--port", "8000"],
"cwd": "/absolute/path/to/ivr-flow-linter"
}
}
}
Remote (via Stdio Wrapper - Advanced): (Typically Claude Desktop connects to local processes. For remote MCP, use a local bridge or simple local-proxy).
Examples
See /examples directory for 10 sample flows (5 valid, 5 invalid) including:
valid_basic.json: Simple greetingvalid_payment.json: Transaction flowinvalid_unreachable.json: Disconnected nodesinvalid_dead_end.json: Stuck user path
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
E2B
Using MCP to run code via e2b.