Skip to main content
Glama

Agents can call it — Every algorithm, dataset, and metric ships with a JSON schema. Agents read the schema, call the tool, get structured results. No hallucinated parameters, no wrapper glue.

Agents can discover it — A queryable registry tagged by task, data shape, and benchmarks. Agents browse and pick instead of memorising class names.

Agents can trust it — Deterministic, typed, reproducible outputs. Every call is a loggable, replayable tool invocation you can audit, diff, and trust in production.


Get running in 3 steps

1. Install — one command, installs uv and tuiml globally:

curl -fsSL https://tuiml.ai/install.sh | bash

Already have Python? pip install tuiml works too.

2. Connect your agent — auto-detects Claude Desktop, Cursor, Claude Code, and more:

tuiml setup

3. Ask your agent — in any connected client:

"Train a random forest on my sales data and report the accuracy."

Your agent discovers algorithms, sets parameters from the schema, trains, evaluates, and returns structured results. No glue code.


Related MCP server: Kopern

Use it from Python

The same runtime agents call is a first-class Python library. Every component — the model, each preprocessing step, the feature selector — is described the same way: a spec of the form {"name": ..., **params}. The data is its own spec, {"source": ..., "target": ...}.

import tuiml

# One call trains, evaluates, and returns metrics.
model = tuiml.train({
    "model": {"name": "RandomForestClassifier", "params": {"n_estimators": 100}},
    "data": {"source": "iris", "target": "class"},
    "pipeline": [{"name": "MinMaxScaler"}],
    "evaluation": {"cv": 10, "metrics": ["accuracy_score", "f1_score"]},
})
print(model.metrics_)
# {'cv_accuracy_score_mean': 0.96, 'cv_accuracy_score_std': 0.053,
#  'cv_f1_score_mean': 0.96, 'cv_f1_score_std': 0.057}
preds = model.predict([[5.1, 3.5, 1.4, 0.2]])

Benchmark many algorithms across many datasets with tuiml.experiment(...), and browse the same registry agents use with tuiml.list_algorithms() / tuiml.search_algorithms(...) / tuiml.describe_algorithm(...). See the tutorials for the full tour.


MCP Tools

Everything TuiML can do, your agent can do — the MCP server exposes 30 typed MCP tools with JSON schemas the agent reads directly, addressing a registry of 300+ components — algorithms, preprocessors, metrics and datasets — by name.

Train · Tune · Compare — fit a model, sweep hyperparameters, and rank runs in one conversation. No notebook, no glue code.

Algorithm Discovery — the agent searches the catalog by task, data shape, or constraint and gets ranked recommendations with rationale, not a flat list of names.

Persistent Experiments — every run is logged with lineage and metrics, so today's model can be compared against last week's without re-running anything.

One-Call Serving — deploy a trained model to a local HTTP endpoint with a single tool call. Stop it the same way.

100% Local & Private — your data, your machine. No cloud, no API keys, no telemetry.

Key workflow tools: tuiml_train, tuiml_predict, tuiml_evaluate, tuiml_benchmark, tuiml_tune, tuiml_plot, tuiml_list, tuiml_describe.

Works with anything that speaks MCP — tuiml setup auto-detects Claude Desktop, Claude Code, Cursor, ChatGPT Desktop, Codex CLI, Zed, Continue, Windsurf, VS Code Copilot, Perplexity, Goose, and OpenClaw / NemoClaw. For manual setup, add this to your client's MCP config:

{
    "mcpServers": {
        "tuiml": { "command": "tuiml-mcp" }
    }
}

Benchmarks

Every framework on its own library defaults, across 13 algorithms × 51 real-world TabArena datasets, 10-fold cross-validation, same data and folds for all three:

The harness also runs a matched arm, where hyperparameters are forced to agree across frameworks rather than each library using its own defaults. TuiML matches scikit-learn exactly on SVM, naive Bayes and k-NN there, and leads on Random Forest.

Logistic regression appeared to trail by 2.6 points in that arm. It does not: the three libraries normalise the objective differently, and the harness converted scikit-learn's C=1.0 into a fixed ridge=0.5 for TuiML as well as Weka. That is correct for Weka, which sums the loss, but TuiML averages it — making the penalty a factor of n too strong, 75× on a 150-row dataset. With the equivalence corrected (ridge = 1/(C·n), which is what TuiML's default ridge="auto" already computes) the two agree to four decimal places on iris, and TuiML is ahead on wine and breast cancer. tests/test_reference_parity.py pins this against scikit-learn directly. The matched-arm figures above predate the correction and will change on the next benchmark run. The MLP gap is unexplained and still open.

Weka memory includes its in-process JVM baseline. Every number above is recomputed from benchmarks/summary_cv10.csv by benchmarks/tools/headline.py, and the figure is regenerated by benchmarks/tools/figure.py. Full per-algorithm and per-dataset results: tuiml.ai/benchmarks.


Documentation

Full documentation is available at tuiml.ai/docs, including getting started guides, API reference, and tutorials. Want to contribute? See CONTRIBUTING.md, then pick something from the Build Board — algorithms, integrations, and good first issues. Found a security issue? Please report it privately: see SECURITY.md.


License

BSD 3-Clause License. See LICENSE for details.

Citation

@software{tuiml2026,
    title={TuiML: Machine Learning that agents can actually call},
    author={Verma, Nilesh and Bifet, Albert and Pfahringer, Bernhard and Lim, Nick},
    year={2026},
    url={https://tuiml.ai}
}

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Transforms AI assistants into a full ML engineering environment for training and fine-tuning models across multiple backends (local GPU, Mistral, Together AI, OpenAI) and cloud providers (Lambda Labs, RunPod, SSH-accessible VPS), with dataset management, experiment tracking, cost estimation, and deployment to Ollama/Open WebUI.
    3
    PolyForm Noncommercial 1.0.0
  • A
    license
    A
    quality
    A
    maintenance
    Agent-native semantic layer, letting AI agents query databases through specifying intent instead of writing SQL, then compiling structured queries into correct, dialect-aware SQL. Dynamic and expressive, supporting multi-stage queries, time-shifts, and complex join schemas.
    20
    364 PyPI
    221
    MIT