@jclvsh/iris 0.24.0 → 0.25.1
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 +10 -1
- package/dist/cli.js +2 -0
- package/dist/commands/recap.d.ts +3 -0
- package/dist/commands/recap.js +15 -0
- package/dist/server.js +2 -0
- package/dist/tool-policy.d.ts +2 -2
- package/dist/tool-policy.js +3 -0
- package/dist/tools/recap.d.ts +3 -0
- package/dist/tools/recap.js +12 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -77,6 +77,7 @@ iris campaigns --help
|
|
|
77
77
|
| channels | `ch` | accounts, availability, send | 3 |
|
|
78
78
|
| credits | `cr` | balance, buy | 2 |
|
|
79
79
|
| affiliate | — | (status, link, sign-ups, and commission totals) | 1 |
|
|
80
|
+
| recap | — | (your last 30 days of outreach as counts) | 1 |
|
|
80
81
|
| responder | `r` | status, configure, activity, show, pause, resume, triggers list, triggers add, triggers update, triggers remove, triggers posts | 11 |
|
|
81
82
|
|
|
82
83
|
## MCP Server Configuration
|
|
@@ -139,7 +140,7 @@ https://api.iris-ai.dev/mcp
|
|
|
139
140
|
- Transport: MCP streamable HTTP, `POST` only.
|
|
140
141
|
- Registry: listed in the [official MCP registry](https://registry.modelcontextprotocol.io) as `io.github.JCLVSH/iris`.
|
|
141
142
|
- Auth: `Authorization: Bearer is_live_...` (the same API key; its scopes apply). `initialize` and `tools/list` answer without a key, so a client can read the tool list before signing up; calling a tool needs the key.
|
|
142
|
-
- Tools: a subset of this package. Credits, API key, webhook, and
|
|
143
|
+
- Tools: a subset of this package. Credits, API key, webhook, affiliate, and recap tools are only available through the npm package. The class of each hosted tool is listed at https://www.iris-ai.dev/docs#mcp-hosted.
|
|
143
144
|
|
|
144
145
|
## Available Tools
|
|
145
146
|
|
|
@@ -320,6 +321,14 @@ https://api.iris-ai.dev/mcp
|
|
|
320
321
|
|
|
321
322
|
CLI: `iris affiliate`.
|
|
322
323
|
|
|
324
|
+
### Recap
|
|
325
|
+
|
|
326
|
+
| Tool | Description |
|
|
327
|
+
| ----------- | ------------------------------------------------------------------------------------------------------------ |
|
|
328
|
+
| `get_recap` | Your last 30 days of outreach as counts: sent, conversations, replies, and messages per channel (stdio only) |
|
|
329
|
+
|
|
330
|
+
CLI: `iris recap`.
|
|
331
|
+
|
|
323
332
|
### API Keys
|
|
324
333
|
|
|
325
334
|
| Tool | Description |
|
package/dist/cli.js
CHANGED
|
@@ -19,6 +19,7 @@ import { registerChannelCommands } from "./commands/channels.js";
|
|
|
19
19
|
import { registerCreditCommands } from "./commands/credits.js";
|
|
20
20
|
import { registerResponderCommands } from "./commands/responder.js";
|
|
21
21
|
import { registerAffiliateCommands } from "./commands/affiliate.js";
|
|
22
|
+
import { registerRecapCommands } from "./commands/recap.js";
|
|
22
23
|
const program = new Command()
|
|
23
24
|
.name("iris")
|
|
24
25
|
.description("iris CLI - manage campaigns, contacts, messages, and outreach")
|
|
@@ -54,6 +55,7 @@ try {
|
|
|
54
55
|
registerCreditCommands(program, client);
|
|
55
56
|
registerResponderCommands(program, client);
|
|
56
57
|
registerAffiliateCommands(program, client);
|
|
58
|
+
registerRecapCommands(program, client);
|
|
57
59
|
await program.parseAsync(process.argv);
|
|
58
60
|
}
|
|
59
61
|
catch (error) {
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { formatOutput, handleError, getFormat } from "../cli-utils.js";
|
|
2
|
+
export function registerRecapCommands(program, client) {
|
|
3
|
+
program
|
|
4
|
+
.command("recap")
|
|
5
|
+
.description("your last 30 days of outreach: messages sent, conversations, replies, and messages per channel")
|
|
6
|
+
.action(async () => {
|
|
7
|
+
try {
|
|
8
|
+
const result = await client.get("/recap");
|
|
9
|
+
formatOutput(result, getFormat(program.opts()));
|
|
10
|
+
}
|
|
11
|
+
catch (error) {
|
|
12
|
+
handleError(error);
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
}
|
package/dist/server.js
CHANGED
|
@@ -19,6 +19,7 @@ import { registerAutopilotTools } from "./tools/autopilot.js";
|
|
|
19
19
|
import { registerResponderTools } from "./tools/responder.js";
|
|
20
20
|
import { registerAudienceTools } from "./tools/audiences.js";
|
|
21
21
|
import { registerAffiliateTools } from "./tools/affiliate.js";
|
|
22
|
+
import { registerRecapTools } from "./tools/recap.js";
|
|
22
23
|
export function createIrisServer({ client, version, profile }) {
|
|
23
24
|
const server = new McpServer({ name: "iris", version });
|
|
24
25
|
const registrar = createPolicyRegistrar(server, TOOL_POLICY, profile);
|
|
@@ -38,6 +39,7 @@ export function createIrisServer({ client, version, profile }) {
|
|
|
38
39
|
registerUsageTools(registrar, client);
|
|
39
40
|
registerAutopilotTools(registrar, client);
|
|
40
41
|
registerAffiliateTools(registrar, client);
|
|
42
|
+
registerRecapTools(registrar, client);
|
|
41
43
|
registerResponderTools(registrar, client);
|
|
42
44
|
registerAudienceTools(registrar, client);
|
|
43
45
|
return server;
|
package/dist/tool-policy.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { type PolicyTable, type ToolClass, type ToolPolicy, type ToolProfile } from "./policy.js";
|
|
2
2
|
export type { ToolClass, ToolPolicy, ToolProfile };
|
|
3
|
-
export declare const TOOL_CATEGORIES: readonly ["campaigns", "contacts", "conversations", "messages", "channels", "discovery", "audiences", "autopilot", "responder", "ai", "analytics", "notifications", "usage", "billing", "credits", "affiliate", "API keys", "webhooks"];
|
|
3
|
+
export declare const TOOL_CATEGORIES: readonly ["campaigns", "contacts", "conversations", "messages", "channels", "discovery", "audiences", "autopilot", "responder", "ai", "analytics", "notifications", "usage", "billing", "credits", "affiliate", "recap", "API keys", "webhooks"];
|
|
4
4
|
export type ToolCategory = (typeof TOOL_CATEGORIES)[number];
|
|
5
5
|
export declare const TOOL_POLICY: PolicyTable<ToolCategory>;
|
|
6
|
-
export declare const toolPolicy: (name: string) => ToolPolicy<"campaigns" | "contacts" | "usage" | "messages" | "conversations" | "discovery" | "ai" | "webhooks" | "notifications" | "analytics" | "billing" | "channels" | "credits" | "responder" | "affiliate" | "audiences" | "autopilot" | "API keys">;
|
|
6
|
+
export declare const toolPolicy: (name: string) => ToolPolicy<"campaigns" | "contacts" | "usage" | "messages" | "conversations" | "discovery" | "ai" | "webhooks" | "notifications" | "analytics" | "billing" | "channels" | "credits" | "responder" | "affiliate" | "recap" | "audiences" | "autopilot" | "API keys">;
|
|
7
7
|
export declare const isToolEnabled: (name: string, profile: ToolProfile) => boolean;
|
|
8
8
|
export declare const toolAnnotations: (name: string) => {
|
|
9
9
|
readOnlyHint: boolean;
|
package/dist/tool-policy.js
CHANGED
|
@@ -16,6 +16,7 @@ export const TOOL_CATEGORIES = [
|
|
|
16
16
|
"billing",
|
|
17
17
|
"credits",
|
|
18
18
|
"affiliate",
|
|
19
|
+
"recap",
|
|
19
20
|
"API keys",
|
|
20
21
|
"webhooks",
|
|
21
22
|
];
|
|
@@ -129,6 +130,8 @@ export const TOOL_POLICY = {
|
|
|
129
130
|
get_billing_plans: hosted("billing", "read"),
|
|
130
131
|
// affiliate program (hosted tool set is frozen: npm package only)
|
|
131
132
|
get_affiliate: localOnly("affiliate", "read"),
|
|
133
|
+
// recap (hosted tool set is frozen: npm package only)
|
|
134
|
+
get_recap: localOnly("recap", "read"),
|
|
132
135
|
// credits (agent payments: never hosted)
|
|
133
136
|
get_credit_balance: localOnly("credits", "read"),
|
|
134
137
|
purchase_credit_pack: localOnly("credits", "sensitive"),
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { formatMcpError } from "../cli-utils.js";
|
|
2
|
+
export function registerRecapTools(server, client) {
|
|
3
|
+
server.tool("get_recap", "the user's last 30 days of outreach as counts: messages sent, conversations (one contact in one campaign), how many wrote back, the reply rate as a whole percent, and messages sent per channel. the responder's automatic replies and comment-trigger DMs are left out. counts only: no names or message text. read-only; a public share link is created in the app at /recap. requires read scope.", {}, async () => {
|
|
4
|
+
try {
|
|
5
|
+
const result = await client.get("/recap");
|
|
6
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
7
|
+
}
|
|
8
|
+
catch (error) {
|
|
9
|
+
return formatMcpError(error);
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jclvsh/iris",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.25.1",
|
|
4
4
|
"mcpName": "io.github.JCLVSH/iris",
|
|
5
|
-
"description": "MCP server for the Iris API",
|
|
5
|
+
"description": "MCP server for the Iris API mcprush.com-4c7a712ba11f349a55f22e30",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
8
8
|
"url": "git+https://github.com/JCLVSH/monorepo.git",
|