@mushi-mushi/mcp 0.20.0 → 0.20.1

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
@@ -146,7 +146,7 @@ The Mushi backend now exposes the same tool catalog over the **Streamable HTTP**
146
146
 
147
147
  ### Feature groups (`?features=` / `MUSHI_FEATURES`)
148
148
 
149
- Full catalog is **69 tools** (stdio / `MUSHI_FEATURES=all`). The hosted HTTP
149
+ Full catalog is **71 tools** (stdio / `MUSHI_FEATURES=all`). The hosted HTTP
150
150
  endpoint exposes a leaner subset filtered by feature groups (see
151
151
  `mcp-hosted-tool-manifest.json`). New installs now default to the lean
152
152
  `triage,fixes,inventory,setup,docs` set automatically (stdio: when
@@ -390,7 +390,7 @@ Spawns `dist/index.js` with a dummy unreachable endpoint and confirms it adverti
390
390
  pnpm --filter @mushi-mushi/mcp build
391
391
  pnpm --filter @mushi-mushi/mcp test:smoke
392
392
  # OK; prints live tool/resource/prompt counts from the catalog
393
- # (see packages/mcp/src/catalog.ts — currently 69 tools / 8 resources / 4 prompts)
393
+ # (see packages/mcp/src/catalog.ts — currently 71 tools / 8 resources / 4 prompts)
394
394
  ```
395
395
 
396
396
  ### Layer 3; Full localhost E2E (real binary + real backend behaviour)
@@ -484,4 +484,4 @@ MIT
484
484
  <!-- mushi-readme-stats-footer -->
485
485
  ---
486
486
 
487
- <sub>Monorepo scale (July 2026): 55 edge functions · 328 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>
487
+ <sub>Monorepo scale (July 2026): 55 edge functions · 331 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
@@ -6,7 +6,7 @@ import {
6
6
  TDD_TOOL_CATALOG,
7
7
  TOOL_CATALOG,
8
8
  USE_MUSHI_INTENTS
9
- } from "./chunk-OZJEY3QR.js";
9
+ } from "./chunk-TP2QQWDJ.js";
10
10
  export {
11
11
  ALL_SCOPES,
12
12
  CODEBASE_TOOL_CATALOG,
@@ -449,7 +449,7 @@ var TDD_TOOL_CATALOG = [
449
449
  {
450
450
  name: "list_byok_keys",
451
451
  title: "List your API key pool",
452
- description: "List the project's BYOK API keys grouped by provider (anthropic | openai | firecrawl | browserbase | cursor). Returns { keys: [{ id, provider, label, priority, status, cooldownUntil }] } \u2014 metadata only, never the raw secret. Read-only. Use to see which keys are active vs rate-limited/exhausted; use add_byok_key to add one.",
452
+ 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.",
453
453
  scope: "mcp:read",
454
454
  hints: { readOnly: true, idempotent: true, openWorld: true },
455
455
  useCase: "Which API keys are active and which are rate-limited?"
@@ -457,11 +457,27 @@ var TDD_TOOL_CATALOG = [
457
457
  {
458
458
  name: "add_byok_key",
459
459
  title: "Add an API key",
460
- description: "Add a BYOK API key to the project pool for a provider (anthropic | openai | firecrawl | browserbase | cursor), with a label and priority for failover ordering. The raw key is stored encrypted in Supabase Vault and never returned. Returns { id, provider, label }. Write; NOT idempotent \u2014 adds a new row each call. Use to register a backup/rotated key; use list_byok_keys to review the pool.",
460
+ 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.",
461
461
  scope: "mcp:write",
462
462
  hints: { readOnly: false, destructive: false, idempotent: false, openWorld: true },
463
463
  useCase: "Add a backup Anthropic key to the pool."
464
464
  },
465
+ {
466
+ name: "test_byok_key",
467
+ title: "Test an API key",
468
+ description: "Re-test one pooled BYOK credential by key id. A successful provider probe activates the key; auth, quota, and network failures keep it out of the runtime pool. Returns the sanitized validation result and updated key metadata. Write; idempotent.",
469
+ scope: "mcp:write",
470
+ hints: { readOnly: false, destructive: false, idempotent: true, openWorld: true },
471
+ useCase: "Re-test a quarantined OpenAI key after fixing its account quota."
472
+ },
473
+ {
474
+ name: "remove_byok_key",
475
+ title: "Remove an API key",
476
+ description: "Permanently remove one pooled BYOK credential by key id from the authenticated project, including its Vault secret. Write; destructive; idempotent.",
477
+ scope: "mcp:write",
478
+ hints: { readOnly: false, destructive: true, idempotent: true, openWorld: true },
479
+ useCase: "Remove a rotated or compromised provider key from the runtime pool."
480
+ },
465
481
  {
466
482
  name: "list_pending_review_stories",
467
483
  title: "List QA stories pending review",
@@ -635,7 +651,9 @@ var USE_MUSHI_INTENTS = {
635
651
  "activation_status",
636
652
  "get_backend_health",
637
653
  "list_byok_keys",
638
- "add_byok_key"
654
+ "add_byok_key",
655
+ "test_byok_key",
656
+ "remove_byok_key"
639
657
  ],
640
658
  hint: "Call mushi_setup first \u2014 it diagnoses setup gaps and returns the next command to run."
641
659
  },
@@ -665,12 +683,7 @@ var USE_MUSHI_INTENTS = {
665
683
  },
666
684
  audit: {
667
685
  label: "Audit / health check",
668
- tools: [
669
- "run_fullstack_audit",
670
- "get_backend_health",
671
- "get_dashboard",
672
- "get_usage"
673
- ],
686
+ tools: ["run_fullstack_audit", "get_backend_health", "get_dashboard", "get_usage"],
674
687
  hint: "Call run_fullstack_audit for a full-stack health scorecard."
675
688
  }
676
689
  };
@@ -98,8 +98,10 @@ var TOOL_FEATURE_MAP = {
98
98
  start_skill_pipeline: "skills",
99
99
  get_pipeline_run: "skills",
100
100
  checkin_pipeline_step: "skills",
101
- list_byok_keys: "skills",
102
- add_byok_key: "skills",
101
+ list_byok_keys: "setup",
102
+ add_byok_key: "setup",
103
+ test_byok_key: "setup",
104
+ remove_byok_key: "setup",
103
105
  // audit
104
106
  run_fullstack_audit: "audit",
105
107
  get_backend_health: "audit",
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.20.0";
49
+ declare const MCP_PIN_SPEC = "@mushi-mushi/mcp@0.20.1";
50
50
  interface StdioConfig {
51
51
  command: string;
52
52
  args: string[];
package/dist/clients.js CHANGED
@@ -5,10 +5,10 @@ import {
5
5
  DEFAULT_FEATURE_GROUPS,
6
6
  appendFeaturesToUrl,
7
7
  featuresQueryString
8
- } from "./chunk-VBXXUK5G.js";
8
+ } from "./chunk-ZSVRLSW5.js";
9
9
 
10
10
  // src/clients.ts
11
- var MCP_PIN_SPEC = "@mushi-mushi/mcp@0.20.0";
11
+ var MCP_PIN_SPEC = "@mushi-mushi/mcp@0.20.1";
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);
@@ -9,7 +9,7 @@ import {
9
9
  parseFeaturesCsv,
10
10
  parseFeaturesParam,
11
11
  toolMatchesFeatures
12
- } from "./chunk-VBXXUK5G.js";
12
+ } from "./chunk-ZSVRLSW5.js";
13
13
  export {
14
14
  ALL_FEATURE_GROUPS,
15
15
  DEFAULT_FEATURE_GROUPS,