@pairsystems/goodmem-mcp 0.1.14 → 0.1.15

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.
Files changed (3) hide show
  1. package/README.md +4 -3
  2. package/dist/index.js +57 -21
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -208,11 +208,12 @@ Memory spaces are containers that associate a set of memories with an embedder.
208
208
  | Tool | Description |
209
209
  |------|-------------|
210
210
  | `goodmem_admin_background_jobs_purge` | Purge completed background jobs |
211
- | `goodmem_admin_delete` | Delete a RetrieveMemory log policy |
212
211
  | `goodmem_admin_drain` | Request the server to enter drain mode |
213
- | `goodmem_admin_get` | Get a RetrieveMemory log policy |
214
212
  | `goodmem_admin_license_reload` | Reload the active license from disk |
215
- | `goodmem_admin_retrieve_memory_log_policies` | List RetrieveMemory log policies |
213
+ | `goodmem_admin_retrieve_memory_log_policies_create` | Create a RetrieveMemory log policy |
214
+ | `goodmem_admin_retrieve_memory_log_policies_delete` | Delete a RetrieveMemory log policy |
215
+ | `goodmem_admin_retrieve_memory_log_policies_get` | Get a RetrieveMemory log policy |
216
+ | `goodmem_admin_retrieve_memory_log_policies_list` | List RetrieveMemory log policies |
216
217
 
217
218
  ### Ping
218
219
 
package/dist/index.js CHANGED
@@ -21843,7 +21843,7 @@ function autoInferFromRegistry(registryType, args) {
21843
21843
  }
21844
21844
  var server = new McpServer({
21845
21845
  name: "goodmem",
21846
- version: "0.1.14"
21846
+ version: "0.1.15"
21847
21847
  });
21848
21848
  server.tool("goodmem_configure", "Configure GoodMem server connection. Call this before using other GoodMem tools if GOODMEM_BASE_URL and GOODMEM_API_KEY environment variables are not set. Session credentials override environment variables. For bootstrap workflows that need to call /v1/system/info or /v1/system/init before keys exist, api_key may be omitted; most other tools will return AuthenticationException until a real key is provided.", {
21849
21849
  base_url: external_exports.string().describe("GoodMem server URL (e.g., https://your-server.example.com)"),
@@ -21925,7 +21925,7 @@ ${allModels.join("\n")}` }] };
21925
21925
  });
21926
21926
  server.tool("goodmem_client_info", "Return the MCP client package version and the goodmem server commit it was built against. No server connection required.", {}, async () => {
21927
21927
  return { content: [{ type: "text", text: JSON.stringify({
21928
- mcp_version: "0.1.14",
21928
+ mcp_version: "0.1.15",
21929
21929
  based_on_goodmem_commit: BASED_ON_GOODMEM_COMMIT
21930
21930
  }, null, 2) }] };
21931
21931
  });
@@ -21948,19 +21948,6 @@ function registerTools() {
21948
21948
  const result = await callApi("POST", `/v1/admin/background-jobs:purge`, body);
21949
21949
  return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
21950
21950
  });
21951
- server.tool("goodmem_admin_delete", "Delete a RetrieveMemory log policy\n\nIdempotently tombstones an immutable RetrieveMemory log policy.", {
21952
- id: external_exports.string().describe("The UUID of the policy to delete"),
21953
- reason: external_exports.string().describe("Optional tombstone reason.").optional()
21954
- }, async (args) => {
21955
- if (typeof args.id !== "string" || args.id === "") {
21956
- throw new Error("'id' must be a non-empty string");
21957
- }
21958
- const body = {};
21959
- if (args.reason !== void 0)
21960
- body["reason"] = args.reason;
21961
- await callApi("DELETE", `/v1/admin/retrieve-memory-log-policies/${encodeURIComponent(String(args.id))}`, body);
21962
- return { content: [{ type: "text", text: "Deleted successfully." }] };
21963
- });
21964
21951
  server.tool("goodmem_admin_drain", "Request the server to enter drain mode\n\nInitiates drain mode and optionally waits for the server to quiesce.", {
21965
21952
  timeout_sec: external_exports.number().int().describe("Maximum seconds to wait for the server to quiesce before returning.").optional(),
21966
21953
  reason: external_exports.string().describe("Human-readable reason for initiating drain mode.").optional(),
@@ -21976,7 +21963,60 @@ function registerTools() {
21976
21963
  const result = await callApi("POST", `/v1/admin:drain`, body, void 0, ((args.timeout_sec ?? 900) + 30) * 1e3);
21977
21964
  return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
21978
21965
  });
21979
- server.tool("goodmem_admin_get", "Get a RetrieveMemory log policy\n\nRetrieves a live RetrieveMemory log policy by UUID, or a tombstoned policy when include_deleted is true.", {
21966
+ server.tool("goodmem_admin_license_reload", "Reload the active license from disk\n\nTriggers the server to reload its license file from the configured directory and returns metadata about the currently active license.", {}, async (args) => {
21967
+ const result = await callApi("POST", `/v1/admin/license:reload`, void 0);
21968
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
21969
+ });
21970
+ server.tool("goodmem_admin_retrieve_memory_log_policies_create", "Create a RetrieveMemory log policy\n\nCreates an immutable administrative policy that can automatically enable durable RetrieveMemory request logging.", {
21971
+ policy_id: external_exports.string().describe("Optional client-provided policy UUID.").optional(),
21972
+ display_name: external_exports.string().describe("Human-readable policy name."),
21973
+ description: external_exports.string().describe("Optional operator description.").optional(),
21974
+ condition: external_exports.object({
21975
+ matchAll: external_exports.boolean().describe("When true, match every authenticated RetrieveMemory request. Defaults to false when omitted.").optional(),
21976
+ anyOf: external_exports.array(external_exports.object({
21977
+ requestorUserIds: external_exports.array(external_exports.string()).describe("Authenticated requestor user UUID strings.").optional(),
21978
+ apiKeyIds: external_exports.array(external_exports.string()).describe("API key UUID strings used to authenticate RetrieveMemory requests.").optional(),
21979
+ spaceIds: external_exports.array(external_exports.string()).describe("Post-permission accessible space UUID strings.").optional(),
21980
+ apiKeyLabelSelectors: external_exports.record(external_exports.string(), external_exports.string()).describe("Exact API-key label selectors that must all match.").optional(),
21981
+ spaceLabelSelectors: external_exports.record(external_exports.string(), external_exports.string()).describe("Exact space label selectors that must match at least one accessible space.").optional()
21982
+ }).passthrough()).describe("OR clauses used for scoped matching. Required when matchAll is false or omitted, and must contain at least one non-empty clause.").optional()
21983
+ }).passthrough().describe("Policy match condition."),
21984
+ active_from: external_exports.number().int().describe("Inclusive activation time in milliseconds since epoch.").optional(),
21985
+ active_until: external_exports.number().int().describe("Exclusive deactivation time in milliseconds since epoch.").optional(),
21986
+ labels: external_exports.record(external_exports.string(), external_exports.string()).describe("Operator labels for listing and administration.").optional()
21987
+ }, async (args) => {
21988
+ const body = {};
21989
+ if (args.policy_id !== void 0)
21990
+ body["policyId"] = args.policy_id;
21991
+ if (args.display_name !== void 0)
21992
+ body["displayName"] = args.display_name;
21993
+ if (args.description !== void 0)
21994
+ body["description"] = args.description;
21995
+ if (args.condition !== void 0)
21996
+ body["condition"] = args.condition;
21997
+ if (args.active_from !== void 0)
21998
+ body["activeFrom"] = args.active_from;
21999
+ if (args.active_until !== void 0)
22000
+ body["activeUntil"] = args.active_until;
22001
+ if (args.labels !== void 0)
22002
+ body["labels"] = args.labels;
22003
+ const result = await callApi("POST", `/v1/admin/retrieve-memory-log-policies`, body);
22004
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
22005
+ });
22006
+ server.tool("goodmem_admin_retrieve_memory_log_policies_delete", "Delete a RetrieveMemory log policy\n\nIdempotently tombstones an immutable RetrieveMemory log policy.", {
22007
+ id: external_exports.string().describe("The UUID of the policy to delete"),
22008
+ reason: external_exports.string().describe("Optional tombstone reason.").optional()
22009
+ }, async (args) => {
22010
+ if (typeof args.id !== "string" || args.id === "") {
22011
+ throw new Error("'id' must be a non-empty string");
22012
+ }
22013
+ const body = {};
22014
+ if (args.reason !== void 0)
22015
+ body["reason"] = args.reason;
22016
+ await callApi("DELETE", `/v1/admin/retrieve-memory-log-policies/${encodeURIComponent(String(args.id))}`, body);
22017
+ return { content: [{ type: "text", text: "Deleted successfully." }] };
22018
+ });
22019
+ server.tool("goodmem_admin_retrieve_memory_log_policies_get", "Get a RetrieveMemory log policy\n\nRetrieves a live RetrieveMemory log policy by UUID, or a tombstoned policy when include_deleted is true.", {
21980
22020
  id: external_exports.string().describe("The UUID of the policy to retrieve"),
21981
22021
  include_deleted: external_exports.boolean().describe("Whether to include tombstoned policies. Also accepts include_deleted.").optional()
21982
22022
  }, async (args) => {
@@ -21989,11 +22029,7 @@ function registerTools() {
21989
22029
  const result = await callApi("GET", `/v1/admin/retrieve-memory-log-policies/${encodeURIComponent(String(args.id))}`, void 0, query);
21990
22030
  return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
21991
22031
  });
21992
- server.tool("goodmem_admin_license_reload", "Reload the active license from disk\n\nTriggers the server to reload its license file from the configured directory and returns metadata about the currently active license.", {}, async (args) => {
21993
- const result = await callApi("POST", `/v1/admin/license:reload`, void 0);
21994
- return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
21995
- });
21996
- server.tool("goodmem_admin_retrieve_memory_log_policies", "List RetrieveMemory log policies\n\nLists RetrieveMemory log policies with optional tombstone, active-time, name, label, sort, and pagination filters. LABEL FILTERS: Label filters accept either label.<key>=<value> or label[key]=value (for example, label.environment=production or label[environment]=production).", {
22032
+ server.tool("goodmem_admin_retrieve_memory_log_policies_list", "List RetrieveMemory log policies\n\nLists RetrieveMemory log policies with optional tombstone, active-time, name, label, sort, and pagination filters. LABEL FILTERS: Label filters accept either label.<key>=<value> or label[key]=value (for example, label.environment=production or label[environment]=production).", {
21997
22033
  include_deleted: external_exports.boolean().describe("Whether to include tombstoned policies. Also accepts include_deleted.").optional(),
21998
22034
  name_filter: external_exports.string().describe("Case-insensitive substring filter on policy display names. Also accepts name_filter.").optional(),
21999
22035
  active_at: external_exports.number().int().describe("Only return policies active at this millisecond epoch timestamp. Also accepts active_at.").optional(),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pairsystems/goodmem-mcp",
3
- "version": "0.1.14",
3
+ "version": "0.1.15",
4
4
  "description": "GoodMem MCP server \u2014 exposes GoodMem API as MCP tools",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",