Jarroba Tools
NPM · @JARROBA/MCP · SCANNED SEP 20
104 deterministic tools for your AI: logs, tests, SQL, diagrams, SPARQL. Local, no network.
Available components
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
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
claude mcp add invarato-jarroba-tools -- npx -y @jarroba/mcp
{
"mcpServers": {
"invarato-jarroba-tools": {
"command": "npx",
"args": [
"-y",
"@jarroba/mcp"
]
}
}
} {
"servers": {
"invarato-jarroba-tools": {
"command": "npx",
"args": [
"-y",
"@jarroba/mcp"
]
}
}
} codex mcp add invarato-jarroba-tools -- npx -y @jarroba/mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"invarato-jarroba-tools": {
"type": "local",
"command": [
"npx",
"-y",
"@jarroba/mcp"
],
"enabled": true
}
}
} openclaw mcp add invarato-jarroba-tools --command npx --arg -y --arg @jarroba/mcp
mcp_servers:
invarato-jarroba-tools:
command: "npx"
args: ["-y", "@jarroba/mcp"] {
"McpServers": {
"invarato-jarroba-tools": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"@jarroba/mcp"
]
}
}
} assistant mcp add invarato-jarroba-tools -t stdio -c npx -a -y @jarroba/mcp
{
"mcpServers": {
"invarato-jarroba-tools": {
"command": "npx",
"args": [
"-y",
"@jarroba/mcp"
]
}
}
} 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.
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 →
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 →
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".
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | e.g. "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read" (Azure), "s3:GetObject" (AWS), "storage.objects.get" (GCP), "get:pods" (Kubernetes: "verb:resource") |
| plane | string | – | Azure only: control-plane or data-plane action (Azure keeps them as separate grant sets; ignored for the other providers). |
| principalId | string | yes | – |
| provider | string | yes | – |
| scopeId | string | yes | – |
| world | object | yes | Scenario 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.
| Name | Type | Req | Description |
|---|---|---|---|
| checks | array | yes | – |
| provider | string | yes | – |
| worldAfter | – | yes | – |
| worldBefore | object | yes | Scenario 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.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| plane | string | – | – |
| principalIds | array | yes | – |
| provider | string | yes | – |
| scopeId | string | yes | – |
| world | object | yes | Scenario 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.
| Name | Type | Req | Description |
|---|---|---|---|
| after | string | yes | The one you want to publish |
| before | string | yes | The published specification (JSON or YAML) |
| format | string | – | – |
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).
| Name | Type | Req | Description |
|---|---|---|---|
| index | integer | – | Which request, if the input has several |
| input | string | yes | A curl command, or any supported collection (the first request is used) |
| language | string | – | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| input | string | yes | The collection, specification or curl commands, as text |
| to | string | – | Output 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.
| Name | Type | Req | Description |
|---|---|---|---|
| input | string | yes | The 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.
| Name | Type | Req | Description |
|---|---|---|---|
| headers | object | – | Request headers, as an object |
| method | string | – | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| alpha | number | – | Energy of the isolated atomic orbital (eV) |
| atoms | integer | – | – |
| beta | number | – | Integral de salto β (eV, negativa) |
| electronsPerAtom | number | – | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| a | string | yes | – |
| b | string | yes | – |
| op | string | yes | – |
| width | number | – | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| molecule | string | yes | H2, N2, O2, F2, Cl2, HF, HCl, Li2, Na2, He2, Ne2, Ar2, Kr2, Xe2 |
| temperatureK | number | – | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| at | number | – | Also evaluate the derivative at this value of the variable |
| expression | string | yes | e.g. "x^3 + 2x" or "9.8 m/s^2 * t^2 / 2" |
| order | integer | – | 1 = first derivative, 2 = second… up to 4 |
| variable | string | – | Differentiate 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).
| Name | Type | Req | Description |
|---|---|---|---|
| expression | string | yes | e.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.
| Name | Type | Req | Description |
|---|---|---|---|
| as_markdown | boolean | – | Also return the sheet as a Markdown table |
| sheet | string | yes | One 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.
| Name | Type | Req | Description |
|---|---|---|---|
| equations | string | yes | One equation, or several separated by newlines for a system |
| from | number | – | Lower bound for the numeric search |
| to | number | – | Upper bound for the numeric search |
| unknown | string | – | Which 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.
| Name | Type | Req | Description |
|---|---|---|---|
| input | string | yes | An equation ("2x + 6 = 0"), an expression to differentiate ("sin(x)*x^2"), or one equation per line for a system |
| kind | string | – | What to explain |
| variable | string | – | The 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).
| Name | Type | Req | Description |
|---|---|---|---|
| input | string | yes | "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.
| Name | Type | Req | Description |
|---|---|---|---|
| cidr | string | yes | – |
| ip | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| input | string | yes | e.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.
| Name | Type | Req | Description |
|---|---|---|---|
| base | string | yes | – |
| requests | array | yes | – |
No output schema declared.
No examples provided.
claim_check Separate what is backed from what is merely asserted ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| text | string | yes | The 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.
| Name | Type | Req | Description |
|---|---|---|---|
| input | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| epsR | number | – | Permittivity of the surroundings: 1 vacuum, 3.9 SiO2, 11.7 Si |
| gateFraction | number | – | – |
| radiusNm | number | – | – |
| temperatureK | number | – | – |
| tunnelKOhm | number | – | Resistance 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.
| Name | Type | Req | Description |
|---|---|---|---|
| encoding | string | – | – |
| text | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | – |
| expr | string | yes | e.g. "*/15 9-17 * * 1-5" |
| tz | string | – | IANA timezone, e.g. "Europe/Madrid" |
No output schema declared.
No examples provided.
db_docs Document a schema ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| ddl | string | yes | CREATE TABLE… (PostgreSQL) |
| format | string | – | – |
No output schema declared.
No examples provided.
db_entities Generate code entities from a schema ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| ddl | string | yes | CREATE TABLE… (PostgreSQL) |
| namespace | string | – | Package (Java) or namespace (C#) |
| target | string | yes | Target language |
No output schema declared.
No examples provided.
db_fk_infer Relations that exist in the data but are not declared ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| includeWeak | boolean | – | Also return the ones that do NOT hold (under 80% coverage), so you can rule them out by looking |
| orphanSample | integer | – | How many unmatched rows to bring back as evidence for each proposal |
| sql | string | yes | CREATE TABLE… plus its INSERTs (PostgreSQL). With no data there is nothing to check against |
No output schema declared.
No examples provided.
db_join_path How two tables join ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| avoidHubs | boolean | – | Set aside tables that are related to almost every other one |
| from | string | yes | Source table ("orders" or "sales.orders") |
| maxHops | integer | – | Maximum hops per path |
| sql | string | yes | CREATE TABLE… (PostgreSQL) plus its INSERTs, if you want ranking by real rows |
| to | string | yes | Target table |
No output schema declared.
No examples provided.
db_rls_check Review and simulate row-level security (RLS) ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| role | string | – | Role whose eyes to look through (your application's role, not the owner) |
| sql | string | yes | The complete script: CREATE TABLE, INSERT, CREATE ROLE, GRANT, ENABLE ROW LEVEL SECURITY and CREATE POLICY |
| table | string | – | Table to simulate. Without it, every table with RLS enabled is simulated |
No output schema declared.
No examples provided.
db_schema_review Review a database schema ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| ddl | string | yes | CREATE TABLE… (PostgreSQL; for another engine, run db_translate_sql first) |
No output schema declared.
No examples provided.
db_translate_sql Translate SQL from another engine to PostgreSQL ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| dialect | string | – | Source engine; "auto" detects it from markers in the SQL itself |
| sql | string | yes | The 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.
| Name | Type | Req | Description |
|---|---|---|---|
| jtd | string | yes | JTD 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.
| Name | Type | Req | Description |
|---|---|---|---|
| background | string | – | – |
| layout | string | – | flow-down|flow-right|free|grid|radial |
| theme | string | – | – |
| title | string | – | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| baseUrl | string | – | Dev server URL (default http://localhost:4201) |
| jtd | string | yes | – |
| out | string | – | Output 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.
| Name | Type | Req | Description |
|---|---|---|---|
| jtd | string | yes | The 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.
| Name | Type | Req | Description |
|---|---|---|---|
| jtd | string | yes | The 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.
| Name | Type | Req | Description |
|---|---|---|---|
| changed | array | – | Files changed since the last build. Empty = none |
| dockerignore | string | – | .dockerignore rules pasted (otherwise looked up in the folder) |
| file | string | – | Path to a specific Dockerfile |
| files | array | – | Project paths, if no folder is given |
| project | string | – | Project folder: its Dockerfile, .dockerignore and files are read |
| text | string | – | The 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.
| Name | Type | Req | Description |
|---|---|---|---|
| element | string | yes | Atomic 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".
| Name | Type | Req | Description |
|---|---|---|---|
| element | string | yes | Atomic 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.
| Name | Type | Req | Description |
|---|---|---|---|
| charge | integer | yes | Charge: +2 for Fe2+, -1 for Cl- |
| element | string | yes | Atomic number or symbol |
No output schema declared.
No examples provided.
eval_check Review and run an eval suite ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| cases | array | yes | The suite cases, with their outputs already obtained |
| promptfoo | boolean | – | If 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.
| Name | Type | Req | Description |
|---|---|---|---|
| from | string | yes | – |
| input | string | yes | – |
| to | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| bodyNm | number | – | Channel thickness (fin width or sheet thickness) |
| gateLengthNm | number | – | – |
| oxideNm | number | – | EOT |
| temperatureK | number | – | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| word | string | yes | The 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.
| Name | Type | Req | Description |
|---|---|---|---|
| bits | string | yes | e.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.
| Name | Type | Req | Description |
|---|---|---|---|
| text | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | – | – |
| nLow | integer | yes | Landing level: 1=Lyman, 2=Balmer, 3=Paschen |
No output schema declared.
No examples provided.
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.