sealnet-mcp 0.7.0 → 0.8.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/README.md CHANGED
@@ -16,7 +16,7 @@ When an MCP-connected AI agent (Claude Desktop, Cursor, Cline, etc.) creates a S
16
16
 
17
17
  | Tool | Purpose |
18
18
  |------|---------|
19
- | `seal_share(path, mode='inbox'\|'handoff'\|'forward', expire?, max_reads?, tier?)` / `seal_share(payment)` | Create a SEAL from a local file or folder (sent as one ZIP), streamed from disk. Default: inbox once connected, else handoff; without `expire`, 1d in the inbox, 5m for a handoff, or 1d for one over 100 MB. Over 1 GB the user pays once by card (smallest tier that fits, or `tier`): the payment page goes through URL-mode elicitation, or comes back as `payment_url` and a second call with `payment` finishes the upload into the same seal |
19
+ | `seal_share(path, mode='inbox'\|'handoff'\|'forward', expire?, max_reads?, tier?)` / `seal_share(payment)` | Create a SEAL from a local file or folder (sent as one ZIP), streamed from disk. Default: inbox once connected, else handoff; without `expire`, 1d in the inbox, 5m for a handoff, or 1d for one over 100 MB. Above the free limit the user pays once by card (smallest tier that fits, or `tier`): the payment page goes through URL-mode elicitation, or comes back as `payment_url` and a second call with `payment` finishes the upload into the same seal |
20
20
  | `seal_request(what, kind='any'\|'secret'\|'file', where_url?, wait=true, from?)` / `seal_request(request)` | Ask the user for a file or a secret without it passing through the chat. On the user's computer the `seal` CLI draws the system dialog (`seal request --local --json`); otherwise the user answers at `seal.net/i/<id>`, sealed to this server's key, shown with three words of that key; once connected the request also waits in the user's inbox (`from=owner`, or `from=anyone` for a plain link). Returns the path of a 0600 file, never the value |
21
21
  | `seal_pair(name?, wait=true)` | Connect this agent to the user's SEAL inbox, once: the user opens a page, compares three words and connects; the chat then shows the inbox's three words. After it `seal_share` sends to the inbox by default |
22
22
  | `seal_open(url\|item, mode='metadata'\|'file'\|'inline', dir?)` | Read metadata (default — no download, no counter consumption), save to disk (`file`: streamed, verified before it gets its name, 0600, returns paths) or inline parse (whitelisted MIMEs only, ≤100 KB, refuses secrets, HTML and binary). `item` is an inbox handle instead of a link |
@@ -44,7 +44,7 @@ The first start makes the key (keychain, else the file); there is no setup step.
44
44
  - `handles[]` — opaque handle → `{ seal_id, owner_token, mode, created_at }`. Each `owner_token` is full owner-capability for that seal; encrypting only `identity` and leaving tokens plain would be a security illusion.
45
45
  - `audit[]` — historical tool invocations (timestamps, handles, modes). Side-channel relevant.
46
46
 
47
- Several MCP hosts on one machine (Claude Desktop, Claude Code, Cursor) share the key and the state: each write re-reads the file under a lock. `serve --ephemeral` (or `SEAL_MCP_EPHEMERAL=1`) keeps nothing on disk and makes a new key each start; handles then last until restart, and seal expiry does not depend on it. A state from version 0.2 moves under the key on the first start, once.
47
+ Several MCP hosts on one machine (Claude Desktop, Claude Code, Cursor) share the key and the state: each write re-reads the file under a lock. `serve --ephemeral` (or `SEAL_MCP_EPHEMERAL=1`) keeps nothing on disk and makes a new key each start; handles then last until restart, and seal expiry does not depend on it.
48
48
 
49
49
  ## Install + configure
50
50
 
@@ -84,7 +84,6 @@ Environment variables consumed by the CLI:
84
84
  | `SEAL_OWNER` | `serve` | The address of the user's inbox, instead of `seal_pair`: for a cloud session with nowhere to open the page |
85
85
  | `SEAL_MCP_EPHEMERAL=1` | `serve` | As `--ephemeral`: a new key each start, nothing on disk |
86
86
  | `SEAL_MCP_CONFIG_DIR` | every subcommand | Override default state directory (mirrors Rust `seal-cli`'s `SEAL_CONFIG_DIR`) |
87
- | `SEAL_MCP_PASSPHRASE` | `serve` | Read once, to move a state of version 0.2 |
88
87
  | `SEAL_MCP_BACKEND_URL` | `serve`, `doctor` | SEAL backend base URL (default `https://api.seal.net`) |
89
88
  | `SEAL_MCP_PUBLIC_HOST` | `serve`, `doctor` | Public origin for minted share URLs (default `https://seal.net`) |
90
89
  | `SEAL_MCP_DEBUG=1` | all | Include stack traces in fatal-error output (otherwise plain `error: <msg>`) |
@@ -110,6 +109,5 @@ pnpm test
110
109
 
111
110
  ## Source of truth
112
111
 
113
- - `docs/security/seal_phase1_plan.md` §"Phase 3 — MCP-оболочка"
114
112
  - `shared/contracts/seal_mcp.v1.json` (tool input/output schemas)
115
113
  - All cryptographic primitives are bundled into `dist/` from internal workspace packages — no algorithm code is duplicated and no external `@`-scoped dependencies are pulled at install time.