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

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

Available components

0 this week 94 Trust /100

Last scanned (17 hours ago)

Scores higher than 97% of npm servers

Category Developer Tools

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 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
What we tested

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 →

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.

  • 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
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 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 →

MCP tools · 140 exposed · ~21,854 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
maven_plan ~330

What `mvn <command>` would actually run in THIS project, without running Maven: module by module (reactor order with -pl/-am/-amd), phase by phase, goal by goal, and WHERE each goal comes from — the packaging default binding, your pom (with line), the parent (e.g. spring-boot:repackage comes from spring-boot-starter-parent), or a profile. Also: what is declared but never runs and why, which profiles are active and why, what changes between Maven 3.10 and 4.0, and a pom review (duplicates that fail the build since 3.10, plugins without a version). Verified goal by goal against real `mvn` logs (Maven 3.10.0 and 4.0.0-rc-7) on 11 real cases. Unknown parents or plugins are reported, never guessed.

NameTypeReqDescription
commandstring–The command, e.g. "mvn -pl api -am clean install -DskipTests -Pprod". Default: "mvn clean package"
jdkinteger–JDK major version, for <activation><jdk> profiles. Default 21
mavenstring–Maven version to simulate: 3 (3.10) or 4 (4.0). Default 3
pomstring–A single pom.xml pasted, if there is no folder
projectstring–Project folder: every pom.xml in it is read (target/ and node_modules/ skipped)

No output schema declared.

No examples provided.

mcp_catalog_audit ~345

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. Add `approvedToolsListJson` (the tools/list you reviewed and approved earlier) to catch a "rug pull": tools added or removed since, descriptions that changed or gained poisoning signals, new parameters, and annotations that became less cautious.

NameTypeReqDescription
approvedToolsListJsonstring–The tools/list you approved earlier, to diff against today's
encodingstring–BPE encoding for the token-cost measurement
instructionsstring–The server-level `instructions` string, if you have it
packageJsonstring–package.json, to cross-check its version against server.json
serverJsonstring–The 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.

mermaid_validate ~176

Check that Mermaid code actually parses, with Mermaid's own parser (the same version the Jarroba Tools web uses), before you hand it to someone to render. Returns the detected diagram type, or the parser error with its line, column and the tokens it expected — feed that back and fix the diagram, instead of guessing. Catches what models typically get wrong: unquoted labels with parentheses, `end` used as a node id, full-width punctuation, a `%` inside a pie value, an unknown diagram keyword. Covers every diagram type Mermaid knows (flowchart, sequence, class, state, ER, gantt, pie, mindmap, gitGraph, C4, architecture…). It parses only; it does not render.

NameTypeReqDescription
mermaidstringyesThe Mermaid source, without the ```mermaid fences

No output schema declared.

No examples provided.

number_bases ~87

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"
width–––

No output schema declared.

No examples provided.

oauth_audit ~219

Audit an OAuth 2.0 / OpenID Connect setup against RFC 9700 (OAuth 2.0 Security BCP), RFC 8414 and OIDC Discovery. Give an `authorizeUrl` (the /authorize request your app sends) to check PKCE present and S256, state and its entropy, nonce, PAR, redirect_uri over TLS / loopback / wildcards / fragments, secrets in the URL and scope breadth; and/or a `discoveryDocument` (the openid-configuration or oauth-authorization-server JSON, pasted — nothing is fetched) to check issuer, required fields, HTTPS endpoints, RS256, id_token alg "none", implicit and password grants, PKCE advertised (and "plain"), iss in responses, sender-constrained tokens and PAR. Each failed check carries its severity (must/should) and the RFC section.

NameTypeReqDescription
authorizeUrlstring–The full /authorize URL with its query string
discoveryDocumentstring–The .well-known/openid-configuration JSON

No output schema declared.

No examples provided.

paste_check ~147

Before pasting a log, a HAR file or any text into a ticket, chat or prompt: find the secrets and personal data in it (API keys, JWTs, session cookies, Authorization headers, passwords, cards, emails…). A HAR is read entry by entry, so each finding says in which request, header, cookie, query parameter or body it sits — the way the 2023 Okta support breach happened, through a HAR with live session tokens. Returns a short preview per finding (never the full secret) and `redacted`: the same content with every finding replaced, ready to paste.

NameTypeReqDescription
contentstringyesThe text or HAR (JSON) to check

No output schema declared.

No examples provided.

pension_base ~333

Compute the regulatory base (base reguladora) of a Spanish contributory retirement pension (General Scheme) from the monthly contribution bases, the way the law does it and models usually get wrong: BOTH systems while they coexist (the new one with its 2026-2036 calendar and the previous 300-month one, the higher wins), gaps filled with the minimum base (48 months at 100 %, then 50 %; improved for women under DT 41.ª), the older bases updated with the INE CPI, and the best months chosen. With the days contributed it also gives the percentage and the monthly pension. Each warning says what was assumed. It explains how the number is made; the official simulator of the Social Security has the full record.

NameTypeReqDescription
basesobjectyesContribution base per month from the Informe de bases, summing employers: {"2024-05": 2150.4}. A month with NO contribution is null (a gap); a month left out is unknown and counts as 0
daysContributedinteger–Days contributed (Informe de vida laboral) up to the last base given: adds the percentage and the monthly pension
improvedGapsboolean–Improved gap filling of DT 41.ª (women, while the gender gap in pensions is above 5 %)
retirementMonthstringyesMonth of retirement (the hechoCausante), YYYY-MM
untilRetirementstring–From the month after the last base given to the retirement: keep contributing at the last base, or no contributions (gaps)

No output schema declared.

No examples provided.

practice_check ~185

Before recommending a practice you learned in training, check whether it still holds: a curated, dated register of development and AI practices (still valid, superseded by what, anti-pattern, unnecessary since, or depends on the case), each with its evidence and how sure it is. Give `since` (your knowledge cutoff) to get only what changed after it. If the register has no entry, it says so instead of guessing — no entry means not reviewed, not "fine".

NameTypeReqDescription
areastring–Without topic: list every entry of this area (id, title, verdict; ~2,000 tokens) to scan it yourself
sincestring–Your knowledge cutoff: YYYY, YYYY-MM or YYYY-MM-DD
topicstring–What to check, in English: e.g. "chain of thought prompting", "jwt in localStorage"

No output schema declared.

No examples provided.

prompt_review ~281

Check a prompt against the rules that make it followable, in English or Spanish. kind "system" (an app's system prompt): explicit output contract, definition of done, what to do when the model does not know (the rule that prevents made-up answers), contradictions, vague or unverifiable requirements, prohibitions with no alternative, examples and context budget. kind "task" (a brief for an agent: "fix X in file Y"): deliverable, where to look, how to verify the result, what not to touch, definition of done. Both also flag an expert persona used to buy accuracy and shouting in capitals. Each finding says what to fix and, when a dated practice backs it, its id for practice_check. 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 prompts you write yourself.

NameTypeReqDescription
examplesinteger–How many input→output (few-shot) examples accompany the prompt
kindstring–"system": the system prompt of an app or assistant. "task": what you ask an agent to do once
outputFormatstring–The part describing the output format, if it is kept separate from the prompt
promptstringyesThe complete 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…
waitingRoominteger–Waiting 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.
maxTurnedAwaynumber–Maximum fraction that leaves without a place (0-1).
maxUtilizationnumber–Maximum utilization per resource (0-1). The 0.85 rule for hospital beds is this number.
maxWaitMinutesnumber–Maximum acceptable mean wait.
waitingRoominteger–Waiting places in addition to the resources.

No output schema declared.

No examples provided.

rabbit_route ~192

Which queues a RabbitMQ exchange delivers a message to, and why each binding matches or not: direct, topic (* and # words), fanout and headers (x-match all/any/all-with-x/any-with-x). Ported from RabbitMQ and calibrated against real 4.0.5 and 4.3.6 brokers (thousands of seeded cases, all equal). Unroutable means the message is dropped (or returned with mandatory). One difference: in headers, 1 and 1.0 are different values in RabbitMQ and equal here.

NameTypeReqDescription
bindingsarrayyes–
headersobject–headers exchange: the message headers
routingKeystring––
typestringyes–
versionstring–Broker line (default 4.3): from 4.3.5 a topic binding with more than two # is rejected

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
overlapinteger–Overlap between consecutive chunks; capped at half the size
querystring–If given, chunks come back ranked by BM25 against it
sizeinteger–Target size of each chunk, in characters
textstringyesThe text to split

No output schema declared.

No examples provided.

regex_redos_check ~191

Check a regex for catastrophic backtracking (ReDoS) WITHOUT running it on any text: static analysis with recheck, the same engine the Jarroba Tools /regex page uses. Says whether the pattern is safe, exponential or polynomial (with its degree), which part of the pattern is to blame, and an attack string that triggers it. For the two shapes people type by accident — nested quantifiers like (a+)+ and (\w+\s?)+ — it proposes a rewrite, re-analyses it, and only offers it if it is actually better, saying what it becomes. Use it right after writing a regex that will run on untrusted input.

NameTypeReqDescription
flagsstring–JavaScript flags, e.g. "i" or "u"
patternstringyesThe regex source, without slashes
timeoutMsinteger–Analysis time limit

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.

saml_audit ~170

Audit a SAML message: paste it as raw XML, as the base64 of an HTTP-POST binding, or as the deflated+base64 SAMLRequest/SAMLResponse of a Redirect binding (a whole URL works). Finds a missing signature, weak signature or digest algorithms (SHA-1), duplicate IDs and a signature that references a different element than the one being read (signature wrapping), no NotOnOrAfter, expired, no AudienceRestriction, no InResponseTo, unencrypted assertions, a non-success status and secrets in attributes. Returns issuer, NameID and attributes too. It does NOT verify the signature cryptographically against a certificate.

NameTypeReqDescription
inputstringyesThe SAML message: XML, base64 (POST binding) or a Redirect URL / deflated value

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
acceptorsnumber–Na in cm^-3
donorsnumber–Nd 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.

sns_filter ~182

Does an AWS SNS subscription filter policy let this message through, and which key decided it: exact values, prefix, suffix, equals-ignore-case, wildcard, cidr, numeric ranges, anything-but, exists and $or, on MessageAttributes or on the JSON body (FilterPolicyScope=MessageBody). Also rejects what SNS would reject: more than 5 keys, more than 150 combinations, a policy over 256 KB. Built from the AWS documentation; there is no emulator to calibrate it against, and the answer says so.

NameTypeReqDescription
message–yesMessageAttributes scope: { name: { "Type": "String"|"String.Array"|"Number"|"Binary", "Value": "..." } }. MessageBody scope: the JSON body
policy–yesThe filter policy, as an object or JSON text
scopestring––

No output schema declared.

No examples provided.

spreadsheet_audit ~140

Audit a spreadsheet file (.xlsx, .xlsm, .ods, .xls) by RECALCULATING every formula and comparing it with the value saved in the file: cells whose saved value no longer matches its formula (stale or hand-overwritten results), real circular references, functions the recalculation engine does not support, and formula errors. Returns only the problem cells, each with sheet, address, formula, saved and recalculated value; healthy formulas are just counted. Reads the file from disk: pass its path.

NameTypeReqDescription
maxCellsinteger–Cap on problem cells returned
pathstringyesPath to the spreadsheet file

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
cellRationumber–Pull-down / access width ratio. Rules read stability
cellsnumber–Array size, with sigmaMv, for the probability that at least one cell fails
lambdanumber–Channel-length modulation (1/V)
modestring–read opens the word line with both bit lines precharged (read disturb); in write, 0 is the correct result
pullUpRationumber–Pull-up / access width ratio. Too high and the cell refuses to be written
sigmaMvnumber–Cell-to-cell spread of the margin (mV), to express the SNM in sigmas
vddnumber–Supply voltage (V)
vthnumber–Threshold 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
banksinteger–How many banks the column is split into
cPerCellFfnumber–Capacitance each cell adds (fF)
cellCurrentUanumber–Current with which the cell discharges the line
cellsPerColumnnumber–Cells hanging off each bit line: this sets the capacitance
offsetSigmaMvnumber–Amplifier offset, one sigma
sensitivityMvnumber–Smallest difference the amplifier resolves nominally
sigmasnumber–Sigmas 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
compareWithTracksnumber–Compare against a cell of that height and return what is gained and lost
cppNmnumber–Contacted poly pitch
finPitchNmnumber––
pitchNmnumber–Routing-layer pitch: what one track is worth
rSheetOhmSqnumber–Sheet resistance of the rail metal (ohm/square)
railTracksnumber–Tracks consumed by BOTH rails together (VDD and VSS)
tracksnumber–Height in routing tracks. Real libraries run ~6 to ~12; half tracks (7.5T) are legitimate
widthCppnumber–Cell 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
dialectsarray–Your own assertion helpers. If your team has a home-made expect(), declare it here and it will stop coming back as "indeterminate".
languagestring–Required if you pass `text` without `path`.
pathstring–Path to the test file. The language is inferred from the extension.
textstring–The 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
namestring–Function name for the generated code. Inferred from the signature if you pass one.
schemastring–JSON Schema (an object with `properties`). Alternative to `signature`.
signaturestring–TypeScript 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.
maxFilesinteger–Cap 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
afterstring–New version, as text.
afterPathstring–Path to the new version.
beforestring–Previous version, as text.
beforePathstring–Path to the previous version (e.g. what `git show HEAD:file` produced).
languagestring–Required 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
irDropVnumber–With vdd and vth: slows the logic down by that voltage drop
tclkNsnumber–Clock period
tcqNsnumber–Launch flop delay, edge to output
tholdNsnumber––
tlogicMinNsnumber–Logic, SHORT path. Rules hold
tlogicNsnumber–Logic, LONG path. Rules setup
tsetupNsnumber––
tskewNsnumber–Positive = the clock reaches the capturing flop LATER: gives setup, takes hold
vddnumber––
vthnumber––

No output schema declared.

No examples provided.

unicode_info ~45

Unicode details for every character in a string: code point (U+…), name/category, UTF-8/16 bytes, HTML entity, escapes.

NameTypeReqDescription
inputstringyes–

No output schema declared.

No examples provided.

unit_convert ~82

Convert data sizes between SI multiples (kB/MB, base 1000) and IEC multiples (KiB/MiB, base 1024), and between bits and bytes. Settles the usual KB-vs-KiB confusion.

NameTypeReqDescription
inputstringyese.g. "15 Mb", "1 GiB", "1500 kB"

No output schema declared.

No examples provided.

url_parse ~34

Break a URL into protocol, host, port, path, query (parsed) and fragment.

NameTypeReqDescription
urlstringyes–

No output schema declared.

No examples provided.

wcag_contrast ~81

WCAG contrast ratio between two colors, and whether it passes AA/AAA for normal and large text. Accepts #rgb/#rrggbb, rgb(), hsl() or CSS names.

NameTypeReqDescription
backgroundstringyese.g. "#fff" or "white"
foregroundstringyese.g. "#333" or "black"

No output schema declared.

No examples provided.

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
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. 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.