@ductape/mcp 0.2.12 → 0.2.13

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
@@ -6,6 +6,7 @@
6
6
 
7
7
  ## Unreleased
8
8
 
9
+ - Mark `ductape_function_setup` as read-only, non-destructive, idempotent, and closed-world in both MCP registration APIs so hosts do not incorrectly require mutation approval for its pure setup-plan generation.
9
10
  - Broadened Feature guidance from durable/event-driven workflows to synchronous or asynchronous named product capabilities.
10
11
  - Added evidence-backed `FEATURE`, `FEATURE_STEP`, `DOMAIN_SERVICE`, `UTILITY`, and `INFRASTRUCTURE_ADAPTER` classification guidance.
11
12
  - Added synchronous multi-step examples and repository discovery/grouping rules.
package/dist/index.js CHANGED
@@ -1468,6 +1468,15 @@ const portableFunctionSetupInputSchema = z.object({
1468
1468
  version: z.string().min(1).describe('Contract version.'),
1469
1469
  operations: z.array(z.string().min(1)).min(1).describe('Operation names that must be registered and exposed.'),
1470
1470
  });
1471
+ // This tool only derives setup instructions from its arguments. It performs no network request,
1472
+ // filesystem write, process launch, registration, deployment, or infrastructure provisioning.
1473
+ // Declare that explicitly so MCP hosts do not send it through mutation approval workflows.
1474
+ const portableFunctionSetupAnnotations = {
1475
+ readOnlyHint: true,
1476
+ destructiveHint: false,
1477
+ idempotentHint: true,
1478
+ openWorldHint: false,
1479
+ };
1471
1480
  const migrationInputSchema = z.object({
1472
1481
  source: z.string().describe('Absolute path to the existing codebase.'),
1473
1482
  e2e_baseline: z.string().describe('Absolute path to a passing migration-e2e baseline manifest created before migration inspection.'),
@@ -5223,10 +5232,12 @@ async function main() {
5223
5232
  }, eventsDiscoveryHandler);
5224
5233
  server.registerTool('ductape_function_setup', {
5225
5234
  title: 'Ductape Portable Function Setup',
5226
- description: 'Generate the mandatory secure local + remote runtime setup for application functions used by Features. ' +
5235
+ description: 'Read-only: generate (without applying) the mandatory secure local + remote runtime setup for application functions used by Features. ' +
5236
+ 'This tool performs no network requests, writes, registrations, deployments, or infrastructure provisioning. ' +
5227
5237
  'Use this only after a primitives-first decomposition proves residual application-owned logic remains. The result requires a registered local handler, ' +
5228
5238
  'a deterministic HTTPS endpoint, raw-body HMAC verification, runtime checks, and fail-closed behavior.',
5229
5239
  inputSchema: portableFunctionSetupInputSchema,
5240
+ annotations: portableFunctionSetupAnnotations,
5230
5241
  }, portableFunctionSetupHandler);
5231
5242
  server.registerTool('ductape_redis_setup', {
5232
5243
  title: 'Ductape Local Redis Setup',
@@ -5361,7 +5372,7 @@ async function main() {
5361
5372
  server.tool('ductape_schema', schemaInputSchema.shape, schemaHandler);
5362
5373
  server.tool('ductape_docs', docsInputSchema.shape, docsHandler);
5363
5374
  server.tool('ductape_events_discover', eventsDiscoveryInputSchema.shape, eventsDiscoveryHandler);
5364
- server.tool('ductape_function_setup', portableFunctionSetupInputSchema.shape, portableFunctionSetupHandler);
5375
+ server.tool('ductape_function_setup', portableFunctionSetupInputSchema.shape, portableFunctionSetupAnnotations, portableFunctionSetupHandler);
5365
5376
  server.tool('ductape_redis_setup', redisSetupInputSchema.shape, redisSetupHandler);
5366
5377
  server.tool('ductape_migration_plan', migrationInputSchema.shape, migrationHandler);
5367
5378
  server.tool('ductape_cli', cliInputSchema.shape, cliHandler);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ductape/mcp",
3
- "version": "0.2.12",
3
+ "version": "0.2.13",
4
4
  "description": "MCP server that exposes Ductape SDK operations via the backend proxy",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",