Skip to content

Quick start

For all three runtime targets:

Terminal window
pip install 'intpot[all]'

Create app.py:

from intpot import App
app = App("my-app")
@app.tool()
def greet(name: str, greeting: str = "Hello") -> str:
"""Greet someone by name."""
return f"{greeting}, {name}!"

The type annotations, defaults, and docstring describe the tool contract. Choose an interface when starting the app:

Terminal window
intpot serve app.py --cli -- Ada
intpot serve app.py --api
intpot serve app.py --mcp

For HTTP mode, Intpot uses FastAPI/Uvicorn (default port 8000). MCP mode exposes tools through FastMCP. For this single-tool app, CLI mode takes the name directly and prints Hello, Ada!; do not add a greet subcommand. Apps with multiple tools use tool-name subcommands. The -- separator forwards the following arguments to the generated CLI.

Use intpot eject app.py --to api, --to cli, or --to mcp to generate ordinary framework code. The generated app is not dependent on the Intpot runtime.

Intpot detects Typer, FastAPI, and FastMCP Python applications and can generate any other target:

Terminal window
intpot to api existing.py
intpot to cli existing.py
intpot to mcp existing.py

Use intpot inspect existing.py to view normalized tool definitions first. See capabilities and boundaries for what conversion preserves.