# Pickle (npm · pickle-mcp)

Free, local MCP server that audits ClickUp, Slack & Teams for work that slipped through.

- Trust score: 60/100 (medium)
- Change this week: +18
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `pickle-mcp`: 60/100 (this document), [markdown](https://verifymcp.io/servers/adityaarsharma-pickle/pickle-mcp.md), [page](https://verifymcp.io/servers/adityaarsharma-pickle/pickle-mcp)

## Channel facts

- Registry: `npm`
- Package: `pickle-mcp`
- Version: `1.1.0`
- 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-08-03.

- **Supply Chain Security**: 87/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (122 of 124), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (122 of 124), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 11 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 66/100
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 3830 tokens (~67/item across 57 items; 57 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 68/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 3% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### Claude

```bash
claude mcp add adityaarsharma-pickle -- npx -y pickle-mcp
```

### Codex

```bash
codex mcp add adityaarsharma-pickle -- npx -y pickle-mcp
```

### opencode

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

### OpenClaw

```bash
openclaw mcp add adityaarsharma-pickle --command npx --arg -y --arg pickle-mcp
```

### Hermes

```yaml
mcp_servers:
  adityaarsharma-pickle:
    command: "npx"
    args: ["-y", "pickle-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "adityaarsharma-pickle": {
      "command": "npx",
      "args": [
        "-y",
        "pickle-mcp"
      ]
    }
  }
}
```

## 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-08-02 (score 60, +37)

- [security regression] Provenance: unverified → fail
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Install scripts: unverified → pass
- [security improvement] Malware scan: unverified → pass
- [security] Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.
- [functional regression] Capabilities: pass → unverified
- [functional improvement] Schema quality: unverified → good
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] License: unverified → pass
- [functional] Licence: MIT

### 2026-08-01 (score 23, +5)

- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional improvement] MCP protocol: unverified → pass

### 2026-07-31 (score 18, −6)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 24, 0)

- [security regression] Malware scan: pass → unverified
- [functional improvement] Tool coverage: unverified → 100

### 2026-07-28 (score 24, −18)

- [functional regression] Tool coverage: 100 → unverified
- [functional] First check of Schema quality: unverified

### 2026-07-27 (score 42)

First indexed and scored.

## MCP tools (57)

### `pickle_setup` (~165 tokens)

FIRST-RUN SETUP for Pickle. Call this tool IMMEDIATELY whenever the user says any of: "Pickle Start" / "Pickle start" / "Pickle set me up" / "setup Pickle" / "set up Pickle" / "connect Pickle" / "how do I get started with Pickle" / "Pickle set me up for ClickUp|Slack|Teams". It returns step-by-step instructions for getting the right token(s) for ClickUp, Slack, or Microsoft Teams — and a checklist for adding them to the user's MCP config. No external skills, no shell scripts required. Always call this tool as the very first action whenever the user is onboarding to Pickle.

Input parameters:

- `platform` (string)

### `clickup_get_workspace_hierarchy` (~38 tokens)

Return the full tree: team → spaces → folders → lists (plus folderless lists).

Input parameters:

- `team_id` (string)

### `clickup_get_workspace_members` (~28 tokens)

Return all members of a ClickUp workspace.

Input parameters:

- `team_id` (string)

### `clickup_find_member_by_name` (~41 tokens)

Find a workspace member by case-insensitive substring on username or email.

Input parameters:

- `query` (string, required)
- `team_id` (string)

### `clickup_resolve_assignees` (~48 tokens)

Resolve names/emails/IDs to numeric ClickUp user IDs. Numeric values pass through.

Input parameters:

- `assignees` (array, required)
- `team_id` (string)

### `clickup_get_space` (~25 tokens)

Get a single space by ID.

Input parameters:

- `space_id` (string, required)

### `clickup_create_space` (~50 tokens)

Create a new space in the workspace.

Input parameters:

- `features` (object)
- `multiple_assignees` (boolean)
- `name` (string, required)
- `team_id` (string)

### `clickup_get_lists_in_folder` (~34 tokens)

Get all lists inside a folder.

Input parameters:

- `archived` (boolean)
- `folder_id` (string, required)

### `clickup_get_folderless_lists` (~40 tokens)

Get all folderless (space-level) lists inside a space.

Input parameters:

- `archived` (boolean)
- `space_id` (string, required)

### `clickup_get_list` (~33 tokens)

Get a single list by ID (includes task statuses, custom fields info).

Input parameters:

- `list_id` (string, required)

### `clickup_create_list` (~95 tokens)

Create a list. Provide EITHER folder_id OR space_id (folderless).

Input parameters:

- `assignee` (integer)
- `content` (string)
- `due_date` (integer)
- `due_date_time` (boolean)
- `folder_id` (string)
- `name` (string, required)
- `priority` (integer)
- `space_id` (string)
- `status` (string)

### `clickup_get_list_tasks` (~231 tokens)

Get tasks in a specific list, scoped to the audit time window (default last 7 days; pass any window). Supports pagination, filters, custom fields. Use the `time_window` parameter ('1h'|'6h'|'1d'|'3d'|'7d') to scope the audit.

Input parameters:

- `archived` (boolean)
- `assignees` (array)
- `custom_fields` (string)
- `date_created_gt` (integer)
- `date_created_lt` (integer)
- `date_updated_gt` (integer)
- `date_updated_lt` (integer)
- `due_date_gt` (integer)
- `due_date_lt` (integer)
- `include_closed` (boolean)
- `include_markdown_description` (boolean)
- `list_id` (string, required)
- `order_by` (string)
- `page` (integer)
- `reverse` (boolean)
- `statuses` (array)
- `subtasks` (boolean)
- `tags` (array)
- `time_window` (string)

### `clickup_get_list_custom_fields` (~29 tokens)

Get all custom fields defined on a list.

Input parameters:

- `list_id` (string, required)

### `clickup_set_task_custom_field` (~71 tokens)

Set (or update) a custom field value on a task.

Input parameters:

- `custom_task_ids` (boolean)
- `field_id` (string, required)
- `task_id` (string, required)
- `team_id` (string)
- `value` (required)
- `value_options` (object)

### `clickup_get_chat_channels` (~57 tokens)

List chat channels (including DMs and group DMs) for the workspace.

Input parameters:

- `cursor` (string)
- `include_hidden` (boolean)
- `limit` (integer)
- `team_id` (string)

### `clickup_get_chat_channel` (~37 tokens)

Get details of a single chat channel by ID.

Input parameters:

- `channel_id` (string, required)
- `team_id` (string)

### `clickup_get_chat_channel_messages` (~60 tokens)

List messages from a ClickUp chat channel (v3). Supports limit and cursor pagination.

Input parameters:

- `channel_id` (string, required)
- `cursor` (string)
- `limit` (integer)
- `team_id` (string)

### `clickup_send_chat_message` (~54 tokens)

Send a message to a ClickUp chat channel (v3).

Input parameters:

- `channel_id` (string, required)
- `content` (string, required)
- `team_id` (string)
- `type` (string)

### `clickup_update_chat_message` (~51 tokens)

Edit the content of an existing chat message.

Input parameters:

- `channel_id` (string, required)
- `content` (string, required)
- `message_id` (string, required)
- `team_id` (string)

### `clickup_delete_chat_message` (~40 tokens)

Delete a chat message.

Input parameters:

- `channel_id` (string, required)
- `message_id` (string, required)
- `team_id` (string)

### `clickup_get_chat_message_replies` (~63 tokens)

Get threaded replies for a specific chat message (v3).

Input parameters:

- `channel_id` (string, required)
- `cursor` (string)
- `limit` (integer)
- `message_id` (string, required)
- `team_id` (string)

### `clickup_send_chat_reply` (~54 tokens)

Send a reply in a chat message thread (v3).

Input parameters:

- `channel_id` (string, required)
- `content` (string, required)
- `message_id` (string, required)
- `team_id` (string)

### `clickup_react_to_chat_message` (~61 tokens)

Add an emoji reaction to a chat message.

Input parameters:

- `emoji` (string, required): Emoji character or shortcode, e.g. '👍' or ':thumbsup:'
- `message_id` (string, required)
- `team_id` (string)

### `clickup_filter_tasks` (~296 tokens)

Filter workspace tasks for audits. Scoped to the audit time window (default last 7 days; pass any window). Pass `time_window` ('1h'|'6h'|'1d'|'3d'|'7d') to scope the audit. Supports assignees, watchers, dates, search text, statuses, tags, list/folder/space filters, and pagination. Use response_format='summary' (default) for compact results.

Input parameters:

- `archived` (boolean)
- `assignees` (array)
- `date_created_gt` (integer)
- `date_created_lt` (integer)
- `date_updated_gt` (integer)
- `date_updated_lt` (integer)
- `due_date_gt` (integer)
- `due_date_lt` (integer)
- `folder_ids` (array)
- `include_closed` (boolean)
- `include_markdown_description` (boolean)
- `list_ids` (array)
- `order_by` (string)
- `page` (integer)
- `response_format` (string)
- `reverse` (boolean)
- `search` (string)
- `space_ids` (array)
- `statuses` (array)
- `subtasks` (boolean)
- `tags` (array)
- `team_id` (string)
- `time_window` (string)
- `watchers` (array)

### `clickup_get_task` (~61 tokens)

Get a single task by ID.

Input parameters:

- `custom_task_ids` (boolean)
- `include_markdown_description` (boolean)
- `include_subtasks` (boolean)
- `task_id` (string, required)
- `team_id` (string)

### `clickup_create_task` (~151 tokens)

Create a task in a list.

Input parameters:

- `assignees` (array)
- `custom_fields` (array)
- `description` (string)
- `due_date` (integer)
- `due_date_time` (boolean)
- `links_to` (string)
- `list_id` (string, required)
- `markdown_description` (string)
- `name` (string, required)
- `notify_all` (boolean)
- `parent` (string)
- `priority` (integer)
- `start_date` (integer)
- `start_date_time` (boolean)
- `status` (string)
- `tags` (array)
- `time_estimate` (integer)

### `clickup_update_task` (~149 tokens)

Update fields on an existing task.

Input parameters:

- `archived` (boolean)
- `assignees` (object)
- `custom_task_ids` (boolean)
- `description` (string)
- `due_date` (integer|null)
- `due_date_time` (boolean)
- `markdown_description` (string)
- `name` (string)
- `parent` (string|null)
- `priority` (integer|null)
- `start_date` (integer|null)
- `start_date_time` (boolean)
- `status` (string)
- `task_id` (string, required)
- `team_id` (string)
- `time_estimate` (integer|null)

### `clickup_delete_task` (~41 tokens)

Permanently delete a task.

Input parameters:

- `custom_task_ids` (boolean)
- `task_id` (string, required)
- `team_id` (string)

### `clickup_get_task_members` (~29 tokens)

Get all members assigned to or watching a task.

Input parameters:

- `task_id` (string, required)

### `clickup_add_task_watcher` (~61 tokens)

Add a watcher to a task.

Input parameters:

- `custom_task_ids` (boolean)
- `task_id` (string, required)
- `team_id` (string)
- `watcher_id` (integer, required): Numeric ClickUp user ID to add as watcher.

### `clickup_remove_task_watcher` (~52 tokens)

Remove a watcher from a task.

Input parameters:

- `custom_task_ids` (boolean)
- `task_id` (string, required)
- `team_id` (string)
- `watcher_id` (integer, required)

### `clickup_get_task_comments` (~58 tokens)

Get all comments on a task.

Input parameters:

- `custom_task_ids` (boolean)
- `start` (integer)
- `start_id` (string)
- `task_id` (string, required)
- `team_id` (string)

### `clickup_create_task_comment` (~67 tokens)

Create a comment on a task.

Input parameters:

- `assignee` (integer)
- `comment_text` (string, required)
- `custom_task_ids` (boolean)
- `notify_all` (boolean)
- `task_id` (string, required)
- `team_id` (string)

### `clickup_update_comment` (~48 tokens)

Edit an existing comment's text.

Input parameters:

- `assignee` (integer)
- `comment_id` (string, required)
- `comment_text` (string, required)
- `resolved` (boolean)

### `clickup_delete_comment` (~22 tokens)

Delete a comment.

Input parameters:

- `comment_id` (string, required)

### `clickup_get_threaded_comments` (~28 tokens)

Get all threaded replies for a comment.

Input parameters:

- `comment_id` (string, required)

### `clickup_create_threaded_comment` (~44 tokens)

Create a reply in a comment thread.

Input parameters:

- `comment_id` (string, required)
- `comment_text` (string, required)
- `notify_all` (boolean)

### `clickup_get_list_comments` (~48 tokens)

Get all comments on a list (list-level, not task comments).

Input parameters:

- `list_id` (string, required)
- `start` (integer)
- `start_id` (string)

### `clickup_create_list_comment` (~54 tokens)

Create a comment on a list (list-level discussion).

Input parameters:

- `assignee` (integer)
- `comment_text` (string, required)
- `list_id` (string, required)
- `notify_all` (boolean)

### `clickup_search_docs` (~75 tokens)

Search / list Docs in the workspace. Supports text search and pagination.

Input parameters:

- `archived` (boolean)
- `creator` (integer)
- `deleted` (boolean)
- `limit` (integer)
- `next_cursor` (string)
- `search` (string)
- `team_id` (string)

### `clickup_get_doc` (~33 tokens)

Get a single Doc by ID.

Input parameters:

- `doc_id` (string, required)
- `team_id` (string)

### `clickup_get_doc_pages` (~43 tokens)

Get all pages inside a Doc.

Input parameters:

- `doc_id` (string, required)
- `max_page_depth` (integer)
- `team_id` (string)

### `clickup_create_doc` (~55 tokens)

Create a new Doc in the workspace.

Input parameters:

- `create_page` (boolean)
- `name` (string, required)
- `parent` (object)
- `team_id` (string)
- `visibility` (string)

### `clickup_create_doc_page` (~67 tokens)

Create a new page inside an existing Doc.

Input parameters:

- `content` (string)
- `doc_id` (string, required)
- `name` (string, required)
- `parent_page_id` (string)
- `sub_title` (string)
- `team_id` (string)

### `clickup_update_doc_page` (~67 tokens)

Update the name or content of a Doc page.

Input parameters:

- `content` (string)
- `doc_id` (string, required)
- `name` (string)
- `page_id` (string, required)
- `sub_title` (string)
- `team_id` (string)

### `clickup_search_reminders` (~71 tokens)

List reminders for a user or the whole workspace. Requires ClickUp Business plan or above.

Input parameters:

- `assignee` (integer)
- `due_date_gt` (integer)
- `due_date_lt` (integer)
- `include_done` (boolean)
- `team_id` (string)

### `clickup_create_reminder` (~78 tokens)

Create a reminder for a user.

Input parameters:

- `assignee` (integer, required): User ID the reminder is for.
- `due_date` (integer, required): Unix ms when the reminder fires.
- `due_date_time` (boolean)
- `name` (string, required)
- `notify_all` (boolean)
- `team_id` (string)

### `slack_list_channels` (~75 tokens)

List Slack public + private channels the authenticated user can see. Lightweight metadata only (id, name, is_private, num_members, topic). Useful for picking which channel to audit.

Input parameters:

- `cursor` (string)
- `exclude_archived` (boolean)
- `limit` (integer)
- `types` (string)

### `slack_get_channel_history` (~126 tokens)

Get messages from a Slack channel scoped to the audit time window (default last 7 days; pass any window). Returns ts, user, text, reply_count, reactions. Pass `time_window` ('1h'|'6h'|'1d'|'3d'|'7d').

Input parameters:

- `channel` (string, required): Channel ID (e.g. 'C0123ABCDEF'). Use slack_list_channels to find it.
- `cursor` (string)
- `inclusive` (boolean)
- `limit` (integer)
- `time_window` (string)

### `slack_list_dms` (~75 tokens)

List the authenticated user's open direct messages (1:1 and group DMs / 'mpim'). Returns id, type, user(s), last activity. Use slack_get_channel_history with the DM id to read messages.

Input parameters:

- `cursor` (string)
- `limit` (integer)
- `types` (string)

### `slack_list_users` (~68 tokens)

List active members of the Slack workspace. Returns id, name, real_name, email, is_bot, is_deleted. Useful for resolving user IDs in messages to readable names during audits.

Input parameters:

- `cursor` (string)
- `include_locale` (boolean)
- `limit` (integer)

### `slack_search_messages` (~112 tokens)

Full-text search Slack messages (user token only, search:read scope required). Returns ranked matches with channel, user, ts, text. Useful for audits like 'find every message containing shipping today' or '@mention X without follow-up'.

Input parameters:

- `count` (integer)
- `query` (string, required): Slack search query. Supports operators like `in:#channel`, `from:@user`, `before:2026-05-10`.
- `sort` (string)
- `time_window` (string)

### `teams_list_teams` (~45 tokens)

List Microsoft Teams the authenticated user has joined. Returns id, displayName, description. Use this first to pick a team for channel audits.

Input parameters:

- `top` (integer)

### `teams_list_channels` (~43 tokens)

List channels within a Microsoft Teams team. Returns id, displayName, description, membershipType.

Input parameters:

- `team_id` (string, required): Team ID from teams_list_teams.

### `teams_get_channel_messages` (~77 tokens)

Get messages in a Teams channel scoped to the audit time window (default 7d; pass any window). Returns id, from, body, createdDateTime, replies count.

Input parameters:

- `channel_id` (string, required)
- `team_id` (string, required)
- `time_window` (string)
- `top` (integer)

### `teams_list_chats` (~45 tokens)

List the authenticated user's 1:1 and group chats in Microsoft Teams. Returns id, chatType, topic, lastUpdatedDateTime.

Input parameters:

- `top` (integer)

### `teams_get_chat_messages` (~61 tokens)

Get messages in a Teams chat (DM or group) scoped to the audit window. Returns id, from, body, createdDateTime.

Input parameters:

- `chat_id` (string, required)
- `time_window` (string)
- `top` (integer)

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/adityaarsharma-pickle/pickle-mcp#diagnostics

## Score history

- 2026-08-03: 60
- 2026-08-02: 60
- 2026-08-01: 23
- 2026-07-31: 18
- 2026-07-30: 24
- 2026-07-28: 24
- 2026-07-27: 42

## Links

- npm package: https://www.npmjs.com/package/pickle-mcp
- Socket report: https://socket.dev/npm/package/pickle-mcp
- Repository: https://github.com/adityaarsharma/pickle
- Changelog RSS feed: https://verifymcp.io/servers/adityaarsharma-pickle/pickle-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/adityaarsharma-pickle/pickle-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/adityaarsharma-pickle/pickle-mcp
