Jaxonomy — hybrid dynamical systems on JAX
PYPI · JAXONOMY
Build, simulate and calibrate JAX block-diagram models of hybrid dynamical systems.
Available components
Last scanned (5 hours ago)
Scores higher than 0% of PyPI servers
Category AI and Machine Learning
Recent critical change
Known CVEs (13 Oct 2026). See the changelog before you install this server.
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. How we score → Why this is hard to score →
Supply Chain Security24
- Malware scan not yet available for this package.Unverified
- CVE check failed: an unpatched critical CVE affects this package; the score is capped at 0. See how to fix → View diagnostics → Fail
- Runs setuptools.build_meta at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
- Dependency health was assessed across the 106 of 107 dependencies we could resolve, so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency100
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to machinavitalis/jaxonomy). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 68 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability62
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 1665 tokens (~237/item across 7 items; 7 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management77
- Stability observed for 23 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage71
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 0% of tool parameters carry a description.Fail
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 7 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 8 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 13 Oct 26 −58
- Known CVEs: unverified → fail ▼ critical
- Score status: scored → failed ▼ critical
- Dependency health: unverified → partial ▲ functional
- 12 Oct 26 +58
- Known CVEs: fail → unverified ▼ security
- Dependency health: partial → unverified ▼ functional
- Score status: failed → scored ▲ functional
- 4 Oct 26 0
- Stability: unverified → 0.27 ▲ functional
- 29 Sept 26 0
- Malware scan: fail → unverified ▼ security
- 28 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 26 Sept 26 0
- Malware scan: unverified → fail ▼ security
- Injection markers: unverified → pass ▲ security
- First check of Judged manipulation: pass security
- Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
- Tool coverage: unverified → 100 ▲ functional
- MCP protocol: unverified → pass ▲ functional
- First check of Tool coverage: 0 functional
- First check of Schema quality: fail functional
- First check of Destructive annotations: pass functional
- First check of Schema quality: fail functional
- First check of Schema quality: good functional
- First check of Tool coverage: 100 functional
- 25 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 15 Sept 26 0
- Malware scan: unverified → fail ▼ security
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 19 Oct 2026 · Analysed pypi/jaxonomy@3.4.1
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | pypi |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | machinavitalis/jaxonomy |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/machinavitalis/jaxonomy/.github/workflows/release.yml@refs/tags/v3.4.1 |
| Rekor log index | 2431666528 |
| Predicate type | PyPI publish attestation https://docs.pypi.org/attestations/publish/v1 |
| Subject digest | sha256:9e42a51427f54523c2311c4af6b94d6ffbdd8438e76e92033b4d958e7601e6d1 |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | setuptools.build_meta |
Background: Why install scripts are a supply-chain risk →
Vulnerabilities 2 findings
| ID | CVE | Severity | Vector | Fix available |
|---|---|---|---|---|
| GHSA-44vg-5wv2-h2hg | CVE-2026-32640 | critical | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H | yes |
| PYSEC-2026-132 | CVE-2026-32640 | critical | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H | yes |
Background: What a vulnerability scan can and cannot prove →
Dependencies 106 packages
| Packages resolved | 106 |
|---|---|
| Stale | 14 |
| No linked repository | 2 |
| Tree resolution | Partial |
The dependency tree was only partially resolved, so these counts may be incomplete.
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
explain_model ~61
Generate a plain English description of what a Jaxonomy model does. Args: model_json: JSON string of the model Returns a human-readable description of the model structure, blocks, and signal flow.
| Name | Type | Req | Description |
|---|---|---|---|
| model_json | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
fit_parameters ~537
Fit model parameters to measured data using finite-difference gradients. Args: model_json: JSON string of the base model data_csv: CSV string with columns for time and measured signals. First column must be time. Example: "t,position,velocity\n0.0,0.0,1.0\n..." signal_map: JSON string mapping CSV column names to diagram signal names. Example: '{"position": "integ.out_0"}' params_to_fit: list of dot-notation parameter paths to optimize. Example: ["motor.R", "motor.L"] n_steps: number of optimizer iterations (for scipy methods, used as maxiter) learning_rate: optimizer learning rate (optax methods only) method: optimizer to use. One of: "adam" (default), "sgd", "rmsprop" — Optax gradient descent with central finite-difference gradients; "l_bfgs_b" — scipy L-BFGS-B with FD gradients; "nelder_mead" — scipy Nelder-Mead, gradient-free. bounds: list of [lo, hi] per parameter (same order as params_to_fit), or null for unbounded. Use null on either side for a one-sided bound. Example: [[0.0, 10.0], [null, 5.0], [0.0, null]] Returns JSON with: fitted_model_json: updated model with fitted params final_loss: final MSE loss value loss_history: loss values over iterations (sampled) fitted_params: {param_name: fitted_value} converged: bool (loss decreased by > 10x) n_iter: actual number of optimizer iterations completed n_fev: total number of loss function evaluations (approximate) convergence_message: human-readable convergence status relative_decrease: (init_loss - final_loss) / init_loss Note: Gradients are computed with central finite differences on the simulation loss so the full simulator need not be JAX-traced. For high-dimensional fits, prefer the dedicated optimization APIs in ``jaxono…
| Name | Type | Req | Description |
|---|---|---|---|
| bounds | – | – | – |
| data_csv | string | yes | – |
| learning_rate | number | – | – |
| method | string | – | – |
| model_json | string | yes | – |
| n_steps | integer | – | – |
| params_to_fit | array | yes | – |
| signal_map | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
influence_subgraph ~492
Serialize the sensitivity-weighted neighbourhood of one or more signals. Answers "what actually drives this signal, and by how much" on a model too large to serialize whole. The model's dependency structure supplies the edges; autodiff supplies the weights; expansion takes the strongest edges first and stops at a token budget, so what gets dropped is what mattered least. Weights are relative (dimensionless) sensitivities: a path's product is the relative end-to-end sensitivity, so 0.4 reads as "a 1% change here is a 0.4% change there". Edges into a continuous state are scaled by ``tau`` seconds, since a state derivative is a rate rather than a gain. Args: model_json: JSON string of the model focus: Comma-separated focus points. Each may be a block name ("plant", which expands to all of that block's signals), a node id ("plant:out:out_0", "plant:xc"), or any unambiguous fragment. budget_tokens: Approximate ceiling on the returned text (~4 chars/token) hops: Graph edges to expand from the focus. Nodes are signals, so crossing one block costs two hops. threshold: Minimum edge |weight| to include tau: Seconds represented by an edge into a continuous state probe: Relative step for the secant cross-check on zero-derivative edges (0 disables). Use a non-zero value on models with saturation, quantization, or dead zones, whose exact local derivative is zero where the block is flat even though the connection carries information. input_values: JSON object fixing input ports, as 'block.in_0': value Returns JSON with: text: the rendered context, one line per signal and per edge nodes, edges: the same content structured blocks: block name paths included estimated_tokens, dropped_edges: what the budget cost conventions: how to read a weight
| Name | Type | Req | Description |
|---|---|---|---|
| budget_tokens | integer | – | – |
| focus | string | yes | – |
| hops | integer | – | – |
| input_values | string | – | – |
| model_json | string | yes | – |
| probe | number | – | – |
| tau | number | – | – |
| threshold | number | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
linearize_model ~225
Linearize a model around an operating point. Args: model_json: JSON string of the model state_values: JSON string mapping state names to values at operating point, or a JSON array of continuous state components for a single continuous-state subsystem (in diagram order). Example: '{"x": 0.0, "v": 1.0}' or '[0.0, 1.0]' input_values: JSON string mapping input names to values. Example: '{"u": 0.5}' as 'block.in_0': value Returns JSON with: A: state matrix (list of lists) B: input matrix (list of lists) C: output matrix (list of lists) D: feedthrough matrix (list of lists) eigenvalues: list of {real, imag} dicts is_stable: bool
| Name | Type | Req | Description |
|---|---|---|---|
| input_values | string | yes | – |
| model_json | string | yes | – |
| state_values | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
list_blocks ~48
List all available block types in the Jaxonomy library. Returns JSON with block names, descriptions, and key parameters. Use this before create_diagram to know what blocks are available.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
run_simulation ~200
Run a Jaxonomy simulation. Args: model_json: JSON string of the model t_start: simulation start time (seconds) t_stop: simulation end time (seconds) recorded_signals: list of signal names to record. Use the block name and port, e.g. ["integrator.out_0", "gain.out_0"] backend: "jax" (fast, GPU) or "numpy" (compatible) max_major_steps: maximum simulation steps (increase for longer simulations) Returns JSON with: time: list of time points signals: {name: list of values} final_time: actual simulation end time
| Name | Type | Req | Description |
|---|---|---|---|
| backend | string | – | – |
| max_major_steps | integer | – | – |
| model_json | string | yes | – |
| recorded_signals | array | yes | – |
| t_start | number | yes | – |
| t_stop | number | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
validate_model ~71
Validate a Jaxonomy model JSON string. Args: model_json: JSON string of the model (Jaxonomy model format) Returns JSON with: valid: bool errors: list of error strings warnings: list of warning strings
| Name | Type | Req | Description |
|---|---|---|---|
| model_json | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
How do I install the Jaxonomy — hybrid dynamical systems on JAX MCP server?
Jaxonomy — hybrid dynamical systems on JAX runs locally as a PyPI package, launched with uvx jaxonomy. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · jaxonomy
claude mcp add machinavitalis-jaxonomy -- uvx jaxonomy
What is the Jaxonomy — hybrid dynamical systems on JAX MCP server?
Jaxonomy — hybrid dynamical systems on JAX is an MCP server listed in the public MCP registry as io.github.machinavitalis/jaxonomy. Build, simulate and calibrate JAX block-diagram models of hybrid dynamical systems. This page covers its PyPI package (jaxonomy).
What tools does the Jaxonomy — hybrid dynamical systems on JAX MCP server expose?
Jaxonomy — hybrid dynamical systems on JAX exposes 7 tools: run_simulation, fit_parameters, list_blocks, validate_model, explain_model, and 2 more. Their descriptions and schemas cost roughly 1,634 tokens of context every time the server is loaded.
Is the Jaxonomy — hybrid dynamical systems on JAX MCP server still maintained?
Jaxonomy — hybrid dynamical systems on JAX is still listed as active in the MCP registry. We last reached this channel on 19 October 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 Jaxonomy — hybrid dynamical systems on JAX MCP server under?
Jaxonomy — hybrid dynamical systems on JAX declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.