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 21

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

Available components

+5 this week 66 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 2 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 Management30
  • Stability observed for 9 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.

  • 21 Sept 26 +1

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

  • 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 21 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
ieee754_from_decimal ~64

IEEE-754 representation of a decimal number in 32-bit (single) or 64-bit (double): sign, exponent, mantissa, raw bits, hex, and the value actually stored.

NameTypeReqDescription
numbernumberyes
precisionnumber

No output schema declared.

No examples provided.

ignore_check ~236

Say which paths a `.gitignore` or `.dockerignore` ignores AND BY WHICH LINE — it is `git check-ignore -v` without git. And it does what no other tool does: it reads the SAME file as git and as Docker and points at where they do NOT decide the same. The two formats look alike and are not: a pattern with no slashes (`node_modules`) applies at any depth in git but ONLY at the root in Docker, so a `.dockerignore` copied from a `.gitignore` pulls into the build context exactly what you thought you had excluded. It also warns about the `!` that cannot work because its folder is already excluded, which is the number-one cause of "my exception does nothing".

NameTypeReqDescription
filestringPath to the rules file
filesarrayPaths to evaluate, if no folder is given
modestringWhich rule dialect decides (default git)
projectstringProject folder: its real paths are read and, failing anything else, its .gitignore
textstringThe rules pasted

No output schema declared.

No examples provided.

ir_drop ~239

IR drop across a power delivery grid: worst and mean voltage lost, and where the worst is. Solves the 2D resistive network (GV=I) with sparse conjugate gradient. Use it to compare frontside delivery (entry points further apart) against backside (spread out, lower-resistance metal) at the SAME load, which is the only comparison that means anything. First-order: uniform single-layer mesh, static and equal load per region, no inductive coupling, no switching. Real designs are signed off at 0.5-2.5 % of Vdd.

NameTypeReqDescription
nintegerMesh side: n x n nodes. Each node is a REGION of the block, not one cell
nodeCurrentManumberLoad of each region
segmentOhmnumberMetal resistance between two neighbouring nodes
sourcePitchintegerSpacing between entry points in grid mode. The lever that matters most
sourcesstringedge = current enters only around the perimeter; grid = entry points every `sourcePitch` nodes
vddnumber

No output schema declared.

No examples provided.

json_diff ~45

Structural differences between two JSON documents, by path: added / removed / changed / type changed.

NameTypeReqDescription
astringyesJSON A
bstringyesJSON B

No output schema declared.

No examples provided.

jwt_decode ~37

Decode a JSON Web Token WITHOUT verifying its signature: header, payload and metadata (exp, iat…).

NameTypeReqDescription
tokenstringyes

No output schema declared.

No examples provided.

kg_metric ~169

Run a NAMED metric from the semantic layer against RDF data: fills its {{param}} placeholders from `args` and executes the resulting SPARQL. Use it so "revenue" or "active users" is computed from the AGREED definition instead of a query you invented — the fix for "one number, three answers". Returns the effective SPARQL and the result, or which parameters are missing.

NameTypeReqDescription
argsobjectValues for the metric's {{...}} parameters
datastringyesThe RDF graph as text
formatstring
metricstringyesName of the metric to run
semanticobjectyesSemantic layer: { glossary: [{term,target,synonyms?}], metrics: [{name,label?,sparql}] }

No output schema declared.

No examples provided.

kg_query ~115

Run SPARQL 1.1 (SELECT/ASK/CONSTRUCT/DESCRIBE) over in-memory RDF — a real engine, not pattern matching. Accepts Turtle, N-Triples, N-Quads, TriG, JSON-LD or RDF/XML. Returns rows (SELECT), a boolean (ASK) or Turtle (CONSTRUCT/DESCRIBE).

NameTypeReqDescription
datastringyesThe RDF graph as text
formatstring
querystringyesSPARQL query

No output schema declared.

No examples provided.

kg_semantic_validate ~111

Validate a SEMANTIC LAYER document (term→predicate glossary + named SPARQL metrics) before trusting it: structure, required fields (term/target, name/sparql), metric names usable as identifiers, and uniqueness. Returns {ok, errors, warnings}. This is "semantics as code": define once, compute the same everywhere.

NameTypeReqDescription
semanticobjectyesSemantic layer: { glossary: [{term,target,synonyms?}], metrics: [{name,label?,sparql}] }

No output schema declared.

No examples provided.

kg_validate ~83

Validate RDF data against its SHACL shapes (core subset): sh:targetClass + sh:path with minCount, maxCount, datatype, class and nodeKind. Returns whether it conforms plus every violation (node, property, constraint, message).

NameTypeReqDescription
datastringyesThe RDF graph (data + sh: shapes) as text
formatstring

No output schema declared.

No examples provided.

log_analyze ~163

Understand a log without reading it: detected format, number of EVENTS (a 40-line stack trace counts as one), breakdown by level, time range, the errors with their ROOT CAUSE resolved, and the most frequent patterns. Accepts a file PATH — that is how you look at a log that does not fit in your context, such as a CI log of hundreds of MB.

NameTypeReqDescription
formatstringForce the format instead of detecting it
fromstringWhich end to read if the file is over 32 MB
pathstringPath to the log file. Use this for big logs: they do not fit in a tool call.
textstringThe log as text. Alternative to `path`.

No output schema declared.

No examples provided.

log_around ~237

What ELSE happened around a moment in time. Given an instant — the spike log_trends returned, or the time of an alert — find the patterns that cluster there and do not appear the same way in the rest of the log. Correlation is NOT causation, and what settles it is order: what started BEFORE comes first and is a candidate explanation; what came after is usually a consequence. Background noise is filtered out even when a narrow window lands on one of its bursts.

NameTypeReqDescription
atstringyesReference instant, in ISO 8601 (e.g. "2026-08-27T10:40:00Z")
formatstringForce the format instead of detecting it
fromstringWhich end to read if the file is over 32 MB
limitinteger
pathstringPath to the log file. Use this for big logs: they do not fit in a tool call.
radiusSecondsintegerHow far to look on each side
textstringThe log as text. Alternative to `path`.

No output schema declared.

No examples provided.

log_convert ~190

Convert a log from one format to another through OpenTelemetry's Logs Data Model: JSON, logfmt, syslog RFC 5424, CSV, OpenTelemetry or Elastic Common Schema. Tells you UP FRONT what the conversion loses — syslog only has eight severities and a text body, so coming down to it from JSON drops fields.

NameTypeReqDescription
columnsarrayCSV only: which fields become columns
formatstringForce the format instead of detecting it
fromstringWhich end to read if the file is over 32 MB
hoststring
pathstringPath to the log file. Use this for big logs: they do not fit in a tool call.
servicestring
targetstringyesOutput format
textstringThe log as text. Alternative to `path`.

No output schema declared.

No examples provided.

log_lint ~169

Check whether the log is WELL WRITTEN — not what happened in the system: secrets or personal data printed, one line flooding the file, timestamps with no time zone (which make two machines impossible to correlate), the clock going backwards, everything at the same level, no request id, payload dumps, and orphan stack traces with no error line. Every finding comes with its count and a sample; secrets are masked.

NameTypeReqDescription
formatstringForce the format instead of detecting it
fromstringWhich end to read if the file is over 32 MB
pathstringPath to the log file. Use this for big logs: they do not fit in a tool call.
textstringThe log as text. Alternative to `path`.

No output schema declared.

No examples provided.

log_patterns ~184

Group log lines into TEMPLATES (Drain algorithm): "connected to 10.0.0.1" and "connected to 10.0.0.7" are the same message. Turns a million lines into a few hundred readable things, each with its count, worst level and time range. Also returns the RARE ones (seen once or twice), which in a production log are usually what you were looking for.

NameTypeReqDescription
formatstringForce the format instead of detecting it
fromstringWhich end to read if the file is over 32 MB
limitintegerHow many patterns to return
pathstringPath to the log file. Use this for big logs: they do not fit in a tool call.
textstringThe log as text. Alternative to `path`.

No output schema declared.

No examples provided.

log_profile_check ~107

Validate a Jarroba Tools LOG PROFILE (the `logprofile: 1` JSON that configures the log tools: format, server time zone, own-code prefixes, rules and AI budget). Returns ALL errors at once, each with the exact field (`rules[2].pattern`) and what was expected, so you can fix them in one pass instead of one at a time. Format documented in `public/logprofile.md`.

NameTypeReqDescription
profilestringyesThe profile as JSON

No output schema declared.

No examples provided.

log_profile_suggest ~183

Propose a LOG PROFILE from a real log: infers the format, the own-code prefix (read from the stack traces, which is where it is demonstrated) and a starting set of rules covering the most frequent errors and whatever floods the file. What it does NOT propose is the server time zone: that is not in the log, and inventing it shifts the entire timeline without anyone noticing. Accepts a file path.

NameTypeReqDescription
formatstringForce the format instead of detecting it
fromstringWhich end to read if the file is over 32 MB
namestringName for the profile
pathstringPath to the log file. Use this for big logs: they do not fit in a tool call.
textstringThe log as text. Alternative to `path`.

No output schema declared.

No examples provided.

log_reduce ~206

Cut a log down to a CHARACTER budget while keeping what matters: errors with their full stack trace, the window of what happened just before, and anything that appears only once or twice. Repeats are collapsed with their count ([xN]) and gaps are marked ([...N]). Use it to hand a big log to a model without spending the context on the same line repeated.

NameTypeReqDescription
contextintegerEvents kept before each error
formatstringForce the format instead of detecting it
fromstringWhich end to read if the file is over 32 MB
fullTracesbooleanfalse collapses each stack trace to its one-line summary
maxCharsintegerCharacter budget for the output
pathstringPath to the log file. Use this for big logs: they do not fit in a tool call.
textstringThe log as text. Alternative to `path`.

No output schema declared.

No examples provided.

log_rotation ~155

Put a folder or a list of rotated logs into TIME ORDER, split into series. Rotation numbering runs BACKWARDS against time: `app.log.3.gz` is older than `app.log.1.gz`, and plain `app.log` is the newest; alphabetically `app.log.10` sorts before `app.log.9` while in time it comes after. Use this BEFORE reading several logs of one service, or you will read them backwards. Returns the paths already ordered, ready to feed to log_analyze one by one.

NameTypeReqDescription
directorystringFolder to look in (does not recurse). Alternative to `names`.
namesarrayList of file names or paths, in any order

No output schema declared.

No examples provided.

log_stacktrace ~131

Read an exception stack trace (Java/JVM, Python, Node, Go, .NET, Rust, Ruby or PHP) and answer the only question anyone asks it: WHERE TO LOOK. Follows the "Caused by" chain to the root cause, separates your code from the framework, and points at your first frame. Infers which package is yours from the trace itself if you do not say.

NameTypeReqDescription
myPrefixesarrayPrefixes of your own code, e.g. ["com.acme.", "src/"]
tracestringyesThe stack trace, pasted as-is

No output schema declared.

No examples provided.

log_trends ~238

Answer WHEN IT STARTED, which is what a log is really asked. Compares each pattern against ITSELF rather than against total volume — in a busy service everything rises at 9am and nothing has happened — and returns three different things: what SPIKED relative to its own normal and at what time; what is NEW, which did not exist before and is usually what a deploy left behind; and what STOPPED APPEARING, which raises no counter and is often the worse news.

NameTypeReqDescription
bucketSecondsintegerWidth of the time bucket; by default chosen from the log's own range
formatstringForce the format instead of detecting it
fromstringWhich end to read if the file is over 32 MB
limitintegerHow many findings to return
minRationumberHow many times its own normal counts as a spike
pathstringPath to the log file. Use this for big logs: they do not fit in a tool call.
textstringThe log as text. Alternative to `path`.

No output schema declared.

No examples provided.

make_generate ~210

Generate a ready-to-use Makefile for a stack (node, python, go, rust, c or generic). What it generates PASSES its own linter with zero findings: it always ships `.DELETE_ON_ERROR`, `SHELL := /bin/bash` with `.SHELLFLAGS := -eu -o pipefail -c`, and declared `.PHONY` targets — the three lines that are almost never there and that prevent the most expensive failures. With `withLogs`, targets record their output through `tee`, redirect stderr, timestamp the file name, and take the log directory as an order-only prerequisite.

NameTypeReqDescription
projectNamestringProject name (default "mi-proyecto")
stackstringyesProject stack
withDockerbooleanDocker image targets (default no)
withHelpbooleanSelf-documenting `make help` built from ## comments (default yes)
withLogsbooleanTargets that record their output to files (default yes)

No output schema declared.

No examples provided.

make_lint ~205

Review a Makefile and return the mistakes that actually bite, each with WHAT is wrong, HOW it breaks in practice and HOW to fix it: a recipe indented with spaces instead of a tab, a `cd` that does not persist to the next line, a `$` that make eats before the shell sees it, `$(shell ...)` inside a `=` variable (re-executed on every use), a pipeline without `pipefail`, a missing `.PHONY`, and a missing `.DELETE_ON_ERROR`. Calibrated NOT to complain about correct code: a well-written Makefile comes back with zero findings.

NameTypeReqDescription
filestringPath to a specific Makefile
filesarrayProject paths: with them more cases are detected (e.g. a .PHONY that collides with a real file)
projectstringProject folder (its Makefile is read)
textstringThe Makefile pasted

No output schema declared.

No examples provided.

make_log_diff ~254

Compare the output of a REAL `make` run with what the simulation predicted, matching each command in the log to the Makefile rule that produced it. **What makes this useful, rather than any log analyzer, is the diff:** if make rebuilt something the simulation considered cached, that is the signature of an UNDECLARED DEPENDENCY — it raises no error, it just makes the build slower than it should be, or occasionally fails to rebuild what it should. Line-to-rule matching is APPROXIMATE and each match carries its confidence: recipes are echoed after variable expansion, a leading `@` suppresses them entirely, implicit rules produce commands that are not in the file, and with `-j` the output interleaves. make emits no timestamps, so nothing is said about how long anything took.

NameTypeReqDescription
logstringmake's output, pasted
logFilestringPath to a file with make's output
makefilestringThe Makefile pasted, if no folder is given
projectstringProject folder: its Makefile and real mtimes are read
targetsarrayWhat was asked to be built, if known

No output schema declared.

No examples provided.

make_role ~292

Answer the question that decides whether `make` is giving you anything: is this Makefile a BUILD, or a script LAUNCHER? make exists in order NOT to redo what is already done — mtimes, a dependency graph, skipping what did not change — and most Makefiles today use none of it: they are `make test`, `make lint`, `make docker-up`, all .PHONY, all running every time. Here each target is classified WITH THE SIGNAL that decided it (including the signals that pointed the other way: a .PHONY whose recipe creates that very file is a bug waiting to happen), what make is giving you TODAY is measured, and with `convertTo` it is converted to just, Taskfile or npm scripts. Whatever cannot be converted is OMITTED with its reason, rather than emitting a recipe that would look the same and rebuild every time. Honest caveat: `make` is POSIX and is everywhere; just and task have to be installed.

NameTypeReqDescription
convertTostringIf given, also convert to that format instead of only diagnosing
filestringPath to a specific Makefile
filesarrayProject paths: used to know whether a target already exists on disk
projectstringProject folder: its Makefile and its real paths are read
textstringThe Makefile pasted

No output schema declared.

No examples provided.

make_simulate ~251

Simulate `make` WITHOUT RUNNING ANYTHING: which targets would be rebuilt, in what order, and WHY, naming the file to blame. Answers the two questions no other tool answers: "why is it rebuilding this when I changed nothing?" and "why is it NOT rebuilding it?". With `project` it reads the Makefile and the REAL mtimes from disk; `touch` asks "what if I changed this file?" without changing it. The reasons use the same vocabulary as the Linux kernel's `make V=2`.

NameTypeReqDescription
filestringPath to a specific Makefile
filesarrayList of project paths, if no folder is given
forceAllbooleanLike `make -B`: rebuild everything without looking at dates
projectstringProject folder: its Makefile and its files' real mtimes are read
targetsarrayWhat to build. Empty = the Makefile's default target
textstringThe Makefile pasted, if there is no folder
toucharrayFiles to treat as just-modified, WITHOUT actually touching them (like `make -W`)

No output schema declared.

No examples provided.

mcp_catalog_audit ~276

Paste the `tools/list` response of an MCP server — yours, or a third party's you are evaluating whether to install — and check its catalogue quality: missing descriptions or annotations, a tool name that suggests it writes or deletes while its annotations say otherwise, context cost per tool (real BPE tokenization), and whether the top-level `instructions` field is set and fits under the ~2 KB some Tool Search clients trim. Add `serverJson`/`packageJson` to also catch the official MCP registry's own field-length and namespace-pattern limits, and a version mismatch between the two — the exact 422/403/400 errors this project hit publishing its own packages. This is NOT an access-security review: it does not evaluate what the tools are permitted to do, only how the catalogue is described.

NameTypeReqDescription
encodingstringBPE encoding for the token-cost measurement
instructionsstringThe server-level `instructions` string, if you have it
packageJsonstringpackage.json, to cross-check its version against server.json
serverJsonstringThe registry manifest (server.json), to check its own limits
toolsListJsonstringyesThe `tools/list` response, either `{"tools": [...]}` or the bare array

No output schema declared.

No examples provided.

number_bases ~89

Show an integer in binary, octal, decimal and hex, plus its bit view (signed/unsigned, popcount, leading/trailing zeros) at the chosen width. Accepts decimal, 0x…, 0b…, 0o…

NameTypeReqDescription
inputstringyese.g. "255", "0xff", "0b1010"
widthnumber

No output schema declared.

No examples provided.

prompt_review ~162

Check a system prompt against the rules that make it followable: an explicit output contract, a definition of done, what to do when the model does not know (the rule that prevents made-up answers), contradictions, unverifiable requirements, prohibitions with no alternative, example count and context budget. It does NOT judge whether the prompt is GOOD — that needs evals and a real model run — it is the deterministic layer underneath. Useful on your own system prompt.

NameTypeReqDescription
examplesintegerHow many input→output (few-shot) examples accompany the prompt
outputFormatstringThe part describing the output format, if it is kept separate from the prompt
promptstringyesThe complete system prompt, exactly as it would be sent

No output schema declared.

No examples provided.

queue_analyze ~184

M/M/c queue: with N resources, how many people wait, how long, and what fraction leaves without a place. With `waitingRoom` the model becomes M/M/c/K (finite waiting area — the realistic case); without it the queue is infinite. Output times are in MINUTES. Erlang and M/M/c are exactly the kind of arithmetic a model does "from memory" and gets wrong.

NameTypeReqDescription
arrivalsPerHournumberyesArrivals per hour (lambda), e.g. 12 groups/hour.
avgServiceMinutesnumberyesMean time one resource stays occupied, in minutes, e.g. 75.
serversintegeryesResources: tables, beds, bays, checkouts…
waitingRoomintegerWaiting places IN ADDITION to the resources. Omit for an unbounded queue (nobody leaves).

No output schema declared.

No examples provided.

queue_loss ~98

Pure LOSS system (Erlang B): there is no waiting area, so whoever finds no free resource leaves. Car parks, workshop bays, phone lines, critical-care beds.

NameTypeReqDescription
arrivalsPerHournumberyesArrivals per hour (lambda), e.g. 12 groups/hour.
avgServiceMinutesnumberyesMean time one resource stays occupied, in minutes, e.g. 75.
serversintegeryes

No output schema declared.

No examples provided.

queue_simulate ~132

Simulate the queue customer by customer (discrete events, fixed seed, so the result is reproducible). Its job is to CROSS-CHECK the analytic answer: if the simulation and the formula disagree, one of them is wrong.

NameTypeReqDescription
arrivalsPerHournumberyesArrivals per hour (lambda), e.g. 12 groups/hour.
avgServiceMinutesnumberyesMean time one resource stays occupied, in minutes, e.g. 75.
customersinteger
seedinteger
serversintegeryes
waitingRoominteger

No output schema declared.

No examples provided.

queue_size ~183

How many resources do you need? Returns the MINIMUM that meets your target (max wait, max turned away, or max utilization) and how the system behaves at that number. This is the question asked before building a place, not after.

NameTypeReqDescription
arrivalsPerHournumberyesArrivals per hour (lambda), e.g. 12 groups/hour.
avgServiceMinutesnumberyesMean time one resource stays occupied, in minutes, e.g. 75.
maxTurnedAwaynumberMaximum fraction that leaves without a place (0-1).
maxUtilizationnumberMaximum utilization per resource (0-1). The 0.85 rule for hospital beds is this number.
maxWaitMinutesnumberMaximum acceptable mean wait.
waitingRoomintegerWaiting places in addition to the resources.

No output schema declared.

No examples provided.

rag_prepare ~161

Split a text on real boundaries (paragraph, else sentence, never mid-word) with the overlap you ask for, and optionally rank the chunks against a query with BM25. Use it to prepare a RAG corpus, or to see why a query fails to retrieve what it should. No model involved: this is the lexical half, the one that finds literal terms — a code, a surname, a version number — that an embedding dissolves.

NameTypeReqDescription
overlapintegerOverlap between consecutive chunks; capped at half the size
querystringIf given, chunks come back ranked by BM25 against it
sizeintegerTarget size of each chunk, in characters
textstringyesThe text to split

No output schema declared.

No examples provided.

regex_test ~53

Test a regex against a string: whether it matches, every match and its capture groups. Exact matching, not guessed.

NameTypeReqDescription
flagsstring
patternstringyes
textstringyes

No output schema declared.

No examples provided.

semiconductor_carriers ~107

Carrier concentrations in a doped semiconductor at a given temperature: n, p, band gap (Varshni), intrinsic concentration and Fermi level. The minority carrier is computed as ni^2/majority to avoid the catastrophic cancellation that destroys precision when subtracting nearly equal dopings.

NameTypeReqDescription
acceptorsnumberNa in cm^-3
donorsnumberNd in cm^-3
materialstring
temperatureKnumber

No output schema declared.

No examples provided.

semver_parse ~49

Parse a SemVer version (major.minor.patch + pre-release + build metadata).

NameTypeReqDescription
versionstringyese.g. "1.4.2-beta.1+build.9"

No output schema declared.

No examples provided.

semver_satisfies ~59

Given a list of versions, which ones satisfy a SemVer range (^, ~, >=, <, x, …).

NameTypeReqDescription
rangestringyese.g. "^1.2.0"
versionsarrayyes

No output schema declared.

No examples provided.

sram_noise_margin ~300

Static noise margin (SNM) of a 6T SRAM cell by the butterfly method: two cross-coupled transfer curves and the side of the largest inscribed square. Returns the margin per mode (hold/read/write), the per-lobe split (which side would flip) and, optionally, the margin expressed in sigmas and the array failure probability. NOT the diagonal shortcut, which returns twice the correct value. First-order Shichman-Hodges: no body effect, no process variation, no parasitics — it shows why the margin moves, it is not a silicon signature.

NameTypeReqDescription
cellRationumberPull-down / access width ratio. Rules read stability
cellsnumberArray size, with sigmaMv, for the probability that at least one cell fails
lambdanumberChannel-length modulation (1/V)
modestringread opens the word line with both bit lines precharged (read disturb); in write, 0 is the correct result
pullUpRationumberPull-up / access width ratio. Too high and the cell refuses to be written
sigmaMvnumberCell-to-cell spread of the margin (mV), to express the SNM in sigmas
vddnumberSupply voltage (V)
vthnumberThreshold voltage, same for nMOS and pMOS (V)

No output schema declared.

No examples provided.

sram_read_path ~240

SRAM read timing from dV = I*t/C: bit-line capacitance, signal needed, and how long before a 1 can be told from a 0. The signal needed is the amplifier sensitivity PLUS several sigmas of its offset, which usually dominates. Also returns the time for 1/2/4/8 banks. First-order: constant cell current, capacitance linear in cell count, no line resistance or column coupling. The reads-per-second figure is signal development only — a real read adds precharge, decoding and amplification.

NameTypeReqDescription
banksintegerHow many banks the column is split into
cPerCellFfnumberCapacitance each cell adds (fF)
cellCurrentUanumberCurrent with which the cell discharges the line
cellsPerColumnnumberCells hanging off each bit line: this sets the capacitance
offsetSigmaMvnumberAmplifier offset, one sigma
sensitivityMvnumberSmallest difference the amplifier resolves nominally
sigmasnumberSigmas of offset demanded as margin

No output schema declared.

No examples provided.

standard_cell ~264

Standard-cell geometry from its height in TRACKS: height, area, tracks left free for routing, fins per transistor, density and power-rail resistance — plus what you gain and lose against another height. The rail resistance it returns is what ir_drop consumes. Warns when the height does not land on the routing grid, which misaligns pins when alternate rows are flipped to share a rail. Idealised geometry: no real design rules, no vias, no parasitic extraction.

NameTypeReqDescription
compareWithTracksnumberCompare against a cell of that height and return what is gained and lost
cppNmnumberContacted poly pitch
finPitchNmnumber
pitchNmnumberRouting-layer pitch: what one track is worth
rSheetOhmSqnumberSheet resistance of the rail metal (ohm/square)
railTracksnumberTracks consumed by BOTH rails together (VDD and VSS)
tracksnumberHeight in routing tracks. Real libraries run ~6 to ~12; half tracks (7.5T) are legitimate
widthCppnumberCell width in CPP: an inverter is 2, a NAND2 is 3

No output schema declared.

No examples provided.

string_escape ~44

Escape a string for a target context: javascript, json, sql, regex, html, url or css.

NameTypeReqDescription
modestringyes
textstringyes

No output schema declared.

No examples provided.

string_unescape ~45

Unescape a string from a context (javascript, json, sql, regex, html, url, css).

NameTypeReqDescription
modestringyes
textstringyes

No output schema declared.

No examples provided.

test_audit ~216

Audit a test file and say, case by case, what it ACTUALLY checks: which ones assert about a value, which only check that something exists, which assert nothing at all, and which are disabled. Returns the EVIDENCE behind each verdict (the assertions it found) so you can check the checker. TypeScript, JavaScript, Python, Java and Go. Executes nothing. Run it on the tests you just wrote, BEFORE you hand them over: told to "make the tests pass", widening a matcher is cheaper than fixing the bug, and this is what notices.

NameTypeReqDescription
dialectsarrayYour own assertion helpers. If your team has a home-made expect(), declare it here and it will stop coming back as "indeterminate".
languagestringRequired if you pass `text` without `path`.
pathstringPath to the test file. The language is inferred from the extension.
textstringThe test file as text. Alternative to `path`.

No output schema declared.

No examples provided.

test_cases ~188

From a TYPE to the cases worth testing, with no model involved: equivalence partitions and boundary values derived from a TypeScript signature or a JSON Schema. For each parameter it returns the TECHNIQUE that applies and why — boundary values only mean something where there is an ordering, so they are NOT applied to a boolean or an enum. It adds the properties that can be asserted without knowing the domain, plus a fast-check test ready to paste. Use it BEFORE writing the tests, so you do not miss the cases everyone misses.

NameTypeReqDescription
namestringFunction name for the generated code. Inferred from the signature if you pass one.
schemastringJSON Schema (an object with `properties`). Alternative to `signature`.
signaturestringTypeScript signature, e.g. function calculate(price: number, kind: 'A' | 'B'): number

No output schema declared.

No examples provided.

test_debt ~148

A project's DISABLED-test debt, WITH ITS AGE. Walks the folder, finds every `it.skip`, `xit`, `@Ignore`, `@pytest.mark.skip` or `t.Skip`, and dates it with `git blame`. None of those cases appears in a coverage report, because as far as the runner is concerned they do not exist: this is the debt nobody measures and the one that lasts longest — disabled 'to fix later', and later never comes. Sorted oldest first, which is what makes it actionable.

NameTypeReqDescription
folderstringyesRoot of the project (or subtree) to review.
maxFilesintegerCap on how many test files to read.

No output schema declared.

No examples provided.

test_diff_audit ~183

Compare TWO versions of the same test file and say whether the change STRENGTHENED or WEAKENED the safety net: widened matchers (toBe -> toContain -> toBeGreaterThan), assertions that disappeared, and cases that stopped running. Call it on your own work after touching tests, and above all after fixing a red suite: reaching green by softening an assertion is cheaper than fixing the bug, and this is what catches it. Executes nothing.

NameTypeReqDescription
afterstringNew version, as text.
afterPathstringPath to the new version.
beforestringPrevious version, as text.
beforePathstringPath to the previous version (e.g. what `git show HEAD:file` produced).
languagestringRequired if you pass the texts without paths.

No output schema declared.

No examples provided.

text_decode ~31

Try to decode a string from URL-encoding, Base64 and HTML entities.

NameTypeReqDescription
inputstringyes

No output schema declared.

No examples provided.

text_encode ~35

Encode a string to URL-encoding, Base64 and HTML-escape (all three at once).

NameTypeReqDescription
inputstringyes

No output schema declared.

No examples provided.

timestamp_convert ~76

Convert an instant between formats: Unix (s/ms), ISO 8601, human, log, and per-locale/timezone. Accepts a Unix number or a date string.

NameTypeReqDescription
inputstringyese.g. "1700000000" or "2024-01-15T10:30:00Z"

No output schema declared.

No examples provided.

timing_path ~259

Synchronous path analysis: setup and hold slack, and maximum frequency. The clock period appears ONLY in the setup check, so a setup failure is fixed by lowering the frequency and a hold failure is not — no speed makes it work. Skew enters both with opposite signs. With irDropV+vdd+vth it also derates the logic by voltage (alpha-power law), connecting power delivery to the clock. First-order: ONE path, delays as numbers, no process variation, no jitter, no temperature derating.

NameTypeReqDescription
irDropVnumberWith vdd and vth: slows the logic down by that voltage drop
tclkNsnumberClock period
tcqNsnumberLaunch flop delay, edge to output
tholdNsnumber
tlogicMinNsnumberLogic, SHORT path. Rules hold
tlogicNsnumberLogic, LONG path. Rules setup
tsetupNsnumber
tskewNsnumberPositive = the clock reaches the capturing flop LATER: gives setup, takes hold
vddnumber
vthnumber

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 66 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 21 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 21 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.