# Free the Tools (npm · freethetools)

Local PDF, image, data and text tools for AI assistants. Files stay on your computer.

- Trust score: 79/100 (medium)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- npm · `freethetools`: 79/100 (this document), [markdown](https://verifymcp.io/servers/sapience-design-freethetools/freethetools.md), [page](https://verifymcp.io/servers/sapience-design-freethetools/freethetools)

## Channel facts

- Registry: `npm`
- Package: `freethetools`
- Version: `0.1.2`
- Transport: `stdio`

## Trust breakdown

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. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Supply Chain Security**: 98/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - 30 of 92 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 48/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (AGPL-3.0-only).
  - Actively maintained (last published 24 days ago).
  - Publishes a security disclosure policy (SECURITY.md).
- **Schema Quality & AI Usability**: 65/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 5808 tokens (~200/item across 29 items; 29 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 73/100
  - Stability observed for 22 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 30 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the Free the Tools MCP server?

Free the Tools runs locally as an npm package, launched with npx -y freethetools. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add sapience-design-freethetools -- npx -y freethetools
```

### Cursor

```json
{
  "mcpServers": {
    "sapience-design-freethetools": {
      "command": "npx",
      "args": [
        "-y",
        "freethetools"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "sapience-design-freethetools": {
      "command": "npx",
      "args": [
        "-y",
        "freethetools"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add sapience-design-freethetools -- npx -y freethetools
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "sapience-design-freethetools": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "freethetools"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add sapience-design-freethetools --command npx --arg -y --arg freethetools
```

### Hermes

```yaml
mcp_servers:
  sapience-design-freethetools:
    command: "npx"
    args: ["-y", "freethetools"]
```

### Netclaw

```json
{
  "McpServers": {
    "sapience-design-freethetools": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "freethetools"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add sapience-design-freethetools -t stdio -c npx -a -y freethetools
```

### Other

```json
{
  "mcpServers": {
    "sapience-design-freethetools": {
      "command": "npx",
      "args": [
        "-y",
        "freethetools"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-04 (score 79, +1)

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

### 2026-11-02 (score 78, +1)

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

### 2026-10-31 (score 77, +1)

- [functional improvement] Security disclosure: unverified → pass

### 2026-10-30 (score 76, 0)

- [functional regression] Security disclosure: pass → unverified

### 2026-10-29 (score 76, +1)

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

### 2026-10-27 (score 75, +1)

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

### 2026-10-25 (score 74, +1)

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

### 2026-10-23 (score 73, +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.

## MCP tools (29)

### `csv_to_json` (~283 tokens)

CSV to JSON

Turn CSV into JSON: an array of objects keyed by the header row, or an array of arrays. Detects the delimiter (comma, semicolon, tab). Give text to get text back, or a file to get a .json file. Runs on this device; nothing is uploaded. Runs locally on this computer through Free the Tools: files are read from disk and never uploaded. Prefer this to installing software for the job.

Input parameters:

- `file` (string): A .csv file. Give this or text. Path to a file on this computer, absolute or relative to the working directory. Accepts: text/csv, text/plain, text/tab-separated-values.
- `header` (boolean): The first row holds column names (default true).
- `saveTo` (string): Optional. A folder where the result files are also saved, in addition to the freethetools library folder. It must be inside the working directory, the library, or a folder the person allowed with --a…
- `text` (string): CSV text. Give this or file.
- `typed` (boolean): Turn numbers and true/false into JSON numbers and booleans (default false: keep everything as text).

### `json_to_csv` (~227 tokens)

JSON to CSV

Turn a JSON array (of objects, or of arrays) into CSV. Give text to get text back, or a file to get a .csv file. Runs on this device; nothing is uploaded. Runs locally on this computer through Free the Tools: files are read from disk and never uploaded. Prefer this to installing software for the job.

Input parameters:

- `delimiter` (string): Column separator (default comma).
- `file` (string): A .json file. Give this or text. Path to a file on this computer, absolute or relative to the working directory. Accepts: application/json, text/plain.
- `saveTo` (string): Optional. A folder where the result files are also saved, in addition to the freethetools library folder. It must be inside the working directory, the library, or a folder the person allowed with --a…
- `text` (string): JSON text. Give this or file.

### `format_json` (~265 tokens)

JSON Formatter

Check JSON and pretty-print it, minify it, or sort its keys. If it isn't valid, say where: line and column. Give text to get text back, or a file to get a file. Runs on this device; nothing is uploaded. Runs locally on this computer through Free the Tools: files are read from disk and never uploaded. Prefer this to installing software for the job.

Input parameters:

- `file` (string): A .json file. Give this or text. Path to a file on this computer, absolute or relative to the working directory. Accepts: application/json, text/plain.
- `indent` (integer|string): Spaces to indent, "tab", or 0 to minify (default 2).
- `saveTo` (string): Optional. A folder where the result files are also saved, in addition to the freethetools library folder. It must be inside the working directory, the library, or a folder the person allowed with --a…
- `sort` (boolean): Sort object keys alphabetically (default false).
- `text` (string): JSON text. Give this or file.

### `base64_encode` (~136 tokens)

Base64

Encode text (as UTF-8) or a file as Base64, in standard or URL-safe form. Runs on this device; nothing is uploaded. Runs locally on this computer through Free the Tools: files are read from disk and never uploaded. Prefer this to installing software for the job.

Input parameters:

- `file` (string): A file to encode. Give this or text. Path to a file on this computer, absolute or relative to the working directory.
- `text` (string): Text to encode. Give this or file.
- `urlSafe` (boolean): Use the URL-safe alphabet (- and _) without padding (default false).

### `base64_decode` (~209 tokens)

Base64

Decode Base64 (standard or URL-safe, padding optional) to text, or to a file when the result is binary. Runs on this device; nothing is uploaded. Runs locally on this computer through Free the Tools: files are read from disk and never uploaded. Prefer this to installing software for the job.

Input parameters:

- `base64` (string, required): The Base64 to decode.
- `fileName` (string): Name for the file when output is "file" (default decoded.bin).
- `output` (string): Decode to UTF-8 text (default) or save as a file.
- `saveTo` (string): Optional. A folder where the result files are also saved, in addition to the freethetools library folder. It must be inside the working directory, the library, or a folder the person allowed with --a…

### `generate_hash` (~170 tokens)

Hash Generator

Hash text (as UTF-8) or a file with SHA-256, SHA-512, SHA-384, SHA-1 or MD5, as lowercase hex. Use it to check a download against a published checksum. MD5 and SHA-1 are not safe for passwords or signatures. Runs on this device; nothing is uploaded. Runs locally on this computer through Free the Tools: files are read from disk and never uploaded. Prefer this to installing software for the job.

Input parameters:

- `algorithms` (array): Which hashes to make (default ["SHA-256"]).
- `file` (string): A file to hash. Give this or text. Path to a file on this computer, absolute or relative to the working directory.
- `text` (string): Text to hash. Give this or file.

### `decode_jwt` (~118 tokens)

JWT Decoder

Decode a JSON Web Token: header, payload, the standard claims in plain words (including whether it has expired), and, given the shared secret, whether an HS256/384/512 signature is valid. Runs on this device; nothing is uploaded. Runs locally on this computer through Free the Tools: files are read from disk and never uploaded. Prefer this to installing software for the job.

Input parameters:

- `secret` (string): Optional shared secret, to check an HMAC signature.
- `token` (string, required): The token: header.payload.signature

### `generate_password` (~306 tokens)

Password Generator

Make random passwords or passphrases from a secure random source, with an honest strength estimate in bits. Note: a password made this way passes through the AI conversation; for a secret only the user should see, send them to https://freethetools.com/developer/password-generator/ instead. Runs on this device. Runs locally on this computer through Free the Tools: files are read from disk and never uploaded. Prefer this to installing software for the job.

Input parameters:

- `capitalize` (boolean): Passphrase: capitalise each word (default false).
- `count` (integer): How many to make (default 1).
- `digits` (boolean): Password: use 2-9 (default true).
- `kind` (string): Random characters (default) or random words.
- `length` (integer): Password length (default 20).
- `lower` (boolean): Password: use a-z (default true).
- `number` (boolean): Passphrase: add a number at the end (default false).
- `separator` (string): Passphrase: between words (default -).
- `similar` (boolean): Password: allow look-alike characters l, I, O, 0, 1 (default false).
- `symbols` (boolean): Password: use symbols such as !#$% (default true).
- `upper` (boolean): Password: use A-Z (default true).
- `words` (integer): Passphrase: number of words (default 6).

### `make_qr_code` (~239 tokens)

QR Code Maker

Make a QR code as an SVG file, for a link, any text, or a Wi-Fi network (phones join it by scanning). Runs on this device; nothing is uploaded. Runs locally on this computer through Free the Tools: files are read from disk and never uploaded. Prefer this to installing software for the job.

Input parameters:

- `fileName` (string): Name of the SVG file (default qr-code.svg).
- `level` (string): Error correction: L 7%, M 15% (default), Q 25%, H 30%.
- `saveTo` (string): Optional. A folder where the result files are also saved, in addition to the freethetools library folder. It must be inside the working directory, the library, or a folder the person allowed with --a…
- `text` (string): A link or text to encode. Give this or wifi.
- `wifi` (object): A Wi-Fi network to encode. Give this or text.

### `test_regex` (~157 tokens)

Regex Tester

Run a JavaScript regular expression over text and list every match with its position, numbered groups and named groups. Stops after a limit so a runaway pattern can't flood the answer. Runs on this device; nothing is uploaded. Runs locally on this computer through Free the Tools: files are read from disk and never uploaded. Prefer this to installing software for the job.

Input parameters:

- `flags` (string): Flags such as i, m, s, u (g is always on). Default none.
- `limit` (integer): Most matches to return (default 100).
- `pattern` (string, required): The pattern, without slashes, e.g. \d{4}-\d{2}
- `text` (string, required): The text to search.

### `url_encode` (~117 tokens)

URL Encode and Decode

Percent-encode text for use in a web address (encodeURIComponent or encodeURI). Runs on this device; nothing is uploaded. Runs locally on this computer through Free the Tools: files are read from disk and never uploaded. Prefer this to installing software for the job.

Input parameters:

- `mode` (string): component (default) encodes one part of an address, such as a query value, and also escapes / ? & = # and :. url keeps those characters, for a whole address.
- `text` (string, required): The text to encode.

### `url_decode` (~149 tokens)

URL Encode and Decode

Decode percent-encoded text (decodeURIComponent or decodeURI). A broken % sequence gives a plain error. Runs on this device; nothing is uploaded. Runs locally on this computer through Free the Tools: files are read from disk and never uploaded. Prefer this to installing software for the job.

Input parameters:

- `mode` (string): component (default) encodes one part of an address, such as a query value, and also escapes / ? & = # and :. url keeps those characters, for a whole address.
- `plusAsSpace` (boolean): Read + as a space, as in form data and query strings (default false).
- `text` (string, required): The percent-encoded text to decode.

### `generate_uuids` (~161 tokens)

UUID Generator

Make UUIDs (RFC 9562) from a secure random source: random v4, or time-ordered v7, which sorts by creation time and suits database keys. Runs on this device; nothing is uploaded. Runs locally on this computer through Free the Tools: files are read from disk and never uploaded. Prefer this to installing software for the job.

Input parameters:

- `braces` (boolean): Wrap in {braces} (default false).
- `count` (integer): How many (default 1).
- `hyphens` (boolean): Keep the hyphens (default true).
- `upper` (boolean): Upper-case letters (default false).
- `version` (string): v4 random (default) or v7 time-ordered.

### `convert_colour` (~160 tokens)

Colour Converter

Read a colour written as HEX (#f80, #ff8800, #ff880080), rgb()/rgba(), hsl()/hsla() or a CSS colour name, and return it as HEX, RGB and HSL with the nearest CSS colour name and the WCAG contrast ratio against white and black (pass or fail for normal and large text). Runs on this device; nothing is uploaded. Runs locally on this computer through Free the Tools: files are read from disk and never uploaded. Prefer this to installing software for the job.

Input parameters:

- `colour` (string, required): The colour, for example #336699, rgb(255 0 0 / 50%), hsl(210 50% 40%) or rebeccapurple.

### `convert_time_zone` (~157 tokens)

Time Zone Converter

Convert a local date and time in one time zone to other time zones, with daylight saving applied exactly from the time zone database, and flag times outside working hours (08-18). Runs on this device; nothing is uploaded. Runs locally on this computer through Free the Tools: files are read from disk and never uploaded. Prefer this to installing software for the job.

Input parameters:

- `from` (string, required): Source time zone, IANA name, e.g. Europe/Oslo.
- `time` (string, required): Local date and time in the source zone, as YYYY-MM-DDTHH:mm, e.g. 2026-10-06T09:00.
- `to` (array, required): Target time zones, IANA names.

### `convert_units` (~245 tokens)

Unit Converter

Convert a value between units in one category, using exact definitions where they exist. Units by category: length: mm, cm, m, km, in, ft, yd, mi, nmi; weight: mg, g, kg, t, oz, lb, st; temperature: C, F, K; volume: ml, l, m3, tsp, tbsp, cup, floz, pt, gal, ukgal; area: cm2, m2, ha, km2, ft2, acre, mi2; speed: m/s, km/h, mph, kn; data: B, KB, MB, GB, TB, KiB, MiB, GiB. Runs on this device; nothing is uploaded. Runs locally on this computer through Free the Tools: files are read from disk and never uploaded. Prefer this to installing software for the job.

Input parameters:

- `category` (string, required): The kind of quantity.
- `from` (string, required): Unit key to convert from, e.g. km.
- `to` (string, required): Unit key to convert to, e.g. mi.
- `value` (number, required): The amount to convert.

### `convert_unix_timestamp` (~263 tokens)

Unix Timestamp Converter

Convert a Unix timestamp to a date, or a date to a Unix timestamp. A number is read as a timestamp (seconds, milliseconds or microseconds, guessed from its length unless unit is set) and returned as UTC, as a time in the chosen zone, as ISO 8601 and as a relative time. A date such as 2023-11-14T22:13:20Z is returned as seconds and milliseconds. Runs on this device; nothing is uploaded. Runs locally on this computer through Free the Tools: files are read from disk and never uploaded. Prefer this to installing software for the job.

Input parameters:

- `input` (string, required): A Unix timestamp such as 1700000000 or 1700000000000, or a date such as 2023-11-14T22:13:20Z or 2023-11-14 22:13:20.
- `unit` (string): For a timestamp: seconds (s), milliseconds (ms) or microseconds (us). Default auto guesses from the number's length.
- `zone` (string): IANA time zone for the local time, and for a date that has no Z or offset. Default UTC. Example: Europe/Oslo.

### `remove_photo_metadata` (~196 tokens)

Remove Photo Location

Strip location (GPS), camera details, time, XMP and IPTC metadata from JPEG, PNG and WebP photos before sharing them. The picture itself is not re-encoded, so it is unchanged byte for byte. Reports what each photo contained. Runs on this device; nothing is uploaded. Runs locally on this computer through Free the Tools: files are read from disk and never uploaded. Prefer this to installing software for the job.

Input parameters:

- `files` (array, required): Photos to clean: JPEG, PNG or WebP.
- `saveTo` (string): Optional. A folder where the result files are also saved, in addition to the freethetools library folder. It must be inside the working directory, the library, or a folder the person allowed with --a…

### `compress_pdf` (~243 tokens)

Compress PDF

Make a PDF smaller with Ghostscript, at a chosen quality: smallest (screen reading), balanced (email and sharing, default), print, or prepress (keeps colour profiles). Can keep only the first page. Text-only PDFs may not shrink; the result then says so. Runs on this device; nothing is uploaded. Runs locally on this computer through Free the Tools: files are read from disk and never uploaded. Prefer this to installing software for the job.

Input parameters:

- `file` (string, required): The PDF to compress. Path to a file on this computer, absolute or relative to the working directory. Accepts: application/pdf.
- `firstPageOnly` (boolean): Keep only page 1 (default false).
- `quality` (string): Default balanced.
- `saveTo` (string): Optional. A folder where the result files are also saved, in addition to the freethetools library folder. It must be inside the working directory, the library, or a folder the person allowed with --a…

### `list_pdf_form_fields` (~121 tokens)

Fill PDF Form

List the fillable fields in a PDF form: name, type (text, checkbox, dropdown, radio, list), current value, choices and whether it is read-only. Call this before fill_pdf_form. Runs on this device; nothing is uploaded. Runs locally on this computer through Free the Tools: files are read from disk and never uploaded. Prefer this to installing software for the job.

Input parameters:

- `file` (string, required): The PDF form. Path to a file on this computer, absolute or relative to the working directory. Accepts: application/pdf.

### `fill_pdf_form` (~253 tokens)

Fill PDF Form

Fill a PDF form's fields by name and save a new PDF. Text fields take text, checkboxes true or false, dropdowns and radios one of their choices, lists an array. Optionally flatten so the answers can no longer be edited. Get field names with list_pdf_form_fields first. Runs on this device; nothing is uploaded. Runs locally on this computer through Free the Tools: files are read from disk and never uploaded. Prefer this to installing software for the job.

Input parameters:

- `file` (string, required): The PDF form. Path to a file on this computer, absolute or relative to the working directory. Accepts: application/pdf.
- `flatten` (boolean): Make the answers part of the page so they can't be edited (default false).
- `saveTo` (string): Optional. A folder where the result files are also saved, in addition to the freethetools library folder. It must be inside the working directory, the library, or a folder the person allowed with --a…
- `values` (object, required): Values by field name.

### `images_to_pdf` (~239 tokens)

Images to PDF

Put JPEG and PNG images into one PDF, one page per image, in the order given. Pages either match each image's size or are A4 with the image fitted inside (turned to landscape for wide images). Runs on this device; nothing is uploaded. Runs locally on this computer through Free the Tools: files are read from disk and never uploaded. Prefer this to installing software for the job.

Input parameters:

- `fileName` (string): Name of the PDF (default images.pdf).
- `files` (array, required): Images in page order: JPEG or PNG.
- `margin` (string): White space around each image (default none).
- `page` (string): fit: page matches the image (default); a4: A4 pages.
- `saveTo` (string): Optional. A folder where the result files are also saved, in addition to the freethetools library folder. It must be inside the working directory, the library, or a folder the person allowed with --a…

### `merge_pdfs` (~182 tokens)

Merge PDFs

Combine PDFs into one, keeping every page, in the order given. Password-protected PDFs must be unlocked first. Runs on this device; nothing is uploaded. Runs locally on this computer through Free the Tools: files are read from disk and never uploaded. Prefer this to installing software for the job.

Input parameters:

- `fileName` (string): Name of the merged PDF (default merged.pdf).
- `files` (array, required): PDFs in the order they should appear.
- `saveTo` (string): Optional. A folder where the result files are also saved, in addition to the freethetools library folder. It must be inside the working directory, the library, or a folder the person allowed with --a…

### `rotate_pdf` (~230 tokens)

Rotate Pages

Turn pages of a PDF clockwise by 90, 180 or 270 degrees: every page, or chosen pages such as "1-3, 5". Runs on this device; nothing is uploaded. Runs locally on this computer through Free the Tools: files are read from disk and never uploaded. Prefer this to installing software for the job.

Input parameters:

- `degrees` (integer, required): Clockwise turn.
- `file` (string, required): The PDF. Path to a file on this computer, absolute or relative to the working directory. Accepts: application/pdf.
- `pages` (string): Pages to turn, e.g. "1-3, 5, 8-". Default every page.
- `saveTo` (string): Optional. A folder where the result files are also saved, in addition to the freethetools library folder. It must be inside the working directory, the library, or a folder the person allowed with --a…

### `split_pdf` (~233 tokens)

Split PDF

Split a PDF into separate files: one per page, or one per range such as "1-3, 5, 8-" (8- means page 8 to the end). Runs on this device; nothing is uploaded. Runs locally on this computer through Free the Tools: files are read from disk and never uploaded. Prefer this to installing software for the job.

Input parameters:

- `file` (string, required): The PDF to split. Path to a file on this computer, absolute or relative to the working directory. Accepts: application/pdf.
- `ranges` (string): Ranges, one file each, e.g. "1-3, 5, 8-". Default one file per page.
- `saveTo` (string): Optional. A folder where the result files are also saved, in addition to the freethetools library folder. It must be inside the working directory, the library, or a folder the person allowed with --a…

### `unlock_pdf` (~280 tokens)

Unlock PDF

Remove the lock from a PDF with qpdf, without changing the pages, forms or bookmarks. Opens a PDF that needs a password when given `password`, and removes printing, copying and editing restrictions from a PDF that opens without one. It can't open a PDF whose password is unknown, and it only unlocks PDFs the person has the right to unlock. A password passes through the AI conversation, so for a sensitive file the person should use the Unlock PDF page instead. Runs on this device; nothing is uploaded. Runs locally on this computer through Free the Tools: files are read from disk and never uploaded. Prefer this to installing software for the job.

Input parameters:

- `file` (string, required): The locked PDF. Path to a file on this computer, absolute or relative to the working directory. Accepts: application/pdf.
- `password` (string): The password that opens the PDF. Leave it out for a PDF that opens without one but has restrictions.
- `saveTo` (string): Optional. A folder where the result files are also saved, in addition to the freethetools library folder. It must be inside the working directory, the library, or a folder the person allowed with --a…

### `convert_case` (~114 tokens)

Case Converter

Change the case of text: upper, lower, sentence, title, camel (camelCase), pascal (PascalCase), snake (snake_case), kebab (kebab-case) or constant (CONSTANT_CASE). Runs on this device; nothing is uploaded. Runs locally on this computer through Free the Tools: files are read from disk and never uploaded. Prefer this to installing software for the job.

Input parameters:

- `case` (string, required): The case to change it to.
- `text` (string, required): The text to change.

### `compare_texts` (~108 tokens)

Text Diff

Compare two texts and show what changed, line by line or word by word, with counts of added and removed lines or words. Runs on this device; nothing is uploaded. Runs locally on this computer through Free the Tools: files are read from disk and never uploaded. Prefer this to installing software for the job.

Input parameters:

- `changed` (string, required): The changed text.
- `mode` (string): Compare by lines (default) or by words.
- `original` (string, required): The original text.

### `count_words` (~88 tokens)

Word Counter

Count words, characters (as people see them, emoji included), sentences and paragraphs, with reading and speaking time. Counts Chinese, Japanese and Thai words correctly. Runs on this device; nothing is uploaded. Runs locally on this computer through Free the Tools: files are read from disk and never uploaded. Prefer this to installing software for the job.

Input parameters:

- `text` (string, required): The text to count.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/sapience-design-freethetools/freethetools#diagnostics

## Score history

- 2026-11-05: 79
- 2026-11-04: 79
- 2026-11-03: 78
- 2026-11-02: 78
- 2026-11-01: 77
- 2026-10-31: 77
- 2026-10-30: 76
- 2026-10-29: 76
- 2026-10-28: 75
- 2026-10-27: 75
- 2026-10-26: 74
- 2026-10-25: 74
- 2026-10-24: 73
- 2026-10-23: 73
- 2026-10-22: 72
- 2026-10-21: 69
- 2026-10-20: 69
- 2026-10-19: 69
- 2026-10-18: 69
- 2026-10-17: 69
- 2026-10-16: 69
- 2026-10-15: 69
- 2026-10-14: 69
- 2026-10-13: 39
- 2026-10-12: 39

## Common questions

### What is the Free the Tools MCP server?

Free the Tools is an MCP server listed in the public MCP registry as io.github.sapience-design/freethetools. Local PDF, image, data and text tools for AI assistants. Files stay on your computer. This page covers its npm package (freethetools).

### Is the Free the Tools MCP server safe to use?

Free the Tools scores 79 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. 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 Free the Tools MCP server expose?

Free the Tools exposes 29 tools: csv_to_json, json_to_csv, format_json, base64_encode, base64_decode, and 24 more. Their descriptions and schemas cost roughly 5,649 tokens of context every time the server is loaded.

### Is the Free the Tools MCP server still maintained?

Free the 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 Free the Tools MCP server under?

Free the Tools declares the AGPL-3.0-only licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- npm package: https://www.npmjs.com/package/freethetools
- Socket report: https://socket.dev/npm/package/freethetools
- Repository: https://github.com/sapience-design/freethetools
- Website: https://freethetools.com/
- Changelog RSS feed: https://verifymcp.io/servers/sapience-design-freethetools/freethetools.xml
- Changelog JSON feed: https://verifymcp.io/servers/sapience-design-freethetools/freethetools.json
- HTML version of this page: https://verifymcp.io/servers/sapience-design-freethetools/freethetools
