@mushi-mushi/mcp 0.24.1 → 0.24.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
@@ -494,4 +494,4 @@ MIT
494
494
  <!-- mushi-readme-stats-footer -->
495
495
  ---
496
496
 
497
- <sub>Monorepo scale (July 2026): 64 edge functions · 410 SQL migrations · 13 outbound plugins · 11 inbound adapters · 19 pipeline agents. Canonical counts: <a href="https://github.com/kensaurus/mushi-mushi/blob/master/docs/stats.md">docs/stats.md</a> · <code>pnpm docs-stats</code></sub>
497
+ <sub>Monorepo scale (July 2026): 64 edge functions · 413 SQL migrations · 13 outbound plugins · 11 inbound adapters · 19 pipeline agents. Canonical counts: <a href="https://github.com/kensaurus/mushi-mushi/blob/master/docs/stats.md">docs/stats.md</a> · <code>pnpm docs-stats</code></sub>
package/dist/catalog.js CHANGED
@@ -8,7 +8,7 @@ import {
8
8
  TOOL_CATALOG,
9
9
  USE_MUSHI_INTENTS,
10
10
  routeUseMushiIntent
11
- } from "./chunk-IC7PPRRZ.js";
11
+ } from "./chunk-Y757GGQH.js";
12
12
  export {
13
13
  ALL_SCOPES,
14
14
  CODEBASE_TOOL_CATALOG,
@@ -820,7 +820,7 @@ var TDD_TOOL_CATALOG = [
820
820
  {
821
821
  name: "list_byok_keys",
822
822
  title: "List your API key pool",
823
- description: "List the project's BYOK API keys grouped by provider (anthropic | openai | firecrawl | browserbase | cursor). Returns pooled { keys: [{ id, provider_slug, label, priority, status, cooldown_until, test_status, key_hint, base_url, last_tested_at, last_used_at }] } plus read-only { legacyKeys } metadata for credentials saved before the pooled lifecycle \u2014 never the raw secret. Read-only. Use to see which keys are validated, active, pending, legacy, or rate-limited; use add_byok_key to add one.",
823
+ description: "List the project's BYOK API keys grouped by provider (anthropic | openai | firecrawl | browserbase | cursor | supabase). Returns pooled { keys: [{ id, provider_slug, label, priority, status, cooldown_until, test_status, key_hint, base_url, last_tested_at, last_used_at }] } plus read-only { legacyKeys } metadata for credentials saved before the pooled lifecycle \u2014 never the raw secret. Read-only. Use to see which keys are validated, active, pending, legacy, or rate-limited; use add_byok_key to add one.",
824
824
  scope: "mcp:read",
825
825
  hints: { readOnly: true, idempotent: true, openWorld: true },
826
826
  useCase: "Which API keys are active and which are rate-limited?"
@@ -828,7 +828,7 @@ var TDD_TOOL_CATALOG = [
828
828
  {
829
829
  name: "add_byok_key",
830
830
  title: "Add an API key",
831
- description: "Add and immediately validate a BYOK API key for anthropic | openai | firecrawl | browserbase | cursor. The raw key is stored encrypted in Supabase Vault and never returned; failed probes remain quarantined. Optional baseUrl is accepted only for allow-listed OpenAI-compatible HTTPS providers. Write; NOT idempotent.",
831
+ description: "Add and immediately validate a BYOK API key for anthropic | openai | firecrawl | browserbase | cursor | supabase (a scoped, read-only Supabase access token, checked against the linked supabase_project_ref). The raw key is stored encrypted in Supabase Vault and never returned; failed probes remain quarantined. Optional baseUrl is accepted only for allow-listed OpenAI-compatible HTTPS providers. Write; NOT idempotent.",
832
832
  scope: "mcp:write",
833
833
  hints: { readOnly: false, destructive: false, idempotent: false, openWorld: true },
834
834
  useCase: "Add a backup Anthropic key to the pool."
@@ -984,7 +984,7 @@ var TDD_TOOL_CATALOG = [
984
984
  {
985
985
  name: "run_fullstack_audit",
986
986
  title: "Run a full-stack health audit",
987
- description: "Fan out a full-stack health audit for the current project: DB schema + advisors, API contract gate results (Gates 3\u20138), recent backend error logs, and RLS gap detection. Returns a PM-readable scorecard with severity-ranked findings and fix hints. Requires the project to have a Supabase PAT configured (Settings \u2192 API Keys, slug: supabase) and supabase_project_ref set in project settings for backend analysis. The audit completes synchronously in ~10 s. Triggers a background gate run for orphan_endpoint and unknown_call gates if they have not run today.",
987
+ description: "Fan out a full-stack health audit for the current project: DB schema + advisors, API contract gate results (Gates 3\u20138), recent backend error logs, and RLS gap detection. Returns a PM-readable scorecard with severity-ranked findings and fix hints. Backend analysis needs supabase_project_ref set (Settings \u2192 General) and a scoped, read-only Supabase access token added (Settings \u2192 AI keys, slug: supabase). The audit completes synchronously in ~10 s. Triggers a background gate run for orphan_endpoint and unknown_call gates if they have not run today.",
988
988
  scope: "mcp:write",
989
989
  hints: { readOnly: false, destructive: false, idempotent: true, openWorld: true },
990
990
  useCase: "Is this project healthy? Run a one-click full-stack audit to find API contract mismatches, unlinked backend features, schema drift, and security gaps."
package/dist/clients.d.ts CHANGED
@@ -46,7 +46,7 @@ import { FeatureGroup } from './feature-groups.js';
46
46
  * editor launch. Synced to package.json by `scripts/sync-mcp-pin.mjs` — never
47
47
  * hand-edit the version.
48
48
  */
49
- declare const MCP_PIN_SPEC = "@mushi-mushi/mcp@0.24.1";
49
+ declare const MCP_PIN_SPEC = "@mushi-mushi/mcp@0.24.2";
50
50
  interface StdioConfig {
51
51
  command: string;
52
52
  args: string[];
package/dist/clients.js CHANGED
@@ -8,7 +8,7 @@ import {
8
8
  } from "./chunk-F65T4IGT.js";
9
9
 
10
10
  // src/clients.ts
11
- var MCP_PIN_SPEC = "@mushi-mushi/mcp@0.24.1";
11
+ var MCP_PIN_SPEC = "@mushi-mushi/mcp@0.24.2";
12
12
  function projectServerName(projectId, projectName) {
13
13
  const nameSlug = projectName.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "").slice(0, 22);
14
14
  const idSuffix = projectId.replace(/-/g, "").slice(0, 6);
package/dist/index.js CHANGED
@@ -812,7 +812,7 @@ var TDD_TOOL_CATALOG = [
812
812
  {
813
813
  name: "list_byok_keys",
814
814
  title: "List your API key pool",
815
- description: "List the project's BYOK API keys grouped by provider (anthropic | openai | firecrawl | browserbase | cursor). Returns pooled { keys: [{ id, provider_slug, label, priority, status, cooldown_until, test_status, key_hint, base_url, last_tested_at, last_used_at }] } plus read-only { legacyKeys } metadata for credentials saved before the pooled lifecycle \u2014 never the raw secret. Read-only. Use to see which keys are validated, active, pending, legacy, or rate-limited; use add_byok_key to add one.",
815
+ description: "List the project's BYOK API keys grouped by provider (anthropic | openai | firecrawl | browserbase | cursor | supabase). Returns pooled { keys: [{ id, provider_slug, label, priority, status, cooldown_until, test_status, key_hint, base_url, last_tested_at, last_used_at }] } plus read-only { legacyKeys } metadata for credentials saved before the pooled lifecycle \u2014 never the raw secret. Read-only. Use to see which keys are validated, active, pending, legacy, or rate-limited; use add_byok_key to add one.",
816
816
  scope: "mcp:read",
817
817
  hints: { readOnly: true, idempotent: true, openWorld: true },
818
818
  useCase: "Which API keys are active and which are rate-limited?"
@@ -820,7 +820,7 @@ var TDD_TOOL_CATALOG = [
820
820
  {
821
821
  name: "add_byok_key",
822
822
  title: "Add an API key",
823
- description: "Add and immediately validate a BYOK API key for anthropic | openai | firecrawl | browserbase | cursor. The raw key is stored encrypted in Supabase Vault and never returned; failed probes remain quarantined. Optional baseUrl is accepted only for allow-listed OpenAI-compatible HTTPS providers. Write; NOT idempotent.",
823
+ description: "Add and immediately validate a BYOK API key for anthropic | openai | firecrawl | browserbase | cursor | supabase (a scoped, read-only Supabase access token, checked against the linked supabase_project_ref). The raw key is stored encrypted in Supabase Vault and never returned; failed probes remain quarantined. Optional baseUrl is accepted only for allow-listed OpenAI-compatible HTTPS providers. Write; NOT idempotent.",
824
824
  scope: "mcp:write",
825
825
  hints: { readOnly: false, destructive: false, idempotent: false, openWorld: true },
826
826
  useCase: "Add a backup Anthropic key to the pool."
@@ -976,7 +976,7 @@ var TDD_TOOL_CATALOG = [
976
976
  {
977
977
  name: "run_fullstack_audit",
978
978
  title: "Run a full-stack health audit",
979
- description: "Fan out a full-stack health audit for the current project: DB schema + advisors, API contract gate results (Gates 3\u20138), recent backend error logs, and RLS gap detection. Returns a PM-readable scorecard with severity-ranked findings and fix hints. Requires the project to have a Supabase PAT configured (Settings \u2192 API Keys, slug: supabase) and supabase_project_ref set in project settings for backend analysis. The audit completes synchronously in ~10 s. Triggers a background gate run for orphan_endpoint and unknown_call gates if they have not run today.",
979
+ description: "Fan out a full-stack health audit for the current project: DB schema + advisors, API contract gate results (Gates 3\u20138), recent backend error logs, and RLS gap detection. Returns a PM-readable scorecard with severity-ranked findings and fix hints. Backend analysis needs supabase_project_ref set (Settings \u2192 General) and a scoped, read-only Supabase access token added (Settings \u2192 AI keys, slug: supabase). The audit completes synchronously in ~10 s. Triggers a background gate run for orphan_endpoint and unknown_call gates if they have not run today.",
980
980
  scope: "mcp:write",
981
981
  hints: { readOnly: false, destructive: false, idempotent: true, openWorld: true },
982
982
  useCase: "Is this project healthy? Run a one-click full-stack audit to find API contract mismatches, unlinked backend features, schema drift, and security gaps."
@@ -1875,6 +1875,15 @@ var MUSHI_DOCS_INDEX = [
1875
1875
  headings: ["What it shows", "Out-of-date detection", "Setup checklist integration", "Where it lives", "Related"],
1876
1876
  excerpt: "The SDK health card shows the live heartbeat of every Mushi SDK that reported in the last 24 hours, so an SDK that never shipped is obvious."
1877
1877
  },
1878
+ {
1879
+ title: "SDK upgrade lockfile helper",
1880
+ url: docUrl("/admin/sdk-upgrade-lockfile"),
1881
+ route: "/admin/sdk-upgrade-lockfile",
1882
+ markdown: "admin/sdk-upgrade-lockfile.md",
1883
+ keywords: ["admin", "sdk-upgrade-lockfile", "sdk", "upgrade", "lockfile", "helper"],
1884
+ headings: ["How it works", "Add the workflow", "What the action does", "Private registries", "Pinning", "Why Mushi does not write the lockfile or the workflow", "Limits"],
1885
+ excerpt: "Add one workflow to your repo so Mushi's SDK upgrade PRs arrive with a refreshed lockfile and pass npm ci or pnpm install --frozen-lockfile."
1886
+ },
1878
1887
  {
1879
1888
  title: "Settings",
1880
1889
  url: docUrl("/admin/settings"),
@@ -6684,7 +6693,7 @@ Be specific. No generic advice.`
6684
6693
  annotations: annotationsFor("add_byok_key", TDD_TOOL_CATALOG),
6685
6694
  inputSchema: z.object({
6686
6695
  projectId: z.string().describe("Project id"),
6687
- provider: z.enum(["anthropic", "openai", "firecrawl", "browserbase", "cursor"]).describe("Provider slug"),
6696
+ provider: z.enum(["anthropic", "openai", "firecrawl", "browserbase", "cursor", "supabase"]).describe("Provider slug"),
6688
6697
  key: z.string().min(8).max(4096).describe("The API key value to add"),
6689
6698
  label: z.string().optional().describe("Human-readable label for this key"),
6690
6699
  priority: z.number().int().min(0).max(1e4).optional().describe("Priority for ordering (lower = higher priority)"),
package/dist/server.js CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  TDD_TOOL_CATALOG,
5
5
  TOOL_CATALOG,
6
6
  routeUseMushiIntent
7
- } from "./chunk-IC7PPRRZ.js";
7
+ } from "./chunk-Y757GGQH.js";
8
8
  import {
9
9
  MUSHI_SERVER_METADATA
10
10
  } from "./chunk-FJRPC4VR.js";
@@ -485,6 +485,15 @@ var MUSHI_DOCS_INDEX = [
485
485
  headings: ["What it shows", "Out-of-date detection", "Setup checklist integration", "Where it lives", "Related"],
486
486
  excerpt: "The SDK health card shows the live heartbeat of every Mushi SDK that reported in the last 24 hours, so an SDK that never shipped is obvious."
487
487
  },
488
+ {
489
+ title: "SDK upgrade lockfile helper",
490
+ url: docUrl("/admin/sdk-upgrade-lockfile"),
491
+ route: "/admin/sdk-upgrade-lockfile",
492
+ markdown: "admin/sdk-upgrade-lockfile.md",
493
+ keywords: ["admin", "sdk-upgrade-lockfile", "sdk", "upgrade", "lockfile", "helper"],
494
+ headings: ["How it works", "Add the workflow", "What the action does", "Private registries", "Pinning", "Why Mushi does not write the lockfile or the workflow", "Limits"],
495
+ excerpt: "Add one workflow to your repo so Mushi's SDK upgrade PRs arrive with a refreshed lockfile and pass npm ci or pnpm install --frozen-lockfile."
496
+ },
488
497
  {
489
498
  title: "Settings",
490
499
  url: docUrl("/admin/settings"),
@@ -5360,7 +5369,7 @@ Be specific. No generic advice.`
5360
5369
  annotations: annotationsFor("add_byok_key", TDD_TOOL_CATALOG),
5361
5370
  inputSchema: z.object({
5362
5371
  projectId: z.string().describe("Project id"),
5363
- provider: z.enum(["anthropic", "openai", "firecrawl", "browserbase", "cursor"]).describe("Provider slug"),
5372
+ provider: z.enum(["anthropic", "openai", "firecrawl", "browserbase", "cursor", "supabase"]).describe("Provider slug"),
5364
5373
  key: z.string().min(8).max(4096).describe("The API key value to add"),
5365
5374
  label: z.string().optional().describe("Human-readable label for this key"),
5366
5375
  priority: z.number().int().min(0).max(1e4).optional().describe("Priority for ordering (lower = higher priority)"),
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.24.1",
4
+ "version": "0.24.2",
5
5
  "license": "MIT",
6
6
  "description": "MCP server for Cursor, Claude Code and Copilot. The bug mediator for AI-built apps: plain-English diagnosis + a ready fix, in your editor.",
7
7
  "type": "module",