@jclvsh/iris 0.16.0 → 0.18.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.
@@ -38,6 +38,18 @@ export function registerContactCommands(program, client) {
38
38
  handleError(error);
39
39
  }
40
40
  });
41
+ contacts
42
+ .command("handles <id>")
43
+ .description("the contact's social handles - verify a handle write landed")
44
+ .action(async (id) => {
45
+ try {
46
+ const result = await client.get(`/contacts/${id}/handles`);
47
+ formatOutput(result, getFormat(program.opts()));
48
+ }
49
+ catch (error) {
50
+ handleError(error);
51
+ }
52
+ });
41
53
  contacts
42
54
  .command("create")
43
55
  .description("create a new contact")
@@ -72,6 +72,18 @@ export function registerMessageCommands(program, client) {
72
72
  handleError(error);
73
73
  }
74
74
  });
75
+ messages
76
+ .command("mark-sent <id>")
77
+ .description("mark a pending manual-channel draft (tiktok / instagram cold first-touch) as sent outside the platform")
78
+ .action(async (id) => {
79
+ try {
80
+ const result = await client.post(`/messages/${id}/mark-sent`);
81
+ formatOutput(result, getFormat(program.opts()));
82
+ }
83
+ catch (error) {
84
+ handleError(error);
85
+ }
86
+ });
75
87
  messages
76
88
  .command("feedback <id>")
77
89
  .description("submit feedback to improve future AI generations")
@@ -50,6 +50,17 @@ export function registerContactTools(server, client) {
50
50
  return formatMcpError(error);
51
51
  }
52
52
  });
53
+ server.tool("get_contact_handles", "the contact's social handles (instagram/twitter/tiktok) - verify a handle write landed. requires read scope.", {
54
+ id: z.string().uuid().describe("contact ID"),
55
+ }, async ({ id }) => {
56
+ try {
57
+ const result = await client.get(`/contacts/${id}/handles`);
58
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
59
+ }
60
+ catch (error) {
61
+ return formatMcpError(error);
62
+ }
63
+ });
53
64
  server.tool("update_contact", "update a contact's details. requires write scope.", {
54
65
  id: z.string().uuid().describe("contact ID"),
55
66
  email: z.string().email().optional().describe("email address"),
@@ -55,6 +55,17 @@ export function registerMessageTools(server, client) {
55
55
  return formatMcpError(error);
56
56
  }
57
57
  });
58
+ server.tool("mark_message_sent", "mark a pending manual-channel draft (tiktok, or instagram cold first-touch) as sent outside the platform. API-sendable drafts must use approve_message instead. requires write scope.", {
59
+ id: z.string().uuid().describe("approval queue item ID"),
60
+ }, async ({ id }) => {
61
+ try {
62
+ const result = await client.post(`/messages/${id}/mark-sent`);
63
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
64
+ }
65
+ catch (error) {
66
+ return formatMcpError(error);
67
+ }
68
+ });
58
69
  server.tool("submit_message_feedback", "submit feedback on an AI-generated message to improve future generations. requires send scope.", {
59
70
  id: z.string().uuid().describe("message ID"),
60
71
  feedback: z.string().min(1).max(2000).describe("feedback text"),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jclvsh/iris",
3
- "version": "0.16.0",
3
+ "version": "0.18.0",
4
4
  "description": "MCP server for the Iris API",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",