@ultimat3/mcp 27.12.0 → 27.13.0

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
@@ -297,7 +297,8 @@ defineAppMcp({
297
297
  `confirmed_by_user: true` (the user approved the change, directly or by authorizing the task);
298
298
  anything else is `X_MCP_USER_CONFIRMATION_REQUIRED`, audited `unconfirmed`. Both flags are read
299
299
  top-level or from `params` (nested wins) and never handed to an action that does not declare them.
300
- `confirmed_by_user` is required by the schema, so a client sees it at connect time.
300
+ Neither is `required` by the schema — the dispatcher is the one gate, so a call carrying both only
301
+ inside `params` is read, not refused as `X_INPUT_INVALID` (#798).
301
302
  - Order: visibility (absent answer) → effect (`X_MCP_WRONG_TOOL`) → scope → arguments → the policy's
302
303
  actor half → preview / confirmation → `dispatch`, the flat path — same audit line, same bucket.
303
304
  - Ungrouped tools (`docs`, `whoami`) stay flat beside the five, exactly as on `'meta'`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ultimat3/mcp",
3
- "version": "27.12.0",
3
+ "version": "27.13.0",
4
4
  "description": "MCP server, dev tools, and the action-to-tool projection \u2014 one authz system, two surfaces",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -33,14 +33,14 @@
33
33
  "test": "bun test"
34
34
  },
35
35
  "dependencies": {
36
- "@ultimat3/action": "27.12.0",
37
- "@ultimat3/core": "27.12.0",
38
- "@ultimat3/db": "27.12.0",
39
- "@ultimat3/entity": "27.12.0",
40
- "@ultimat3/http": "27.12.0",
41
- "@ultimat3/jobs": "27.12.0",
42
- "@ultimat3/policy": "27.12.0",
43
- "@ultimat3/query": "27.12.0",
44
- "@ultimat3/schema": "27.12.0"
36
+ "@ultimat3/action": "27.13.0",
37
+ "@ultimat3/core": "27.13.0",
38
+ "@ultimat3/db": "27.13.0",
39
+ "@ultimat3/entity": "27.13.0",
40
+ "@ultimat3/http": "27.13.0",
41
+ "@ultimat3/jobs": "27.13.0",
42
+ "@ultimat3/policy": "27.13.0",
43
+ "@ultimat3/query": "27.13.0",
44
+ "@ultimat3/schema": "27.13.0"
45
45
  }
46
46
  }
package/src/meta-split.ts CHANGED
@@ -109,7 +109,9 @@ export const SPLIT_TOOL_ENTRIES: readonly ToolListEntry[] = [
109
109
  'true when the user approved this change, directly or by authorizing the task that includes it. A live call without true runs nothing and answers X_MCP_USER_CONFIRMATION_REQUIRED.',
110
110
  },
111
111
  },
112
- ['confirmed_by_user'],
112
+ // Not `required`: both flags may ride inside `params` (nested wins), and a schema requiring
113
+ // the top-level one refused that call as X_INPUT_INVALID before the dispatcher read it
114
+ // (#798). The dispatcher is the one gate: a live call without `true` runs nothing.
113
115
  ),
114
116
  annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: false },
115
117
  },