# Dear User (npm · @poisedhq/dearuser-mcp)

Tells you how you and your Claude agent actually work together. Local-only, no API keys.

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

## Components

- npm · `@poisedhq/dearuser-mcp`: 62/100 (this document), [markdown](https://verifymcp.io/servers/bleedmode-dearuser/poisedhq-dearuser-mcp.md), [page](https://verifymcp.io/servers/bleedmode-dearuser/poisedhq-dearuser-mcp)

## Channel facts

- Registry: `npm`
- Package: `@poisedhq/dearuser-mcp`
- Version: `1.0.20`
- 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**: 78/100
  - No malware found by supply-chain analysis.
  - CVE check failed: a known medium-severity CVE affects @hono/node-server 1.19.17, a direct dependency. A fixed version is available.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (132 of 136), 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 94 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 51/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 4234 tokens (~384/item across 11 items; 11 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 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.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add bleedmode-dearuser -- npx -y @poisedhq/dearuser-mcp
```

### Codex

```bash
codex mcp add bleedmode-dearuser -- npx -y @poisedhq/dearuser-mcp
```

### opencode

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

### OpenClaw

```bash
openclaw mcp add bleedmode-dearuser --command npx --arg -y --arg @poisedhq/dearuser-mcp
```

### Hermes

```yaml
mcp_servers:
  bleedmode-dearuser:
    command: "npx"
    args: ["-y", "@poisedhq/dearuser-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "bleedmode-dearuser": {
      "command": "npx",
      "args": [
        "-y",
        "@poisedhq/dearuser-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-03 (score 62, +4)

- [functional improvement] Stability: unverified → 0.27

### 2026-08-02 (score 58, +53)

- [security regression] GHSA-frvp-7c67-39w9 affects this package: medium
- [security regression] Provenance: unverified → fail
- [security regression] Known CVEs: unverified → fail
- [security improvement] Install scripts: unverified → pass
- [security improvement] Malware scan: unverified → pass
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Schema quality: unverified → good
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] License: unverified → pass
- [functional] Licence: MIT

### 2026-08-01 (score 5, −18)

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

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

- [security regression] Malware scan: pass → unverified

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

First indexed and scored.

## MCP tools (11)

### `collab` (~421 tokens)

Analyze your human-agent collaboration. Scans your agent contract (CLAUDE.md or AGENTS.md), memory files, hooks, skills, and more to produce a collaboration report with persona detection, scoring, friction analysis, and recommendations.

Returns a pre-formatted markdown report. Use the format parameter to control detail level:
\- "text" (default): concise, plain-language report designed for non-technical users
\- "detailed": full technical report with stats, session patterns, injection findings, feedback loop
\- "json": raw structured data for programmatic use

Everything runs locally — no data leaves the machine, no API keys needed, files are only read (never modified).

IMPORTANT — Presenting results:
The user cannot see raw tool results. You MUST output the full report as your response text — do NOT summarize, shorten, or add commentary around it. The report is pre-formatted for direct display. After showing the report, offer to implement any recommendation marked "Actionable". Tool recommendations with a "whoActs" line indicate whether you (the agent) can install it or the user needs to act — present accordingly.

Example prompts that should trigger this tool:
\- "Analyze my collaboration with Claude"
\- "How good is my Claude setup?"
\- "What should I improve in my CLAUDE.md or AGENTS.md?"
\- "Score my agent configuration"

Input parameters:

- `format` (string): "text" (default): concise plain-language report. "detailed": full technical report with stats, sessions, injection findings. "json": raw structured data.
- `includeGit` (boolean): Scan local .git directories for commit activity, stale repos, and revert-signal patterns. Defaults to true. Set false for faster runs.
- `projectRoot` (string): Project root to analyze when scope="project". Defaults to current working directory. Ignored for scope="global".
- `scope` (string): "global" (default) aggregates across every project in ~/.claude/projects/. "project" narrows to a single directory.

### `health` (~560 tokens)

Check the health of your AI stack. Returns a 0-100 system-sundhed score with category breakdown, plus findings ranked by severity. Complement to collab: where collab scores how well you and the agent communicate, health scores whether your skills, hooks, scheduled tasks, and MCP servers are still hanging together or have started drifting apart.

Detects:
\- **Orphan scheduled jobs** — task produces output nothing reads
\- **Stale schedules** — jobs that stopped firing silently despite being enabled
\- **Expected jobs missing** — jobs declared in ~/.dearuser/expected-jobs.json that aren't registered
\- **Overlap** — skills/tasks/commands with similar purpose or same output path
\- **Missing closure** — non-scheduled producers with no downstream reader
\- **Substrate mismatch** — memory files that look like databases in disguise
\- **Unregistered MCP tools** — skills calling tools whose server isn't registered
\- **Unbacked-up substrate** — active ~/.claude/ files outside version control
\- **Reconciliation gap** — findings open in the ledger for 14+ days (closed-loop failure)

What this tool does NOT do:
\- Does NOT fix problems — it identifies them for you to decide
\- Does NOT delete or modify any files, skills, or hooks
\- Does NOT contact external services — pure local filesystem analysis

IMPORTANT — Presenting results:
The user cannot see raw tool results. You MUST output the full report as your response text — do NOT summarize, shorten, or add commentary around it. The report is pre-formatted for direct display. Show the score and ceiling prominently. Lead with critical findings, then recommended, then nice-to-have. Each finding has a stable id users can reference to dismiss. Heuristic-based detection has some false positives — frame findings as "likely" not "definitely".

Example prompts that should trigger this tool:
\- "Check my system's health"
\- "Are any of my scheduled tasks orphaned?"
\- "Run dearuser health"
\- "Is my agent substrate well-structured?"

Input parameters:

- `focus` (string): Narrow to one finding type, or "all" (default). `stale_schedule` = jobs that stopped firing; `expected_jobs` = jobs declared in ~/.dearuser/expected-jobs.json but not registered; `mcp_refs` = tools c…
- `projectRoot` (string): Project root (e.g., "/Users/me/my-project"). Defaults to cwd. Audit is most useful in global scope.
- `scope` (string): Default global.

### `history` (~574 tokens)

Retrieve past Dear User reports without re-running the scan. Reads from local SQLite (~/.dearuser/dearuser.db) — no network, no fresh scan. Use when the user wants to see their latest score, how scores have changed over time, or what got better/worse since the last run. A fresh scan takes ~30s; this returns instantly. Call `collab`/`health`/`security` instead if the user explicitly asks for a new scan.

Three formats:
\- **"summary"** (default): latest stored report per scope. Fast, no re-scan. Use when the user asks what the previous/overnight report said.
\- **"trend"**: score sparkline over time per scope, with delta from oldest to newest. Use for "is it getting better?" questions.
\- **"regression"**: delta vs prior run — score change + new/resolved findings by stable ID. Use for "what changed?" / "what's new?" questions.

Scope narrows to one area: "collab", "health", "security", or "all" (default).

Pass `run_id` to fetch a specific historical report by its ID (printed at the bottom of every Dear User report).

What this tool does NOT do:
\- Does NOT run any new scans — pure read of stored reports
\- Does NOT delete or modify stored history
\- Does NOT contact any external service — everything stays on your machine

IMPORTANT — Presenting results:
The user cannot see raw tool results. You MUST output the full report as your response text — do NOT summarize or add commentary. Output is pre-formatted markdown with a "What to do next" section.

Example prompts that should trigger this tool:
\- "Vis seneste rapport"
\- "Show me the latest collab score"
\- "Er sikkerheden blevet bedre?"
\- "Hvad fandt nattens scan?"
\- "What changed since last run?"
\- "Vis trend"

Input parameters:

- `format` (string): "summary" (default) = latest run per scope. "trend" = score sparkline over time. "regression" = delta vs prior run. "json" = raw report_json for the latest run in a specific scope (used by share_repo…
- `limit` (integer): For trend: number of runs to include (default 14, max 90). Ignored for summary/regression.
- `run_id` (string): Fetch a specific run by ID (shown at the bottom of every report). When set, other params are ignored.
- `scope` (string): Which tool to fetch history for. Default "all" returns latest from each of collab, health, security. "wrapped" is only valid with format "json" or "summary".

### `onboard` (~467 tokens)

Conversational setup. Walks the user through 5 steps (intro → goals → stack+pains → substrate → plan) and produces a tailored setup plan — tailored agent-contract template (CLAUDE.md or AGENTS.md), skill recommendations, hook recommendations, and next 3 steps.

How to use (for the agent):
1\. First call: no arguments. The tool returns an intro question + nextStep.
2\. Present the question to the user and collect their answer.
3\. Call again with step=<nextStep from previous>, answer=<user answer>, state=<state from previous>.
4\. Continue until done=true, then show the plan.

IMPORTANT — Presenting results:
The user cannot see raw tool results. You MUST output each step's response text as your response — do NOT summarize, rephrase, or wrap it in your own words. The questions and final plan are pre-formatted for direct display. Just show what the tool returns, then collect the user's answer for the next step.

IMPORTANT: The `state` parameter is opaque. Pass it back verbatim. Do not parse or modify it.

What this tool does NOT do:
\- Does NOT write files automatically — it produces a plan for the user/agent to apply
\- Does NOT require prior Claude Code experience — designed for first-time users
\- Does NOT collect or transmit any answers — state is a local opaque blob passed between calls

Good for: new users, non-technical professionals, anyone setting up Claude Code for the first time, or someone revisiting goals after a while.

Example prompts that should trigger this tool:
\- "Set up Dear User for me"
\- "I'm new to Claude Code, help me configure it"
\- "Onboard me"
\- "Help me create a CLAUDE.md"
\- "Help me create an AGENTS.md"

Input parameters:

- `answer` (string): User answer from the previous step (e.g., "I'm a solo developer building SaaS products"). Required for all steps after intro.
- `state` (string): Opaque state blob from the previous call. Pass back unchanged — do not parse or modify.
- `step` (string): Current step (e.g., "role", "goals", "stack"). Omit to start from intro.

### `security` (~420 tokens)

Security audit of your AI setup. Scans for:

\- **Leaked secrets** — API keys, tokens, credentials in CLAUDE.md / AGENTS.md, memory, skills, or settings
\- **Prompt-injection surfaces** — hooks/skills that pass user input to shell unsafely
\- **Rule conflicts** — your agent contract says one thing but a hook/skill does another (e.g., "never force-push" but a hook runs `git push --force`)

Presents findings sorted by severity (critical → recommended → nice-to-have). Secrets and rule conflicts are the highest-trust signals because false positives are rare; injection findings are pattern-based and may warrant manual review.

What this tool does NOT do:
\- Does NOT access your passwords, keychains, or browser saved credentials
\- Does NOT send findings to any external service — everything stays local
\- Does NOT auto-rotate or revoke credentials — it reports, you act
\- Does NOT scan source code repositories — only your agent config files (~/.claude/, memory, skills, hooks)

IMPORTANT — Presenting results:
The user cannot see raw tool results. You MUST output the full report as your response text — do NOT summarize, shorten, or add commentary around it. The report is pre-formatted for direct display. Lead with secrets (rotate any found credentials immediately). Be precise about rule conflicts — show the rule AND the conflicting action. Don't minimize: "no findings" is a REAL signal of clean setup, not evidence of a broken scanner.

Example prompts that should trigger this tool:
\- "Scan my Claude setup for security issues"
\- "Are there any leaked API keys in my config?"
\- "Check my hooks for prompt injection risks"
\- "Security audit of my agent setup"

Input parameters:

- `projectRoot` (string): Project root (e.g., "/Users/me/my-project"). Defaults to cwd.
- `scope` (string): "global" (default) scans ~/.claude/ agent setup; "project" scans a single directory.

### `wrapped` (~243 tokens)

Generate your Dear User — shareable stats about your human-agent collaboration in a fun, Spotify Wrapped-style format.

What this tool does NOT do:
\- Does NOT share anything automatically — it generates text you can copy/paste if you choose
\- Does NOT access external accounts or profiles
\- Does NOT store or upload the generated stats anywhere

IMPORTANT — Presenting results:
The user cannot see raw tool results. You MUST output the full report as your response text — do NOT summarize, shorten, or add commentary around it. The report is pre-formatted for direct display.

Example prompts that should trigger this tool:
\- "Give me my Dear User Wrapped"
\- "Show my collaboration stats"
\- "Generate shareable stats about my Claude usage"

Input parameters:

- `format` (string): Output format. "text" (default) for terminal-friendly ASCII art, "json" for raw analysis data.
- `projectRoot` (string): Project root when scope="project" (e.g., "/Users/me/my-project"). Ignored for scope="global".
- `scope` (string): "global" (default) aggregates across all projects; "project" narrows to one directory.

### `implement_recommendation` (~389 tokens)

Apply a Dear User recommendation to the user's setup — automatically if safe, or by returning the exact command/instruction for the agent to run.

After a collab/health/security report runs, the result text contains a "Three things to fix" menu with up to 3 recommendation_ids plus "Take all of them" and "Skip for now" options. Present those options to the user via AskUserQuestion (or as a numbered list if AskUserQuestion isn't available). When the user picks an item: call this tool with that recommendation_id. When the user picks "Take all": call this tool once per id, in order. When the user picks "Skip" or dismisses an item: call mcp__dearuser__dismiss_recommendation instead.

Behavior by action_type:
\- **claude_md_append** — appends the markdown rule to ~/.claude/CLAUDE.md (with timestamped backup). Idempotent.
\- **settings_merge** — merges a JSON snippet into ~/.claude/settings.json (with backup, arrays deduped). Idempotent.
\- **shell_exec** — returns the shell command for YOU (the agent) to run via the Bash tool. Do NOT paraphrase; run it verbatim.
\- **manual** — returns instructions that need human judgment; present them to the user.

After a successful implementation, the recommendation's status is marked "implemented" so Dear User won't suggest it again.

IMPORTANT: Present the ImplementResult back to the user in plain Danish — confirm what changed, show any backup paths, and if there's a `command` field, run it via Bash and report the result. If `ok:false`, tell the user why and suggest they try again or do it manually.

Input parameters:

- `recommendation_id` (string, required): The id of the recommendation to implement — surfaced in the action menu of the latest report.

### `dismiss_recommendation` (~192 tokens)

Mark a Dear User recommendation as dismissed so it won't be suggested again. Call this when the user picks "drop"/"ikke for mig"/"skip" for a specific recommendation from the action menu.

Use recommendation_id from the latest report's menu. For security/health findings, the dismissal propagates to the underlying finding in the ledger so future scans won't re-surface it (unless dismiss_expires_at elapses).

Input parameters:

- `comment` (string): Free-text context for the audit trail.
- `expires_in_days` (integer): If set, the dismissal auto-expires after N days and the finding returns to open. Useful for accepted_risk with a review window.
- `reason` (string): Why this is dismissed. Required for ledger-linked recs (security/health findings). Defaults to wont_fix for collab recs.
- `recommendation_id` (string, required): The id of the recommendation to dismiss.

### `feedback` (~540 tokens)

Send a short note to the Dear User team — a bug, a request, a "this score feels wrong", or anything you want the founder to read. Zero friction: one tool call and you're done.

Behavior:
\- POSTs your message to the Dear User feedback inbox (Supabase) over HTTPS.
\- Respects Dear User's local-first guarantee — this is the one place data leaves the machine.
\- Email is only attached when opt_in_followup=true AND an email is provided.
\- No retries — if the network fails, you get a clear message and the payload is logged locally.
\- For public questions/ideas, point to GitHub Discussions: https://github.com/bleedmode/dearuser/discussions

What this tool does NOT do:
\- Does NOT send anything automatically — the agent must have called this tool with an explicit message from the user.
\- Does NOT read past feedback — it is write-only from this side. The founder reads the inbox directly in Supabase.
\- Does NOT upload anything about your setup, files, or reports. Only what you put in the message.

Context options: "collab" | "security" | "health" | "wrapped" | "general" — pick the tool the user just ran so the founder can slice the inbox.

Length guidance: keep the confirmation you show the user short. If the user typed a one-liner, the reply can be one line.

Example prompts that should trigger this tool:
\- "This score feels wrong — send feedback: the collab score is too low for a brand new project"
\- "Send feedback to Dear User: loving it, but the health findings could be shorter"
\- "Tell them I want Windows support"
\- "Send a bug report: health tool crashed on me"

Input parameters:

- `context` (string): Which surface the user just came from. Use the tool they last ran; fall back to "general" when unclear.
- `email` (string): Email for follow-up. Ignored unless opt_in_followup=true AND the string contains an @.
- `format` (string): "text" (default): friendly Danish confirmation. "json": raw result payload for programmatic consumers.
- `message` (string, required): The feedback text itself — 1 to 4000 characters, plain language. Whatever the user said; do not rewrite or summarise.
- `opt_in_followup` (boolean): Set true only when the user explicitly said they want a reply. Default false.
- `rating` (number): Optional 1–5 rating. Only include when the user actually stated a number — do not infer from text.

### `help` (~131 tokens)

Show Dear User's capabilities to the user. Call this whenever the user asks "what can Dear User do?", "hvad kan DearUser?", "show me the options", "help", or seems uncertain about which tool fits their need. Also call proactively the first time a user mentions Dear User if they haven't used it before.

What this tool does NOT do:
\- Does NOT run any analysis — it only describes what Dear User can do
\- Does NOT access or read any user files

When presenting: return the text verbatim. Do NOT summarize or re-wrap — the formatting is designed for direct chat display.

### `share_report` (~297 tokens)

Generate a public shareable link for your Dear User Wrapped card. Uploads an anonymized copy to dearuser.ai and returns a URL you can paste anywhere (X, LinkedIn, Slack).

Only Wrapped reports are shareable. Collab/health/security reports stay local.

Privacy contract:
\- Absolute filesystem paths are collapsed to basenames.
\- Email addresses are stripped.
\- Anything matching our secret-scanner patterns (API keys, tokens, JWTs, private keys) is redacted before upload.
\- The user's local ~/.dearuser/ database is NOT modified.

Works out of the box — uploads through the public dearuser.ai Supabase endpoint with an RLS-protected anon key. Forks/staging deployments can override with DEARUSER_SUPABASE_URL + DEARUSER_SUPABASE_ANON_KEY.

IMPORTANT — Presenting results:
Show the returned URL prominently and tell the user it's public. Do NOT auto-paste it anywhere on their behalf.

Example prompts that should trigger this tool:
\- "Share my Wrapped"
\- "Lav et delbart link til min Wrapped"

Input parameters:

- `expires_at` (string): ISO-8601 timestamp after which the link stops working. Omit for a permanent link.
- `report_json` (object, required): The full structured Wrapped report object.
- `report_type` (string, required): Only "wrapped" is accepted. Collab/health/security sharing is disabled pre-launch to avoid leaking business context.

## Diagnostics

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

## Score history

- 2026-08-03: 62
- 2026-08-02: 58
- 2026-08-01: 5
- 2026-07-31: 23
- 2026-07-30: 41
- 2026-07-28: 41
- 2026-07-27: 41

## Links

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