Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Jarroba Tools

NPM · @JARROBA/MCP · SCANNED SEP 20

104 deterministic tools for your AI: logs, tests, SQL, diagrams, SPARQL. Local, no network.

Available components

+4 this week 65 Trust /100
Trust breakdown (7 categories)

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 Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 35 of 110 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency19
  • Repository check failed: the declared repository URL returned HTTP 404. See how to fix → View diagnostics → Fail
  • Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 1 days ago).Pass
  • Security-disclosure policy not yet verified: we couldn't inspect the source repository.Unverified
Schema Quality & AI Usability68
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 14133 tokens (~135/item across 104 items; 104 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 Management27
  • Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage92
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 76% of tool parameters carry a description.Partial
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "calc_eval" implies "eval" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Fail
  • An AI judge read all 105 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
Install

How do I install the Jarroba Tools MCP server?

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

npm · @jarroba/mcp

# add to Claude Code
claude mcp add invarato-jarroba-tools -- npx -y @jarroba/mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "invarato-jarroba-tools": {
      "command": "npx",
      "args": [
        "-y",
        "@jarroba/mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "invarato-jarroba-tools": {
      "command": "npx",
      "args": [
        "-y",
        "@jarroba/mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add invarato-jarroba-tools -- npx -y @jarroba/mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "invarato-jarroba-tools": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@jarroba/mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add invarato-jarroba-tools --command npx --arg -y --arg @jarroba/mcp
# ~/.hermes/config.yaml
mcp_servers:
  invarato-jarroba-tools:
    command: "npx"
    args: ["-y", "@jarroba/mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "invarato-jarroba-tools": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@jarroba/mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add invarato-jarroba-tools -t stdio -c npx -a -y @jarroba/mcp
// mcp.json
{
  "mcpServers": {
    "invarato-jarroba-tools": {
      "command": "npx",
      "args": [
        "-y",
        "@jarroba/mcp"
      ]
    }
  }
}
Changelog

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.

  • 19 Sept 26 +16
    • Malware scan: unverified → pass security
  • 18 Sept 26 −15
    • Malware scan: pass → unverified security
    • Package version: 0.1.4 → 0.1.5 functional
  • 17 Sept 26 +16
    • Malware scan: unverified → pass security
  • 16 Sept 26 −13
    • Malware scan: pass → unverified security
    • Tool safety: pass → unverified security
    • Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. security
    • Capabilities: pass → unverified functional
    • Tool coverage: 100 → unverified functional
    • Stability: unverified → 0.13 functional
    • First check of Schema quality: unverified functional
    • Package version: 0.1.2 → 0.1.4 functional
  • 13 Sept 26 +15
    • Malware scan: unverified → pass security
  • 12 Sept 26 46

    First indexed and scored.

Diagnostics

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 20 Sept 2026 · Analysed npm/@jarroba/mcp@0.1.5

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Dependencies 110 packages
Packages resolved 110
Stale 35
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 104 exposed · ~13,916 tokens

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 →

Tool Tokens
access_check ~336

Evaluate "can this principal do this action on this scope, and WHY?" against a vendor-neutral identity/RBAC model that mirrors Azure RBAC, AWS IAM/Organizations, GCP Resource Manager or Kubernetes RBAC — each rule verified against the official docs (access.md). Returns a three-valued verdict — allowed / denied / indeterminate (an unmodelled condition would decide it) — with a step-by-step trace of which rule decided and why. Nothing is looked up online: you must pass the scenario data yourself in "world".

NameTypeReqDescription
actionstringyese.g. "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read" (Azure), "s3:GetObject" (AWS), "storage.objects.get" (GCP), "get:pods" (Kubernetes: "verb:resource")
planestringAzure only: control-plane or data-plane action (Azure keeps them as separate grant sets; ignored for the other providers).
principalIdstringyes
providerstringyes
scopeIdstringyes
worldobjectyesScenario data. Shape depends on "provider" — azure: {ambitos, pertenencias?, roles?, asignaciones?, denegaciones?}; aws: {ambitos, cuentasGestion?, identidades?, recursos?, scps?, boundaries?}; gcp:…

No output schema declared.

No examples provided.

access_diff ~224

"What if" access diff: compares two versions of the same scenario (e.g. before/after removing a role assignment, or offboarding a principal) against a list of (principal, action, scope) checks, and reports who gains access and who loses it. A check that flips to/from "indeterminate" counts as neither a gain nor a loss — only a genuine allowed<->denied flip does.

NameTypeReqDescription
checksarrayyes
providerstringyes
worldAfteryes
worldBeforeobjectyesScenario data. Shape depends on "provider" — azure: {ambitos, pertenencias?, roles?, asignaciones?, denegaciones?}; aws: {ambitos, cuentasGestion?, identidades?, recursos?, scps?, boundaries?}; gcp:…

No output schema declared.

No examples provided.

access_who_can ~196

The dual of access_check: given a list of candidate principals, returns which of them can do this action on this scope — each with its own verdict and trace, same shape as access_check.

NameTypeReqDescription
actionstringyes
planestring
principalIdsarrayyes
providerstringyes
scopeIdstringyes
worldobjectyesScenario data. Shape depends on "provider" — azure: {ambitos, pertenencias?, roles?, asignaciones?, denegaciones?}; aws: {ambitos, cuentasGestion?, identidades?, recursos?, scps?, boundaries?}; gcp:…

No output schema declared.

No examples provided.

api_breaking_changes ~139

Compare two OpenAPI specifications and say which changes BREAK a client that already exists - which is the question you actually ask before deploying, and the one a colour diff does not answer. Tells apart pairs that look identical in a diff: adding an OPTIONAL parameter breaks nothing, adding a REQUIRED one does; ADDING an enum value is safe, REMOVING one is not; dropping a query parameter is ignored, dropping a path one changes the URL. Every finding says why.

NameTypeReqDescription
afterstringyesThe one you want to publish
beforestringyesThe published specification (JSON or YAML)
formatstring

No output schema declared.

No examples provided.

api_code_generate ~134

Turn a request into pasteable code in one of eleven targets: curl, fetch, axios, Python requests, HTTPie, Go, Java, C#, PHP, PowerShell or Rust. Emits the import lines and escapes per language, and gets right the things that are habitually wrong (in C# the Content-Type belongs to the content, not the headers; in Go an unused import does not compile).

NameTypeReqDescription
indexintegerWhich request, if the input has several
inputstringyesA curl command, or any supported collection (the first request is used)
languagestring

No output schema declared.

No examples provided.

api_collection_convert ~129

Convert an API collection between formats, entirely offline. Reads Postman v2.1, Insomnia, Bruno .bru, OpenAPI 3.x / Swagger 2.0 (JSON or YAML), a browser HAR, or curl commands - the format is detected. Writes Postman, Bruno (as a file tree) or curl. Reports what cannot be translated (Postman/Bruno scripts, file fields, Insomnia templates) instead of dropping it silently.

NameTypeReqDescription
inputstringyesThe collection, specification or curl commands, as text
tostringOutput format

No output schema declared.

No examples provided.

api_collection_secrets ~97

List the credentials hidden inside an API collection before you share it: tokens, cookies, API keys and passwords, with their location and a MASKED sample. An exported collection carries its secrets with it, and this is the file people attach to tickets. Heuristic by name: it masks what it recognises, it never claims a file is clean.

NameTypeReqDescription
inputstringyesThe collection, specification or curl commands, as text

No output schema declared.

No examples provided.

api_cors_preflight ~114

Will the browser send an OPTIONS preflight before this request, and WHY? Answers without touching the network. Half of "it works in curl but not in my page" is a preflight the server does not answer, and knowing which of the three things triggers it (the method, the Content-Type or a custom header) changes where to look. Also lists the headers the browser refuses to let a page set.

NameTypeReqDescription
headersobjectRequest headers, as an object
methodstring

No output schema declared.

No examples provided.

band_formation ~131

A tight-binding chain of N atoms: the N levels it produces, the bandwidth, and the spacing between levels. Shows where a band COMES FROM — with 2 atoms the level splits in two (alpha +/- beta), and with many the spacing falls as 1/N until it drops below k_B*T, which is when talking about individual levels stops making sense.

NameTypeReqDescription
alphanumberEnergy of the isolated atomic orbital (eV)
atomsinteger
betanumberIntegral de salto β (eV, negativa)
electronsPerAtomnumber

No output schema declared.

No examples provided.

binary_calc ~89

Programmer's calculator on exact integers (BigInt): arithmetic (add/sub/mul/div/mod/pow) and bitwise (and/or/xor/nand/nor/xnor/shl/shr/sar/rol/ror). Returns the result in every base.

NameTypeReqDescription
astringyes
bstringyes
opstringyes
widthnumber

No output schema declared.

No examples provided.

bond_energy ~151

Energy curve between the two atoms of a measured diatomic molecule: bond length, well depth (De), REAL dissociation energy (D0) and zero-point energy. D0 is NOT De — the molecule is never at rest at the bottom of the well, not even at 0 K, and in H2 the difference is 0.27 eV. Covalent bonds use Morse, noble gases use Lennard-Jones.

NameTypeReqDescription
moleculestringyesH2, N2, O2, F2, Cl2, HF, HCl, Li2, Na2, He2, Ne2, Ar2, Kr2, Xe2
temperatureKnumber

No output schema declared.

No examples provided.

calc_derive ~192

Differentiate an expression symbolically, exactly: "x^3 + 2x", "sin(x)*cos(x)", "x^x". Keeps units, so d/dx (3 m * x) is "3 m" and not 3. Can take higher-order derivatives and evaluate the result at a point. Says which name it read as a unit, and refuses to answer "0" when the variable is not in the expression.

NameTypeReqDescription
atnumberAlso evaluate the derivative at this value of the variable
expressionstringyese.g. "x^3 + 2x" or "9.8 m/s^2 * t^2 / 2"
orderinteger1 = first derivative, 2 = second… up to 4
variablestringDifferentiate with respect to this (guessed if omitted)

No output schema declared.

No examples provided.

calc_eval ~108

Evaluate a mathematical expression WITH UNITS and dimensional checking: "100 km/h to m/s", "5 km + 300 m", "70 kg to lbs", "det([[1,2],[3,4]])". Adding incompatible units is an error, not a silent number. Also flags results that are not finite (NaN, infinity).

NameTypeReqDescription
expressionstringyese.g. "100 km/h to m/s" or "sqrt(2)^2 + 2^10"

No output schema declared.

No examples provided.

calc_sheet ~141

Evaluate a multi-line calculation sheet and return the result of EVERY line. Variables carry downwards, units travel with the value, "#" starts a comment, "ans" is the previous result, and an error stays on its own line instead of killing the sheet. Declare currencies with "# @moneda USD = 1.08 EUR". Good for checking a quote or a budget line by line.

NameTypeReqDescription
as_markdownbooleanAlso return the sheet as a Markdown table
sheetstringyesOne expression per line, e.g. "width = 3.5 m height = 2.4 m area = width * height"

No output schema declared.

No examples provided.

calc_solve ~139

Solve an equation in one unknown ("x^2 - 5x + 6 = 0", "sin(x) = 0.5") or a linear system (one equation per line). Says whether the answer is EXACT or an approximation, and over which interval it searched. Never invents a root it did not find.

NameTypeReqDescription
equationsstringyesOne equation, or several separated by newlines for a system
fromnumberLower bound for the numeric search
tonumberUpper bound for the numeric search
unknownstringWhich variable to solve for (guessed if omitted)

No output schema declared.

No examples provided.

calc_steps ~165

Show the WORKED STEPS of a calculation, verified step by step: a linear or quadratic equation, a derivative (naming which rule applies), or Gaussian elimination on a linear system row by row. Each step comes with the name of the rule used. When it cannot explain a case it says so (covered: false) instead of inventing a plausible-looking derivation — useful when you have to show your work to a person.

NameTypeReqDescription
inputstringyesAn equation ("2x + 6 = 0"), an expression to differentiate ("sin(x)*x^2"), or one equation per line for a system
kindstringWhat to explain
variablestringThe unknown or the variable to differentiate by (guessed if omitted)

No output schema declared.

No examples provided.

chmod_explain ~67

Read Unix permissions: takes octal ("755") or symbolic ("rwxr-xr-x") and returns both forms plus the breakdown (user/group/other, setuid/setgid/sticky).

NameTypeReqDescription
inputstringyes"755" or "rwxr-xr-x"

No output schema declared.

No examples provided.

cidr_contains ~38

Is this IP inside that CIDR network? Returns true/false.

NameTypeReqDescription
cidrstringyes
ipstringyes

No output schema declared.

No examples provided.

cidr_info ~91

Analyze an IPv4 network from CIDR or IP+mask: network and broadcast addresses, first/last host, mask and wildcard, host count, class, private/special ranges, binary form and reverse PTR name.

NameTypeReqDescription
inputstringyese.g. "192.168.1.10/24" or "10.0.0.0 255.255.255.0"

No output schema declared.

No examples provided.

cidr_vlsm ~48

Split a base network into variable-length subnets (VLSM) sized to the host counts you ask for.

NameTypeReqDescription
basestringyes
requestsarrayyes

No output schema declared.

No examples provided.

claim_check ~145

Split a text into claims and say, for each, whether it comes with a source and of what kind: peer-reviewed, preprint (arXiv and friends), registry/link, or self-published. Flags the ABSOLUTE claims with NO source at all, which is the expensive failure mode because they sound exactly as confident as the backed ones. It does NOT say whether something is true — it cannot — it says whether it is supported, which is a different thing. An arXiv DOI is still a preprint: registration is not review. Worth running on your own answer before you send it.

NameTypeReqDescription
textstringyesThe text to review, as-is

No output schema declared.

No examples provided.

color_convert ~51

Convert a color between HEX, RGB and HSL. Accepts "#3498db", "rgb(52,152,219)", "hsl(...)" or CSS names.

NameTypeReqDescription
inputstringyes

No output schema declared.

No examples provided.

coulomb_blockade ~159

Single-electron transistor: charging energy E_C, whether Coulomb blockade occurs, and why it does not when it fails. Checks BOTH conditions — E_C >> k_B*T and tunnel barriers above the resistance quantum R_K = h/e^2 ~ 25.8 kOhm. The second is almost never mentioned, and without it a design with perfect energy still does not blockade.

NameTypeReqDescription
epsRnumberPermittivity of the surroundings: 1 vacuum, 3.9 SiO2, 11.7 Si
gateFractionnumber
radiusNmnumber
temperatureKnumber
tunnelKOhmnumberResistance of each tunnel barrier

No output schema declared.

No examples provided.

count_tokens ~89

Count tokens EXACTLY with the model's real BPE (o200k_base=GPT-4o, cl100k_base=GPT-4/3.5, p50k_base=Codex, r50k_base=GPT-3/2). Returns tokens, words, characters and % of the context window.

NameTypeReqDescription
encodingstring
textstringyes

No output schema declared.

No examples provided.

cron_next ~88

Next run times of a 5-field cron expression, as ISO dates. "When does this actually fire?" is a calculation LLMs routinely get wrong.

NameTypeReqDescription
countinteger
exprstringyese.g. "*/15 9-17 * * 1-5"
tzstringIANA timezone, e.g. "Europe/Madrid"

No output schema declared.

No examples provided.

db_docs ~69

Turn a DDL into Markdown documentation, DBML (dbdiagram.io) or a Mermaid erDiagram, with relations and their 1:1 / 1:N cardinality derived from the keys.

NameTypeReqDescription
ddlstringyesCREATE TABLE… (PostgreSQL)
formatstring

No output schema declared.

No examples provided.

db_entities ~105

Turn a DDL into classes in your language: Java/JPA, TypeScript, Python (SQLAlchemy 2.0), C#/EF Core or Go. Types are respected — `numeric` becomes BigDecimal/decimal, never a double — and so is which fields are optional.

NameTypeReqDescription
ddlstringyesCREATE TABLE… (PostgreSQL)
namespacestringPackage (Java) or namespace (C#)
targetstringyesTarget language

No output schema declared.

No examples provided.

db_fk_infer ~177

Propose the missing foreign keys: find by name and type the columns that look like they point at another table, then CHECK each one against the rows, counting how many of its values actually exist on the other side. The percentage is counted rows, not a hunch. At 100% the relation holds and the returned ALTER TABLE cannot fail; with orphan rows PostgreSQL would reject it, so how many and which ones are reported.

NameTypeReqDescription
includeWeakbooleanAlso return the ones that do NOT hold (under 80% coverage), so you can rule them out by looking
orphanSampleintegerHow many unmatched rows to bring back as evidence for each proposal
sqlstringyesCREATE TABLE… plus its INSERTs (PostgreSQL). With no data there is nothing to check against

No output schema declared.

No examples provided.

db_join_path ~168

Find the foreign-key paths between two tables and return the SELECT with the JOINs already written. If the script carries data, every path is EXECUTED and they are ranked by the rows they actually return — a short path that yields zero rows joins nothing. Hub tables (related to almost everything) can be set aside, since they connect any pair without explaining anything.

NameTypeReqDescription
avoidHubsbooleanSet aside tables that are related to almost every other one
fromstringyesSource table ("orders" or "sales.orders")
maxHopsintegerMaximum hops per path
sqlstringyesCREATE TABLE… (PostgreSQL) plus its INSERTs, if you want ranking by real rows
tostringyesTarget table

No output schema declared.

No examples provided.

db_rls_check ~197

Run the script in an ephemeral PostgreSQL and review row-level security, warning about the SILENT failures: RLS on with no policies, policies with RLS off, the owner bypassing them because FORCE is missing, a superuser role, or the missing GRANT/USAGE that makes "zero rows" not the policy's fault at all. Given a role and a table it also SIMULATES: it looks at the table through that role's eyes, inside a transaction that is rolled back, and reports how many rows it can see, update and delete.

NameTypeReqDescription
rolestringRole whose eyes to look through (your application's role, not the owner)
sqlstringyesThe complete script: CREATE TABLE, INSERT, CREATE ROLE, GRANT, ENABLE ROW LEVEL SECURITY and CREATE POLICY
tablestringTable to simulate. Without it, every table with RLS enabled is simulated

No output schema declared.

No examples provided.

db_schema_review ~115

Run a DDL in an ephemeral PostgreSQL and return the REAL schema (tables, columns, keys, indexes, constraints) plus the design problems found: tables with no primary key, foreign keys with no index, money in floating point, timestamps without a time zone, types that do not match on the two sides of a relation, and redundant indexes. The schema is executed, not guessed with regular expressions.

NameTypeReqDescription
ddlstringyesCREATE TABLE… (PostgreSQL; for another engine, run db_translate_sql first)

No output schema declared.

No examples provided.

db_translate_sql ~86

Detect whether a SQL script comes from MySQL/MariaDB, SQLite, SQL Server or Oracle and translate it to PostgreSQL, explaining every change with its line number. Changes that are NOT exact equivalents are flagged as such.

NameTypeReqDescription
dialectstringSource engine; "auto" detects it from markers in the SQL itself
sqlstringyesThe source SQL script

No output schema declared.

No examples provided.

diagram_add ~90

Append the "nodes"/"edges"/"charts" of a JTD FRAGMENT (same format) to the diagram held in memory, on top of whatever is already there. Returns the new counts plus the warnings and errors of validating the result.

NameTypeReqDescription
jtdstringyesJTD fragment: {"nodes":[...],"edges":[...],"charts":[...]} — only what you want to add.

No output schema declared.

No examples provided.

diagram_get ~30

Return the COMPLETE JTD document built so far in memory, ready to save or paste into the web tool.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

diagram_new ~91

Start an EMPTY JTD diagram in memory, discarding any previous one. Lets you build it piece by piece with diagram_add and look at it with diagram_preview, instead of writing the whole JSON in one shot.

NameTypeReqDescription
backgroundstring
layoutstringflow-down|flow-right|free|grid|radial
themestring
titlestring

No output schema declared.

No examples provided.

diagram_preview ~56

Validate and DRAW (SVG) the diagram held in memory, so you can look at it and keep adding or fixing in a loop. This is the generate → look → correct cycle; a model cannot judge a diagram by reading its JSON.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

diagram_render ~98

Render a JTD to PNG with the app's REAL engine (full fidelity; only needed to check skins and effects). Requires a checkout of the repo AND a running dev server. For everything else use diagram_svg, which needs neither.

NameTypeReqDescription
baseUrlstringDev server URL (default http://localhost:4201)
jtdstringyes
outstringOutput PNG path (default: a temp file)

No output schema declared.

No examples provided.

diagram_svg ~64

Render a JTD to SVG with no browser and no dev server, so you get the actual drawing back and can check it. Validates first. This is the one to use to SEE what you built.

NameTypeReqDescription
jtdstringyesThe JTD document as JSON.

No output schema declared.

No examples provided.

diagram_validate ~86

Validate a JTD (Jarroba Tools Diagram) document: structure, allowed shapes and chart types, and edge references. Returns {ok, errors, warnings, summary}. Spec: public/jtd.md. Use it to check your JSON before handing it to anyone.

NameTypeReqDescription
jtdstringyesThe JTD document as JSON (an object with a "jtd" key).

No output schema declared.

No examples provided.

dockerfile_cache ~236

Say which LAYERS of a Dockerfile would be rebuilt when given files change, and which come from cache. Dockerfile linters spot suspicious ordering patterns; this SIMULATES invalidation, which is a different thing: it needs to know which files exist and which changed. In Docker, when one layer is invalidated so is EVERY layer after it, so a `COPY . .` before the `RUN` that installs dependencies condemns you to reinstalling all of them every time you touch a line of code — and that shows up here as numbers. Respects the `.dockerignore`: what stays out of the context cannot invalidate anything.

NameTypeReqDescription
changedarrayFiles changed since the last build. Empty = none
dockerignorestring.dockerignore rules pasted (otherwise looked up in the folder)
filestringPath to a specific Dockerfile
filesarrayProject paths, if no folder is given
projectstringProject folder: its Dockerfile, .dockerignore and files are read
textstringThe Dockerfile pasted

No output schema declared.

No examples provided.

element_config ~95

Electron configuration of a neutral element, full and noble-gas abbreviated, with its shells and valence. Flags whether the element is one of the 20 real ANOMALIES (Cr, Cu, Nb, Ru, Pd...) — exactly where the Madelung rule fails and a language model tends to get the rule right and the element wrong.

NameTypeReqDescription
elementstringyesAtomic number ("24") or symbol ("Cr")

No output schema declared.

No examples provided.

element_info ~90

Data sheet for an element by atomic number or symbol: name, mass, category, group/period/block, electronegativity, radius, ionization energy and electron affinity. Data that does NOT exist comes back as null, never as 0 — a noble gas has no electron affinity, and that is not "zero".

NameTypeReqDescription
elementstringyesAtomic number ("26") or symbol ("Fe")

No output schema declared.

No examples provided.

element_ion_config ~105

Electron configuration of an ION. Electrons leave from the HIGHEST n shell, not from the last orbital that was filled: Fe2+ is [Ar]3d6, not [Ar]3d4 4s2. This is the classic mistake and the one seen most often in generated answers.

NameTypeReqDescription
chargeintegeryesCharge: +2 for Fe2+, -1 for Cl-
elementstringyesAtomic number or symbol

No output schema declared.

No examples provided.

eval_check ~163

Review an eval suite and run it against the outputs you provide. The review catches what silently ruins a suite: assertions that CANNOT FAIL (an empty `contains`, a regex like `.*`, a case with no assertions) and ones that can never pass (requiring and forbidding the same thing, an inverted range). A suite with those scores 100% on day one and has measured nothing. Assertion types: contains, not-contains, regex, json, range, max-chars and supported (no absolute claim without a source). Calls no model: you pass the outputs in already produced.

NameTypeReqDescription
casesarrayyesThe suite cases, with their outputs already obtained
promptfoobooleanIf true, also return the equivalent promptfoo configuration

No output schema declared.

No examples provided.

format_convert ~46

Convert data between formats: json, yaml, properties, env, csv, markdown.

NameTypeReqDescription
fromstringyes
inputstringyes
tostringyes

No output schema declared.

No examples provided.

gate_geometry ~129

Why the transistor changed shape: natural length lambda and minimum gate length (5*lambda) for each architecture — planar, FD-SOI, FinFET, GAA nanosheet, nanowire, forksheet and CFET — at the SAME dimensions, which is what isolates the effect of geometry alone. It does not tabulate real process-node dimensions, because those are not public.

NameTypeReqDescription
bodyNmnumberChannel thickness (fin width or sheet thickness)
gateLengthNmnumber
oxideNmnumberEOT
temperatureKnumber

No output schema declared.

No examples provided.

hamming_check ~49

Detect and correct a single-bit error in a received Hamming word: whether there is an error, which bit, and the corrected data.

NameTypeReqDescription
wordstringyesThe received Hamming word

No output schema declared.

No examples provided.

hamming_encode ~51

Encode bits with a Hamming (SEC) code: inserts the parity bits. Input is a string of 0s and 1s.

NameTypeReqDescription
bitsstringyese.g. "1011"

No output schema declared.

No examples provided.

hash_text ~36

SHA-256, SHA-384 and SHA-512 (hex) of a UTF-8 string.

NameTypeReqDescription
textstringyes

No output schema declared.

No examples provided.

hydrogen_spectrum ~125

Hydrogen spectral lines for a series (nLow=1 Lyman, 2 Balmer, 3 Paschen...). Gives the wavelength IN VACUUM and IN AIR, which are different numbers: H-alpha is 656.47 nm in vacuum and 656.28 in air, and confusing them is common. Uses the reduced-mass Rydberg constant (R_H), not R-infinity.

NameTypeReqDescription
countinteger
nLowintegeryesLanding level: 1=Lyman, 2=Balmer, 3=Paschen

No output schema declared.

No examples provided.

Common questions

What is the Jarroba Tools MCP server?

Jarroba Tools is an MCP server listed in the public MCP registry as io.github.Invarato/jarroba-tools. 104 deterministic tools for your AI: logs, tests, SQL, diagrams, SPARQL. Local, no network. This page covers its npm package (@jarroba/mcp).

Is the Jarroba Tools MCP server safe to use?

Jarroba Tools scores 65 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. 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 Jarroba Tools MCP server expose?

Jarroba Tools exposes 104 tools: cidr_info, cidr_contains, cidr_vlsm, count_tokens, hash_text, and 99 more. Their descriptions and schemas cost roughly 13,916 tokens of context every time the server is loaded.

Is the Jarroba Tools MCP server still maintained?

Jarroba Tools is still listed as active in the MCP registry. We last reached this channel on 20 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 Jarroba Tools MCP server under?

Jarroba Tools declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.