apple-tools-mcp 3.0.6 → 3.0.7

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/lib/mailWrite.js CHANGED
@@ -992,7 +992,7 @@ function mailBoxesPreamble() {
992
992
  return ` set cutoff to (current date) - (10 * minutes)
993
993
  set boxes to {}
994
994
  try
995
- set end of boxes to outgoing mailbox
995
+ set end of boxes to outbox
996
996
  end try
997
997
  try
998
998
  set end of boxes to sent mailbox
@@ -1012,7 +1012,7 @@ function loadMailboxMessagesSnippet() {
1012
1012
  return ` set recentMsgs to {}
1013
1013
  set scanAll to false
1014
1014
  try
1015
- if boxRef is outgoing mailbox then set scanAll to true
1015
+ if boxRef is outbox then set scanAll to true
1016
1016
  end try
1017
1017
  try
1018
1018
  set nm to name of boxRef as string
@@ -1028,7 +1028,7 @@ function loadMailboxMessagesSnippet() {
1028
1028
 
1029
1029
  function verifyHitReturn() {
1030
1030
  return ` try
1031
- if boxRef is outgoing mailbox then return "${SENT_VERIFY_OUTBOX}"
1031
+ if boxRef is outbox then return "${SENT_VERIFY_OUTBOX}"
1032
1032
  end try
1033
1033
  try
1034
1034
  set nm to name of boxRef as string
@@ -1438,7 +1438,7 @@ function finalizeMailWrite({
1438
1438
  }
1439
1439
  const verified = verifyQueuedMessage(match, { deadlineMs: deadline });
1440
1440
  if (!verified) {
1441
- return { ok: false, delivered: false, mailbox: null, message: verifyMissMessage(action, summary) };
1441
+ return { ok: false, delivered: false, mailbox: null, unconfirmed: true, message: verifyMissMessage(action, summary) };
1442
1442
  }
1443
1443
  return sendVerifiedSuccess({ action, successSummary, details, verified, recovered: false });
1444
1444
  }
package/lib/writeTools.js CHANGED
@@ -420,8 +420,11 @@ export function loggedBridgeHandler(run, log, now = () => Date.now()) {
420
420
  const ok = Boolean(result && result.ok);
421
421
  // Dry runs and confirm-gated previews come back ok:false with planned:true — nothing failed.
422
422
  const planned = !ok && Boolean(result && result.planned);
423
- const why = ok || planned ? "" : ` (${classifyWriteFailure(result && result.message)}${result && result.unsupported ? ", unsupported" : ""})`;
424
- log(`${new Date(started).toISOString()} write bridge: ${tool} ${ok ? "ok" : planned ? "planned (dry run / needs confirm)" : "failed"} in ${now() - started}ms${why}`);
423
+ // Mail accepted the send but Sent/Outbox didn't show it within budget — not a failure.
424
+ const unconfirmed = !ok && !planned && Boolean(result && result.unconfirmed);
425
+ const outcome = ok ? "ok" : planned ? "planned (dry run / needs confirm)" : unconfirmed ? "unconfirmed (sent; not yet seen in Sent/Outbox)" : "failed";
426
+ const why = ok || planned || unconfirmed ? "" : ` (${classifyWriteFailure(result && result.message)}${result && result.unsupported ? ", unsupported" : ""})`;
427
+ log(`${new Date(started).toISOString()} write bridge: ${tool} ${outcome} in ${now() - started}ms${why}`);
425
428
  return result;
426
429
  };
427
430
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "apple-tools-mcp",
3
- "version": "3.0.6",
3
+ "version": "3.0.7",
4
4
  "description": "MCP server for semantic search and write actions across Apple Mail, Messages, Calendar, and Contacts. Speaks stdio (local) or bearer-token-authenticated Streamable HTTP (LAN / Tailscale).",
5
5
  "type": "module",
6
6
  "main": "index.js",