@formstr/mcp 0.4.0 → 0.5.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
@@ -2,8 +2,10 @@
2
2
 
3
3
  A standalone [Model Context Protocol](https://modelcontextprotocol.io) (MCP) server that
4
4
  exposes the **Formstr** super-app (forms, calendar, pages, drive, polls) to any MCP host —
5
- Claude Code/Desktop, Cursor, and others. It builds on `@formstr/core` and the super-app's
6
- service layer and talks to Nostr relays directly. Transport: **stdio**.
5
+ Claude Code/Desktop, Cursor, and others. It builds on `@formstr/agent` (the shared service
6
+ layer + tool registry) and `@formstr/core` (Nostr primitives), and talks to Nostr relays
7
+ directly. Transport: **stdio**. Source lives in
8
+ [`formstr-hq/common-packages`](https://github.com/formstr-hq/common-packages/tree/main/packages/mcp).
7
9
 
8
10
  Identity is powered by [`@formstr/signer`](https://www.npmjs.com/package/@formstr/signer) —
9
11
  the same login engine the Formstr web app uses. Local keys are stored **NIP-49 encrypted
@@ -32,8 +34,8 @@ npm registry for a newer release:
32
34
 
33
35
  ```text
34
36
  $ formstr-mcp version
35
- @formstr/mcp 0.4.0
36
- Update available: 0.5.0 (you have 0.4.0).
37
+ @formstr/mcp 0.5.0
38
+ Update available: 0.6.0 (you have 0.5.0).
37
39
  Upgrade: npm install -g @formstr/mcp@latest
38
40
  Or just re-run via: npx -y @formstr/mcp@latest
39
41
  ```
@@ -41,7 +43,7 @@ Or just re-run via: npx -y @formstr/mcp@latest
41
43
  The update check is best-effort — if you're offline or the registry is unreachable it
42
44
  prints the installed version and a note, never an error. If you run the server via
43
45
  `npx -y @formstr/mcp` you already get the latest published version on each launch; pin a
44
- version (`@formstr/mcp@0.4.0`) in your host config if you'd rather control upgrades.
46
+ version (`@formstr/mcp@0.5.0`) in your host config if you'd rather control upgrades.
45
47
 
46
48
  ## Sign-in
47
49
 
@@ -89,6 +91,12 @@ After `login`, no key belongs in the config:
89
91
  Add `"--allow-writes"` to `args` to enable the gated (destructive/outward) tools, and
90
92
  `"--relays", "wss://a,wss://b"` to override relays.
91
93
 
94
+ > **Note:** the default (no `--allow-writes`) is _not_ read-only. Create/import tools
95
+ > (`create_form`, `create_calendar_event`, `create_calendar`, `create_poll`, `create_page`,
96
+ > `import_form_from_naddr`) are always enabled and publish events on your identity. The
97
+ > flag gates the tools that modify or delete existing data or act toward other people
98
+ > (update / delete / share / submit / RSVP).
99
+
92
100
  ### Passing the ncryptsec passphrase
93
101
 
94
102
  If your active account is an `ncryptsec` key (Create / Import login), the server needs its
@@ -224,9 +232,16 @@ actions; see the source under `src/tools/`.
224
232
  Destructive / outward tools are **not registered** unless `--allow-writes` (or
225
233
  `FORMSTR_ALLOW_WRITES=true`) is set, AND each such call additionally requires
226
234
  `"confirm": true`. Without `confirm`, the tool returns a structured "confirmation
227
- required" message naming the irreversible effect instead of executing. `share_form`
228
- distributes only the view key (read access) — never the signing key. Logging goes to
229
- stderr (stdout is the MCP transport).
235
+ required" message naming the irreversible effect instead of executing.
236
+
237
+ **Create tools are always on.** `--allow-writes` gates updates, deletions, shares,
238
+ submissions, and RSVPs — not creation. Creating a new form/event/calendar/poll/page
239
+ (and importing a form) publishes to relays on your identity even without the flag,
240
+ because a fresh entity can't clobber existing data. If you need a strictly read-only
241
+ server, don't connect an identity that matters.
242
+
243
+ `share_form` distributes only the view key (read access) — never the signing key.
244
+ Logging goes to stderr (stdout is the MCP transport).
230
245
 
231
246
  ## Tests
232
247