model-family-tree
Provides tools for exploring model ancestry, descendants, and ecosystem rankings on the Hugging Face Hub, including lineage lookup, children/derivatives listing, family grouping, search, and leaderboards of the most-built-on base models.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@model-family-treewhat is unsloth/Qwen2.5-7B-Instruct based on, and which Qwen base has the most finetunes?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Fly through the Model Galaxy → · 942,270 models in one zoomable WebGL map · Explorer → · search any model, walk its pedigree, share a link.
Open Model Family Tree
Every model on the Hugging Face Hub, its ancestry, and a leaderboard of the base models the ecosystem actually builds on. Rebuilt nightly.
3,161,429 models · 897,225 declare a base model (28%) · 930,179 parent links · 88,174 models have descendants · 45,007 roots in 23,964 families
The most built-on model on the Hub is black-forest-labs/FLUX.1-dev with 43,699 descendants. In the last 90 days it is Qwen/Qwen3.8-27B with 4,531 new ones. The biggest family is Qwen1.5 (71,020).
Install into your agent
claude plugin marketplace add h9-tec/model-family-tree
claude plugin install model-family-tree@model-family-treeRequires uv on PATH. Then ask Claude: what is unsloth/Qwen2.5-7B-Instruct based on, and which Qwen base has the most finetunes? It answers from the lineage and leaderboard MCP tools.
{"mcpServers": {"model-family-tree": {"command": "uv", "args": ["run", "--frozen", "--no-dev", "--directory", "/path/to/model-family-tree", "python", "mcp/server.py"]}}}Tools: lineage(id), children(id), leaderboard(kind), family(name), search(query).
Related MCP server: Dev AI Ecosystem MCP
See it
Every model that has an ancestor or a descendant (942,270 points) in one WebGL map. Families are circle-packed clusters, base models are stars, each derivative is a dot colored by relation and sized by downloads. Scroll to zoom from the whole Hub down to one model, click any dot. | |
Type any model id. Its pedigree is drawn as a radial tree: every ancestor path fans out to the left (merges show all parents), the most downloaded descendants to the right, unfoldable level by level, live from the Hub. | |
All 88,174 models with descendants, sortable and filterable, plus the curated views below. |
Most-descended base models
Unique descendants of every kind: finetunes, adapters (LoRA), quantizations and merges, each counted once however many paths reach it. † marks a base that was deleted or made private but is still referenced. Full top 500 →
# | Model | Descendants | Direct | Last 90d | Finetune / adapter / quantized / merge | Family |
1 | 43,699 | 43,430 | 226 | 678 / 42,878 / 129 / 14 | FLUX.1 | |
2 | 32,564 | 32,534 | 0 | 41 / 32,475 / 46 / 2 | Qwen1.5 | |
3 | 30,656 | 30,626 | 0 | 35 / 30,591 / 28 / 2 | Qwen1.5 | |
4 | 24,115 | 24,035 | 11 | 309 / 23,706 / 89 / 11 | Gemma 1 | |
5 | 22,660 | 2,076 | 3,179 | 11,720 / 6,856 / 3,490 / 594 | Qwen2.5 | |
6 | 21,642 | 3,259 | 2,587 | 9,606 / 6,112 / 5,081 / 843 | Llama 3.1 | |
7 | 15,242 | 7,279 | 1,843 | 6,908 / 4,047 / 3,575 / 712 | Llama 3.1 | |
8 | 14,290 | 6,596 | 2,273 | 8,239 / 3,862 / 1,779 / 410 | Qwen2.5 | |
9 | 13,599 | 13,219 | 783 | 13,054 / 395 / 149 / 1 | DistilBERT | |
10 | 11,598 | 4,012 | 67 | 2,971 / 5,190 / 2,057 / 1,365 | Mistral | |
11 | 11,491 | 11,009 | 158 | 1,417 / 9,974 / 48 / 52 | Stable Diffusion | |
12 | 10,991 | 8,765 | 1,394 | 3,341 / 6,503 / 1,050 / 97 | Qwen3 | |
13 | 10,758 | 1,023 | 1,640 | 4,905 / 4,022 / 1,674 / 157 | Qwen2.5 | |
14 | 10,275 | 1,724 | 123 | 4,206 / 2,069 / 3,013 / 987 | Llama 3 | |
15 | 9,852 | 9,585 | 3 | 453 / 9,294 / 97 / 8 | Gemma 1 | |
16 | 9,709 | 193 | 1,756 | 8,761 / 595 / 348 / 5 | SmolLM2 | |
17 | 9,490 | 1,361 | 934 | 5,952 / 2,198 / 1,285 / 55 | Qwen2.5 | |
18 | 9,447 | 842 | 1,857 | 4,737 / 2,869 / 1,768 / 72 | Qwen3 | |
19 | 9,248 | 377 | 1,708 | 8,606 / 362 / 275 / 5 | SmolLM2 | |
20 | 8,570 | 92 | 1,613 | 8,371 / 133 / 66 / 0 | SmolLM2 | |
21 | 8,484 | 1,133 | 1,346 | 3,816 / 3,093 / 1,490 / 85 | Qwen2.5 | |
22 | 8,469 | 127 | 1,593 | 8,337 / 102 / 30 / 0 | SmolLM2 | |
23 | 8,338 | 8,292 | 1,575 | 8,247 / 85 / 6 / 0 | SmolLM2 | |
24 | 7,884 | 5,040 | 1,491 | 3,707 / 2,650 / 1,458 / 68 | Qwen3 | |
25 | 7,516 | 3,467 | 793 | 3,920 / 1,597 / 1,847 / 152 | Llama 3.2 |
Hot right now: new descendants in the last 90 days
# | Model | Descendants | Direct | Last 90d | Finetune / adapter / quantized / merge | Family |
1 | 4,533 | 2,272 | 4,531 | 824 / 343 / 3,311 / 55 | Qwen3.8 | |
2 | 22,660 | 2,076 | 3,179 | 11,720 / 6,856 / 3,490 / 594 | Qwen2.5 | |
3 | 5,855 | 741 | 3,059 | 2,353 / 1,233 / 2,166 / 103 | Qwen3.5 | |
4 | 21,642 | 3,259 | 2,587 | 9,606 / 6,112 / 5,081 / 843 | Llama 3.1 | |
5 | 4,765 | 2,518 | 2,398 | 1,574 / 1,152 / 1,939 / 100 | Qwen3.5 | |
6 | 4,455 | 342 | 2,367 | 1,733 / 1,205 / 1,481 / 36 | Qwen3.5 | |
7 | 14,290 | 6,596 | 2,273 | 8,239 / 3,862 / 1,779 / 410 | Qwen2.5 | |
8 | 3,935 | 2,288 | 2,040 | 1,451 / 1,091 / 1,361 / 32 | Qwen3.5 | |
9 | 9,447 | 842 | 1,857 | 4,737 / 2,869 / 1,768 / 72 | Qwen3 | |
10 | 15,242 | 7,279 | 1,843 | 6,908 / 4,047 / 3,575 / 712 | Llama 3.1 | |
11 | 9,709 | 193 | 1,756 | 8,761 / 595 / 348 / 5 | SmolLM2 | |
12 | 9,248 | 377 | 1,708 | 8,606 / 362 / 275 / 5 | SmolLM2 | |
13 | 10,758 | 1,023 | 1,640 | 4,905 / 4,022 / 1,674 / 157 | Qwen2.5 | |
14 | 8,570 | 92 | 1,613 | 8,371 / 133 / 66 / 0 | SmolLM2 | |
15 | 8,469 | 127 | 1,593 | 8,337 / 102 / 30 / 0 | SmolLM2 | |
16 | 8,338 | 8,292 | 1,575 | 8,247 / 85 / 6 / 0 | SmolLM2 | |
17 | 6,461 | 914 | 1,575 | 3,751 / 972 / 1,712 / 26 | Qwen3 | |
18 | 7,884 | 5,040 | 1,491 | 3,707 / 2,650 / 1,458 / 68 | Qwen3 | |
19 | 10,991 | 8,765 | 1,394 | 3,341 / 6,503 / 1,050 / 97 | Qwen3 | |
20 | 8,484 | 1,133 | 1,346 | 3,816 / 3,093 / 1,490 / 85 | Qwen2.5 | |
21 | 2,902 | 1,058 | 1,234 | 108 / 2,723 / 68 / 3 | krea-2-raw | |
22 | 2,450 | 241 | 1,234 | 938 / 657 / 846 / 9 | Qwen3.5 | |
23 | 2,868 | 1,666 | 1,218 | 495 / 483 / 1,843 / 46 | Qwen3.6 | |
24 | 6,675 | 681 | 1,149 | 3,367 / 1,630 / 1,584 / 94 | Qwen3 | |
25 | 4,805 | 583 | 1,097 | 2,692 / 984 / 1,109 / 20 | Qwen3 |
Finetunes only
Adapters and quantizations inflate the all-time table (tens of thousands of auto-generated LoRAs sit on a few small bases). This view counts descendants whose own relation to their parent is finetune. Full top 500 →
# | Model | Descendants | Direct | Last 90d | Finetune / adapter / quantized / merge | Family |
1 | 13,599 | 13,219 | 783 | 13,054 / 395 / 149 / 1 | DistilBERT | |
2 | 22,660 | 2,076 | 3,179 | 11,720 / 6,856 / 3,490 / 594 | Qwen2.5 | |
3 | 21,642 | 3,259 | 2,587 | 9,606 / 6,112 / 5,081 / 843 | Llama 3.1 | |
4 | 9,709 | 193 | 1,756 | 8,761 / 595 / 348 / 5 | SmolLM2 | |
5 | 9,248 | 377 | 1,708 | 8,606 / 362 / 275 / 5 | SmolLM2 | |
6 | 8,570 | 92 | 1,613 | 8,371 / 133 / 66 / 0 | SmolLM2 | |
7 | 8,469 | 127 | 1,593 | 8,337 / 102 / 30 / 0 | SmolLM2 | |
8 | 8,338 | 8,292 | 1,575 | 8,247 / 85 / 6 / 0 | SmolLM2 | |
9 | 14,290 | 6,596 | 2,273 | 8,239 / 3,862 / 1,779 / 410 | Qwen2.5 | |
10 | 7,445 | 7,206 | 258 | 7,221 / 147 / 70 / 7 | BERT | |
11 | 15,242 | 7,279 | 1,843 | 6,908 / 4,047 / 3,575 / 712 | Llama 3.1 | |
12 | 9,490 | 1,361 | 934 | 5,952 / 2,198 / 1,285 / 55 | Qwen2.5 | |
13 | 10,758 | 1,023 | 1,640 | 4,905 / 4,022 / 1,674 / 157 | Qwen2.5 | |
14 | 9,447 | 842 | 1,857 | 4,737 / 2,869 / 1,768 / 72 | Qwen3 | |
15 | 4,726 | 4,364 | 204 | 4,534 / 78 / 113 / 0 | XLM-RoBERTa | |
16 | 5,312 | 5,270 | 876 | 4,509 / 772 / 29 / 2 | Qwen2.5 | |
17 | 6,662 | 395 | 583 | 4,505 / 939 / 1,202 / 16 | Gemma 3 | |
18 | 10,275 | 1,724 | 123 | 4,206 / 2,069 / 3,013 / 987 | Llama 3 | |
19 | 4,112 | 4,055 | 14 | 4,103 / 5 / 4 / 0 | BERT | |
20 | 4,718 | 4,394 | 355 | 4,058 / 347 / 313 / 0 | Whisper | |
21 | 7,516 | 3,467 | 793 | 3,920 / 1,597 / 1,847 / 152 | Llama 3.2 | |
22 | 8,484 | 1,133 | 1,346 | 3,816 / 3,093 / 1,490 / 85 | Qwen2.5 | |
23 | 6,461 | 914 | 1,575 | 3,751 / 972 / 1,712 / 26 | Qwen3 | |
24 | 7,884 | 5,040 | 1,491 | 3,707 / 2,650 / 1,458 / 68 | Qwen3 | |
25 | 6,675 | 681 | 1,149 | 3,367 / 1,630 / 1,584 / 94 | Qwen3 |
Families
Roots grouped by series name across organizations (so unsloth/Llama-3.1-8B re-uploads count toward Llama 3.1). Grouping is a heuristic with hand overrides in data/families.yaml; PRs welcome. Full table →
# | Family | Descendants | Last 90d | Roots | Finetune / adapter / quantized / merge | Biggest root |
1 | Qwen1.5 | 71,020 | 6 | 44 | 223 / 70,433 / 348 / 16 | |
2 | Qwen2.5 | 69,454 | 8,357 | 693 | 33,556 / 19,764 / 14,511 / 1,623 | |
3 | Qwen3 | 53,881 | 10,185 | 641 | 23,856 / 16,889 / 12,693 / 441 | |
4 | FLUX.1 | 44,159 | 256 | 16 | 770 / 43,183 / 191 / 15 | |
5 | Gemma 1 | 37,054 | 54 | 184 | 1,751 / 34,349 / 886 / 68 | |
6 | Mistral | 36,431 | 1,041 | 582 | 10,606 / 11,226 / 11,652 / 2,931 | |
7 | Llama 3.1 | 28,226 | 2,800 | 222 | 11,133 / 6,995 / 8,159 / 1,939 | |
8 | Llama 3 | 24,181 | 415 | 543 | 8,062 / 5,859 / 7,794 / 2,466 | |
9 | BERT | 23,168 | 595 | 305 | 22,399 / 508 / 253 / 8 | |
10 | Llama 3.2 | 21,066 | 1,623 | 477 | 9,673 / 5,712 / 5,085 / 596 | |
11 | Qwen3.5 | 18,489 | 8,519 | 147 | 6,996 / 3,982 / 7,307 / 203 | |
12 | Gemma 3 | 18,147 | 1,411 | 140 | 10,568 / 2,976 / 4,382 / 221 | |
13 | Stable Diffusion | 17,845 | 308 | 29 | 3,413 / 14,267 / 95 / 70 | |
14 | Whisper | 15,633 | 1,639 | 196 | 11,637 / 2,332 / 1,657 / 7 | |
15 | DistilBERT | 15,172 | 848 | 81 | 14,398 / 495 / 278 / 1 | |
16 | SmolLM2 | 13,552 | 2,076 | 59 | 10,836 / 1,585 / 1,111 / 20 | |
17 | Gemma 2 | 12,322 | 473 | 226 | 5,069 / 3,171 / 3,141 / 941 | |
18 | Llama 2 | 11,619 | 275 | 413 | 2,973 / 7,066 / 1,367 / 213 | |
19 | Gemma 4 | 10,784 | 3,790 | 126 | 3,181 / 1,947 / 5,501 / 155 | |
20 | Qwen2 | 10,762 | 200 | 167 | 3,162 / 6,024 / 1,488 / 88 | |
21 | DeepSeek-R1 | 8,878 | 414 | 129 | 2,700 / 1,512 / 3,774 / 892 | |
22 | XLM-RoBERTa | 6,305 | 313 | 48 | 5,996 / 137 / 171 / 0 | |
23 | ViT | 6,076 | 179 | 66 | 5,194 / 752 / 130 / 0 | |
24 | TinyLlama | 5,895 | 111 | 127 | 1,431 / 3,491 / 880 / 93 | |
25 | Qwen3.6 | 5,888 | 2,244 | 50 | 1,096 / 1,118 / 3,577 / 90 |
Organizations
Descendants of every root owned by the organization, deduplicated. Full table →
# | Organization | Descendants of its roots | Last 90d | Roots | Biggest root |
1 | 232,823 | 35,724 | 148 | ||
2 | 91,482 | 7,415 | 325 | ||
3 | 68,807 | 4,914 | 50 | ||
4 | 46,075 | 689 | 20 | ||
5 | 32,662 | 1,399 | 30 | ||
6 | 24,198 | 409 | 269 | ||
7 | 22,254 | 1,362 | 255 | ||
8 | 19,333 | 1,987 | 21 | ||
9 | 17,611 | 1,279 | 490 | ||
10 | 17,509 | 959 | 9 | ||
11 | 16,141 | 2,228 | 29 | ||
12 | 15,208 | 247 | 73 | ||
13 | 14,679 | 372 | 12 | ||
14 | 14,016 | 1,430 | 77 | ||
15 | 9,888 | 467 | 19 |
How it works
Source. The daily
cfahlgren1/hub-statsdump of the Hub's/api/models(Apache-2.0), which carries thebase_modelmetadata model authors declare in their cards, plus the legacybase_model:tags as a fallback.Graph. Child → parent edges with the declared relation (
finetune,adapter,quantized,merge). Merges give a DAG, mis-tagged cards give the occasional cycle (67 nodes today); both are handled.Counts. Descendant sets are built children-first and unioned, so every model is counted once per ancestor.
directis declared children;totalis the whole subtree.Families. Roots (models that declare no parent) are grouped by a series heuristic over the model name, with overrides in
data/families.yaml.Galaxy layout. Each root's subtree is a radial tree (depth rings sized by population, wedges by subtree size); roots are circle-packed inside their family and families into the galaxy, with a port of d3's front-chain packing. Positions ship as a 10 MB binary, ids load lazily in chunks.
Refresh. A GitHub Action rebuilds everything nightly, commits
dist/andREADME.md, and attaches the full node and edge tables plus the galaxy data to thedata-latestrelease, which the site reads.
Caveats
Declared ancestry only. 28% of models declare a base. Untagged re-uploads and GGUF conversions without metadata are invisible, so every number is a floor.
Activity, not quality. A base with 30,000 adapters was mostly a tutorial default. Read the finetune-only and 90-day tables alongside the all-time one.
Ghost parents. 3,938 referenced bases are no longer public. They stay in the tree, marked †.
Families are heuristic. Series detection is a regex over names. Fix a wrong grouping by editing
data/families.yaml.
Data files
File | What |
Top 500 models (all time, 90 days, finetune-only), families, organizations | |
Every model with descendants, compact columns | |
Monthly new descendants for the top families and models | |
Top 25 children by downloads for the 3,000 most-descended parents | |
Plain-text summary for LLMs | |
|
|
Build it yourself
uv sync
uv run python scripts/build.py all # downloads the dump (~1.6 GB), builds in about 15 seconds
uv run python scripts/build.py build # rebuild from the cached dump
uv run pytestRelated
Arabic AI Atlas: the same idea for one language's ecosystem, with a map.
Hugging Face shows the tree for one model on its page; this repo aggregates the whole Hub.
License
Code MIT. Generated data CC BY 4.0, derived from Hub metadata via cfahlgren1/hub-stats (Apache-2.0).
Generated 2026-10-18.
Available Tools
6 toolschildrenB
Direct descendants of a model, most downloaded first (or sort="likes").
`relation` filters to finetune, adapter, quantized or merge. Live from the Hub API;
falls back to the nightly top-25 list when offline. Example: children(id="Qwen/Qwen3-8B", relation="finetune")
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| sort | No | downloads | |
| limit | No | ||
| relation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose meaningful behavior: data comes live from the Hub API and falls back to a nightly top-25 list when offline. It does not cover auth requirements, rate limits, or what happens at the limit boundary, so it is partial but genuinely informative.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then layers in the sort option, relation filter, data-source behavior, and an example. Every sentence carries information and there is no padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter tool with no annotations and no output schema, the description covers purpose, relation, sort, and data fallback reasonably well. It still omits limit semantics and any indication of the return shape, which the absent output schema means the description could have supplied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It enumerates the accepted relation values (finetune, adapter, quantized, merge) and hints at sort alternatives via sort="likes", but leaves the id and limit parameters unexplained and never states the default sort.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Direct descendants of a model', which is concrete and distinguishable from a generic listing. However, it does not explicitly differentiate itself from close siblings like 'family' or 'lineage', leaving the agent to infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through the example invocation and the relation filter, giving the agent a reasonable sense of when to call it. There is no explicit when-to-use/when-not guidance or comparison against the siblings family, lineage, or search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
familyC
One model family (e.g. "Qwen2.5", "Llama 3.1", "FLUX.1"): totals, relation breakdown, roots, organizations and the top models in it by descendants.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the response content fairly well (totals, relation breakdown, organizations), but says nothing about read-only semantics, cost, pagination, or error behavior for an unknown family name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that leads with the resource and its concrete examples before listing returned content. No filler, though the sentence-fragment form (no verb) and the dense trailing list slightly reduce crispness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description must cover both scope and behavior. It adequately conveys what data comes back, but leaves the read-only assumption, identifier-matching rules, and the relationship to sibling tools unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single 'name' parameter, so the description must compensate. It partially does by giving concrete examples ('Qwen2.5', 'Llama 3.1', 'FLUX.1'), which conveys the expected identifier format, but it never states matching rules (exact string, case sensitivity, alias handling).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (a single model family) and enumerates the payload it returns: totals, relation breakdown, roots, organizations, and top models by descendants. That is concrete enough for an agent to know what it gets, but the verb is only implied and there is no differentiation from siblings like 'lineage' or 'children', which overlap with the 'roots'/'descendants' content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no exclusions. Siblings 'lineage', 'children', 'stats' and 'leaderboard' all plausibly cover model families, yet the description never states when to pick this tool over them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
leaderboardB
Most-descended base models on the Hub.
kind: all_time (unique descendants of every kind), 90d (new descendants in the last 90
days), finetune (finetune descendants only; filters out LoRA and quantization noise),
families (roots grouped by series across orgs), orgs (by organization owning the roots).
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | all_time | |
| limit | No | ||
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It never states that this is a read-only query, how results are ordered, whether pagination is needed for large result sets, or any auth/rate constraints; the only behavioral hint is the filtering semantics implied by 'finetune (filters out LoRA and quantization noise)'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first sentence, followed by a compact enumeration of kind values. It is dense but every clause carries information, with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the dominant parameter (kind) is fully covered. What is missing is routing guidance relative to the five siblings and any note on ordering or result-size behavior, which leaves the agent to guess when this tool is the right pick.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does so thoroughly for the key parameter: every kind value is defined with concrete meaning (all_time, 90d, finetune, families, orgs). limit and offset are left unexplained, but their standard pagination meaning is largely self-evident from the names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (base models on the Hub) and a specific ranking criterion (most-descended), so an agent can tell this is a ranked-listing tool rather than a lookup. It does not, however, distinguish itself from close siblings such as stats, family, or lineage, which an agent must infer from name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus the alternatives (stats, family, lineage, search). The kind enumeration describes modes of the tool itself, not selection criteria against siblings, and no prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lineageA
Ancestry of one Hugging Face model: the chain of declared base models up to the root, plus how many descendants the model itself has.
Walks `base_model` metadata live from the Hub (first parent at each step; merges list all
parents in `parents`). Each hop carries the relation (finetune, adapter, quantized, merge)
and the parent's descendant counts from the nightly build.
Example: lineage(id="unsloth/Qwen2.5-7B-Instruct")
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| max_depth | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the load and does well: it discloses a live walk of `base_model` metadata from the Hub, first-parent-at-each-step semantics, that merges expose all parents in `parents`, that each hop carries a relation type (finetune, adapter, quantized, merge), and that descendant counts come from a nightly build. Auth requirements and rate limits remain undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the one-line purpose, followed by mechanics and a concrete example in three short blocks. Little waste, though the merge/parents parenthetical is dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read tool with no annotations and no output schema, the description covers what the return chain contains (hops with relation and descendant counts) and where the data comes from. The only real gap is the undocumented `max_depth` behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It illustrates `id` with a concrete example, which is useful, but `max_depth` (default 12) is never explained in the description even though it governs how far up the chain the walk goes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource and scope: the ancestry chain of a Hugging Face model plus its own descendant count. An agent can tell this is about upward lineage rather than listing children, though sibling names (children, family) are never cited to sharpen the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied via the example call `lineage(id="...")`. There is no statement of when to prefer this over `children` or `family`, nor any prerequisite or exclusion, so the agent must infer routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchA
Find models with descendants whose id contains the query (case-insensitive), most descended first. Covers the 88k models that have at least one declared child.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose three real behavioral traits: case-insensitive substring matching, result ordering ('most descended first'), and a scope limitation ('covers the 88k models that have at least one declared child'), which tells the agent childless models are excluded. It does not cover pagination or the limit cap, but the disclosures it does make are meaningful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core search semantics followed by the scope caveat. Nothing is redundant and no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the search semantics are adequately covered. However, for a bare read-search with no annotations, the absence of any routing guidance against the five related sibling tools leaves a real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains what 'query' matches against (ids, case-insensitive substring) but says nothing about 'limit' — the schema shows only a bare integer with default 15, and the description never states that it caps the number of returned models.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb ('Find') and a precisely scoped resource ('models with descendants whose id contains the query'), including the match and ordering semantics. It is clear in isolation, but never distinguishes itself from siblings like family, lineage, or children, which is the one thing that would separate it from the closest alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use or when-not-to-use guidance and does not mention any of the sibling tools (family, lineage, children, leaderboard, stats). An agent must infer from the name alone whether this is the right tool versus lineage or children.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
statsB
Headline numbers for the current build: models tracked, links, parents, roots, families, dates.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden. It lists the metric categories but does not disclose read-only status, permissions, what 'current build' resolves to, or any execution constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that names the output and enumerates the metrics with no wasted words. Structure is efficient and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema or annotations, the description covers what is returned at a high level. However, it leaves open what 'current build' means and omits behavioral basics such as read-only nature, making it adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and the input schema is empty, so the baseline is 4. The description neither adds nor contradicts parameter information, which is appropriate given there are no parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear purpose: returning headline numbers for the current build, with enumerated metrics (models tracked, links, parents, roots, families, dates). It does not explicitly distinguish itself from siblings such as leaderboard, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, prerequisites, or alternatives are provided. The phrase 'headline numbers' implies a summary use case, but the description never states when this tool should be chosen over siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v0.1.0- First observed
children - First observed
family - First observed
leaderboard - First observed
lineage - First observed
search - First observed
stats
TDQS
Scored across 6 tools
The core directional tools are clearly distinct: lineage walks ancestry upward while children lists descendants downward, and search/stats are unambiguous. family vs leaderboard have some conceptual overlap (family gives a single family's totals/roots/orgs while leaderboard ranks families), but the descriptions differentiate them adequately.
All six tools use a single, lowercase noun (family, lineage, children, leaderboard, search, stats), with no camelCase/snake_case mixing or verb-noun deviations. The convention is uniform and predictable across the whole set.
Six tools is well within the sweet spot for this domain, and each covers a distinct query type (single-family, ancestry, descendants, rankings, search, aggregate stats). Nothing feels redundant or missing in terms of count.
The surface covers the full genealogy lifecycle: upward ancestry, downward descendants, per-family breakdowns, rankings, search, and build stats. Minor gaps exist (e.g. no direct relation-type aggregation or merge-graph view beyond lineage), but core workflows are well served.
Maintenance
Related MCP Connectors
Code intelligence for LLMs. Analyze, search, and retrieve code from any public git repository.
Search curated open-weight AI model releases, licenses, architectures, and primary sources.
31Gateway between LLM agents and world data through eight tools and a bundled endpoint catalog.
Account, billing, team, API key and model discovery tools for agents that use ModelsLab.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables access to the Hugging Face Hub API to search and retrieve information about machine learning models, datasets, and their metadata. Provides comprehensive tools for exploring the Hugging Face ecosystem including model details, dataset information, and parquet file access.8-
- FlicenseNot gradedqualityCmaintenanceProvides AI agents with 6 tools for searching Hugging Face models, GitHub trending repos, analyzing GitHub repositories, fetching dev.to articles, Show HN launches, and Product Hunt daily launches. Built for dev tooling research and AI ecosystem analysis.-
- AlicenseNot gradedqualityBmaintenanceSearch and retrieve models, datasets, and spaces from Hugging Face Hub. Enables browsing trending items and getting detailed info on repos.37 npmMIT
- AlicenseNot gradedqualityDmaintenanceProvides AI agents with a toolset to query model inventories, trace dependencies, and analyze the impact of changes across machine learning models and data pipelines.15Apache 2.0