# io.github.Filip-Pajalic/tensorcad (npm · @tensor-cad/mcp)

Design transformer LLM architectures and report their parameters, FLOPs, memory and cost

- Trust score: 86/100 (high trust)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-29

## Components

- npm · `@tensor-cad/mcp`: 86/100 (this document), [markdown](https://verifymcp.io/servers/filip-pajalic-tensorcad/tensor-cad-mcp.md), [page](https://verifymcp.io/servers/filip-pajalic-tensorcad/tensor-cad-mcp)

## Channel facts

- Registry: `npm`
- Package: `@tensor-cad/mcp`
- Version: `0.1.21`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-29.

- **Supply Chain Security**: 100/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - 0 of 5 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to Filip-Pajalic/TensorCAD).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 2 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 87/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Tool/resource definitions use about 5641 tokens (~74/item across 76 items; 19 tools + 57 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 20/100
  - Stability observed for 6 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 97/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 89% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 19 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 21 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the io.github.Filip-Pajalic/tensorcad MCP server?

io.github.Filip-Pajalic/tensorcad runs locally as an npm package, launched with npx -y @tensor-cad/mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add filip-pajalic-tensorcad -- npx -y @tensor-cad/mcp
```

### Cursor

```json
{
  "mcpServers": {
    "filip-pajalic-tensorcad": {
      "command": "npx",
      "args": [
        "-y",
        "@tensor-cad/mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "filip-pajalic-tensorcad": {
      "command": "npx",
      "args": [
        "-y",
        "@tensor-cad/mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add filip-pajalic-tensorcad -- npx -y @tensor-cad/mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "filip-pajalic-tensorcad": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@tensor-cad/mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add filip-pajalic-tensorcad --command npx --arg -y --arg @tensor-cad/mcp
```

### Hermes

```yaml
mcp_servers:
  filip-pajalic-tensorcad:
    command: "npx"
    args: ["-y", "@tensor-cad/mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "filip-pajalic-tensorcad": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@tensor-cad/mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add filip-pajalic-tensorcad -t stdio -c npx -a -y @tensor-cad/mcp
```

### Other

```json
{
  "mcpServers": {
    "filip-pajalic-tensorcad": {
      "command": "npx",
      "args": [
        "-y",
        "@tensor-cad/mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-29 (score 86, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-28 (score 85, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-09-27 (score 85, +1)

No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-26 (score 84, 0)

- [security regression] Known CVEs: pass → unverified
- [functional regression] Dependency health: 1.00 → unverified
- [functional] Package version: 0.1.18 → 0.1.21
- [functional] Package version: 0.1.18 → 0.1.20
- [functional] Package version: 0.1.18 → 0.1.19

### 2026-09-25 (score 84, +27)

- [security regression] Stability: 0.03 → unverified
- [security regression] Tool safety: pass → unverified
- [security improvement] Known CVEs: unverified → pass
- [security improvement] Malware scan: unverified → pass
- [functional regression] Schema quality: 4746 → 5641
- [functional regression] Schema quality: 4746 → 5426
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Schema quality: 100 → unverified
- [functional improvement] Dependency health: unverified → 1.00
- [functional] Package version: 0.1.13 → 0.1.18
- [functional] Package version: 0.1.13 → 0.1.17
- [functional] Package version: 0.1.13 → 0.1.16
- [functional] Package version: 0.1.13 → 0.1.15
- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-09-24 (score 57, −11)

- [security regression] Known CVEs: pass → unverified
- [security regression] Tool safety: pass → unverified
- [security improvement] Malware scan: unverified → pass
- [security] Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.
- [functional regression] Capabilities: pass → unverified
- [functional regression] Dependency health: 1.00 → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Schema quality: 100 → unverified
- [functional improvement] Stability: unverified → 0.03
- [functional] Package version: 0.1.8 → 0.1.13
- [functional] Package version: 0.1.8 → 0.1.12
- [functional] Package version: 0.1.8 → 0.1.11
- [functional] Package version: 0.1.8 → 0.1.10
- [functional] Package version: 0.1.8 → 0.1.9

### 2026-09-23 (score 68)

First indexed and scored.

## MCP tools (19)

### `tensorcad_list_designs` (~73 tokens)

List designs

List the designs this server has open, the built-in reference architectures you can start from, and the .tensorcad.json files it can see on disk. Start here when you do not already hold a design_id.

Input parameters:

- `include_files` (boolean): Also scan the working directory for .tensorcad.json files.

Output parameters:

- `designs` (array)
- `files` (array)
- `presets` (array)

### `tensorcad_new_design` (~261 tokens)

New design

Create a design from a reference architecture, or an empty one with just the B and T runtime symbols. Returns the design_id every other tool needs.

Input parameters:

- `name` (string): Name for the new design. Defaults to the preset's name.
- `preset` (string): One of: nano-sort, gpt2-small, gpt2-medium, gpt2-large, gpt2-xl, nanogpt, bloom-7b1, t5-small, flan-t5-base, llama-2-7b, mistral-7b, llama-3-8b, llama-3-70b, llama-3.1-405b, qwen2.5-7b, qwen3-8b, gem…

Output parameters:

- `design_id` (string)
- `name` (string)
- `outline` (object)
- `params_total` (number)
- `revision` (integer)
- `source` (string)

### `tensorcad_open_design` (~61 tokens)

Open design

Load a .tensorcad.json document from disk and return a design_id for it. Opening the same path twice returns the same handle.

Input parameters:

- `path` (string, required): Path to a .tensorcad.json file, absolute or relative to the server's directory.

Output parameters:

- `design_id` (string)
- `name` (string)
- `params_total` (number)
- `path` (string)
- `revision` (integer)
- `validation` (object)

### `tensorcad_save_design` (~82 tokens)

Save design

Write a design to disk as .tensorcad.json. Overwrites the file it was opened from unless a path is given.

Input parameters:

- `design_id` (string, required): Handle returned by tensorcad_new_design or tensorcad_open_design, e.g. "dsn_1".
- `path` (string): Where to write. Defaults to the path it was opened from.

Output parameters:

- `bytes` (integer)
- `design_id` (string)
- `path` (string)
- `revision` (integer)

### `tensorcad_get_design` (~110 tokens)

Get design

Read a design. Use format "outline" (the default) first: it is the whole structure, symbol table and edge shapes in a fraction of the tokens. Use format "full" only when you need the literal JSON document.

Input parameters:

- `design_id` (string, required): Handle returned by tensorcad_new_design or tensorcad_open_design, e.g. "dsn_1".
- `format` (string): "outline" is a compact block/edge summary; "full" is the whole document.

Output parameters:

- `design_id` (string)
- `dirty` (boolean)
- `document` (object): The literal design document.
- `format` (string)
- `name` (string)
- `outline` (object)
- `params_active` (number)
- `params_total` (number)
- `path` (string)
- `revision` (integer)

### `tensorcad_get_block` (~98 tokens)

Get block

One block of a design: its parameters as written and as resolved, the inferred shape on every port, what each port is wired to, and how many trainable parameters it contributes.

Input parameters:

- `design_id` (string, required): Handle returned by tensorcad_new_design or tensorcad_open_design, e.g. "dsn_1".
- `path` (string, required): Block path from the outline, e.g. "layers/block" or "embed".

Output parameters:

- `category` (string)
- `children` (array)
- `design_id` (string)
- `formula` (string)
- `id` (string)
- `inputs` (array)
- `instances` (number)
- `kind` (string)
- `label` (string)
- `outputs` (array)
- `param_errors` (array)
- `params` (object)
- `params_count` (number)
- `path` (string)
- `resolved_params` (object)
- `revision` (integer)
- `summary` (string)
- `type` (string)

### `tensorcad_search_catalog` (~97 tokens)

Search catalog

Search the block catalog. Returns each block's parameter schema, port patterns and documentation, which is what you need before adding a block with tensorcad_apply_ops.

Input parameters:

- `category` (string): attention, mlp, norm, embedding, container, io, ...
- `kind` (string)
- `limit` (integer): Default 20.
- `query` (string): Substring matched against type, category, summary and formula.

Output parameters:

- `blocks` (array)
- `categories` (array)
- `total` (integer): Matches before the limit was applied.

### `tensorcad_apply_ops` (~135 tokens)

Apply edits

Apply a batch of edits to a design. The batch is all-or-nothing: the first rejected operation aborts it and the design is left untouched. Pass expected_revision to be told about a concurrent edit instead of silently overwriting it. Returns the new revision, what changed, and a fresh validation summary.

Input parameters:

- `design_id` (string, required): Handle returned by tensorcad_new_design or tensorcad_open_design, e.g. "dsn_1".
- `expected_revision` (integer): Revision you last read. The call is rejected if the design has moved on.
- `ops` (array, required): Edits applied in order.

Output parameters:

- `applied` (array): One line per operation, in order.
- `design_id` (string)
- `name` (string)
- `params_active` (number)
- `params_delta` (number): Change in total parameters caused by this batch.
- `params_total` (number)
- `previous_revision` (integer)
- `revision` (integer)
- `validation` (object)

### `tensorcad_validate` (~386 tokens)

Validate design

Run every design rule: shape and symbol errors, kernel-friendly head dimensions, tensor-core multiples, whether training and serving fit the chosen device, Chinchilla sanity and drift from published numbers. Each finding carries a fix hint.

Input parameters:

- `B` (integer): Micro-batch size.
- `S` (integer): Source length, for an encoder-decoder: the second sequence its encoder runs along. Defaults to the document's own S; ignored by a design that declares none.
- `T` (integer): Sequence length. Defaults to the document's own T.
- `concurrency` (integer): Concurrent sequences when serving.
- `design_id` (string, required): Handle returned by tensorcad_new_design or tensorcad_open_design, e.g. "dsn_1".
- `dp` (integer): Data parallel degree.
- `dtype` (string): Training dtype. Default bf16.
- `ep` (integer): Expert parallel degree.
- `gpus` (integer)
- `hardware` (string): Hardware id: h100-sxm, h200-sxm, b200, a100-80, rtx5080 or rtx4090. Default h100-sxm.
- `mfu` (number): Model FLOPs utilization, 0..1.
- `optimizer` (string)
- `packing` (object): Training rows packed with documents, for a design whose mask keeps them apart (doc(b, q) == doc(b, kv)). Moves the training figures and the cost, not serving.
- `pp` (integer): Pipeline parallel degree.
- `recompute` (string)
- `severity` (string): Only return findings at least this bad.
- `tokens` (number): Training token budget. Defaults to Chinchilla-optimal.
- `tp` (integer): Tensor parallel degree.
- `zero` (integer): ZeRO/FSDP sharding stage.

Output parameters:

- `counts` (object)
- `design_id` (string)
- `findings` (array)
- `name` (string)
- `ok` (boolean)
- `params_total` (number)
- `revision` (integer)

### `tensorcad_analyze` (~372 tokens)

Analyze design

Parameters, FLOPs per token, KV cache, training and serving memory, decode throughput, training cost and Chinchilla position, for a given sequence length, batch, dtype, device, GPU count and parallel plan.

Input parameters:

- `B` (integer): Micro-batch size.
- `S` (integer): Source length, for an encoder-decoder: the second sequence its encoder runs along. Defaults to the document's own S; ignored by a design that declares none.
- `T` (integer): Sequence length. Defaults to the document's own T.
- `concurrency` (integer): Concurrent sequences when serving.
- `design_id` (string, required): Handle returned by tensorcad_new_design or tensorcad_open_design, e.g. "dsn_1".
- `dp` (integer): Data parallel degree.
- `dtype` (string): Training dtype. Default bf16.
- `ep` (integer): Expert parallel degree.
- `gpus` (integer)
- `hardware` (string): Hardware id: h100-sxm, h200-sxm, b200, a100-80, rtx5080 or rtx4090. Default h100-sxm.
- `mfu` (number): Model FLOPs utilization, 0..1.
- `optimizer` (string)
- `packing` (object): Training rows packed with documents, for a design whose mask keeps them apart (doc(b, q) == doc(b, kv)). Moves the training figures and the cost, not serving.
- `pp` (integer): Pipeline parallel degree.
- `recompute` (string)
- `tokens` (number): Training token budget. Defaults to Chinchilla-optimal.
- `tp` (integer): Tensor parallel degree.
- `zero` (integer): ZeRO/FSDP sharding stage.

Output parameters:

- `chinchilla` (object)
- `cost` (object)
- `design_id` (string)
- `errors` (array)
- `flops` (object)
- `kv` (object)
- `memory` (object)
- `name` (string)
- `options` (object)
- `params` (object)
- `revision` (integer)
- `throughput` (object)

### `tensorcad_generate_code` (~131 tokens)

Generate code

Emit a runnable PyTorch module plus the design document. Without out_dir the file contents come back in the result; with out_dir they are written to disk and only a manifest comes back.

Input parameters:

- `class_name` (string): Class name for the top-level module.
- `design_id` (string, required): Handle returned by tensorcad_new_design or tensorcad_open_design, e.g. "dsn_1".
- `include_smoke_test` (boolean): Emit a __main__ block that checks the size.
- `out_dir` (string): Directory to write into. Omit to get the contents inline.

Output parameters:

- `design_id` (string)
- `files` (array)
- `out_dir` (string)
- `revision` (integer)
- `warnings` (array)
- `wrote` (boolean)

### `tensorcad_checkpoint` (~85 tokens)

Checkpoint design

Snapshot a design under a name you can come back to. Take one before an experiment so tensorcad_restore can put it back exactly.

Input parameters:

- `design_id` (string, required): Handle returned by tensorcad_new_design or tensorcad_open_design, e.g. "dsn_1".
- `label` (string): What this snapshot is, e.g. "before widening the FFN".

Output parameters:

- `checkpoint_id` (string)
- `checkpoints` (array)
- `created_at` (string)
- `design_id` (string)
- `label` (string)
- `revision` (integer)

### `tensorcad_restore` (~97 tokens)

Restore design

Put a design back. With a checkpoint_id it restores that snapshot; without one it undoes the most recent tensorcad_apply_ops batch. Either way the revision moves forward, so a stale expected_revision still fails.

Input parameters:

- `checkpoint_id` (string): Omit to undo the last batch of edits.
- `design_id` (string, required): Handle returned by tensorcad_new_design or tensorcad_open_design, e.g. "dsn_1".

Output parameters:

- `design_id` (string)
- `name` (string)
- `params_total` (number)
- `restored_from` (string)
- `revision` (integer)
- `validation` (object)

### `tensorcad_explain` (~405 tokens)

Explain a block

What one block is and what it contributes: its parameters as written and as evaluated, the shape on every port, its share of the model's weights and compute, and its documentation. Use it to answer "why is this block this size" without reading the whole design.

Input parameters:

- `B` (integer): Micro-batch size.
- `S` (integer): Source length, for an encoder-decoder: the second sequence its encoder runs along. Defaults to the document's own S; ignored by a design that declares none.
- `T` (integer): Sequence length. Defaults to the document's own T.
- `concurrency` (integer): Concurrent sequences when serving.
- `design_id` (string, required): Handle returned by tensorcad_new_design or tensorcad_open_design, e.g. "dsn_1".
- `dp` (integer): Data parallel degree.
- `dtype` (string): Training dtype. Default bf16.
- `ep` (integer): Expert parallel degree.
- `gpus` (integer)
- `hardware` (string): Hardware id: h100-sxm, h200-sxm, b200, a100-80, rtx5080 or rtx4090. Default h100-sxm.
- `mfu` (number): Model FLOPs utilization, 0..1.
- `optimizer` (string)
- `packing` (object): Training rows packed with documents, for a design whose mask keeps them apart (doc(b, q) == doc(b, kv)). Moves the training figures and the cost, not serving.
- `path` (string, required): Full path of the block, e.g. "layers/block/attn".
- `pp` (integer): Pipeline parallel degree.
- `recompute` (string)
- `tokens` (number): Training token budget. Defaults to Chinchilla-optimal.
- `tp` (integer): Tensor parallel degree.
- `zero` (integer): ZeRO/FSDP sharding stage.

Output parameters:

- `copies` (object)
- `design_id` (string)
- `flops_per_token` (number)
- `kind` (string)
- `parameters` (array)
- `params` (number)
- `path` (string)
- `ports` (object)
- `revision` (integer)
- `share_of_flops` (number)
- `share_of_params` (number)
- `summary` (string)
- `type` (string)

### `tensorcad_scale` (~185 tokens)

Scale a design

Shrink a design towards a parameter budget while keeping its proportions, and save the result as a new design. Use it to get a bench-sized proxy of a large architecture: the widths and depth move together, the head dimension stays sane, and the result is reported with how close it landed.

Input parameters:

- `design_id` (string, required): Handle returned by tensorcad_new_design or tensorcad_open_design, e.g. "dsn_1".
- `keep_depth` (boolean): Hold the layer count fixed and move only the width.
- `target_basis` (string): Whether target_params counts the embedding tables. At bench sizes "non-embedding" is usually meant.
- `target_params` (number, required): The parameter count to aim for.
- `tie_head` (boolean): Share the output projection with the embedding.
- `vocab` (integer): Replace the vocabulary, for a smaller tokenizer.

Output parameters:

- `achieved` (number)
- `changes` (array)
- `design_id` (string): The new design, saved in this session.
- `from` (string)
- `name` (string)
- `notes` (array)
- `target` (number)

### `tensorcad_mup` (~179 tokens)

Build a width ladder

The same design at several widths, with what to multiply the initialization and the learning rate by at each, following Tensor Programs V. Sweep hyperparameters at the narrow end and carry the answer up: a learning rate tuned at the base rung is the right one at every rung, scaled per class. Every rung is saved as a design of its own, ready to analyze or generate. It does not choose a learning rate; that is what the sweep is for.

Input parameters:

- `base_width` (number): The width the sweep happens at. Omit for the narrowest.
- `design_id` (string, required): Handle returned by tensorcad_new_design or tensorcad_open_design, e.g. "dsn_1".
- `widths` (array): The widths to build. Omit to halve the design's own width down to a width worth sweeping at.

Output parameters:

- `base_width` (number)
- `head_dim` (number): Held fixed while the width moves: the heads get more numerous, not wider.
- `notes` (array)
- `rungs` (array)
- `width_symbol` (string)

### `tensorcad_plan` (~461 tokens)

Plan a cluster

Every way of splitting the training across a cluster that fits, least demanding first. Prices data, tensor, pipeline and expert parallelism, the four ZeRO stages, sequence parallelism and the three recompute settings. Memory is the claim and it is arithmetic; which plan is fastest is not claimed, so each one carries a note about what it costs to run.

Input parameters:

- `B` (integer): Micro-batch size.
- `S` (integer): Source length, for an encoder-decoder: the second sequence its encoder runs along. Defaults to the document's own S; ignored by a design that declares none.
- `T` (integer): Sequence length. Defaults to the document's own T.
- `concurrency` (integer): Concurrent sequences when serving.
- `design_id` (string, required): Handle returned by tensorcad_new_design or tensorcad_open_design, e.g. "dsn_1".
- `dp` (integer): Data parallel degree.
- `dtype` (string): Training dtype. Default bf16.
- `ep` (integer): Expert parallel degree.
- `gpus` (integer, required): How many devices there are.
- `gpus_per_node` (integer): Bounds the tensor-parallel degree. Default 8.
- `hardware` (string): Hardware id: h100-sxm, h200-sxm, b200, a100-80, rtx5080 or rtx4090. Default h100-sxm.
- `headroom` (number): Fraction of device memory left free. Default 0.1.
- `limit` (integer): How many plans to return. Default 8.
- `mfu` (number): Model FLOPs utilization, 0..1.
- `optimizer` (string)
- `packing` (object): Training rows packed with documents, for a design whose mask keeps them apart (doc(b, q) == doc(b, kv)). Moves the training figures and the cost, not serving.
- `pp` (integer): Pipeline parallel degree.
- `recompute` (string)
- `tokens` (number): Training token budget. Defaults to Chinchilla-optimal.
- `tp` (integer): Tensor parallel degree.
- `zero` (integer): ZeRO/FSDP sharding stage.

Output parameters:

- `budget_bytes` (number)
- `closest` (object)
- `considered` (integer)
- `design_id` (string)
- `fits` (array)
- `hardware` (string)
- `notes` (array)
- `revision` (integer)

### `tensorcad_diff` (~389 tokens)

Compare two designs

What changed between two designs and what it cost: the symbols, blocks and wires that moved, then the parameters, FLOPs, cache and memory. Both sides are measured at one operating point, so the attention terms are comparable. Use it after an edit, or against a preset, to check the change did what was meant.

Input parameters:

- `B` (integer): Micro-batch size.
- `S` (integer): Source length, for an encoder-decoder: the second sequence its encoder runs along. Defaults to the document's own S; ignored by a design that declares none.
- `T` (integer): Sequence length. Defaults to the document's own T.
- `a` (string, required): The design to compare from.
- `b` (string, required): The design to compare to.
- `concurrency` (integer): Concurrent sequences when serving.
- `dp` (integer): Data parallel degree.
- `dtype` (string): Training dtype. Default bf16.
- `ep` (integer): Expert parallel degree.
- `gpus` (integer)
- `hardware` (string): Hardware id: h100-sxm, h200-sxm, b200, a100-80, rtx5080 or rtx4090. Default h100-sxm.
- `mfu` (number): Model FLOPs utilization, 0..1.
- `optimizer` (string)
- `packing` (object): Training rows packed with documents, for a design whose mask keeps them apart (doc(b, q) == doc(b, kv)). Moves the training figures and the cost, not serving.
- `pp` (integer): Pipeline parallel degree.
- `recompute` (string)
- `tokens` (number): Training token budget. Defaults to Chinchilla-optimal.
- `tp` (integer): Tensor parallel degree.
- `zero` (integer): ZeRO/FSDP sharding stage.

Output parameters:

- `a` (string)
- `at` (object)
- `b` (string)
- `blocks` (object)
- `edges` (object)
- `identical` (boolean): True when nothing structural moved; the numbers may still differ.
- `metrics` (array)
- `symbols` (object)

### `tensorcad_import_hf` (~106 tokens)

Import a Hugging Face config

Read a Hugging Face `config.json` into a design and save it in this session. Covers the Llama, Mistral, Qwen, Gemma, Mixtral, DeepSeek and GPT-2 families. Anything the importer cannot model faithfully comes back as a warning rather than being approximated silently.

Input parameters:

- `config` (string, required): The contents of config.json.
- `name` (string): A name for the design; the config's own is used otherwise.

Output parameters:

- `design_id` (string)
- `name` (string)
- `params_total` (number)
- `warnings` (array)

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/filip-pajalic-tensorcad/tensor-cad-mcp#diagnostics

## Score history

- 2026-09-29: 86
- 2026-09-28: 85
- 2026-09-27: 85
- 2026-09-26: 84
- 2026-09-25: 84
- 2026-09-24: 57
- 2026-09-23: 68

## Common questions

### What is the io.github.Filip-Pajalic/tensorcad MCP server?

io.github.Filip-Pajalic/tensorcad is an MCP server listed in the public MCP registry as io.github.Filip-Pajalic/tensorcad. Design transformer LLM architectures and report their parameters, FLOPs, memory and cost. This page covers its npm package (@tensor-cad/mcp).

### Is the io.github.Filip-Pajalic/tensorcad MCP server safe to use?

io.github.Filip-Pajalic/tensorcad scores 86 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 29 September 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the io.github.Filip-Pajalic/tensorcad MCP server expose?

io.github.Filip-Pajalic/tensorcad exposes 19 tools: tensorcad_list_designs, tensorcad_new_design, tensorcad_open_design, tensorcad_save_design, tensorcad_get_design, and 14 more. Their descriptions and schemas cost roughly 3,713 tokens of context every time the server is loaded.

### Is the io.github.Filip-Pajalic/tensorcad MCP server still maintained?

io.github.Filip-Pajalic/tensorcad is still listed as active in the MCP registry. We last reached this channel on 29 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the io.github.Filip-Pajalic/tensorcad MCP server under?

io.github.Filip-Pajalic/tensorcad declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- npm package: https://www.npmjs.com/package/@tensor-cad/mcp
- Socket report: https://socket.dev/npm/package/@tensor-cad/mcp
- Repository: https://github.com/Filip-Pajalic/TensorCAD
- Changelog RSS feed: https://verifymcp.io/servers/filip-pajalic-tensorcad/tensor-cad-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/filip-pajalic-tensorcad/tensor-cad-mcp.json
- HTML version of this page: https://verifymcp.io/servers/filip-pajalic-tensorcad/tensor-cad-mcp
