Base120 Models
120 canonical mental models as a structured, queryable API. Classified across six transformation types. The structured-reasoning substrate for agents that need to think about problems in named, auditable ways.
What it does
Base120 is a taxonomy of 120 mental models — First Principles, Inversion, Systems Thinking, Pareto, Regression to the Mean, and 115 more — organized into six transformation types: Perspective, In version, COmposition, DEcomposition, REcursion, and SYstems.
Each model has a code (P1, IN6,
SY13), a definition, usage guidance, worked examples,
and metadata. Agents can query by problem shape, retrieve by code,
or recommend matches against a freeform problem statement.
It ships in two forms today: a free REST API (sub-50ms latency, no
auth, Cloudflare edge) and an MCP server for Claude Desktop and
other MCP clients. A dedicated Python client package
(hummbl-base120) is on the roadmap for v0.3.
Use it
# Retrieve by code
curl https://hummbl-api.hummbl.workers.dev/v1/models/P1
# Recommend for a problem (POST)
curl https://hummbl-api.hummbl.workers.dev/v1/recommend \
-H 'Content-Type: application/json' \
-d '{"problem":"How do I prioritize features for my MVP?","limit":5}'
# Stdlib Python client (no dependency)
import urllib.request, json
def get_model(code: str) -> dict:
url = f"https://hummbl-api.hummbl.workers.dev/v1/models/{code}"
with urllib.request.urlopen(url) as r:
return json.loads(r.read())
model = get_model("P1") # First Principles Framing
print(model["definition"])
When to reach for it
- You want agents that reason explicitly with named, auditable frameworks
- You need structured prompt scaffolds that aren't ad-hoc JSON-prompt soup
- You're building decision-support tooling where "which model was applied" matters
- You want the prompt engineering layer of your agent to be reviewable by humans
The contract
Base120.get(code: str) -> Model
Base120.list(transformation: str | None = None) -> list[Model]
Base120.recommend(problem: str, limit: int = 5) -> list[Recommendation]
class Model:
code: str # "P1", "IN6", etc.
name: str
transformation: str # "P", "IN", "CO", "DE", "RE", "SY"
definition: str
usage: str
examples: list[str]
API contract frozen under fm-contracts-v0.1. Explore
the full taxonomy at the Explorer.
See also
- Base120 Explorer — browse all 120 models visually
- API Playground — test the recommendation endpoint
- MCP Attestation — governance for the Base120 MCP server