@sirrlock/mcp 0.1.0 → 1.0.2

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 ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024–2026 Sirr contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,26 +1,37 @@
1
1
  # @sirrlock/mcp — Sirr MCP Server
2
2
 
3
+ [![npm version](https://img.shields.io/npm/v/@sirrlock/mcp)](https://www.npmjs.com/package/@sirrlock/mcp)
4
+ [![npm downloads](https://img.shields.io/npm/dm/@sirrlock/mcp)](https://www.npmjs.com/package/@sirrlock/mcp)
5
+ [![CI](https://github.com/sirrlock/mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/sirrlock/mcp/actions)
6
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5-blue)](https://www.typescriptlang.org/)
7
+ [![Node.js](https://img.shields.io/badge/node-%3E%3D18-brightgreen)](https://nodejs.org)
8
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/sirrlock/mcp/blob/main/LICENSE)
9
+ [![GitHub stars](https://img.shields.io/github/stars/sirrlock/mcp)](https://github.com/sirrlock/mcp)
10
+ [![Last commit](https://img.shields.io/github/last-commit/sirrlock/mcp)](https://github.com/sirrlock/mcp)
11
+
3
12
  Gives AI assistants like Claude direct access to your [Sirr](https://sirr.dev) secret vault. Push, read, and manage ephemeral secrets without leaving a conversation.
4
13
 
5
14
  ## Demo
6
15
 
7
- **Session 1store the secret**
16
+ ### Public dead drop push and burn
17
+
18
+ **Session 1 — push a secret (value-only, no key needed)**
8
19
 
9
20
  ```
10
- set the BITBUCKET_TOKEN to 123asdzxc
21
+ stash this deploy token: 123asdzxc
11
22
 
12
- ⏺ sirr-mcp - push_secret (MCP)(key: "BITBUCKET_TOKEN", value: "123asdzxc", max_reads: 1)
13
- ⎿ Stored secret 'BITBUCKET_TOKEN'. Burns after 1 read.
23
+ ⏺ sirr-mcp - push_secret (MCP)(value: "123asdzxc", max_reads: 1)
24
+ ⎿ Stored. ID: a1b2c3d4e5f6… URL: https://sirr.example/secrets/a1b2c3d4e5f6…
14
25
 
15
- ⏺ Stored. Burns after first read.
26
+ ⏺ Stored. Share the URL — it burns after one read.
16
27
  ```
17
28
 
18
- **Session 2 — Claude retrieves and uses it (the vault burns it)**
29
+ **Session 2 — retrieve by ID (the vault burns it)**
19
30
 
20
31
  ```
21
- deploy to staging using sirr:BITBUCKET_TOKEN
32
+ get the secret at a1b2c3d4e5f6…
22
33
 
23
- ⏺ sirr-mcp - get_secret (MCP)(key: "BITBUCKET_TOKEN")
34
+ ⏺ sirr-mcp - get_secret (MCP)(id: "a1b2c3d4e5f6…")
24
35
  ⎿ 123asdzxc
25
36
 
26
37
  ⏺ Got it. Deploying to staging with the token. Done.
@@ -29,15 +40,29 @@ Gives AI assistants like Claude direct access to your [Sirr](https://sirr.dev) s
29
40
  **Session 3 — secret is already gone**
30
41
 
31
42
  ```
32
- what is the BITBUCKET_TOKEN?
43
+ get that secret again
33
44
 
34
- ⏺ sirr-mcp - get_secret (MCP)(key: "BITBUCKET_TOKEN")
35
- ⎿ Secret 'BITBUCKET_TOKEN' not found, expired, or already burned.
45
+ ⏺ sirr-mcp - get_secret (MCP)(id: "a1b2c3d4e5f6…")
46
+ ⎿ Secret not found, expired, or already burned.
36
47
 
37
48
  ⏺ The secret no longer exists on the server.
38
49
  ```
39
50
 
40
- The secret existed just long enough to be used once. The vault enforces it server-side (`max_reads=1`). Claude is instructed by the tool description not to memorize or repeat the value. Even if a different agent, session, or attacker asks there is nothing left to return.
51
+ ### Org-scoped named secretset and get by key
52
+
53
+ ```
54
+ ❯ set the BITBUCKET_TOKEN to 123asdzxc in acme org
55
+
56
+ ⏺ sirr-mcp - set_secret (MCP)(org: "acme", key: "BITBUCKET_TOKEN", value: "123asdzxc")
57
+ ⎿ Stored 'BITBUCKET_TOKEN' in org acme.
58
+
59
+ ❯ deploy to staging using sirr:BITBUCKET_TOKEN
60
+
61
+ ⏺ sirr-mcp - get_secret (MCP)(key: "BITBUCKET_TOKEN", org: "acme")
62
+ ⎿ 123asdzxc
63
+ ```
64
+
65
+ The secret existed just long enough to be used. The vault enforces expiry server-side. Claude is instructed by the tool description not to memorize or repeat the value. Even if a different agent, session, or attacker asks — there is nothing left to return.
41
66
 
42
67
  ## Install
43
68
 
@@ -50,7 +75,7 @@ Or use `npx` without a global install — see the configuration block below.
50
75
  ## Quick start
51
76
 
52
77
  1. **Start Sirr** — run the Sirr server and note the `SIRR_MASTER_KEY` you set (or the one it printed on first launch).
53
- 2. **Set your token** — `SIRR_TOKEN` in your MCP config must equal that `SIRR_MASTER_KEY` value exactly.
78
+ 2. **Set your token** — `SIRR_TOKEN` in your MCP config must equal that `SIRR_MASTER_KEY` value (or a principal key for org-scoped access).
54
79
  3. **Add to `.mcp.json`** — paste the config block below, substituting your server URL and key.
55
80
  4. **Verify** — run `sirr-mcp --health` to confirm the connection before starting your AI session.
56
81
 
@@ -89,14 +114,15 @@ Using `npx` without a global install:
89
114
  }
90
115
  ```
91
116
 
92
- > **What is `SIRR_TOKEN`?** It is the value of `SIRR_MASTER_KEY` that you set (or that was generated) when you started the Sirr server. These two values must match exactly — a mismatch is the most common cause of 401 errors. See [sirr.dev/errors#401](https://sirr.dev/errors#401).
117
+ > **What is `SIRR_TOKEN`?** For single-tenant usage, set it to `SIRR_MASTER_KEY` (full access). For multi-tenant org-scoped usage, set it to a principal key. A mismatch is the most common cause of 401 errors. See [sirr.dev/errors#401](https://sirr.dev/errors#401).
93
118
 
94
119
  ### Environment variables
95
120
 
96
121
  | Variable | Default | Description |
97
122
  |---|---|---|
98
123
  | `SIRR_SERVER` | `http://localhost:39999` | Sirr server URL |
99
- | `SIRR_TOKEN` | — | Bearer token — must equal `SIRR_MASTER_KEY` on the server |
124
+ | `SIRR_TOKEN` | — | Bearer token — `SIRR_MASTER_KEY` for full access, or a principal key for org-scoped access |
125
+ | `SIRR_ORG` | — | Organization ID for multi-tenant mode. When set, all secret/audit/webhook/prune paths are prefixed with `/orgs/{id}/`. Leave unset for single-tenant usage. |
100
126
 
101
127
  ## CLI flags
102
128
 
@@ -116,8 +142,11 @@ SIRR_SERVER=http://localhost:39999 SIRR_TOKEN=mykey sirr-mcp --health
116
142
 
117
143
  | Tool | Description |
118
144
  |---|---|
119
- | `get_secret(key)` | Retrieve a secret value (increments read counter; burns if max_reads reached) |
120
- | `push_secret(key, value, ttl_seconds?, max_reads?)` | Store a secret with optional expiry and read limit |
145
+ | `push_secret(value, ttl_seconds?, max_reads?)` | Anonymous public dead drop — value-only, returns `{id, url}`. No key or org needed. |
146
+ | `set_secret(org, key, value)` | Org-scoped named secret returns `{key, id}`. 409 Conflict if key already exists; use `patch_secret` to update. |
147
+ | `get_secret(id)` or `get_secret(key, org)` | Dual mode: `id` fetches public dead drop (`GET /secrets/{id}`); `key`+`org` fetches org-scoped (`GET /orgs/{org}/secrets/{key}`) |
148
+ | `check_secret(key)` | Check if a secret exists and inspect its metadata — **without consuming a read** |
149
+ | `patch_secret(key, value?, ttl_seconds?, max_reads?)` | Update an existing secret's value, TTL, or read limit |
121
150
  | `list_secrets()` | List all active secrets — metadata only, values never returned |
122
151
  | `delete_secret(key)` | Burn a secret immediately, regardless of TTL or read count |
123
152
  | `prune_secrets()` | Delete all expired secrets in one sweep |
@@ -127,7 +156,7 @@ SIRR_SERVER=http://localhost:39999 SIRR_TOKEN=mykey sirr-mcp --health
127
156
 
128
157
  | Tool | Description |
129
158
  |---|---|
130
- | `sirr_audit(since?, action?, limit?)` | Query the audit log — secret creates, reads, deletes, and key events |
159
+ | `sirr_audit(since?, until?, action?, limit?)` | Query the audit log — secret creates, reads, deletes, and key events |
131
160
 
132
161
  ### Webhooks
133
162
 
@@ -137,24 +166,67 @@ SIRR_SERVER=http://localhost:39999 SIRR_TOKEN=mykey sirr-mcp --health
137
166
  | `sirr_webhook_list()` | List all registered webhooks (signing secrets redacted) |
138
167
  | `sirr_webhook_delete(id)` | Remove a webhook by ID |
139
168
 
140
- ### API keys
169
+ ### Principal keys
170
+
171
+ | Tool | Description |
172
+ |---|---|
173
+ | `sirr_key_list()` | List all API keys for the current principal |
174
+ | `sirr_create_key(name, valid_for_seconds?, valid_before?)` | Create a new API key; raw key returned once — save it |
175
+ | `sirr_delete_key(keyId)` | Revoke an API key by ID |
176
+
177
+ ### Account (principal-scoped)
141
178
 
142
179
  | Tool | Description |
143
180
  |---|---|
144
- | `sirr_key_create(label, permissions, prefix?)` | Create a scoped API key; raw key returned once — save it |
145
- | `sirr_key_list()` | List all scoped API keys (key hashes never returned) |
146
- | `sirr_key_delete(id)` | Delete an API key by ID |
181
+ | `sirr_me()` | Get the current principal's profile, role, and key list |
182
+ | `sirr_update_me(metadata)` | Replace the current principal's metadata |
183
+
184
+ ### Organizations
185
+
186
+ | Tool | Description |
187
+ |---|---|
188
+ | `sirr_org_create(name, metadata?)` | Create a new organization |
189
+ | `sirr_org_list()` | List all organizations (master key only) |
190
+ | `sirr_org_delete(org_id)` | Delete an organization — must have no principals |
191
+
192
+ ### Principals
193
+
194
+ | Tool | Description |
195
+ |---|---|
196
+ | `sirr_principal_create(org_id, name, role, metadata?)` | Create a principal (user or service account) in an org |
197
+ | `sirr_principal_list(org_id)` | List all principals in an org |
198
+ | `sirr_principal_delete(org_id, principal_id)` | Delete a principal — must have no active keys |
199
+
200
+ ### Roles
201
+
202
+ | Tool | Description |
203
+ |---|---|
204
+ | `sirr_role_create(org_id, name, permissions)` | Create a custom role. Permissions: C=create R=read P=patch D=delete L=list M=manage A=admin |
205
+ | `sirr_role_list(org_id)` | List all roles in an org (built-in and custom) |
206
+ | `sirr_role_delete(org_id, role_name)` | Delete a custom role — must not be in use |
147
207
 
148
208
  ## Inline secret references
149
209
 
150
- You can reference secrets inline in any prompt:
210
+ You can reference org-scoped secrets inline in any prompt:
151
211
 
152
212
  ```
153
213
  "Use sirr:DATABASE_URL to run a migration"
154
214
  "Deploy with sirr:DEPLOY_TOKEN"
155
215
  ```
156
216
 
157
- The `sirr:KEYNAME` prefix tells Claude to fetch from the vault automatically.
217
+ The `sirr:KEYNAME` prefix tells Claude to fetch from the vault automatically (requires `SIRR_ORG` to be set).
218
+
219
+ ## Secret lifecycle
220
+
221
+ Sirr secrets expire by design. Both `push_secret` and `set_secret` support expiry controls:
222
+
223
+ | Option | Behavior |
224
+ |---|---|
225
+ | `ttl_seconds: 3600` | Secret expires after 1 hour, regardless of reads |
226
+ | `max_reads: 1` | Secret is deleted after the first read |
227
+ | No options | Secret persists until explicitly deleted |
228
+
229
+ Use `check_secret` to inspect a secret's status without consuming a read — useful when you want to verify a secret is still available before fetching it.
158
230
 
159
231
  ## Security notes
160
232
 
@@ -169,9 +241,10 @@ The `sirr:KEYNAME` prefix tells Claude to fetch from the vault automatically.
169
241
 
170
242
  | Symptom | Cause | Fix |
171
243
  |---|---|---|
172
- | `Error: Sirr 401` | `SIRR_TOKEN` doesn't match `SIRR_MASTER_KEY` | Verify both values match exactly — no extra spaces or newlines. [sirr.dev/errors#401](https://sirr.dev/errors#401) |
173
- | `Error: Sirr 402` | Free-tier limit of 100 secrets reached | Delete unused secrets or add a `SIRR_LICENSE_KEY`. [sirr.dev/errors#402](https://sirr.dev/errors#402) |
174
- | `Error: Sirr 403` | Scoped API key lacks the required permission | Re-create the key with the needed permissions. [sirr.dev/errors#403](https://sirr.dev/errors#403) |
244
+ | `Error: Sirr 401` | `SIRR_TOKEN` doesn't match server key | Verify both values match exactly — no extra spaces or newlines. [sirr.dev/errors#401](https://sirr.dev/errors#401) |
245
+ | `Error: Sirr 402` | Free-tier limit reached | Delete unused secrets or upgrade. [sirr.dev/errors#402](https://sirr.dev/errors#402) |
246
+ | `Error: Sirr 403` | Token lacks the required permission | Use a token with the needed scope. [sirr.dev/errors#403](https://sirr.dev/errors#403) |
247
+ | `Error: Sirr 409` | Key already exists (`set_secret`) or resource has dependencies | Use `patch_secret` to update, or delete the secret first. For orgs: remove dependents first. [sirr.dev/errors#409](https://sirr.dev/errors#409) |
175
248
  | `Secret '…' not found` | Secret expired, was burned, or key was mistyped | Re-push the secret if you still need it. [sirr.dev/errors#404](https://sirr.dev/errors#404) |
176
249
  | `did not respond within 10s` | Sirr server is unreachable | Check `SIRR_SERVER` URL and confirm Sirr is running (`sirr-mcp --health`). |
177
250
  | `[sirr-mcp] Warning: SIRR_TOKEN is not set` | Token missing from MCP config | Add `SIRR_TOKEN` to the `env` block in `.mcp.json`. |
package/dist/helpers.d.ts CHANGED
@@ -8,6 +8,14 @@
8
8
  * "KEYNAME" → "KEYNAME"
9
9
  */
10
10
  export declare function parseKeyRef(ref: string): string;
11
+ export declare function secretsPath(key?: string): string;
12
+ /** Always routes to the public (unauthenticated) secrets endpoint. */
13
+ export declare function publicSecretsPath(id?: string): string;
14
+ /** Always routes to the org-scoped secrets endpoint. Throws if no org. */
15
+ export declare function orgSecretsPath(org: string, key?: string): string;
16
+ export declare function auditPath(): string;
17
+ export declare function webhooksPath(id?: string): string;
18
+ export declare function prunePath(): string;
11
19
  /**
12
20
  * Format a Unix timestamp (seconds) as a human-readable TTL string
13
21
  * relative to now. Returns "no expiry" for null, "expired" for past timestamps.
package/dist/helpers.js CHANGED
@@ -4,6 +4,12 @@
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.parseKeyRef = parseKeyRef;
7
+ exports.secretsPath = secretsPath;
8
+ exports.publicSecretsPath = publicSecretsPath;
9
+ exports.orgSecretsPath = orgSecretsPath;
10
+ exports.auditPath = auditPath;
11
+ exports.webhooksPath = webhooksPath;
12
+ exports.prunePath = prunePath;
7
13
  exports.formatTtl = formatTtl;
8
14
  /**
9
15
  * Parse a secret key reference from natural language.
@@ -18,6 +24,34 @@ function parseKeyRef(ref) {
18
24
  return ref.split("#")[0];
19
25
  return ref.trim();
20
26
  }
27
+ // ── Org-aware path helpers ────────────────────────────────────────────────────
28
+ function secretsPath(key) {
29
+ const org = process.env.SIRR_ORG;
30
+ const base = org ? `/orgs/${org}/secrets` : '/secrets';
31
+ return key ? `${base}/${key}` : base;
32
+ }
33
+ /** Always routes to the public (unauthenticated) secrets endpoint. */
34
+ function publicSecretsPath(id) {
35
+ return id ? `/secrets/${id}` : '/secrets';
36
+ }
37
+ /** Always routes to the org-scoped secrets endpoint. Throws if no org. */
38
+ function orgSecretsPath(org, key) {
39
+ const base = `/orgs/${org}/secrets`;
40
+ return key ? `${base}/${key}` : base;
41
+ }
42
+ function auditPath() {
43
+ const org = process.env.SIRR_ORG;
44
+ return org ? `/orgs/${org}/audit` : '/audit';
45
+ }
46
+ function webhooksPath(id) {
47
+ const org = process.env.SIRR_ORG;
48
+ const base = org ? `/orgs/${org}/webhooks` : '/webhooks';
49
+ return id ? `${base}/${id}` : base;
50
+ }
51
+ function prunePath() {
52
+ const org = process.env.SIRR_ORG;
53
+ return org ? `/orgs/${org}/prune` : '/prune';
54
+ }
21
55
  /**
22
56
  * Format a Unix timestamp (seconds) as a human-readable TTL string
23
57
  * relative to now. Returns "no expiry" for null, "expired" for past timestamps.
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAQH,kCAIC;AAMD,8BASC;AAzBD;;;;;GAKG;AACH,SAAgB,WAAW,CAAC,GAAW;IACrC,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjD,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;IACjD,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,SAAgB,SAAS,CAAC,SAAwB;IAChD,IAAI,SAAS,KAAK,IAAI;QAAE,OAAO,WAAW,CAAC;IAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,SAAS,GAAG,GAAG,CAAC;IAC7B,IAAI,IAAI,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAChC,IAAI,IAAI,GAAG,EAAE;QAAE,OAAO,GAAG,IAAI,GAAG,CAAC;IACjC,IAAI,IAAI,GAAG,IAAI;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,CAAC;IACpD,IAAI,IAAI,GAAG,KAAK;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;IACvD,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC;AACxC,CAAC"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,74 @@ const helpers_1 = require("./helpers");
22
22
  (0, globals_1.expect)((0, helpers_1.parseKeyRef)("KEY#a#b")).toBe("KEY");
23
23
  });
24
24
  });
25
+ (0, globals_1.describe)("secretsPath", () => {
26
+ (0, globals_1.afterEach)(() => {
27
+ delete process.env.SIRR_ORG;
28
+ });
29
+ (0, globals_1.it)("returns /secrets without SIRR_ORG", () => {
30
+ delete process.env.SIRR_ORG;
31
+ (0, globals_1.expect)((0, helpers_1.secretsPath)()).toBe("/secrets");
32
+ });
33
+ (0, globals_1.it)("returns /secrets/{key} without SIRR_ORG", () => {
34
+ delete process.env.SIRR_ORG;
35
+ (0, globals_1.expect)((0, helpers_1.secretsPath)("MY_KEY")).toBe("/secrets/MY_KEY");
36
+ });
37
+ (0, globals_1.it)("returns /orgs/{org}/secrets with SIRR_ORG", () => {
38
+ process.env.SIRR_ORG = "acme";
39
+ (0, globals_1.expect)((0, helpers_1.secretsPath)()).toBe("/orgs/acme/secrets");
40
+ });
41
+ (0, globals_1.it)("returns /orgs/{org}/secrets/{key} with SIRR_ORG", () => {
42
+ process.env.SIRR_ORG = "acme";
43
+ (0, globals_1.expect)((0, helpers_1.secretsPath)("MY_KEY")).toBe("/orgs/acme/secrets/MY_KEY");
44
+ });
45
+ });
46
+ (0, globals_1.describe)("auditPath", () => {
47
+ (0, globals_1.afterEach)(() => {
48
+ delete process.env.SIRR_ORG;
49
+ });
50
+ (0, globals_1.it)("returns /audit without SIRR_ORG", () => {
51
+ delete process.env.SIRR_ORG;
52
+ (0, globals_1.expect)((0, helpers_1.auditPath)()).toBe("/audit");
53
+ });
54
+ (0, globals_1.it)("returns /orgs/{org}/audit with SIRR_ORG", () => {
55
+ process.env.SIRR_ORG = "acme";
56
+ (0, globals_1.expect)((0, helpers_1.auditPath)()).toBe("/orgs/acme/audit");
57
+ });
58
+ });
59
+ (0, globals_1.describe)("webhooksPath", () => {
60
+ (0, globals_1.afterEach)(() => {
61
+ delete process.env.SIRR_ORG;
62
+ });
63
+ (0, globals_1.it)("returns /webhooks without SIRR_ORG", () => {
64
+ delete process.env.SIRR_ORG;
65
+ (0, globals_1.expect)((0, helpers_1.webhooksPath)()).toBe("/webhooks");
66
+ });
67
+ (0, globals_1.it)("returns /webhooks/{id} without SIRR_ORG", () => {
68
+ delete process.env.SIRR_ORG;
69
+ (0, globals_1.expect)((0, helpers_1.webhooksPath)("wh_123")).toBe("/webhooks/wh_123");
70
+ });
71
+ (0, globals_1.it)("returns /orgs/{org}/webhooks with SIRR_ORG", () => {
72
+ process.env.SIRR_ORG = "acme";
73
+ (0, globals_1.expect)((0, helpers_1.webhooksPath)()).toBe("/orgs/acme/webhooks");
74
+ });
75
+ (0, globals_1.it)("returns /orgs/{org}/webhooks/{id} with SIRR_ORG", () => {
76
+ process.env.SIRR_ORG = "acme";
77
+ (0, globals_1.expect)((0, helpers_1.webhooksPath)("wh_123")).toBe("/orgs/acme/webhooks/wh_123");
78
+ });
79
+ });
80
+ (0, globals_1.describe)("prunePath", () => {
81
+ (0, globals_1.afterEach)(() => {
82
+ delete process.env.SIRR_ORG;
83
+ });
84
+ (0, globals_1.it)("returns /prune without SIRR_ORG", () => {
85
+ delete process.env.SIRR_ORG;
86
+ (0, globals_1.expect)((0, helpers_1.prunePath)()).toBe("/prune");
87
+ });
88
+ (0, globals_1.it)("returns /orgs/{org}/prune with SIRR_ORG", () => {
89
+ process.env.SIRR_ORG = "acme";
90
+ (0, globals_1.expect)((0, helpers_1.prunePath)()).toBe("/orgs/acme/prune");
91
+ });
92
+ });
25
93
  (0, globals_1.describe)("formatTtl", () => {
26
94
  const realDateNow = Date.now;
27
95
  (0, globals_1.beforeEach)(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.test.js","sourceRoot":"","sources":["../src/helpers.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helpers.test.js","sourceRoot":"","sources":["../src/helpers.test.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -5,8 +5,8 @@
5
5
  * Exposes Sirr as MCP tools so Claude Code can read/write ephemeral secrets.
6
6
  *
7
7
  * Configuration (env vars):
8
- * SIRR_SERVER — Sirr server URL (default: http://localhost:39999)
9
- * SIRR_TOKEN — Bearer token (SIRR_MASTER_KEY on the server)
8
+ * SIRR_SERVER — Sirr server URL (default: https://sirr.sirrlock.com)
9
+ * SIRR_TOKEN — Bearer token: SIRR_MASTER_KEY for full access, or a principal key for org-scoped access
10
10
  *
11
11
  * Install: npm install -g @sirrlock/mcp
12
12
  * Configure in .mcp.json: