Skip to main content
Glama

ToolFront

Turn your data into shareable LLM apps in minutes. All in pure Markdown. Zero boilerplate.

Test Suite Python 3.10+ PyPI package License Discord X


Documentation:

Source code:


ToolFront is a declarative framework for building modular LLM applications in Markdown.

Example

Create it

Start with one file: README.md

--- tools: - [date] --- # Instructions - Run `date` to check today's date

Serve it

Run your app locally:

toolfront serve .

Note: Runs on http://127.0.0.1:8000

Ask it

Include the app URL in your prompts:

claude "Get today's date from http://127.0.0.1:8000"
copilot "Get today's date from http://127.0.0.1:8000"
codex "Get today's date from http://127.0.0.1:8000"

For custom agents, add an HTTP request tool:

import subprocess @tool def curl_tool(url: str, args: list[str]) -> str: """Execute curl commands to interact with Statespace apps.""" result = subprocess.run( ['curl', *args, url], capture_output=True, text=True ) return result.stdout
import { execFileSync } from 'child_process'; /** * Execute curl commands to interact with Statespace apps. */ function curlTool(url: string, args: string[]): string { const result = execFileSync('curl', [...args, url], { encoding: 'utf-8' }); return result.toString(); }
use std::process::Command; /// Execute curl commands to interact with HTTP endpoints. fn curl_tool(url: &str, args: Vec<&str>) -> String { let output = Command::new("curl") .args(&args) .arg(url) .output() .unwrap(); String::from_utf8_lossy(&output.stdout).to_string() }

Related MCP server: MySQL MCP Server

Complex example

Upgrade it

Your app can grow into a full project:

project/ ├── README.md ├── data/ │ ├── log1.txt │ ├── log2.txt │ └── log3.txt └── src/ ├── agentic_rag.md ├── text2sql.md └── vector_search.md 3 directories, 9 files

Update README.md with CLI tools to progressively discover and read other files:

--- tools: - [date] - [ls] - [cat] --- # Instructions - Run `date` to check today's date - Use `ls` and `cat` to discover and read other files

Compose it

Add pages and CLI tools for different workflows:

--- tools: - [curl, -X, POST, https://host.pinecone.io/records/namespaces/user/search] --- # Vector search instructions: - Query documents with your vector database API

Note: replace the API with your own (e.g., Pinecone, Weaviate, Qdrant)

--- tools: - [psql, -U, $USER, -d, $DB, -c, { regex: "^SELECT\b.*" }] --- # Text-to-SQL instructions: - Use `psql` for read-only PostgreSQL queries

Note: use your own database CLI (e.g., mysql, sqlite3, mongosh).

--- tools: - [grep, -r, -i, { }, ../data/] --- # Document search instructions: - Use `grep` to search documents in `../data/`

Note: apps can include any file type (e.g. .csv, .sqlite, .json)

Deploy it

Create a free Statespace account to deploy authenticated private apps:

toolfront deploy . --private

Alternatively, share public apps with the community:

toolfront deploy . --public

Note Statespace gives you app URLs you can paste in prompts and instructions.

Installation

Install toolfront with your favorite PyPI package manager:

pip install toolfront
uv add toolfront
poetry add toolfront

Community & Contributing

License

This project is licensed under the terms of the MIT license.

Install Server
A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/statespace-tech/toolfront'

If you have feedback or need assistance with the MCP directory API, please join our Discord server