🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@saihm/mcp-server-pro

Package Overview
Dependencies
Maintainers
1
Versions
14
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@saihm/mcp-server-pro - npm Package Compare versions

Comparing version
0.2.0
to
0.2.1
+1
-0
dist/client.d.ts
import type { WireIdentityRecord } from '@saihm/client-pro';
export declare const DEFAULT_ENDPOINT = "https://saihm.coti.global/mcp";
declare const QUOTA_NAG_THRESHOLDS: readonly [80, 95, 100];

@@ -3,0 +4,0 @@ type QuotaNagThreshold = (typeof QUOTA_NAG_THRESHOLDS)[number];

+21
-7

@@ -9,2 +9,11 @@ import { randomBytes } from 'node:crypto';

const MAX_SEQ = (1n << 64n) - 1n;
export const DEFAULT_ENDPOINT = 'https://saihm.coti.global/mcp';
function setupHint() {
return selfJoinEnabled()
? ' To start free with no configuration, ask me to "Join SAIHM" (the saihm_join tool).' +
' To use a different operator, set SAIHM_ENDPOINT_URL to its endpoint.'
: ' Self-join is off (SAIHM_SELF_JOIN=0), so supply a master secret via' +
' SAIHM_MASTER_SECRET_FILE or SAIHM_MASTER_SECRET_HEX. Unset SAIHM_SELF_JOIN' +
' to start free with no configuration instead.';
}
function assertEndpointUrl(endpoint) {

@@ -329,6 +338,9 @@ let url;

static bootFromEnv() {
const endpoint = process.env.SAIHM_ENDPOINT_URL;
const endpoint = process.env.SAIHM_ENDPOINT_URL === undefined
? DEFAULT_ENDPOINT
: process.env.SAIHM_ENDPOINT_URL;
const auth = process.env.SAIHM_AUTH_HEADER;
if (!endpoint)
throw new Error('SAIHM_ENDPOINT_URL env var required');
throw new Error('SAIHM_ENDPOINT_URL is set but empty.' + setupHint());
assertEndpointUrl(endpoint);
const secretFile = process.env.SAIHM_MASTER_SECRET_FILE;

@@ -341,3 +353,4 @@ let secretHex;

catch {
throw new Error(`SAIHM_MASTER_SECRET_FILE could not be read: ${secretFile}`);
throw new Error(`SAIHM_MASTER_SECRET_FILE could not be read: ${secretFile}.` +
setupHint());
}

@@ -363,3 +376,3 @@ try {

catch {
throw new Error(`self-join identity file could not be read: ${p}`);
throw new Error(`self-join identity file could not be read: ${p}.` + setupHint());
}

@@ -371,3 +384,4 @@ }

throw new Error('No SAIHM memory yet on this device. Ask me to "Join SAIHM" first (the saihm_join tool) to create your free memory, then try again.');
throw new Error('SAIHM_MASTER_SECRET_HEX (or SAIHM_MASTER_SECRET_FILE) env var required (>= 64 hex chars)');
throw new Error('SAIHM_MASTER_SECRET_HEX (or SAIHM_MASTER_SECRET_FILE) env var required (>= 64 hex chars).' +
setupHint());
}

@@ -379,7 +393,7 @@ let master;

catch {
throw new Error('SAIHM_MASTER_SECRET_HEX must be canonical lowercase hex');
throw new Error('SAIHM_MASTER_SECRET_HEX must be canonical lowercase hex.' + setupHint());
}
if (master.length < 32) {
master.fill(0);
throw new Error('SAIHM_MASTER_SECRET_HEX must decode to >= 32 bytes');
throw new Error('SAIHM_MASTER_SECRET_HEX must decode to >= 32 bytes.' + setupHint());
}

@@ -386,0 +400,0 @@ const optTier = process.env.SAIHM_TIER ?? (selfJoinEnabled() ? 'FREE' : undefined);

@@ -1,3 +0,3 @@

export { SaihmProClient, SaihmEndpointError } from './client.js';
export { SaihmProClient, SaihmEndpointError, DEFAULT_ENDPOINT } from './client.js';
export { KeySubstitutionError } from '@saihm/client-pro';
export type { RememberResult, RecalledCell, ForgetResult, StatusSnapshot, ShareResult, RevokeResult, RememberOpts, ShareGrant, SharedReadGrant, SaihmProClientOpts, } from './client.js';

@@ -1,2 +0,2 @@

export { SaihmProClient, SaihmEndpointError } from './client.js';
export { SaihmProClient, SaihmEndpointError, DEFAULT_ENDPOINT } from './client.js';
export { KeySubstitutionError } from '@saihm/client-pro';
{
"name": "@saihm/mcp-server-pro",
"version": "0.2.0",
"version": "0.2.1",
"mcpName": "io.github.SAIHM-Admin/saihm-mcp-server-pro",

@@ -5,0 +5,0 @@ "description": "Sovereign encrypted memory for AI agents, sealed on your own machine. Start free with no card and no master secret — just ask your agent to \"Join SAIHM\". Seals client-side via @saihm/client-pro (ML-DSA-65 identity, per-cell AES-256-GCM DEK wrapped under a client KEK, ML-KEM-768 authenticated sharing) and POSTs opaque ciphertext to the blind, non-custodial SAIHM /mcp endpoint. The master secret, KEK, and plaintext never leave this process. Apache-2.0.",

@@ -230,3 +230,3 @@ # @saihm/mcp-server-pro

| -------------------------- | ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `SAIHM_ENDPOINT_URL` | yes | `https://…/mcp` (or `http://` only for `127.0.0.1`/`localhost`). |
| `SAIHM_ENDPOINT_URL` | no | `https://…/mcp` (or `http://` only for `127.0.0.1`/`localhost`). **Defaults to `https://saihm.coti.global/mcp`** — set it only to point at a different operator. |
| `SAIHM_AUTH_HEADER` | no | `Bearer <JWT>`, used verbatim. **Omit to self-onboard** (recommended): the client mints + auto-refreshes its own short-lived JWT from the master secret, so you paste one config once and never re-paste a token. |

@@ -233,0 +233,0 @@ | `SAIHM_PAYMENT_METHOD` | paid self-onboard | Your entitlement rail (e.g. `stripe`) for a paid tier. **Not used by the FREE tier** — activate free with `free-join` (no card). Ignored when `SAIHM_AUTH_HEADER` is set. |