meguro-mcp 0.2.6 → 0.2.7

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/CHANGELOG.md CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
  All notable changes to `meguro-mcp` are recorded here. Versions follow Semantic Versioning.
4
4
 
5
+ ## 0.2.7 — 2026-08-08
6
+
7
+ - Adds the optional `storeId` selector to `gate_evaluate` and `gate_verdict`, preserving every
8
+ existing call shape while making the per-store Gate resolution ladder explicit.
9
+ - Advances the local STDIO and hosted server identities together so the served registry contract
10
+ matches the immutable public package version.
11
+ - Changes no other tool definition, documentation resource, or protocol behavior from 0.2.6.
12
+
5
13
  ## 0.2.6 — 2026-08-08
6
14
 
7
15
  - Adds immutable `meguro://docs/getting-started/v6` and `meguro://docs/product-guide/v3` resources
package/README.md CHANGED
@@ -185,7 +185,7 @@ OAuth support. It requires a workspace-bound `meg_sk_…` API key and exposes th
185
185
  surface. Pin the exact public version in client configuration so a quickstart stays reproducible:
186
186
 
187
187
  ```bash
188
- npx -y meguro-mcp@0.2.6
188
+ npx -y meguro-mcp@0.2.7
189
189
  ```
190
190
 
191
191
  ### Environment
@@ -203,7 +203,7 @@ claude mcp add meguro \
203
203
  -e MEGURO_API_BASE_URL=https://api-dev.meguro.io \
204
204
  -e MEGURO_API_TOKEN=meg_sk_... \
205
205
  -e MEGURO_DASHBOARD_URL=https://... \
206
- -- npx -y meguro-mcp@0.2.6
206
+ -- npx -y meguro-mcp@0.2.7
207
207
  ```
208
208
 
209
209
  ### Register — Cursor (`.cursor/mcp.json`)
@@ -213,7 +213,7 @@ claude mcp add meguro \
213
213
  "mcpServers": {
214
214
  "meguro": {
215
215
  "command": "npx",
216
- "args": ["-y", "meguro-mcp@0.2.6"],
216
+ "args": ["-y", "meguro-mcp@0.2.7"],
217
217
  "env": {
218
218
  "MEGURO_API_BASE_URL": "https://api-dev.meguro.io",
219
219
  "MEGURO_API_TOKEN": "meg_sk_...",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "meguro-mcp",
3
- "version": "0.2.6",
3
+ "version": "0.2.7",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Meguro control-plane MCP server: drive worlds, runs, and verdicts from your own AI tools.",
package/src/server.mjs CHANGED
@@ -14,7 +14,7 @@ import {
14
14
  } from './protocol.mjs';
15
15
  import { createTools, redactSecrets } from './tools.mjs';
16
16
 
17
- const SERVER_INFO = { name: 'meguro', version: '0.2.6' };
17
+ const SERVER_INFO = { name: 'meguro', version: '0.2.7' };
18
18
  const PROTOCOL_VERSION = '2025-03-26';
19
19
 
20
20
  const tools = createTools({
package/src/tools.mjs CHANGED
@@ -1861,6 +1861,7 @@ export function createTools(config) {
1861
1861
  additionalProperties: false,
1862
1862
  properties: {
1863
1863
  receiptId: { type: 'string', minLength: 1, description: 'Optional finished pa-* practice simulation receipt. Omit it to evaluate the configured Gate receipt.' },
1864
+ storeId: { type: 'string', minLength: 1, description: 'Optional exact practice-store identity. Omit when receiptId identifies the owner or the workspace has exactly one store.' },
1864
1865
  },
1865
1866
  required: [],
1866
1867
  },
@@ -1873,6 +1874,7 @@ export function createTools(config) {
1873
1874
  additionalProperties: false,
1874
1875
  properties: {
1875
1876
  runId: { type: 'string', minLength: 1, description: 'Exact id of a previously issued legacy Gate artifact. Omit to read the latest Receipt Gate verdict.' },
1877
+ storeId: { type: 'string', minLength: 1, description: 'Optional exact practice-store identity for the current per-store Gate lane.' },
1876
1878
  },
1877
1879
  required: [],
1878
1880
  },
@@ -2439,7 +2441,13 @@ export function createTools(config) {
2439
2441
  const receiptId = args.receiptId === undefined
2440
2442
  ? undefined
2441
2443
  : requiredPracticeAttemptId(args, 'receiptId');
2442
- const response = await practiceApi('POST', '/practice/gate/evaluate', receiptId ? { receiptId } : {});
2444
+ const storeId = args.storeId === undefined
2445
+ ? undefined
2446
+ : validatedStoreId(requiredString(args, 'storeId'), 'storeId');
2447
+ const response = await practiceApi('POST', '/practice/gate/evaluate', {
2448
+ ...(receiptId ? { receiptId } : {}),
2449
+ ...(storeId ? { storeId } : {}),
2450
+ });
2443
2451
  if (!response.ok) {
2444
2452
  const teaching = receiptId && isGateReceiptUnavailable(response.status, response.json)
2445
2453
  ? gateReceiptUnavailableTeaching(name, receiptId)
@@ -2450,8 +2458,11 @@ export function createTools(config) {
2450
2458
  }
2451
2459
  case 'gate_verdict': {
2452
2460
  const runId = args.runId === undefined ? '' : requiredString(args, 'runId');
2461
+ const storeId = args.storeId === undefined
2462
+ ? undefined
2463
+ : validatedStoreId(requiredString(args, 'storeId'), 'storeId');
2453
2464
  if (!runId) {
2454
- const latest = await practiceApi('GET', '/practice/gate?limit=1');
2465
+ const latest = await practiceApi('GET', `/practice/gate?limit=1${storeId ? `&storeId=${encodeURIComponent(storeId)}` : ''}`);
2455
2466
  if (!latest.ok) return practiceErrorResult(latest.status, latest.json, latest.retryAfterSeconds);
2456
2467
  const evaluation = latest.json?.evaluations?.[0];
2457
2468
  if (!evaluation) {