Jarroba Tools
NPM · @JARROBA/MCP
140 deterministic tools for your AI: logs, tests, SQL, diagrams, SPARQL. Local, no network.
Available components
Last scanned (15 hours ago)
Scores higher than 97% of npm servers
Category Developer Tools
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 Security99
- 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
- 4 of 17 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency100
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to Invarato/jarroba-mcp). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 9 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability78
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 22189 tokens (~158/item across 140 items; 140 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 Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage93
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 78% 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 141 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Checks we ran (16)
- Malware scan
- Known CVEs
- Install scripts
- Dependency health
- Source repository
- Provenance
- License
- Maintenance
- Security disclosure
- Schema quality
- Stability
- Tool coverage
- Injection markers
- Destructive annotations
- Judged manipulation
- MCP protocol
Does not apply to this package (2)
- Endpoint SecurityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.
- Transport & ReachabilityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.
The score does not measure everything. What the score does not measure →
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.
- 27 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 26 Oct 26 −12
- Malware scan: pass → unverified ▼ security
- Stability: 0.97 → pass security
- Schema quality: unverified → 100 ▲ functional
- Package version: 0.2.0 → 0.3.0 functional
- 25 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 24 Oct 26 +14
- Malware scan: unverified → pass ▲ security
- Stability: pass → 0.93 functional
- 23 Oct 26 −15
- Malware scan: pass → unverified ▼ security
- Dependency health: 0.86 → 0.92 ▲ functional
- MCP protocol: Implements a current MCP spec version (2026-07-28). functional
- Package version: 0.1.11 → 0.2.0 functional
- 22 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 21 Oct 26 −15
- Malware scan: pass → unverified ▼ security
- Package version: 0.1.10 → 0.1.11 functional
- 20 Oct 26 0
- Security disclosure: fail → pass ▲ functional
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 5 Nov 2026 · Analysed npm/@jarroba/mcp@0.3.0
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 | npm |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | Invarato/jarroba-mcp |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/Invarato/jarroba-mcp/.github/workflows/publish.yml@refs/tags/v0.3.0 |
| Rekor log index | 3492356381 |
| Predicate type | SLSA build provenance https://slsa.dev/provenance/v1 |
| Subject digest | sha512:c70deda99d3cc949f6933c96dab1fbfc31f0447f64f89a9f5561b84ca7c3ad73f3e3e4b1168b7d5235df7e481aa324dab3acfc5292dc8c85ef82d053c |
Background: How many MCP packages publish verified provenance →
Dependencies 17 packages
| Packages resolved | 17 |
|---|---|
| Stale | 4 |
| 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 →
abtest_analyze ~207
Analyse a conversion A/B (or A/B/n) test the way a statistician would, instead of eyeballing two percentages. Two variants: difference and relative lift with confidence intervals, the right test (two-proportion z, or Fisher's exact when counts are low), p-value, significance and winner, plus the Bayesian probability that the variant beats control (Beta(1,1) priors). More than two: an omnibus chi-square and every variant against control with Holm or Benjamini-Hochberg correction. Always checks sample ratio mismatch (SRM) against the planned split — a broken split invalidates the result, however good it looks.
| Name | Type | Req | Description |
|---|---|---|---|
| alpha | number | – | – |
| control | integer | – | Index of the control variant |
| correction | string | – | – |
| plannedSplit | array | – | Planned split, e.g. [1,1,2]. Default: equal |
| variants | array | yes | Control first unless `control` says otherwise |
No output schema declared.
No examples provided.
abtest_sample_size ~170
Plan a conversion A/B test before running it: visitors per variant needed to detect a given relative lift (same formula as R's power.prop.test, two-sided), and how many days that takes with your traffic. Or the reverse: the smallest lift detectable with the visitors you can get.
| Name | Type | Req | Description |
|---|---|---|---|
| alpha | number | – | – |
| baselineRate | number | yes | Control conversion rate, e.g. 0.10 |
| dailyVisitors | number | – | Daily traffic, for the duration |
| power | number | – | – |
| relativeLift | number | – | Relative lift to detect: 0.1 = +10%. Or give visitorsPerVariant |
| trafficFraction | number | – | – |
| variants | integer | – | – |
| visitorsPerVariant | integer | – | → minimum detectable lift instead |
No output schema declared.
No examples provided.
abtest_sequential ~165
Looking at an A/B test before it ends needs a stricter threshold per look, or false positives balloon. Returns the two-sided z boundary per look of a group-sequential design, Pocock or O'Brien-Fleming: equally spaced `looks`, or arbitrary `informationFractions` (Lan-DeMets alpha spending). Stop at look k only if |z| ≥ its boundary.
| Name | Type | Req | Description |
|---|---|---|---|
| alpha | number | – | – |
| informationFractions | array | – | Share of the planned sample at each look, increasing, e.g. [0.3,0.55,1] |
| looks | integer | – | Equally spaced looks, final one included |
| method | string | – | obf = O'Brien-Fleming, pocock = Pocock |
No output schema declared.
No examples provided.
access_check ~405
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 | – |
| requestContext | object | – | AWS only: the request context, so Condition blocks are evaluated instead of left indeterminate, e.g. {"aws:SourceIp": "10.1.2.3", "aws:PrincipalTag/team": "data", "aws:MultiFactorAuthPresent": "true"} |
| 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?, rcps?,… |
No output schema declared.
No examples provided.
access_diff ~339
"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 | object | yes | Scenario data. Shape depends on "provider" — azure: {ambitos, pertenencias?, roles?, asignaciones?, denegaciones?}; aws: {ambitos, cuentasGestion?, identidades?, recursos?, scps?, boundaries?, rcps?,… |
| worldBefore | object | yes | Scenario data. Shape depends on "provider" — azure: {ambitos, pertenencias?, roles?, asignaciones?, denegaciones?}; aws: {ambitos, cuentasGestion?, identidades?, recursos?, scps?, boundaries?, rcps?,… |
No output schema declared.
No examples provided.
access_who_can ~201
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?, rcps?,… |
No output schema declared.
No examples provided.
actions_audit ~188
Audit GitHub Actions workflows for the injection and supply-chain patterns behind real incidents: untrusted `${{ github.event.* }}` interpolated into `run:` or github-script (command/script injection), `pull_request_target` that checks out the fork's code with the repo's secrets ("pwn request"), actions pinned to a tag or branch instead of a commit SHA (tj-actions/changed-files, CVE-2025-30066, 23,000+ repos), `permissions: write-all`, hard-coded secrets, curl-pipe-to-shell and suspicious hosts. Each finding carries a rule id, severity, confidence (structural vs heuristic), file, line and job. Static analysis of the YAML you pass: nothing is fetched or run.
| Name | Type | Req | Description |
|---|---|---|---|
| files | array | yes | Workflow files, e.g. {"path": ".github/workflows/ci.yml", "content": "..."} |
No output schema declared.
No examples provided.
agent_config_audit ~201
Audit the configuration an AI coding agent runs with, before you trust a repo or install something: Claude Code settings (hooks, permissions like Bash(*), bypass mode, environment variables that redirect the API), MCP server configs for any client (shell servers, unpinned packages, privileged Docker, plain HTTP, auto-approval), VS Code tasks that run when a folder opens and auto-approve settings, Codex and Gemini CLI configs, environment files, and instruction text (CLAUDE.md, AGENTS.md, skills, subagents) carrying hidden Unicode, instruction-override or fake-authority phrasing, data leaks through image links, or download-and-execute commands. Findings that run WITHOUT anyone approving (a hook, a task on open) come first in `runsWithoutAsking`.
| Name | Type | Req | Description |
|---|---|---|---|
| files | array | yes | Config and instruction files with their real paths, e.g. {"path": ".claude/settings.json", "content": "..."} |
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.
archsim_simulate ~207
Simulate an architecture (archsim format) with the Architecture Simulator's engine: steady-state throughput, p50/p95 RESPONSE latency (it ends at the first queue) and PROCESSING latency, availability, bottleneck, infrastructure cost per hour, per-queue lag / "full in N s" / silently lost messages, per-node utilization, and the Report's findings. Optionally also runs a timed phase with a scenario (peak, DDoS, LLM outage) and reports the worst of it. Deterministic; nothing leaves the machine.
| Name | Type | Req | Description |
|---|---|---|---|
| aiReqPerSec | number | – | Requests/s entering through AI sources (nodes with no input that are not clients). Default 0. |
| archsim | string | yes | The archsim document as JSON. |
| phase | object | – | Timed phase after steady state (e.g. {"seconds":60,"scenario":{"loadMult":6}}): queues fill, autoscaling lags (~60 s by default). |
No output schema declared.
No examples provided.
archsim_validate ~118
Validate an architecture-simulation document (the archsim format, spec: archsim.md next to llms.txt). Checks the JSON shape, known node kinds and edge references, and builds the graph with the type defaults. Returns {ok, error?, summary: {nodes by kind, edges, queues without consumers}}. Use it before archsim_simulate or before handing the JSON to a person.
| Name | Type | Req | Description |
|---|---|---|---|
| archsim | string | yes | The archsim document as JSON ({"archsim":1,"nodes":[…],"edges":[…]}). |
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 ~87
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 | – | – | – |
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.
cedar_check ~191
Check Cedar authorization policies (the language of AWS Verified Permissions) with the official Cedar engine, instead of reasoning about them: parse errors with their location; validation against your schema if you give one (wrong attribute, wrong entity type, impossible conditions), and of your entities against it; and, for each request, allow or deny with the policies that decided it — so you can tell a missing permit from a forbid that wins, and see a forbid that errored and so did not apply (fails open). Policies may carry @id("…") to name them in the answer.
| Name | Type | Req | Description |
|---|---|---|---|
| entities | array | – | Entities in Cedar JSON format: {uid:{type,id}, attrs, parents} |
| policies | string | yes | Cedar policy set (text) |
| requests | array | – | Authorization requests to decide |
| schema | string | – | Cedar schema, text or JSON. If given, policies are validated against it |
No output schema declared.
No examples provided.
chem_ph ~134
Exact pH of a mixture of acids, bases and salts by charge and mass balance — no "x is negligible", no "only the first dissociation" — with the speciation of each weak system and the textbook formula next to it, with its validity rule and how wrong it is here. Every constant comes with the paper or critical compilation it was taken from. Ideal solution at 25 °C. Give listSubstances: true (and no components) to get what it knows.
| Name | Type | Req | Description |
|---|---|---|---|
| components | array | – | What is in the beaker; empty = pure water |
| listSubstances | boolean | – | – |
No output schema declared.
No examples provided.
chem_solubility ~183
Does a sparingly soluble salt precipitate in this solution (Q vs Ksp), and if it does — or if you add the solid in excess — the equilibrium: how much dissolves or precipitates and the final pH, with the basicity of the anion and the common ion taken into account; next to it the textbook formula, which ignores the pH (the CaCO₃ lesson). Every constant comes with the paper or critical compilation it was taken from.
| Name | Type | Req | Description |
|---|---|---|---|
| components | array | – | What is already in the beaker; empty = pure water |
| salt | string | yes | Table id or formula: "agcl", "CaCO3", "Mg(OH)2"… |
| solidInExcess | boolean | – | Add the solid salt in excess (saturate) instead of only checking whether it precipitates |
No output schema declared.
No examples provided.
chem_titration ~138
Titration of what is in the beaker with a titrant from the burette: every equivalence point (volume and pH), the indicators ranked by titration error for each, and the curve. Polyprotic acids, mixtures and weak/weak included, computed exactly. Every constant comes with the paper or critical compilation it was taken from.
| Name | Type | Req | Description |
|---|---|---|---|
| analyte | array | yes | – |
| analyteVolumeMl | number | yes | – |
| maxVolumeMl | number | yes | How far to titrate |
| points | integer | – | Points of the returned curve (default 41) |
| titrant | object | yes | – |
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 ~138
Count tokens with a model's real tokenizer: o200k_base (GPT-4o and later), cl100k_base (GPT-4/3.5), p50k_base, r50k_base; qwen3 (Qwen3/Qwen2.5 family) and mistral-v3 (Mistral 7B v0.3 and similar), run locally. Claude's tokenizer is not public: claude-estimate is o200k × a measured factor, an estimate. 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.
csv_diff ~307
Compare two CSV files by a KEY column, of ANY size: which rows are only in A, only in B, and which changed and in WHICH columns. Columns are matched by header name, so a re-exported file with reordered columns or rows is not "everything changed" (it is for a line diff). Both files are streamed from disk; only the keys of B are held in memory, so do not read them into your context — pass the paths. Quoted cells with commas or line breaks inside are handled (RFC 4180). Optionally writes the FULL difference, one row per changed cell (`estado,clave,columna,valor_a,valor_b`), to `outPath`.
| Name | Type | Req | Description |
|---|---|---|---|
| caseInsensitiveKey | boolean | – | – |
| delimiter | string | – | Field delimiter (default: detected, e.g. "," ";" or tab) |
| examples | integer | – | – |
| header | boolean | – | Both files have a header row |
| key | string | yes | Key column: its header name, or its 1-based position if there is no header |
| keyB | string | – | Key column in B, if named differently |
| outPath | string | – | Write the full long-format difference here (CSV) |
| pathA | string | yes | First CSV (the reference, e.g. yesterday's export) |
| pathB | string | yes | Second CSV (e.g. today's) |
| trim | boolean | – | Ignore leading/trailing spaces in values |
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_migration_measure ~246
Before proposing a PostgreSQL migration, MEASURE what each statement would lock, instead of guessing. Runs your schema (DDL + sample data) and then the migration in an ephemeral PostgreSQL (pglite, in memory) and reads, per statement: the strongest table lock actually taken (pg_locks), whether it rewrote the table, whether it scanned it in full, a risk level (lock mode × duration), and the safer rewrite when there is one — CREATE INDEX CONCURRENTLY, ADD CONSTRAINT … NOT VALID + VALIDATE, NOT NULL NOT VALID (PG 18), lock_timeout, new column + backfill instead of ALTER TYPE — with the SQL written out. Nothing touches a real database.
| Name | Type | Req | Description |
|---|---|---|---|
| migration | string | yes | The migration to measure, one or more statements |
| queries | array | – | Optional: the application's queries. Each one is run before and after the migration and reported as breaks / changes (columns removed or retyped) / widens / fixes / already-failing / same |
| schema | string | yes | The starting schema: CREATE TABLE … plus a few INSERTs so scans and rewrites are visible. Can be empty |
No output schema declared.
No examples provided.
db_query_check ~238
Run a SQL query against your schema in an ephemeral PostgreSQL (pglite, in memory) before you hand it over, instead of guessing whether a column exists: does it run, which columns it returns with their real PostgreSQL types, how many rows, a small sample — or Postgres's own error with its SQLSTATE and position. Runs inside a transaction that is rolled back, so an UPDATE or DELETE is safe to check. Give `compareWith` (e.g. a reference query, or the version before your rewrite) to check both return the same rows: they are also run on adversarial data (NULLs, duplicates, empty tables), and if they differ you get the smallest counter-example with its INSERT statements — the classic NOT IN with a NULL.
| Name | Type | Req | Description |
|---|---|---|---|
| compareWith | string | – | Optional second read-only query that should return the same rows |
| ordered | boolean | – | With compareWith: also compare row order (only if ORDER BY matters) |
| schema | string | yes | CREATE TABLE … plus INSERTs with some sample data. Can be empty |
| sql | string | yes | The query to check |
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.
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
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. 140 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 94 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 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 Jarroba Tools MCP server expose?
Jarroba Tools exposes 140 tools: cidr_info, cidr_contains, cidr_vlsm, count_tokens, hash_text, and 135 more. Their descriptions and schemas cost roughly 21,854 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 5 November 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.
What did VerifyMCP test on the Jarroba Tools MCP server?
VerifyMCP ran 16 checks on Jarroba Tools, covering Malware scan, Known CVEs, Install scripts, Dependency health and 12 more. Endpoint Security and Transport & Reachability do not apply to an npm package, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.