@markmnl/fmsg-mcp 1.4.1 → 1.5.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/CHANGELOG.md CHANGED
@@ -2,6 +2,9 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ - `react` is non-destructive again (`destructiveHint: false`), reversing 1.4.1: a reaction is one emoji
6
+ its sender changes or clears with another reaction, and it alters no one's messages, so hosts needn't
7
+ ask before each one.
5
8
  - Mailbox tools set `openWorldHint: false` (inbox, threads, drafts, mark read, attachment URLs).
6
9
  `react` is `destructiveHint: true` because a reaction message cannot be recalled, so a host may ask
7
10
  before one. `indicate` stays non-destructive. Sends to other addresses stay open-world and destructive.
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.4.1",
3
- "commit": "1bf42526079a845e7a27c01be60c0c38eae9c7f0",
4
- "describe": "v1.4.1"
2
+ "version": "1.5.0",
3
+ "commit": "33469ebc77bea6add5bfd454d8d60914d1b90e31",
4
+ "describe": "v1.5.0"
5
5
  }
@@ -245,8 +245,10 @@ export const registerSendTools = (server, deps) => {
245
245
  emoji: z.string().max(32).nullable().describe("a single emoji; null or empty clears your reaction"),
246
246
  }),
247
247
  outputSchema: outputObject({ id: z.string(), reaction_id: z.string().nullable(), time: z.string().nullable(), cleared: z.boolean() }),
248
- // A reaction is itself a message and cannot be recalled, so it stays destructive.
249
- annotations: { ...SENDS, idempotentHint: true },
248
+ // Not destructive: a reaction is one emoji that its sender changes or
249
+ // clears with another reaction, and it alters no one's messages, so hosts
250
+ // needn't ask before each one (maintainer decision).
251
+ annotations: { ...SENDS, destructiveHint: false, idempotentHint: true },
250
252
  }, async ({ id, emoji }, ctx) => withCaller(deps, ctx, async (caller, signal) => {
251
253
  const value = emoji && emoji.trim() ? emoji.trim() : null;
252
254
  const result = await caller.client.react(id, value, signal);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@markmnl/fmsg-mcp",
3
3
  "mcpName": "io.github.markmnl/fmsg-mcp",
4
- "version": "1.4.1",
4
+ "version": "1.5.0",
5
5
  "description": "MCP server for fmsg: send and receive federated messages from any AI agent via a deployed fmsg Web API",
6
6
  "type": "module",
7
7
  "license": "MIT",
package/server.json CHANGED
@@ -8,13 +8,13 @@
8
8
  "url": "https://github.com/markmnl/fmsg-mcp",
9
9
  "source": "github"
10
10
  },
11
- "version": "1.4.1",
11
+ "version": "1.5.0",
12
12
  "packages": [
13
13
  {
14
14
  "registryType": "npm",
15
15
  "registryBaseUrl": "https://registry.npmjs.org",
16
16
  "identifier": "@markmnl/fmsg-mcp",
17
- "version": "1.4.1",
17
+ "version": "1.5.0",
18
18
  "transport": {
19
19
  "type": "stdio"
20
20
  },