@mushi-mushi/mcp 0.18.1 → 0.18.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -87,9 +87,9 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS)
87
87
  Restart Claude Desktop. You should see a hammer icon in the chat input — click it to see the Mushi Mushi tools.
88
88
 
89
89
  > **Where do I find these values?**
90
- > - **`MUSHI_API_KEY`**: [Admin console](https://kensaur.us/mushi-mushi/settings) → **Settings → API Keys**
90
+ > - **`MUSHI_API_KEY`**: [Admin → Connect](https://kensaur.us/mushi-mushi/admin/connect) or **MCP** setup — mint an `mcp:read` / `mcp:write` key. This is **not** the SDK ingest key from **Setup → Verify** (`report:write`) and **not** a BYOK key from **Settings → API Keys**.
91
91
  > - **`MUSHI_PROJECT_ID`**: [Admin console](https://kensaur.us/mushi-mushi/projects) → click your project → copy the UUID below the project name (e.g. `542b34e0-019e-41fe-b900-7b637717bb86`)
92
- > - **`MUSHI_API_ENDPOINT`**: [Admin console](https://kensaur.us/mushi-mushi/settings) → **Settings → API Keys** — shown alongside your key
92
+ > - **`MUSHI_API_ENDPOINT`**: Shown when you mint the MCP key, or use your project's API base (`https://<ref>.supabase.co/functions/v1/api`)
93
93
  >
94
94
  > Or visit **Admin → MCP** in the console for a one-click pre-filled config snippet.
95
95
 
@@ -105,9 +105,9 @@ Then set the same three environment variables:
105
105
 
106
106
  | Variable | Where to find it |
107
107
  |---|---|
108
- | `MUSHI_API_KEY` | Admin console → Settings → API Keys |
108
+ | `MUSHI_API_KEY` | **Connect** or **MCP** tab — mint `mcp:read` / `mcp:write` (not Setup → Verify ingest key; not Settings → BYOK) |
109
109
  | `MUSHI_PROJECT_ID` | Admin console → Projects → click project → UUID below the name |
110
- | `MUSHI_API_ENDPOINT` | Admin console → Settings → API Keys (shown alongside your key) |
110
+ | `MUSHI_API_ENDPOINT` | Shown at key mint, or your Supabase `.../functions/v1/api` base |
111
111
 
112
112
  Without `MUSHI_PROJECT_ID` the server starts but scoped tools return an empty result with a message pointing you here.
113
113
 
package/dist/catalog.js CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  RESOURCE_CATALOG,
6
6
  TDD_TOOL_CATALOG,
7
7
  TOOL_CATALOG
8
- } from "./chunk-TJSPX5CD.js";
8
+ } from "./chunk-DSOPGMDX.js";
9
9
  export {
10
10
  ALL_SCOPES,
11
11
  CODEBASE_TOOL_CATALOG,
@@ -192,7 +192,7 @@ var TOOL_CATALOG = [
192
192
  {
193
193
  name: "merge_fix",
194
194
  title: "Merge fix PR",
195
- description: "Squash-merge the GitHub PR for a fix attempt, mark the linked report fixed, and notify the reporter. Re-readies the PR first if it is still a draft. Returns { merged, reportStatus }. Write; destructive (mutates the target repo's default branch); idempotent \u2014 re-running an already-merged attempt is a safe no-op. Prerequisite: CI green (check with refresh_ci). Use to ship a fix opened by dispatch_fix; use transition_status to change state without merging.",
195
+ description: "Squash-merge the GitHub PR for a fix attempt, mark the linked report fixed, and notify the reporter. Re-readies the PR first if it is still a draft. Returns { merged, reportStatus }. Write; destructive and irreversible from Mushi's side \u2014 once GitHub merges into the target repo's default branch there is no unmerge endpoint, only a manual revert PR outside this tool. Idempotent \u2014 re-running an already-merged attempt is a safe no-op. Prerequisite: CI green (check with refresh_ci); confirm the diff and CI status with the user before calling on a PR you have not reviewed. Use to ship a fix opened by dispatch_fix; use transition_status to change state without merging.",
196
196
  scope: "mcp:write",
197
197
  hints: { readOnly: false, destructive: true, idempotent: true, openWorld: true },
198
198
  useCase: "Merge the draft PR and notify the reporter."
@@ -225,17 +225,17 @@ var TOOL_CATALOG = [
225
225
  {
226
226
  name: "award_bonus_points",
227
227
  title: "Award bonus points",
228
- description: "Award ad-hoc bonus points to a contributor by their external user id (as passed to Mushi.identify()). Points are applied server-side, audit-logged, and trigger tier re-evaluation. Requires mcp:write scope. Use this to thank a contributor who found a critical bug or to run a one-off promotional campaign.",
228
+ description: "Award ad-hoc bonus points (1-50000, positive only \u2014 there is no way to subtract via this tool) to a contributor by their external user id (as passed to Mushi.identify()). Points post immediately to their total and are audit-logged as bonus_manual. Destructive and effectively irreversible: there is no reversal endpoint, so confirm the amount and recipient with the user before calling. Tier re-evaluation (and any host-side reward_webhooks grant tied to crossing a threshold) is NOT immediate \u2014 it only runs on the contributor's next tracked activity, not on this call. Requires mcp:write scope. Use this to thank a contributor who found a critical bug or to run a one-off promotional campaign.",
229
229
  scope: "mcp:write",
230
- hints: { readOnly: false, destructive: false, idempotent: false, openWorld: true },
230
+ hints: { readOnly: false, destructive: true, idempotent: false, openWorld: true },
231
231
  useCase: "Give this contributor 500 bonus points for the critical bug they found."
232
232
  },
233
233
  {
234
234
  name: "set_tier",
235
235
  title: "Override contributor tier",
236
- description: `Override a contributor's tier by tier slug (e.g. "champion"). This is an admin escape hatch for manual promotions \u2014 normal tier transitions happen automatically via point thresholds. The override is logged in end_user_activity with action=tier_override_manual. Requires mcp:write scope.`,
236
+ description: `Override a contributor's tier by tier slug (e.g. "champion"), bypassing the normal points-threshold logic entirely. This is an admin escape hatch for manual promotions \u2014 normal tier transitions happen automatically via point thresholds instead. Destructive: it is a label-only override that does NOT replay the automatic tier-evaluation path, so any host_credit_payload grant (Stripe perk, badge, etc.) normally tied to reaching that tier via points will NOT fire \u2014 confirm with the user whether they also need the perk granted another way. The override persists until another set_tier call changes it; the prior override stays in the end_user_activity audit trail either way, logged as tier_override_manual. Requires mcp:write scope.`,
237
237
  scope: "mcp:write",
238
- hints: { readOnly: false, destructive: false, idempotent: true, openWorld: true },
238
+ hints: { readOnly: false, destructive: true, idempotent: true, openWorld: true },
239
239
  useCase: "Manually promote this user to Champion tier as a thank-you."
240
240
  },
241
241
  {
package/dist/index.js CHANGED
@@ -199,7 +199,7 @@ var TOOL_CATALOG = [
199
199
  {
200
200
  name: "merge_fix",
201
201
  title: "Merge fix PR",
202
- description: "Squash-merge the GitHub PR for a fix attempt, mark the linked report fixed, and notify the reporter. Re-readies the PR first if it is still a draft. Returns { merged, reportStatus }. Write; destructive (mutates the target repo's default branch); idempotent \u2014 re-running an already-merged attempt is a safe no-op. Prerequisite: CI green (check with refresh_ci). Use to ship a fix opened by dispatch_fix; use transition_status to change state without merging.",
202
+ description: "Squash-merge the GitHub PR for a fix attempt, mark the linked report fixed, and notify the reporter. Re-readies the PR first if it is still a draft. Returns { merged, reportStatus }. Write; destructive and irreversible from Mushi's side \u2014 once GitHub merges into the target repo's default branch there is no unmerge endpoint, only a manual revert PR outside this tool. Idempotent \u2014 re-running an already-merged attempt is a safe no-op. Prerequisite: CI green (check with refresh_ci); confirm the diff and CI status with the user before calling on a PR you have not reviewed. Use to ship a fix opened by dispatch_fix; use transition_status to change state without merging.",
203
203
  scope: "mcp:write",
204
204
  hints: { readOnly: false, destructive: true, idempotent: true, openWorld: true },
205
205
  useCase: "Merge the draft PR and notify the reporter."
@@ -232,17 +232,17 @@ var TOOL_CATALOG = [
232
232
  {
233
233
  name: "award_bonus_points",
234
234
  title: "Award bonus points",
235
- description: "Award ad-hoc bonus points to a contributor by their external user id (as passed to Mushi.identify()). Points are applied server-side, audit-logged, and trigger tier re-evaluation. Requires mcp:write scope. Use this to thank a contributor who found a critical bug or to run a one-off promotional campaign.",
235
+ description: "Award ad-hoc bonus points (1-50000, positive only \u2014 there is no way to subtract via this tool) to a contributor by their external user id (as passed to Mushi.identify()). Points post immediately to their total and are audit-logged as bonus_manual. Destructive and effectively irreversible: there is no reversal endpoint, so confirm the amount and recipient with the user before calling. Tier re-evaluation (and any host-side reward_webhooks grant tied to crossing a threshold) is NOT immediate \u2014 it only runs on the contributor's next tracked activity, not on this call. Requires mcp:write scope. Use this to thank a contributor who found a critical bug or to run a one-off promotional campaign.",
236
236
  scope: "mcp:write",
237
- hints: { readOnly: false, destructive: false, idempotent: false, openWorld: true },
237
+ hints: { readOnly: false, destructive: true, idempotent: false, openWorld: true },
238
238
  useCase: "Give this contributor 500 bonus points for the critical bug they found."
239
239
  },
240
240
  {
241
241
  name: "set_tier",
242
242
  title: "Override contributor tier",
243
- description: `Override a contributor's tier by tier slug (e.g. "champion"). This is an admin escape hatch for manual promotions \u2014 normal tier transitions happen automatically via point thresholds. The override is logged in end_user_activity with action=tier_override_manual. Requires mcp:write scope.`,
243
+ description: `Override a contributor's tier by tier slug (e.g. "champion"), bypassing the normal points-threshold logic entirely. This is an admin escape hatch for manual promotions \u2014 normal tier transitions happen automatically via point thresholds instead. Destructive: it is a label-only override that does NOT replay the automatic tier-evaluation path, so any host_credit_payload grant (Stripe perk, badge, etc.) normally tied to reaching that tier via points will NOT fire \u2014 confirm with the user whether they also need the perk granted another way. The override persists until another set_tier call changes it; the prior override stays in the end_user_activity audit trail either way, logged as tier_override_manual. Requires mcp:write scope.`,
244
244
  scope: "mcp:write",
245
- hints: { readOnly: false, destructive: false, idempotent: true, openWorld: true },
245
+ hints: { readOnly: false, destructive: true, idempotent: true, openWorld: true },
246
246
  useCase: "Manually promote this user to Champion tier as a thank-you."
247
247
  },
248
248
  {
package/dist/server.js CHANGED
@@ -2,7 +2,7 @@ import {
2
2
  CODEBASE_TOOL_CATALOG,
3
3
  TDD_TOOL_CATALOG,
4
4
  TOOL_CATALOG
5
- } from "./chunk-TJSPX5CD.js";
5
+ } from "./chunk-DSOPGMDX.js";
6
6
  import {
7
7
  MUSHI_SERVER_METADATA
8
8
  } from "./chunk-EANW5YTI.js";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@mushi-mushi/mcp",
3
3
  "mcpName": "io.github.kensaurus/mushi-mushi",
4
- "version": "0.18.1",
4
+ "version": "0.18.2",
5
5
  "license": "MIT",
6
6
  "description": "MCP server for Mushi Mushi — triage user-felt bugs, pull evidence (screenshots, console logs, network requests), check blast radius, and dispatch fix PRs, all from your AI coding agent",
7
7
  "type": "module",
@@ -48,7 +48,7 @@
48
48
  "@modelcontextprotocol/sdk": "^1.29.0",
49
49
  "@sentry/node": "^10.57.0",
50
50
  "zod": "^4.4.3",
51
- "@mushi-mushi/core": "^1.22.2"
51
+ "@mushi-mushi/core": "^1.22.5"
52
52
  },
53
53
  "devDependencies": {
54
54
  "@types/node": "^22.19.21",