@engramx/owner-mcp 0.1.0 → 0.2.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/LICENSE CHANGED
@@ -175,7 +175,7 @@
175
175
 
176
176
  END OF TERMS AND CONDITIONS
177
177
 
178
- Copyright 2025 EngramX contributors
178
+ Copyright 2025-2026 Vaughn Hew
179
179
 
180
180
  Licensed under the Apache License, Version 2.0 (the "License");
181
181
  you may not use this file except in compliance with the License.
package/dist/server.js CHANGED
@@ -24,7 +24,7 @@ catch (e) {
24
24
  process.exit(1);
25
25
  }
26
26
  const server = new McpServer({ name: 'engramx-owner', version: '0.1.0' }, {
27
- instructions: 'engramx-owner lets the user create and own an engram — a personal canister on the Internet Computer holding an agent\'s memory plus a tamper-evident action record. This server is OWNER-side ONLY: it reserves, activates, and connects agents to engrams the user owns; it does NOT read or append memory (that is the separate append-only OPERATOR surface, @engramx/mcp / @engramx/client). Spawn-only-on-real-use: engram_status (see what exists) -> engram_reserve (a FREE registry record — no canister, no spend) -> then the canister spawns only when the user actually uses it: engram_connect_agent (the usual path — provisions AND mints an append-only operator invite in one step, so it spawns exactly when you wire an agent) or engram_activate (spawn without an agent, only if the user will add memory via the web app / SDK). The signing key is the USER\'S OWN (a local key or their icp-cli identity) — EngramX never holds it; a single local key is a total-loss risk if lost. The record is tamper-EVIDENT, not immutable: the owner can overwrite their own memory, but every change is a signed entry anyone can verify. An operator invite grants append-only access (read + add), never owner powers.',
27
+ instructions: "engramx-owner lets the user create and own an engram — a personal canister on the Internet Computer holding an agent's memory plus a tamper-evident action record. This server is OWNER-side ONLY: it reserves, activates, and connects agents to engrams the user owns; it does NOT read or append memory (that is the separate append-only OPERATOR surface, @engramx/mcp / @engramx/client). Spawn-only-on-real-use: engram_status (see what exists) -> engram_reserve (a FREE registry record — no canister, no spend) -> then the canister spawns only when the user actually uses it: engram_connect_agent (the usual path — provisions AND mints an append-only operator invite in one step, so it spawns exactly when you wire an agent) or engram_activate (spawn without an agent, only if the user will add memory via the web app / SDK). The signing key is the USER'S OWN (a local key or their icp-cli identity) — EngramX never holds it; a single local key is a total-loss risk if lost. The record is tamper-EVIDENT, not immutable: the owner can overwrite their own memory, but every change is a signed entry anyone can verify. An operator invite grants append-only access (read + add), never owner powers.",
28
28
  });
29
29
  registerOwnerTools(server, api);
30
30
  const transport = new StdioServerTransport();
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,kGAAkG;AAClG,kCAAkC;AAElC,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,SAAS,WAAW,CAAC,CAAU;IAC7B,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACvD,OAAO,CACL,UAAU,GAAG,MAAM;QACnB,4BAA4B;QAC5B,0EAA0E;QAC1E,yFAAyF;QACzF,mFAAmF;QACnF,4EAA4E;QAC5E,+EAA+E,CAChF,CAAC;AACJ,CAAC;AAED,IAAI,GAAa,CAAC;AAClB,IAAI,CAAC;IACH,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC;AAAC,OAAO,CAAC,EAAE,CAAC;IACX,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,EAC3C;IACE,YAAY,EACV,0qCAA0qC;CAC7qC,CACF,CAAC;AAEF,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEhC,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAEhC,sDAAsD;AACtD,OAAO,CAAC,KAAK,CAAC,qCAAqC,GAAG,CAAC,cAAc,cAAc,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,kGAAkG;AAClG,kCAAkC;AAElC,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,SAAS,WAAW,CAAC,CAAU;IAC7B,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACvD,OAAO,CACL,UAAU,GAAG,MAAM;QACnB,4BAA4B;QAC5B,0EAA0E;QAC1E,yFAAyF;QACzF,mFAAmF;QACnF,4EAA4E;QAC5E,+EAA+E,CAChF,CAAC;AACJ,CAAC;AAED,IAAI,GAAa,CAAC;AAClB,IAAI,CAAC;IACH,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC;AAAC,OAAO,CAAC,EAAE,CAAC;IACX,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE,EAC3C;IACE,YAAY,EACV,wqCAAwqC;CAC3qC,CACF,CAAC;AAEF,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEhC,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAEhC,sDAAsD;AACtD,OAAO,CAAC,KAAK,CAAC,qCAAqC,GAAG,CAAC,cAAc,cAAc,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC"}
package/dist/tools.js CHANGED
@@ -21,13 +21,22 @@ const errText = (e) => `Error: ${e instanceof Error ? e.message : String(e)}`;
21
21
  export function registerOwnerTools(server, api) {
22
22
  server.tool('engram_status', 'Read-only. Report whether YOU (this owner key) have nothing yet, a free reservation, or a live engram — with its canister id if provisioned. No spend, no writes. Call before reserving/activating to avoid duplicates (one engram per principal).', {}, async () => {
23
23
  try {
24
- return ok({ ...view(await api.status()), ownerPrincipal: api.ownerPrincipal, custody: api.custody });
24
+ return ok({
25
+ ...view(await api.status()),
26
+ ownerPrincipal: api.ownerPrincipal,
27
+ custody: api.custody,
28
+ });
25
29
  }
26
30
  catch (e) {
27
31
  return fail(errText(e));
28
32
  }
29
33
  });
30
- server.tool('engram_reserve', 'Reserve an engram that YOU will own — a FREE registry record (~$0). Nothing runs yet and no cycles are spent; it does NOT spawn a canister. Idempotent (one per principal), so it is safe to call speculatively. To actually run the engram, call engram_activate afterward. If the registry rejects with an invite-required error (gate-armed deployment), ask the user for their invite code and pass it as `invite`.', { invite: z.string().optional().describe('Invite code for gate-armed deployments (only needed if a plain call was rejected asking for one).') }, async ({ invite }) => {
34
+ server.tool('engram_reserve', 'Reserve an engram that YOU will own — a FREE registry record (~$0). Nothing runs yet and no cycles are spent; it does NOT spawn a canister. Idempotent (one per principal), so it is safe to call speculatively. To actually run the engram, call engram_activate afterward. If the registry rejects with an invite-required error (gate-armed deployment), ask the user for their invite code and pass it as `invite`.', {
35
+ invite: z
36
+ .string()
37
+ .optional()
38
+ .describe('Invite code for gate-armed deployments (only needed if a plain call was rejected asking for one).'),
39
+ }, async ({ invite }) => {
31
40
  try {
32
41
  return ok(view(await api.reserve(invite)));
33
42
  }
@@ -36,8 +45,14 @@ export function registerOwnerTools(server, api) {
36
45
  }
37
46
  });
38
47
  server.tool('engram_connect_agent', 'The usual way to spin up an engram: provision it (if not already live) AND mint an append-only OPERATOR invite in one step — so the canister spawns exactly when you are wiring an agent to it. The platform funds the (~1.15T-cycle) spawn. Returns {canisterId, inviteCode}; the agent redeems the code with `npx @engramx/client pair <inviteCode> --engram <canisterId>`. The grant is append-only (read + append), never owner powers. Prefer this over engram_activate unless you specifically want an empty engram.', {
39
- name: z.string().optional().describe('A label for this operator/agent (e.g. "openclaw", "claude-desktop"). Defaults to "agent".'),
40
- invite: z.string().optional().describe('Invite code for gate-armed deployments (only needed if a plain call was rejected asking for one).'),
48
+ name: z
49
+ .string()
50
+ .optional()
51
+ .describe('A label for this operator/agent (e.g. "openclaw", "claude-desktop"). Defaults to "agent".'),
52
+ invite: z
53
+ .string()
54
+ .optional()
55
+ .describe('Invite code for gate-armed deployments (only needed if a plain call was rejected asking for one).'),
41
56
  }, async ({ name, invite }) => {
42
57
  try {
43
58
  const r = await api.connectAgent(name, invite);
@@ -53,7 +68,12 @@ export function registerOwnerTools(server, api) {
53
68
  return fail(errText(e));
54
69
  }
55
70
  });
56
- server.tool('engram_activate', 'Spawn the live engram canister WITHOUT connecting an agent — only when the user will add memory through another surface (the web app / SDK). The platform funds the (~1.15T-cycle) spawn. Most of the time you want engram_connect_agent instead (spawn + get an invite in one step). Idempotent: if one is already live, returns its canister id.', { invite: z.string().optional().describe('Invite code for gate-armed deployments (only needed if a plain call was rejected asking for one).') }, async ({ invite }) => {
71
+ server.tool('engram_activate', 'Spawn the live engram canister WITHOUT connecting an agent — only when the user will add memory through another surface (the web app / SDK). The platform funds the (~1.15T-cycle) spawn. Most of the time you want engram_connect_agent instead (spawn + get an invite in one step). Idempotent: if one is already live, returns its canister id.', {
72
+ invite: z
73
+ .string()
74
+ .optional()
75
+ .describe('Invite code for gate-armed deployments (only needed if a plain call was rejected asking for one).'),
76
+ }, async ({ invite }) => {
57
77
  try {
58
78
  const r = await api.activate(invite);
59
79
  return ok({
package/dist/tools.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAUxB,MAAM,EAAE,GAAG,CAAC,GAAY,EAAc,EAAE,CAAC,CAAC;IACxC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;CAChE,CAAC,CAAC;AACH,MAAM,IAAI,GAAG,CAAC,OAAe,EAAc,EAAE,CAAC,CAAC;IAC7C,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC1C,OAAO,EAAE,IAAI;CACd,CAAC,CAAC;AAEH,MAAM,IAAI,GAAG,CAAC,CAAe,EAAE,EAAE,CAAC,CAAC;IACjC,KAAK,EAAE,CAAC,CAAC,KAAK;IACd,UAAU,EAAE,CAAC,CAAC,UAAU;IACxB,KAAK,EAAE,CAAC,CAAC,KAAK;IACd,cAAc,EAAE,CAAC,CAAC,cAAc;CACjC,CAAC,CAAC;AAEH,MAAM,OAAO,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,UAAU,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AAEvF;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,GAAa;IACjE,MAAM,CAAC,IAAI,CACT,eAAe,EACf,oPAAoP,EACpP,EAAE,EACF,KAAK,IAAyB,EAAE;QAC9B,IAAI,CAAC;YACH,OAAO,EAAE,CAAC;gBACR,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;gBAC3B,cAAc,EAAE,GAAG,CAAC,cAAc;gBAClC,OAAO,EAAE,GAAG,CAAC,OAAO;aACrB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,yZAAyZ,EACzZ;QACE,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,mGAAmG,CACpG;KACJ,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAuB,EAAE;QACxC,IAAI,CAAC;YACH,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,4fAA4f,EAC5f;QACE,IAAI,EAAE,CAAC;aACJ,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,2FAA2F,CAC5F;QACH,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,mGAAmG,CACpG;KACJ,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAuB,EAAE;QAC9C,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC/C,OAAO,EAAE,CAAC;gBACR,GAAG,IAAI,CAAC,CAAC,CAAC;gBACV,YAAY,EAAE,CAAC,CAAC,YAAY;gBAC5B,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,WAAW,EAAE,4BAA4B,CAAC,CAAC,UAAU,aAAa,CAAC,CAAC,UAAU,EAAE;gBAChF,IAAI,EAAE,wJAAwJ;aAC/J,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,oVAAoV,EACpV;QACE,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,mGAAmG,CACpG;KACJ,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAuB,EAAE;QACxC,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACrC,OAAO,EAAE,CAAC;gBACR,GAAG,IAAI,CAAC,CAAC,CAAC;gBACV,IAAI,EAAE,6JAA6J,CAAC,CAAC,UAAU,EAAE;aAClL,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@engramx/owner-mcp",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Owner-side MCP server for EngramX — reserve, activate, and check an engram YOU own, from any MCP host. The owner counterpart to @engramx/mcp (the operator server); it never operates memory.",
5
- "license": "MIT",
5
+ "license": "Apache-2.0",
6
6
  "author": "EngramX <developer@engramx.ai>",
7
7
  "repository": {
8
8
  "type": "git",
@@ -17,7 +17,8 @@
17
17
  },
18
18
  "files": [
19
19
  "dist/",
20
- "README.md"
20
+ "README.md",
21
+ "LICENSE"
21
22
  ],
22
23
  "publishConfig": {
23
24
  "access": "public"
@@ -26,7 +27,7 @@
26
27
  "@icp-sdk/core": "^5.4.0",
27
28
  "@modelcontextprotocol/sdk": "^1.29.0",
28
29
  "zod": "^4.4.3",
29
- "@engramx/owner": "^0.1.0"
30
+ "@engramx/owner": "^0.2.0"
30
31
  },
31
32
  "devDependencies": {
32
33
  "@types/node": "^25.9.2",