@agenticmail/mcp 0.7.8 → 0.7.9

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
@@ -8,7 +8,28 @@ The MCP (Model Context Protocol) server for [AgenticMail](https://github.com/age
8
8
 
9
9
  When connected, your AI agent can send emails and texts, check inboxes, reply to messages, receive verification codes, manage contacts, schedule emails, assign tasks to other agents, and more — all through natural language. The server provides 62 tools that cover every email, SMS, and agent management operation.
10
10
 
11
- ## ✨ What's new in 0.7.7
11
+ ## ✨ What's new in 0.7.9
12
+
13
+ - **📐 `call_agent` accepts `outputSchema`** — pass a JSON Schema (draft-7 subset) describing the deliverable shape and the API validates `submit_result` against it; mismatches come back as validator errors so the worker can retry with a correct shape instead of returning free-form prose. The schema is rendered into the worker's wake prompt up-front. Example:
14
+ ```js
15
+ await call_agent({
16
+ target: 'vesper',
17
+ task: 'Audit row 34 of the YAML patch.',
18
+ outputSchema: {
19
+ type: 'object',
20
+ required: ['summary', 'findings', 'recommendation'],
21
+ properties: {
22
+ summary: { type: 'string' },
23
+ findings: { type: 'array', items: { type: 'string' } },
24
+ recommendation: { type: 'string', enum: ['proceed', 'block'] },
25
+ },
26
+ },
27
+ });
28
+ ```
29
+ - **📥 `tail_worker(workerId, lines?)`** — paired with `check_activity`. When a worker shows up as long-running or stale, `tail_worker` returns the trailing N lines of its log (every tool call, result, and assistant chunk as a one-liner). Master-key only. Lives in the `multi_agent_extras` tier so it ships in the default toolbelt for hosts that delegate work.
30
+ - **📊 `check_activity` shows live progress** — output now includes last tool used, tool-call count, duration in `Xh Ym Zs`, and a `stale` flag derived from heartbeat age. Workers are no longer auto-evicted from the registry; staleness is diagnostic.
31
+
32
+ ## ✨ Earlier — 0.7.7
12
33
 
13
34
  - **`wake` parameter on every send tool** — `send_email`, `reply_email`, `forward_email`, `template_send`, `manage_drafts(send)` all accept `wake: ["alice", "bob"]` (or comma-separated string). The dispatcher gives a Claude turn only to listed agents; the rest still receive the mail but stay asleep. Single biggest token saver on multi-agent threads.
14
35
  - **`check_activity` tool** (in the `essential` set) — see which agents the dispatcher has woken right now, what they're working on, how long they've been running, plus a preview of recently-finished work. Answers "did the agent I just emailed actually start working?" without waiting for a reply.
package/dist/index.js CHANGED
@@ -23322,14 +23322,15 @@ var toolDefinitions = [
23322
23322
  },
23323
23323
  {
23324
23324
  name: "call_agent",
23325
- description: `Synchronous RPC to delegate work to another AgenticMail agent. Pipeline: the task is queued in AgenticMail, the target agent processes it AS THEMSELVES (under their real identity, mailbox, persona, and audit trail), and the structured result returns into your call. THIS IS HOW MULTI-AGENT COORDINATION IS SUPPOSED TO WORK from any MCP host. Do not, instead, spawn one of your host's native sub-agents and tell it to "act as <target>" \u2014 that produces output under your identity, never touches the target's inbox, and skips their persona. Times out after the specified duration (default 180s, max 300s).`,
23325
+ description: `Synchronous RPC to delegate work to another AgenticMail agent. Pipeline: the task is queued in AgenticMail, the target agent processes it AS THEMSELVES (under their real identity, mailbox, persona, and audit trail), and the structured result returns into your call. THIS IS HOW MULTI-AGENT COORDINATION IS SUPPOSED TO WORK from any MCP host. Do not, instead, spawn one of your host's native sub-agents and tell it to "act as <target>" \u2014 that produces output under your identity, never touches the target's inbox, and skips their persona. Pass outputSchema to require a structured deliverable shape: the API validates the worker's submit_result against the schema and rejects mismatches with validator errors, so the worker can retry with a correct shape rather than returning free-form prose. Times out after the specified duration (default 180s, max 300s).`,
23326
23326
  inputSchema: {
23327
23327
  type: "object",
23328
23328
  properties: {
23329
23329
  target: { type: "string", description: "Name of the agent to call" },
23330
23330
  task: { type: "string", description: "Task description" },
23331
23331
  payload: { type: "object", description: "Additional data" },
23332
- timeout: { type: "number", description: "Max seconds to wait (default: 180, max: 300)" }
23332
+ timeout: { type: "number", description: "Max seconds to wait (default: 180, max: 300)" },
23333
+ outputSchema: { type: "object", description: "Optional JSON Schema (draft-7 subset: type, required, properties, items, enum, additionalProperties, minLength/maxLength, minimum/maximum) describing the shape submit_result must conform to. The worker sees the schema in the wake prompt and the API validates on submission." }
23333
23334
  },
23334
23335
  required: ["target", "task"]
23335
23336
  }
@@ -24667,7 +24668,11 @@ ${r.tasks.map(
24667
24668
  const created = await apiRequest("POST", "/tasks/assign", {
24668
24669
  assignee: args2.target,
24669
24670
  taskType: "rpc",
24670
- payload: { task: args2.task, ...args2.payload || {} }
24671
+ payload: { task: args2.task, ...args2.payload || {} },
24672
+ // Pass outputSchema through verbatim. The API persists it
24673
+ // and renders it into the worker's wake prompt; validation
24674
+ // happens server-side on submit_result.
24675
+ ...args2.outputSchema ? { outputSchema: args2.outputSchema } : {}
24671
24676
  });
24672
24677
  if (!created?.id) throw new Error("Failed to create task");
24673
24678
  const taskId = created.id;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agenticmail/mcp",
3
- "version": "0.7.8",
3
+ "version": "0.7.9",
4
4
  "mcpName": "io.github.agenticmail/mcp",
5
5
  "description": "MCP server for AgenticMail — give any AI client real email and SMS capabilities",
6
6
  "type": "module",