@ours.network/mcp 0.16.0-nightly.1 → 0.16.1

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
@@ -9,13 +9,30 @@ The server **is** the node: on startup it boots a single ADAPT packet (a MUFL
9
9
  messenger), restores prior state from the state dir, connects to the broker, and
10
10
  exposes the messaging tools — each a thin wrapper over one MUFL user transaction:
11
11
 
12
- - `generate_invite` — invite to share out-of-band (optionally named)
12
+ - `generate_invite` — invite to share out-of-band (optionally named; `mode`
13
+ `"one_time"` default or `"public"` for a reusable open-posting invite)
14
+ - `list_invites` / `revoke_invite` — outstanding invites; revocation is the only
15
+ way to close a public invite (idempotent)
13
16
  - `add_contact` — add a contact from an invite blob (TOFU)
14
17
  - `list_contacts`
18
+ - `remove_contact` — contacts-layer forget + one best-effort authenticated
19
+ "remove me" notice to the peer (fire-and-forget; remote removal NOT guaranteed)
20
+ - `create_temporary_identity` / `close_temporary_identity` — session-scoped
21
+ identity owned by exactly one session lease: on close/session end, contacts get
22
+ one best-effort remove-me notice, then ALL local state is deleted (stale ones —
23
+ owner process dead — are swept automatically; permanent identities never are)
15
24
  - `send_message` — end-to-end encrypted; optional `reply_to_wire_id` (+ `reply_to_sentence`) to reply to a specific message
16
25
  - `get_messages` — return unread messages (bodies, each with its `wire_id` + any `reply_to`) + mark read; delivered exactly once
17
26
  - `mark_processed` / `defer_messages` — remove handled messages, or re-queue read ones for another session
18
27
  - `list_incoming_messages` — full inbox with ids + status (read-only)
28
+ - `list_incoming_files` — byte-free structured preauthorization metadata, including authenticated sender CID (`from.id`), separate display name, stable IDs, size/date/status, filename and MIME
29
+ - `get_files({ wire_ids? })` — atomically retrieve only approved unread wire IDs; omitting `wire_ids` preserves legacy all-unread retrieval. Results include safe local paths, actual size/hash, provenance/status, and structured voice transcription outcomes
30
+
31
+ File wake events are content-free but correlation-complete: authenticated `sender_id`,
32
+ `file_id`, `wire_id`, display name, filename, MIME, byte count, and received date. A caller
33
+ must authorize against `sender_id`, never the untrusted display label. Selected IDs are
34
+ unique 64-hex wire IDs (maximum 32); malformed, duplicate, unknown, or stale selections
35
+ fail atomically without retrieving or writing any file.
19
36
 
20
37
  ## Configuration
21
38
 
@@ -46,7 +63,10 @@ The supported providers are `openai-compatible` (explicit base URL + model),
46
63
  a file and is transcribed only when its real `audio/*` MIME also carries
47
64
  `x-ours-kind=voice-message` (or its legacy filename starts `voice-message-`). The original
48
65
  bytes are saved whether transcription succeeds, is unconfigured, exceeds the size cap, or
49
- the provider fails. Provider error text is scrubbed if it echoes the configured key.
66
+ the provider fails. `get_files` preserves the human transcript/fallback line and also returns
67
+ a secret-free structured outcome (`configured`, `attempted`, `status`, `provider`, `text`,
68
+ `error_category`, `audio_path`, and `file_wire_id`). Provider error text is scrubbed if it
69
+ echoes the configured key and raw provider diagnostics are not copied into structured output.
50
70
 
51
71
  Telegram fallback preserves its original OGG/Opus bytes and `.ogg` filename and advertises
52
72
  `audio/ogg; x-ours-kind=voice-message`; the connector's v2 message envelope correlates the