@pairsystems/goodmem-mcp 0.1.19 → 0.1.21
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/dist/index.js +8 -8
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -21115,7 +21115,7 @@ function _concatBytes(a, b) {
|
|
|
21115
21115
|
out.set(b, a.length);
|
|
21116
21116
|
return out;
|
|
21117
21117
|
}
|
|
21118
|
-
var BASED_ON_GOODMEM_COMMIT = "
|
|
21118
|
+
var BASED_ON_GOODMEM_COMMIT = "7454cd497b08cb562aa05c31d031f7d9331d4d64";
|
|
21119
21119
|
function isConfigured() {
|
|
21120
21120
|
return goodmemBaseUrl !== "";
|
|
21121
21121
|
}
|
|
@@ -22358,7 +22358,7 @@ function autoInferFromRegistry(registryType, args) {
|
|
|
22358
22358
|
}
|
|
22359
22359
|
var server = new McpServer({
|
|
22360
22360
|
name: "goodmem",
|
|
22361
|
-
version: "0.1.
|
|
22361
|
+
version: "0.1.21"
|
|
22362
22362
|
});
|
|
22363
22363
|
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.", {
|
|
22364
22364
|
base_url: external_exports.string().describe("GoodMem server URL (e.g., https://your-server.example.com)"),
|
|
@@ -22444,18 +22444,18 @@ ${allModels.join("\n")}` }] };
|
|
|
22444
22444
|
});
|
|
22445
22445
|
server.tool("goodmem_client_info", "Return the MCP client package version and the goodmem server commit it was built against. No server connection required.", {}, { readOnlyHint: true, destructiveHint: false, openWorldHint: false }, async () => {
|
|
22446
22446
|
return { content: [{ type: "text", text: JSON.stringify({
|
|
22447
|
-
mcp_version: "0.1.
|
|
22447
|
+
mcp_version: "0.1.21",
|
|
22448
22448
|
based_on_goodmem_commit: BASED_ON_GOODMEM_COMMIT
|
|
22449
22449
|
}, null, 2) }] };
|
|
22450
22450
|
});
|
|
22451
22451
|
function registerTools() {
|
|
22452
|
-
server.tool("goodmem_access_policy_check", "Check effective authorization\n\nEvaluates 1 to 50 concrete operation-and-target checks under the authenticated caller's live authority and any API-key ceiling. Results are positional and advisory: missing targets and denied operations both return allowed=false, and every later resource request performs fresh authorization. Top-level creates target INSTANCE; CREATE_MEMORY and LIST_MEMORY target their parent SPACE; reads, mutations, proxy operations, and access-policy administration target concrete resources.
|
|
22452
|
+
server.tool("goodmem_access_policy_check", "Check effective authorization\n\nEvaluates 1 to 50 concrete operation-and-target checks under the authenticated caller's live authority and any API-key ceiling. Results are positional and advisory: missing targets and denied operations both return allowed=false, and every later resource request performs fresh authorization. Top-level creates and LIST_API_KEY target INSTANCE; CREATE_MEMORY and LIST_MEMORY target their parent SPACE; reads, mutations, proxy operations, and access-policy administration target concrete resources. LIST_RETRIEVE_MEMORY_LOG_POLICY is rejected because its current candidate-based list rule has no instance-wide preflight.", {
|
|
22453
22453
|
checks: external_exports.array(external_exports.object({
|
|
22454
22454
|
operation: external_exports.enum(["CREATE_USER", "READ_USER", "UPDATE_USER", "DELETE_USER", "LIST_USER", "MANAGE_USER_ENROLLMENT", "CREATE_SERVICE_IDENTITY", "READ_SERVICE_IDENTITY", "UPDATE_SERVICE_IDENTITY", "DELETE_SERVICE_IDENTITY", "LIST_SERVICE_IDENTITY", "CREATE_SPACE", "READ_SPACE", "UPDATE_SPACE", "DELETE_SPACE", "LIST_SPACE", "CREATE_API_KEY", "READ_API_KEY", "UPDATE_API_KEY", "DELETE_API_KEY", "LIST_API_KEY", "CREATE_EMBEDDER", "READ_EMBEDDER", "UPDATE_EMBEDDER", "DELETE_EMBEDDER", "LIST_EMBEDDER", "PING_EMBEDDER", "EXECUTE_EMBEDDER", "READ_EMBEDDER_CREDENTIALS", "CREATE_RERANKER", "READ_RERANKER", "UPDATE_RERANKER", "DELETE_RERANKER", "LIST_RERANKER", "PING_RERANKER", "EXECUTE_RERANKER", "READ_RERANKER_CREDENTIALS", "CREATE_LLM", "READ_LLM", "UPDATE_LLM", "DELETE_LLM", "LIST_LLM", "PING_LLM", "EXECUTE_LLM", "READ_LLM_CREDENTIALS", "PROXY_INFERENCE_TARGET", "OCR_DOCUMENT", "CREATE_MEMORY", "READ_MEMORY", "DELETE_MEMORY", "LIST_MEMORY", "CREATE_EXTENSION", "READ_EXTENSION", "UPDATE_EXTENSION", "DELETE_EXTENSION", "LIST_EXTENSION", "DOWNLOAD_EXTENSION", "READ_INSTANCE", "TRANSFER_INSTANCE_OWNERSHIP", "TRANSFER_RESOURCE_OWNERSHIP", "RELOAD_LICENSE", "DRAIN_SERVER", "PURGE_BACKGROUND_JOBS", "CREATE_RETRIEVE_MEMORY_LOG_POLICY", "READ_RETRIEVE_MEMORY_LOG_POLICY", "LIST_RETRIEVE_MEMORY_LOG_POLICY", "DELETE_RETRIEVE_MEMORY_LOG_POLICY", "MANAGE_ACCESS"]).describe("Operation the caller proposes to perform."),
|
|
22455
22455
|
target: external_exports.object({
|
|
22456
22456
|
kind: external_exports.enum(["INSTANCE", "USER", "SERVICE_IDENTITY", "SPACE", "API_KEY", "EMBEDDER", "RERANKER", "LLM", "MEMORY", "EXTENSION", "RETRIEVE_MEMORY_LOG_POLICY"]).describe("Concrete target kind."),
|
|
22457
22457
|
resourceId: external_exports.string().describe("Concrete resource UUID; omitted for the singleton INSTANCE target.").optional()
|
|
22458
|
-
}).passthrough().describe("Target required by the operation: INSTANCE for top-level creates
|
|
22458
|
+
}).passthrough().describe("Target required by the operation: INSTANCE for top-level creates and LIST_API_KEY; parent SPACE for CREATE_MEMORY or LIST_MEMORY; otherwise the concrete resource.")
|
|
22459
22459
|
}).passthrough()).describe("Concrete checks evaluated in request order.")
|
|
22460
22460
|
}, { readOnlyHint: true, destructiveHint: false, openWorldHint: false }, async (args) => {
|
|
22461
22461
|
const body = {};
|
|
@@ -22788,7 +22788,7 @@ function registerTools() {
|
|
|
22788
22788
|
const result = await callApi("GET", `/v1/apikeys/${encodeURIComponent(String(args.id))}`, void 0);
|
|
22789
22789
|
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
22790
22790
|
});
|
|
22791
|
-
server.tool("goodmem_apikeys_list", "List API keys\n\
|
|
22791
|
+
server.tool("goodmem_apikeys_list", "List API keys\n\nRequires LIST_API_KEY on the singleton instance, then retrieves one UUID-ordered page containing only credentials that independently pass READ_API_KEY. Both gates use the authenticated principal's live authority and any scoped-key ceiling. Subject, owner, and lifecycle filters are applied after authorization. FULL includes complete immutable ceilings; BASIC omits them, sets ceilingOmitted=true, and permits larger pages. Raw key values and key hashes are never returned.", {
|
|
22792
22792
|
subject_principal_id: external_exports.string().describe("Filter by exact subject-principal UUID").optional(),
|
|
22793
22793
|
owner_principal_id: external_exports.string().describe("Filter by exact administrative-owner UUID").optional(),
|
|
22794
22794
|
lifecycle_state: external_exports.enum(["NOT_YET_VALID", "USABLE", "EXPIRED", "REVOKED"]).describe("Filter by precise lifecycle state").optional(),
|
|
@@ -22835,7 +22835,7 @@ function registerTools() {
|
|
|
22835
22835
|
const result = await callApi("PUT", `/v1/apikeys/${encodeURIComponent(String(args.id))}`, body);
|
|
22836
22836
|
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
22837
22837
|
});
|
|
22838
|
-
server.tool("goodmem_embedders_create", "Create a new embedder\n\nCreates an embedder configuration for use with memory spaces. If owner_id is omitted, the authenticated principal becomes the owner; CREATE_EMBEDDER is evaluated against that proposed embedder and owner. Returns 409 when an equivalent embedder configuration already exists for the owner. See the [embedder provider guide](https://
|
|
22838
|
+
server.tool("goodmem_embedders_create", "Create a new embedder\n\nCreates an embedder configuration for use with memory spaces. If owner_id is omitted, the authenticated principal becomes the owner; CREATE_EMBEDDER is evaluated against that proposed embedder and owner. Returns 409 when an equivalent embedder configuration already exists for the owner. See the [embedder provider guide](https://docs.goodmem.ai/docs/how-to/endpoint-registration) for provider-specific configuration.", {
|
|
22839
22839
|
display_name: external_exports.string().describe("User-facing name of the embedder"),
|
|
22840
22840
|
description: external_exports.string().describe("Description of the embedder").optional(),
|
|
22841
22841
|
provider_type: external_exports.enum(["OPENAI", "VLLM", "TEI", "LLAMA_CPP", "VOYAGE", "COHERE", "JINA", "DASHSCOPE", "GEMINI"]).describe("Type of embedding provider (auto-inferred from model_identifier if omitted)").optional(),
|
|
@@ -22956,7 +22956,7 @@ function registerTools() {
|
|
|
22956
22956
|
const result = await callApi("GET", `/v1/embedders`, void 0, query);
|
|
22957
22957
|
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
22958
22958
|
});
|
|
22959
|
-
server.tool("goodmem_embedders_update", "Update an embedder\n\nUpdates explicitly supplied embedder fields; at least one mutable field is required. Field omission and reset semantics are defined by the request schema, and providerType cannot be changed. Returns 409 if the resulting configuration duplicates another embedder for the owner, and 412 when model-defining fields are changed while the embedder is in use. Requires UPDATE_EMBEDDER on the requested embedder. See the [embedder provider guide](https://
|
|
22959
|
+
server.tool("goodmem_embedders_update", "Update an embedder\n\nUpdates explicitly supplied embedder fields; at least one mutable field is required. Field omission and reset semantics are defined by the request schema, and providerType cannot be changed. Returns 409 if the resulting configuration duplicates another embedder for the owner, and 412 when model-defining fields are changed while the embedder is in use. Requires UPDATE_EMBEDDER on the requested embedder. See the [embedder provider guide](https://docs.goodmem.ai/docs/how-to/endpoint-registration) for provider-specific configuration.", {
|
|
22960
22960
|
id: external_exports.string().describe("The unique identifier of the embedder to update"),
|
|
22961
22961
|
display_name: external_exports.string().describe("User-facing name of the embedder").optional(),
|
|
22962
22962
|
description: external_exports.string().describe("Description of the embedder").optional(),
|