Quickstart
Lemma is three things in one repository: a cards corpus, a Node MCP server
(@artano-ai/mcp-server), and a Python SDK (artano-lemma). Here’s how to
get going with each.
Install
# Node — MCP server (the verification surface)npx @artano-ai/mcp-server
# Python — corpus + lemma CLIpip install artano-lemmaRegister the MCP server
Add Lemma to your runtime’s mcpServers map (Claude Code ~/.claude.json,
Cursor ~/.cursor/mcp.json):
{ "mcpServers": { "lemma": { "command": "npx", "args": ["@artano-ai/mcp-server"] } }}First calls
From a tool-use loop, the model can:
cards_list— list cards (optionaldomainfilter);cards_get— fetch a full card byid(refuses to fabricate unknown ids);ops_get— fetch a runnable ops template (SLURM, Snakemake, Singularity);hypothesis_crosscheck— check an AI-proposed new principle against the corpus and universal priors (dimensional analysis, reference resolution, limits);usce_check— range-check a finished run’s numbers against a card’s validation envelopes;series_check— check a whole reported series against the sign and bound conditions a card declares (reaches cards that deliberately have no envelopes);convergence_check— recompute an order of accuracy from a refinement study rather than trusting a reported number;agreement_check— check whether independent methods agree, within a card’s cross-method tolerances;rag_lookup— semantic search over the corpus (needs a vector store; the other eight work without one).
Inspect the corpus from Python
from artano_lemma import load_cards
cards = load_cards()print(f"{len(cards)} cards across {len({c.domain for c in cards})} domains")
card = next(c for c in cards if c.id == "density-of-states")print(card.name, "·", card.domain)Next steps
- Cards & schema — what a card is and how it is validated.
- The engine — the checks it runs and severity.
- Authoring a card — contribute to the corpus.