Jarroba Tools
NPM · @JARROBA/MCP
140 deterministic tools for your AI: logs, tests, SQL, diagrams, SPARQL. Local, no network.
Available components
Last scanned (17 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 →
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.
| Name | Type | Req | Description |
|---|---|---|---|
| command | string | – | The command, e.g. "mvn -pl api -am clean install -DskipTests -Pprod". Default: "mvn clean package" |
| jdk | integer | – | JDK major version, for <activation><jdk> profiles. Default 21 |
| maven | string | – | Maven version to simulate: 3 (3.10) or 4 (4.0). Default 3 |
| pom | string | – | A single pom.xml pasted, if there is no folder |
| project | string | – | Project folder: every pom.xml in it is read (target/ and node_modules/ skipped) |
No output schema declared.
No examples provided.
mcp_catalog_audit Audit an MCP server catalogue for design quality ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| approvedToolsListJson | string | – | The tools/list you approved earlier, to diff against today's |
| encoding | string | – | BPE encoding for the token-cost measurement |
| instructions | string | – | The server-level `instructions` string, if you have it |
| packageJson | string | – | package.json, to cross-check its version against server.json |
| serverJson | string | – | The registry manifest (server.json), to check its own limits |
| toolsListJson | string | yes | The `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.
| Name | Type | Req | Description |
|---|---|---|---|
| mermaid | string | yes | The 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…
| Name | Type | Req | Description |
|---|---|---|---|
| input | string | yes | e.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.
| Name | Type | Req | Description |
|---|---|---|---|
| authorizeUrl | string | – | The full /authorize URL with its query string |
| discoveryDocument | string | – | 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.
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | yes | The text or HAR (JSON) to check |
No output schema declared.
No examples provided.
pension_base Spanish retirement pension: regulatory base and percentage ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| bases | object | yes | Contribution 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 |
| daysContributed | integer | – | Days contributed (Informe de vida laboral) up to the last base given: adds the percentage and the monthly pension |
| improvedGaps | boolean | – | Improved gap filling of DT 41.ª (women, while the gender gap in pensions is above 5 %) |
| retirementMonth | string | yes | Month of retirement (the hechoCausante), YYYY-MM |
| untilRetirement | string | – | 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".
| Name | Type | Req | Description |
|---|---|---|---|
| area | string | – | Without topic: list every entry of this area (id, title, verdict; ~2,000 tokens) to scan it yourself |
| since | string | – | Your knowledge cutoff: YYYY, YYYY-MM or YYYY-MM-DD |
| topic | string | – | What to check, in English: e.g. "chain of thought prompting", "jwt in localStorage" |
No output schema declared.
No examples provided.
prompt_review Review a prompt before using it ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| examples | integer | – | How many input→output (few-shot) examples accompany the prompt |
| kind | string | – | "system": the system prompt of an app or assistant. "task": what you ask an agent to do once |
| outputFormat | string | – | The part describing the output format, if it is kept separate from the prompt |
| prompt | string | yes | The 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.
| Name | Type | Req | Description |
|---|---|---|---|
| arrivalsPerHour | number | yes | Arrivals per hour (lambda), e.g. 12 groups/hour. |
| avgServiceMinutes | number | yes | Mean time one resource stays occupied, in minutes, e.g. 75. |
| servers | integer | yes | Resources: tables, beds, bays, checkouts… |
| waitingRoom | integer | – | 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.
| Name | Type | Req | Description |
|---|---|---|---|
| arrivalsPerHour | number | yes | Arrivals per hour (lambda), e.g. 12 groups/hour. |
| avgServiceMinutes | number | yes | Mean time one resource stays occupied, in minutes, e.g. 75. |
| servers | integer | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| arrivalsPerHour | number | yes | Arrivals per hour (lambda), e.g. 12 groups/hour. |
| avgServiceMinutes | number | yes | Mean time one resource stays occupied, in minutes, e.g. 75. |
| customers | integer | – | – |
| seed | integer | – | – |
| servers | integer | yes | – |
| waitingRoom | integer | – | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| arrivalsPerHour | number | yes | Arrivals per hour (lambda), e.g. 12 groups/hour. |
| avgServiceMinutes | number | yes | Mean time one resource stays occupied, in minutes, e.g. 75. |
| maxTurnedAway | number | – | Maximum fraction that leaves without a place (0-1). |
| maxUtilization | number | – | Maximum utilization per resource (0-1). The 0.85 rule for hospital beds is this number. |
| maxWaitMinutes | number | – | Maximum acceptable mean wait. |
| waitingRoom | integer | – | 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.
| Name | Type | Req | Description |
|---|---|---|---|
| bindings | array | yes | – |
| headers | object | – | headers exchange: the message headers |
| routingKey | string | – | – |
| type | string | yes | – |
| version | string | – | 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 Chunk a text and rank the chunks against a query ~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.
| Name | Type | Req | Description |
|---|---|---|---|
| overlap | integer | – | Overlap between consecutive chunks; capped at half the size |
| query | string | – | If given, chunks come back ranked by BM25 against it |
| size | integer | – | Target size of each chunk, in characters |
| text | string | yes | The 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.
| Name | Type | Req | Description |
|---|---|---|---|
| flags | string | – | JavaScript flags, e.g. "i" or "u" |
| pattern | string | yes | The regex source, without slashes |
| timeoutMs | integer | – | 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.
| Name | Type | Req | Description |
|---|---|---|---|
| flags | string | – | – |
| pattern | string | yes | – |
| text | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| input | string | yes | The 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.
| Name | Type | Req | Description |
|---|---|---|---|
| acceptors | number | – | Na in cm^-3 |
| donors | number | – | Nd in cm^-3 |
| material | string | – | – |
| temperatureK | number | – | – |
No output schema declared.
No examples provided.
semver_parse ~49
Parse a SemVer version (major.minor.patch + pre-release + build metadata).
| Name | Type | Req | Description |
|---|---|---|---|
| version | string | yes | e.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, …).
| Name | Type | Req | Description |
|---|---|---|---|
| range | string | yes | e.g. "^1.2.0" |
| versions | array | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| message | – | yes | MessageAttributes scope: { name: { "Type": "String"|"String.Array"|"Number"|"Binary", "Value": "..." } }. MessageBody scope: the JSON body |
| policy | – | yes | The filter policy, as an object or JSON text |
| scope | string | – | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| maxCells | integer | – | Cap on problem cells returned |
| path | string | yes | Path 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.
| Name | Type | Req | Description |
|---|---|---|---|
| cellRatio | number | – | Pull-down / access width ratio. Rules read stability |
| cells | number | – | Array size, with sigmaMv, for the probability that at least one cell fails |
| lambda | number | – | Channel-length modulation (1/V) |
| mode | string | – | read opens the word line with both bit lines precharged (read disturb); in write, 0 is the correct result |
| pullUpRatio | number | – | Pull-up / access width ratio. Too high and the cell refuses to be written |
| sigmaMv | number | – | Cell-to-cell spread of the margin (mV), to express the SNM in sigmas |
| vdd | number | – | Supply voltage (V) |
| vth | number | – | 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.
| Name | Type | Req | Description |
|---|---|---|---|
| banks | integer | – | How many banks the column is split into |
| cPerCellFf | number | – | Capacitance each cell adds (fF) |
| cellCurrentUa | number | – | Current with which the cell discharges the line |
| cellsPerColumn | number | – | Cells hanging off each bit line: this sets the capacitance |
| offsetSigmaMv | number | – | Amplifier offset, one sigma |
| sensitivityMv | number | – | Smallest difference the amplifier resolves nominally |
| sigmas | number | – | 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.
| Name | Type | Req | Description |
|---|---|---|---|
| compareWithTracks | number | – | Compare against a cell of that height and return what is gained and lost |
| cppNm | number | – | Contacted poly pitch |
| finPitchNm | number | – | – |
| pitchNm | number | – | Routing-layer pitch: what one track is worth |
| rSheetOhmSq | number | – | Sheet resistance of the rail metal (ohm/square) |
| railTracks | number | – | Tracks consumed by BOTH rails together (VDD and VSS) |
| tracks | number | – | Height in routing tracks. Real libraries run ~6 to ~12; half tracks (7.5T) are legitimate |
| widthCpp | number | – | 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.
| Name | Type | Req | Description |
|---|---|---|---|
| mode | string | yes | – |
| text | string | yes | – |
No output schema declared.
No examples provided.
string_unescape ~45
Unescape a string from a context (javascript, json, sql, regex, html, url, css).
| Name | Type | Req | Description |
|---|---|---|---|
| mode | string | yes | – |
| text | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| dialects | array | – | Your own assertion helpers. If your team has a home-made expect(), declare it here and it will stop coming back as "indeterminate". |
| language | string | – | Required if you pass `text` without `path`. |
| path | string | – | Path to the test file. The language is inferred from the extension. |
| text | string | – | 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.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | – | Function name for the generated code. Inferred from the signature if you pass one. |
| schema | string | – | JSON Schema (an object with `properties`). Alternative to `signature`. |
| signature | string | – | 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.
| Name | Type | Req | Description |
|---|---|---|---|
| folder | string | yes | Root of the project (or subtree) to review. |
| maxFiles | integer | – | 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.
| Name | Type | Req | Description |
|---|---|---|---|
| after | string | – | New version, as text. |
| afterPath | string | – | Path to the new version. |
| before | string | – | Previous version, as text. |
| beforePath | string | – | Path to the previous version (e.g. what `git show HEAD:file` produced). |
| language | string | – | 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.
| Name | Type | Req | Description |
|---|---|---|---|
| input | string | yes | – |
No output schema declared.
No examples provided.
text_encode ~35
Encode a string to URL-encoding, Base64 and HTML-escape (all three at once).
| Name | Type | Req | Description |
|---|---|---|---|
| input | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| input | string | yes | e.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.
| Name | Type | Req | Description |
|---|---|---|---|
| irDropV | number | – | With vdd and vth: slows the logic down by that voltage drop |
| tclkNs | number | – | Clock period |
| tcqNs | number | – | Launch flop delay, edge to output |
| tholdNs | number | – | – |
| tlogicMinNs | number | – | Logic, SHORT path. Rules hold |
| tlogicNs | number | – | Logic, LONG path. Rules setup |
| tsetupNs | number | – | – |
| tskewNs | number | – | Positive = the clock reaches the capturing flop LATER: gives setup, takes hold |
| vdd | number | – | – |
| vth | number | – | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| input | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| input | string | yes | e.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.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| background | string | yes | e.g. "#fff" or "white" |
| foreground | string | yes | e.g. "#333" or "black" |
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.