Skip to main content
Insert a message. The model picks a tool, invoke_tools runs it, and both results are columns on that row. Create the tables with pxt schema update app.py my_app, then open them with t = pxt.get_table('my_app.assistant'). Cookbooks on this topic use pxt.create_table() so you can run cells without a project. An app puts the same columns on a TableModel in app.py and creates the tables with pxt schema update.
pxt service list prints the URL. POST /ask with {"message": "..."}. Chat history is another table with an embedding index: Agent memory. MCP tools load with pxt.mcp_udfs(...) and go into the same pxt.tools() list. A full chat app: uvx pixeltable-new copies the starter kit agent. Pass agent as the last argument to pxt schema update. /ask needs ANTHROPIC_API_KEY. On Cloud, create an API key in the dashboard, set PIXELTABLE_API_KEY, then run pxt db update, pxt schema update, and pxt service update against pxt://org:mydb. Search over chunks instead of tools: RAG and live APIs. Coming from LangGraph: Migrate.

Tool calling

Register tools and run invoke_tools as a column.

Agentic patterns

Patterns for agents as tables.

RAG pipeline

Search over chunks instead of tools.

HTTP serving

POST /ask from the same file.
Last modified on September 3, 2026