# @paretools/search

## 0.20.0

### Patch Changes

- [#874](https://github.com/Dave-London/Pare/pull/874) [`3ba18e2`](https://github.com/Dave-London/Pare/commit/3ba18e280337aed8bf89ba7a86ea3e60de73c6c5) Thanks [@Dave-London](https://github.com/Dave-London)! - Fix `pare-search__search` and `pare-search__count` crashing with `spawn ENOTDIR` when `path` points to a file. The runner previously used the supplied `path` as the child process `cwd` unconditionally, which fails when `path` is a file. The runner now resolves a file path into a parent-directory `cwd` plus a basename positional argument so ripgrep searches just that file (matching the schema's "Directory or file to search in" contract). Closes [#871](https://github.com/Dave-London/Pare/issues/871).

- Updated dependencies [[`62c4fed`](https://github.com/Dave-London/Pare/commit/62c4fedad16d30d9f7c70e8d08e66f7ac803c5f7), [`79611ac`](https://github.com/Dave-London/Pare/commit/79611acd24581e17831e83cb096992b045ead116)]:
  - @paretools/shared@0.20.0

## 0.19.1

### Patch Changes

- Updated dependencies []:
  - @paretools/shared@0.19.1

## 0.19.0

### Patch Changes

- Updated dependencies []:
  - @paretools/shared@0.19.0

## 0.18.1

### Patch Changes

- [#843](https://github.com/Dave-London/Pare/pull/843) [`9db6a9a`](https://github.com/Dave-London/Pare/commit/9db6a9a8f3b702deed40ea918b15fdf175f6e69a) Thanks [@Dave-London](https://github.com/Dave-London)! - Fix `pare-search__search` and `pare-search__count` crashing with `spawn ENOTDIR` when `path` points to a file. The schema already promised file or directory; now both work. `pare-search__find` (fd) genuinely walks directories, so it now returns a typed `path must be a directory for find` error instead of leaking the raw Node `ENOTDIR`. Missing paths produce a clear `path does not exist: <path>` error. Closes [#827](https://github.com/Dave-London/Pare/issues/827).

- Updated dependencies [[`55977cf`](https://github.com/Dave-London/Pare/commit/55977cf4bc78d7da8faf0fce56109e804b8fe9b3), [`decf9ee`](https://github.com/Dave-London/Pare/commit/decf9ee3603e563ed6d5188bb9e325ff6fae841e)]:
  - @paretools/shared@0.18.1

## 0.18.0

### Patch Changes

- Updated dependencies [[`30ce521`](https://github.com/Dave-London/Pare/commit/30ce521c205093b7daa248f7f57227d1b4ef1f47), [`2756547`](https://github.com/Dave-London/Pare/commit/2756547b77bab4441032c3d618bc157561ea0bc9)]:
  - @paretools/shared@0.18.0

## 0.17.0

### Patch Changes

- Updated dependencies [[`e67ced8`](https://github.com/Dave-London/Pare/commit/e67ced845a2d50fb677c056eb95bbe51655d7f2b)]:
  - @paretools/shared@0.17.0

## 0.16.3

### Patch Changes

- Updated dependencies [[`a20439f`](https://github.com/Dave-London/Pare/commit/a20439fd634aed6ff257028e3a9f5e255ce9ccc4)]:
  - @paretools/shared@0.16.3

## 0.16.2

### Patch Changes

- [#784](https://github.com/Dave-London/Pare/pull/784) [`2cc1f32`](https://github.com/Dave-London/Pare/commit/2cc1f326d6600a1f5f1164e6f6351cfc0ba32a57) Thanks [@Dave-London](https://github.com/Dave-London)! - Fix boolean input parameters rejecting string values ("true"/"false") by switching from z.boolean() to z.coerce.boolean() across all tool schemas

- Updated dependencies [[`2cc1f32`](https://github.com/Dave-London/Pare/commit/2cc1f326d6600a1f5f1164e6f6351cfc0ba32a57)]:
  - @paretools/shared@0.16.2

## 0.16.1

### Patch Changes

- Updated dependencies []:
  - @paretools/shared@0.16.1

## 0.16.0

### Patch Changes

- Updated dependencies []:
  - @paretools/shared@0.16.0

## 0.15.0

### Patch Changes

- [#737](https://github.com/Dave-London/Pare/pull/737) [`9f9c3f2`](https://github.com/Dave-London/Pare/commit/9f9c3f2b8866d862a3b5f17100075e5362b4e454) Thanks [@Dave-London](https://github.com/Dave-London)! - fix: harden input validation across npm, git, search, and remote servers
  - npm install: validate args array elements and restrict registry URLs to https://
  - nvm exec: gate command behind ALLOWED_COMMANDS policy
  - npm run: restrict scriptShell to known safe shells
  - git submodule add: restrict URLs to http/https schemes by default
  - rsync: validate exclude/include array elements
  - jq: validate arg/argjson record keys

- Updated dependencies []:
  - @paretools/shared@0.15.0

## 0.14.2

### Patch Changes

- [#700](https://github.com/Dave-London/Pare/pull/700) [`61e8ee9`](https://github.com/Dave-London/Pare/commit/61e8ee9f8697979fa68b2aff2ebc840e1af9f09a) Thanks [@Dave-London](https://github.com/Dave-London)! - fix: add input coercion for numeric and array parameters

  MCP clients sometimes serialize numbers as strings (`"5"` instead of `5`) and arrays as JSON strings. Added `z.coerce.number()` for all numeric input parameters and `coerceJsonArray` preprocessing for array input parameters to handle these cases gracefully.

- Updated dependencies [[`61e8ee9`](https://github.com/Dave-London/Pare/commit/61e8ee9f8697979fa68b2aff2ebc840e1af9f09a)]:
  - @paretools/shared@0.14.2

## 0.14.1

### Patch Changes

- Updated dependencies []:
  - @paretools/shared@0.14.1

## 0.14.0

### Minor Changes

- [#681](https://github.com/Dave-London/Pare/pull/681) [`2f49211`](https://github.com/Dave-London/Pare/commit/2f49211fd5a3916e230beb06789de92300758aef) Thanks [@Dave-London](https://github.com/Dave-London)! - Add MCP tool annotations (readOnlyHint, destructiveHint, openWorldHint) across all server packages to help AI agents understand tool behavior and safety characteristics

### Patch Changes

- Updated dependencies [[`e5ef841`](https://github.com/Dave-London/Pare/commit/e5ef841d7c9b7ec67a52c3943bc346cebf75b6eb)]:
  - @paretools/shared@0.14.0

## 0.13.1

### Patch Changes

- [#665](https://github.com/Dave-London/Pare/pull/665) [`b120c9b`](https://github.com/Dave-London/Pare/commit/b120c9b8d8c597022dfeec32806f52c49cf11ba8) Thanks [@Dave-London](https://github.com/Dave-London)! - fix: read serverInfo.version from package.json instead of hardcoding

- Updated dependencies [[`9076e2b`](https://github.com/Dave-London/Pare/commit/9076e2bd83424de221b397bd6220c79d6573f4b4), [`eb5a5a2`](https://github.com/Dave-London/Pare/commit/eb5a5a2da1b1de22035abbf53a15fdba52cb8bd5), [`b120c9b`](https://github.com/Dave-London/Pare/commit/b120c9b8d8c597022dfeec32806f52c49cf11ba8), [`79d528d`](https://github.com/Dave-London/Pare/commit/79d528d6bba90ac1f3bda016ab57058fda293a4d), [`d2be342`](https://github.com/Dave-London/Pare/commit/d2be34264a37b92a29d1ef74c201e99e07df7485)]:
  - @paretools/shared@0.13.1

## 0.13.0

### Minor Changes

- [#634](https://github.com/Dave-London/Pare/pull/634) [`d280e88`](https://github.com/Dave-London/Pare/commit/d280e888c2025c607de8f07183dc9b333f66254d) Thanks [@Dave-London](https://github.com/Dave-London)! - Implement lazy tool registration: when `PARE_LAZY=true`, only core tools are registered at startup while extended tools are deferred and discoverable via the new `discover-tools` meta-tool. Reduces token cost of tool schemas in LLM prompts by loading rarely-used tools on demand.

- [#628](https://github.com/Dave-London/Pare/pull/628) [`a4b6fec`](https://github.com/Dave-London/Pare/commit/a4b6fec2badb5aa596215dc3b8971399195d2df5) Thanks [@Dave-London](https://github.com/Dave-London)! - Optimize output schemas across all 16 server packages: remove derivable counts, echo-back fields, timing/duration data, and human-display metadata from Zod schemas. Move display-only data to formatters for human-readable output. Ensures compact maps only return schema-compatible fields to prevent `additionalProperties` validation failures.

### Patch Changes

- Updated dependencies [[`d280e88`](https://github.com/Dave-London/Pare/commit/d280e888c2025c607de8f07183dc9b333f66254d), [`a4b6fec`](https://github.com/Dave-London/Pare/commit/a4b6fec2badb5aa596215dc3b8971399195d2df5)]:
  - @paretools/shared@0.13.0

## 0.12.0

### Patch Changes

- [#601](https://github.com/Dave-London/Pare/pull/601) [`6eac155`](https://github.com/Dave-London/Pare/commit/6eac155d9e4efbe4ba5cc43c33622dccf5ffe09c) Thanks [@Dave-London](https://github.com/Dave-London)! - Extract common MCP server boilerplate into a `createServer()` factory in `@paretools/shared`. All server packages now use this factory instead of duplicating McpServer setup, StdioServerTransport connection, and tool registration code.

- Updated dependencies [[`6eac155`](https://github.com/Dave-London/Pare/commit/6eac155d9e4efbe4ba5cc43c33622dccf5ffe09c)]:
  - @paretools/shared@0.12.0

## 0.11.0

### Minor Changes

- [#580](https://github.com/Dave-London/Pare/pull/580) [`b1839f7`](https://github.com/Dave-London/Pare/commit/b1839f76f401308d9cbd2746f47ebb4f31c2a5c4) Thanks [@Dave-London](https://github.com/Dave-London)! - Add yq tool for YAML/JSON/XML/TOML processing

### Patch Changes

- Updated dependencies [[`154f567`](https://github.com/Dave-London/Pare/commit/154f5678d69df15db746d0fc8afbcc2ecc17ac85), [`a069792`](https://github.com/Dave-London/Pare/commit/a069792ad77be8c159fcf9b72ffc6036ff9d25dd)]:
  - @paretools/shared@0.11.0

## 0.10.2

### Patch Changes

- [#570](https://github.com/Dave-London/Pare/pull/570) [`0c50be7`](https://github.com/Dave-London/Pare/commit/0c50be7760bc21ef20e735cef3da065ba93bb36d) Thanks [@Dave-London](https://github.com/Dave-London)! - Add `bugs` URL to package.json for all packages, linking to the GitHub issues page.

- Updated dependencies [[`0c50be7`](https://github.com/Dave-London/Pare/commit/0c50be7760bc21ef20e735cef3da065ba93bb36d)]:
  - @paretools/shared@0.10.2

## 0.10.1

### Patch Changes

- [#563](https://github.com/Dave-London/Pare/pull/563) [`da586bc`](https://github.com/Dave-London/Pare/commit/da586bc60f5a67ea7adaa189b6b451668cbdb2e5) Thanks [@Dave-London](https://github.com/Dave-London)! - Add pre-validation of regex patterns in search, count, and find tools. Invalid regex patterns now return a clear structured error message instead of silently returning empty results. The validation is skipped when fixedStrings mode (search/count) or glob mode (find) is active.

- Updated dependencies [[`da71ee5`](https://github.com/Dave-London/Pare/commit/da71ee56c5626d929a28ce1838019a12d496187b)]:
  - @paretools/shared@0.10.1

## 0.10.0

### Patch Changes

- Updated dependencies [[`3a6f31c`](https://github.com/Dave-London/Pare/commit/3a6f31c92a3507388dacbf1fd69afa3f76e032e2)]:
  - @paretools/shared@0.10.0

## 0.9.0

### Minor Changes

- [#467](https://github.com/Dave-London/Pare/pull/467) [`fc131b3`](https://github.com/Dave-London/Pare/commit/fc131b3cd1d5248f143e62bc2eb6efcaf04bad3b) Thanks [@Dave-London](https://github.com/Dave-London)! - Implement S-complexity gaps for search tools:

  **count**: Add `maxResults` param for per-file list truncation. Add `type` param (maps to `--type`) for file type filtering. Add `sort` param (`path` or `count`) for client-side result sorting.

  **find**: Add `exclude` param (maps to `--exclude`) for pattern exclusion. Add `size` param (maps to `--size`) for file size filtering. Add `changedWithin` param (maps to `--changed-within`) for recent file discovery. Extend `type` enum with `executable` and `empty`. Normalize `ext` output to strip leading dot (matches input format).

  **search**: Add `type` param (maps to `--type`) for file type filtering. Add `sort` param (maps to `--sort`) for rg-native result sorting.

  **jq**: Add `arg` param (maps to `--arg`) for named string variables. Add `argjson` param (maps to `--argjson`) for named JSON variables.

- [#442](https://github.com/Dave-London/Pare/pull/442) [`cd736d4`](https://github.com/Dave-London/Pare/commit/cd736d4d1039e849dd40f424f246b50aa07efd3e) Thanks [@Dave-London](https://github.com/Dave-London)! - Add missing CLI flag parameters from XS-complexity audit gaps
  - count: countMatches, fixedStrings, wordRegexp, invertMatch, hidden, includeZero, maxDepth, noIgnore
  - find: maxDepth, hidden, absolutePath, fullPath, glob, noIgnore, follow
  - jq: nullInput, slurp, compactOutput, rawInput, exitStatus, indent, joinOutput, assertNoFlagInjection on expression
  - search: maxCount, fixedStrings, wordRegexp, invertMatch, multiline, hidden, maxDepth, followSymlinks, noIgnore

### Patch Changes

- Updated dependencies [[`e69ccda`](https://github.com/Dave-London/Pare/commit/e69ccdaefb391d90a2616e9cf32fde5697df1173), [`0042862`](https://github.com/Dave-London/Pare/commit/0042862ddb9c6cd0b677244efffb5a7e18b3e915)]:
  - @paretools/shared@0.9.0

## 0.8.5

### Patch Changes

- Updated dependencies [[`7bb2541`](https://github.com/Dave-London/Pare/commit/7bb2541bfeaf27f1560ea1fdcecfff36dfb2068a)]:
  - @paretools/shared@0.8.5

## 0.8.4

### Patch Changes

- Updated dependencies [[`ac29d96`](https://github.com/Dave-London/Pare/commit/ac29d969a284ce14a67b45e24583cb57f591d210)]:
  - @paretools/shared@0.8.3

## 0.8.3

### Patch Changes

- Updated dependencies [[`2e4ad7f`](https://github.com/Dave-London/Pare/commit/2e4ad7f515a5e1763188ed02b09aabe9798bcfa7), [`89b3690`](https://github.com/Dave-London/Pare/commit/89b3690a73619f2481409db33964083d1e88c05b)]:
  - @paretools/shared@0.8.2

## 0.8.2

### Patch Changes

- [#400](https://github.com/Dave-London/Pare/pull/400) [`e5d12d5`](https://github.com/Dave-London/Pare/commit/e5d12d55484546888d3c9a7be9f1b26d2b927221) Thanks [@Dave-London](https://github.com/Dave-London)! - Add cargo-audit tool for Rust dependency auditing. Add golangci-lint tool for Go linting. Add jq tool for JSON processing.

## 0.8.1

### Patch Changes

- [#295](https://github.com/Dave-London/Pare/pull/295) [`5e11f81`](https://github.com/Dave-London/Pare/commit/5e11f81070c1c6dfd38030d088e0e4f3711219c3) Thanks [@Dave-London](https://github.com/Dave-London)! - Align remaining packages from 0.8.0 to 0.8.1 for consistent monorepo versioning.

## 0.8.0

### Minor Changes

- [#257](https://github.com/Dave-London/Pare/pull/257) [`b22708d`](https://github.com/Dave-London/Pare/commit/b22708dbdbdee9c34c4bfc3dad905190467cb294) Thanks [@Dave-London](https://github.com/Dave-London)! - Rebrand for MCP Registry: update mcpName to pare-\* prefix, add Pare-branded descriptions and server names to all server.json files, create server.json for github/http/make/search packages.

### Patch Changes

- [#259](https://github.com/Dave-London/Pare/pull/259) [`f6948f4`](https://github.com/Dave-London/Pare/commit/f6948f428a29cd9d74a338bcdb2c7c984d47d521) Thanks [@Dave-London](https://github.com/Dave-London)! - Align all packages to 0.8.1 for consistent versioning across the monorepo.

- Updated dependencies [[`b22708d`](https://github.com/Dave-London/Pare/commit/b22708dbdbdee9c34c4bfc3dad905190467cb294)]:
  - @paretools/shared@0.8.1

## 0.7.1

### Patch Changes

- Updated dependencies []:
  - @paretools/shared@0.8.0

## 0.7.0

### Minor Changes

- v0.7.0 — 100 tools, 14 packages

  New packages:
  - `@paretools/github` — 8 tools wrapping the `gh` CLI (pr-view, pr-list, pr-create, issue-view, issue-list, issue-create, run-view, run-list)
  - `@paretools/search` — 3 tools wrapping ripgrep and fd (search, find, count)
  - `@paretools/http` — 4 tools wrapping curl (request, get, post, head)
  - `@paretools/make` — 2 tools wrapping make and just (run, list)

  Expanded servers:
  - `@paretools/git` +5 tools: tag, stash-list, stash, remote, blame
  - `@paretools/docker` +4 tools: inspect, network-ls, volume-ls, compose-ps
  - `@paretools/go` +3 tools: env, list, get
  - `@paretools/python` +3 tools: pip-list, pip-show, ruff-format
  - `@paretools/npm` +2 tools: info, search
  - `@paretools/cargo` +2 tools: update, tree
  - `@paretools/lint` +2 tools: stylelint, oxlint

  Cross-cutting:
  - `@paretools/shared` — granular tool selection via `PARE_TOOLS` and `PARE_{SERVER}_TOOLS` environment variables (#111)

### Patch Changes

- Updated dependencies []:
  - @paretools/shared@0.7.0
