@aioproductoscom/mcp 0.6.0 → 0.7.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/README.md CHANGED
@@ -57,6 +57,9 @@ at a self-hosted platform.
57
57
  | `reply_to_conversation` | reply to a visitor (**visible in their chat widget**, sent as you) |
58
58
  | `add_note` | internal triage note on a conversation (never shown to the visitor) |
59
59
  | `resolve_conversation` | mark a conversation resolved |
60
+ | `list_bookings` | scheduled calls/meetings (upcoming by default) |
61
+ | `cancel_booking` | cancel a booking (frees the slot, cancels the meeting) |
62
+ | `reschedule_booking` | move a booking to a new open slot |
60
63
 
61
64
  > For an assignable **coding teammate** (Backend / Frontend / Mobile / QA that
62
65
  > opens PRs in your repo), install the separate
package/dist/client.js CHANGED
@@ -96,4 +96,11 @@ export class PlatformClient {
96
96
  inboxAction(body) {
97
97
  return this.req("/api/me/inbox", { method: "POST", body: JSON.stringify(body) });
98
98
  }
99
+ listBookings(opts) {
100
+ const qs = opts.include === "all" ? "?include=all" : "";
101
+ return this.req(`/api/me/scheduling${qs}`);
102
+ }
103
+ schedulingAction(body) {
104
+ return this.req("/api/me/scheduling", { method: "POST", body: JSON.stringify(body) });
105
+ }
99
106
  }
package/dist/index.js CHANGED
@@ -17,7 +17,7 @@ function text(data) {
17
17
  ],
18
18
  };
19
19
  }
20
- const server = new McpServer({ name: "productos", version: "0.6.0" }, {
20
+ const server = new McpServer({ name: "productos", version: "0.7.0" }, {
21
21
  instructions: "You manage ProductOS PM tickets on behalf of the connected member — the board is the team's " +
22
22
  "source of truth, so work precisely. Resolve names to ids with pm_meta before create_task / " +
23
23
  "update_task; never guess an id. Link a task to the spine (feature_id / insight_id) whenever the " +
@@ -62,6 +62,9 @@ server.tool("get_conversation", "Read one support conversation: the visitor + th
62
62
  server.tool("reply_to_conversation", "Send a reply into a support conversation. This message IS VISIBLE TO THE VISITOR in the chat widget — it goes out as you (the member who owns this token). Use add_note for internal triage you don't want the visitor to see.", { conversation_id: z.string(), body: z.string() }, async (a) => text(await client.inboxAction({ action: "reply", conversation_id: a.conversation_id, body: a.body })));
63
63
  server.tool("add_note", "Add an INTERNAL note to a support conversation — visible only in the inbox, never to the visitor. Use to record triage, context, or a handoff for a human.", { conversation_id: z.string(), body: z.string() }, async (a) => text(await client.inboxAction({ action: "note", conversation_id: a.conversation_id, body: a.body })));
64
64
  server.tool("resolve_conversation", "Mark a support conversation resolved (status='closed'). A later visitor message reopens it.", { conversation_id: z.string() }, async (a) => text(await client.inboxAction({ action: "resolve", conversation_id: a.conversation_id })));
65
+ server.tool("list_bookings", "List scheduled bookings (calls/meetings) — upcoming confirmed ones by default; pass include='all' for past + cancelled. Each has id, event type, guest, host, start/end, and status.", { include: z.enum(["all"]).optional() }, async (a) => text(await client.listBookings({ include: a.include })));
66
+ server.tool("cancel_booking", "Cancel a booking by id — frees the slot and cancels the linked meeting. Cannot cancel a meeting that has already started.", { booking_id: z.string() }, async (a) => text(await client.schedulingAction({ action: "cancel", booking_id: a.booking_id })));
67
+ server.tool("reschedule_booking", "Move a booking to a new start time (ISO 8601, e.g. 2026-06-20T15:00:00Z). The new time must be a currently-open slot for that event type. Cannot reschedule a meeting that has already started.", { booking_id: z.string(), start: z.string() }, async (a) => text(await client.schedulingAction({ action: "reschedule", booking_id: a.booking_id, start: a.start })));
65
68
  async function main() {
66
69
  await server.connect(new StdioServerTransport());
67
70
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aioproductoscom/mcp",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "ProductOS MCP — manage tickets, read your product brain + analytics, and run the support inbox from Claude Code, Cursor, Codex, and any MCP host.",
5
5
  "type": "module",
6
6
  "license": "MIT",