@advertising-chat/mcp 0.2.1 → 0.17.3
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 +123 -18
- package/bin/auth.d.ts +46 -0
- package/bin/auth.js +186 -0
- package/bin/auth.js.map +1 -0
- package/bin/cli.js +79 -11
- package/bin/cli.js.map +1 -1
- package/bin/client.d.ts +70 -0
- package/bin/client.js +121 -0
- package/bin/client.js.map +1 -0
- package/bin/docs.d.ts +66 -0
- package/bin/docs.js +247 -0
- package/bin/docs.js.map +1 -0
- package/bin/flow/flowSchema.d.ts +298 -0
- package/bin/flow/flowSchema.js +234 -0
- package/bin/flow/flowSchema.js.map +1 -0
- package/bin/flow/flowValidator.d.ts +15 -0
- package/bin/flow/flowValidator.js +179 -0
- package/bin/flow/flowValidator.js.map +1 -0
- package/bin/flow/flowZod.d.ts +117 -0
- package/bin/flow/flowZod.js +130 -0
- package/bin/flow/flowZod.js.map +1 -0
- package/bin/format.d.ts +14 -0
- package/bin/format.js +50 -0
- package/bin/format.js.map +1 -0
- package/bin/index.d.ts +23 -1
- package/bin/index.js +65 -4
- package/bin/index.js.map +1 -1
- package/bin/routeInventory.d.ts +69 -0
- package/bin/routeInventory.js +201 -0
- package/bin/routeInventory.js.map +1 -0
- package/bin/serve.d.ts +24 -0
- package/bin/serve.js +196 -0
- package/bin/serve.js.map +1 -0
- package/bin/server.d.ts +24 -36
- package/bin/server.js +54 -182
- package/bin/server.js.map +1 -1
- package/bin/tool.d.ts +84 -0
- package/bin/tool.js +39 -0
- package/bin/tool.js.map +1 -0
- package/bin/tools/account.d.ts +2 -0
- package/bin/tools/account.js +47 -0
- package/bin/tools/account.js.map +1 -0
- package/bin/tools/attributes.d.ts +10 -0
- package/bin/tools/attributes.js +200 -0
- package/bin/tools/attributes.js.map +1 -0
- package/bin/tools/campaigns.d.ts +12 -0
- package/bin/tools/campaigns.js +230 -0
- package/bin/tools/campaigns.js.map +1 -0
- package/bin/tools/decisions.d.ts +14 -0
- package/bin/tools/decisions.js +309 -0
- package/bin/tools/decisions.js.map +1 -0
- package/bin/tools/docs.d.ts +3 -0
- package/bin/tools/docs.js +55 -0
- package/bin/tools/docs.js.map +1 -0
- package/bin/tools/index.d.ts +21 -0
- package/bin/tools/index.js +60 -0
- package/bin/tools/index.js.map +1 -0
- package/bin/tools/moments.d.ts +9 -0
- package/bin/tools/moments.js +143 -0
- package/bin/tools/moments.js.map +1 -0
- package/bin/tools/network.d.ts +5 -0
- package/bin/tools/network.js +99 -0
- package/bin/tools/network.js.map +1 -0
- package/bin/tools/offers.d.ts +11 -0
- package/bin/tools/offers.js +239 -0
- package/bin/tools/offers.js.map +1 -0
- package/bin/tools/results.d.ts +18 -0
- package/bin/tools/results.js +116 -0
- package/bin/tools/results.js.map +1 -0
- package/bin/tools/rules.d.ts +9 -0
- package/bin/tools/rules.js +318 -0
- package/bin/tools/rules.js.map +1 -0
- package/bin/tools/settings.d.ts +3 -0
- package/bin/tools/settings.js +54 -0
- package/bin/tools/settings.js.map +1 -0
- package/bin/tools/shared.d.ts +50 -0
- package/bin/tools/shared.js +171 -0
- package/bin/tools/shared.js.map +1 -0
- package/bin/tools/translation.d.ts +6 -0
- package/bin/tools/translation.js +139 -0
- package/bin/tools/translation.js.map +1 -0
- package/bin/version.d.ts +2 -0
- package/bin/version.js +6 -0
- package/bin/version.js.map +1 -0
- package/package.json +10 -7
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.translationTools = exports.describeRule = exports.previewRuleImpact = exports.translateRuleText = exports.CARD_FIELDS = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Rules in plain language: an instruction translated into a change to one
|
|
6
|
+
* rule (`translate_rule_text`), a saved rule described as its offer card
|
|
7
|
+
* (`describe_rule`), and how much recent traffic a draft would match
|
|
8
|
+
* (`preview_rule_impact`). All three are reads: translation proposes a
|
|
9
|
+
* change and saves nothing; saving is `create_rule` or `update_rule`.
|
|
10
|
+
*/
|
|
11
|
+
const offer_rules_1 = require("@advertising-chat/offer-rules");
|
|
12
|
+
const zod_1 = require("zod");
|
|
13
|
+
const tool_1 = require("../tool");
|
|
14
|
+
const shared_1 = require("./shared");
|
|
15
|
+
const R = offer_rules_1.RuleInput.shape;
|
|
16
|
+
/** The offer card fields a translation can target (design §7.1). */
|
|
17
|
+
exports.CARD_FIELDS = [
|
|
18
|
+
'offer',
|
|
19
|
+
'whoSeesIt',
|
|
20
|
+
'when',
|
|
21
|
+
'where',
|
|
22
|
+
'notShownTo',
|
|
23
|
+
'howOften',
|
|
24
|
+
'schedule',
|
|
25
|
+
'priority',
|
|
26
|
+
];
|
|
27
|
+
exports.translateRuleText = (0, tool_1.defineTool)({
|
|
28
|
+
name: 'translate_rule_text',
|
|
29
|
+
title: 'Translate an instruction into a rule change',
|
|
30
|
+
description: 'Turn what the user wrote in plain language into a change to one rule, checked against the agent’s catalog, moments, and the org’s offers, and read back as the offer card. Give the agent, the card field being edited (target), the instruction in the user’s words, and the rule: ruleId for a saved rule, or rule for a draft with unsaved changes. Nothing is saved. The outcome is one of: ok, with policy (fields to set), clear (fields to remove), readBack (the card after the change and which fields changed), and warnings (data the agent does not send yet, has not documented, or sends rarely): show the user the read-back and the warnings, preview_rule_impact the result, and save with update_rule (clear fields as null) or create_rule once they agree, passing instructions with the user’s words for each field the change set or cleared. clarify, with a question (message) and choices: ask the user, then translate again with the same instruction and clarifications listing every question asked so far with its answer, in order; record the instruction as the user’s words with the answers in parentheses. needs_data, when the agent does not send what the rule needs: relay the message and the note drafted for the agent’s team; add_attribute or create_moment registers what it proposes, and a rule on it matches no one until the agent sends it. unsupported, when the rule model cannot express it: say so; offer the nearest rule only if one is given, and say how it differs. If the user takes it, save it with instructions null for the fields it changed: their words describe a rule it does not quite write. Each call counts toward the workspace’s daily Assistant usage. Maps to POST /system/copilot/translate.',
|
|
31
|
+
kind: 'read',
|
|
32
|
+
roleFloor: 'viewer',
|
|
33
|
+
capability: 'offer-manager',
|
|
34
|
+
input: {
|
|
35
|
+
application: shared_1.application,
|
|
36
|
+
target: zod_1.z
|
|
37
|
+
.enum([...exports.CARD_FIELDS, 'rule'])
|
|
38
|
+
.optional()
|
|
39
|
+
.describe('The card field the instruction is about: offer, whoSeesIt (audience), when (moments), where (channels), notShownTo (exclusions), howOften (frequency), schedule, or priority. A field’s translation changes only that field. Default rule: the whole rule.'),
|
|
40
|
+
instruction: zod_1.z
|
|
41
|
+
.string()
|
|
42
|
+
.trim()
|
|
43
|
+
.min(1)
|
|
44
|
+
.max(2000)
|
|
45
|
+
.describe('What the user wrote, in their words, e.g. "prepaid customers who hit their data limit twice in a row".'),
|
|
46
|
+
clarifications: zod_1.z
|
|
47
|
+
.array(zod_1.z.strictObject({
|
|
48
|
+
question: zod_1.z.string().trim().min(1).max(500),
|
|
49
|
+
answer: zod_1.z.string().trim().min(1).max(500),
|
|
50
|
+
}))
|
|
51
|
+
.min(1)
|
|
52
|
+
.max(5)
|
|
53
|
+
.optional()
|
|
54
|
+
.describe('After one or more clarify outcomes: each question asked (its message) and the user’s answer, a choice or their own words, in the order asked. Send the same instruction as before.'),
|
|
55
|
+
ruleId: (0, shared_1.id)('rule')
|
|
56
|
+
.optional()
|
|
57
|
+
.describe('A saved rule to change. Omit with rule, or for a new rule.'),
|
|
58
|
+
rule: zod_1.z
|
|
59
|
+
.record(zod_1.z.string(), zod_1.z.unknown())
|
|
60
|
+
.optional()
|
|
61
|
+
.describe('The draft as it stands, unsaved changes included, with the fields of create_rule. Takes precedence over ruleId.'),
|
|
62
|
+
},
|
|
63
|
+
async run({ client }, args) {
|
|
64
|
+
const { rule, ...rest } = (0, shared_1.defined)(args);
|
|
65
|
+
let draft;
|
|
66
|
+
if (rule) {
|
|
67
|
+
const parsed = offer_rules_1.RuleDraft.safeParse({
|
|
68
|
+
...rule,
|
|
69
|
+
application: rule.application ?? args.application,
|
|
70
|
+
});
|
|
71
|
+
if (!parsed.success) {
|
|
72
|
+
throw new shared_1.ToolInputError(`The draft is not valid:\n${(0, shared_1.issues)(parsed.error)}`);
|
|
73
|
+
}
|
|
74
|
+
if (parsed.data.application !== args.application) {
|
|
75
|
+
throw new shared_1.ToolInputError('The draft belongs to a different agent.');
|
|
76
|
+
}
|
|
77
|
+
draft = parsed.data;
|
|
78
|
+
}
|
|
79
|
+
const answer = await client.post('/copilot/translate', {
|
|
80
|
+
...rest,
|
|
81
|
+
...(draft !== undefined && { rule: draft }),
|
|
82
|
+
});
|
|
83
|
+
// Model, timing, and token counts are for the console; leave them out.
|
|
84
|
+
const { meta: _meta, ...outcome } = answer ?? {}; // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
85
|
+
return outcome;
|
|
86
|
+
},
|
|
87
|
+
});
|
|
88
|
+
exports.previewRuleImpact = (0, tool_1.defineTool)({
|
|
89
|
+
name: 'preview_rule_impact',
|
|
90
|
+
title: 'Preview a rule’s reach',
|
|
91
|
+
description: 'Estimate how much recent traffic a draft rule would match, before saving it: the percentage of a sample of up to 5,000 requests per moment from the last 7 days, the estimated number of distinct customers, why the rest did not match, and flags with notes (small or empty sample, nothing or everything matched, approximations). Read the notes back to the user; "no one matched" or "everyone matched" usually means the instruction was misread or the data is missing. A sample_building flag means some moments had no sample yet and were left out while one is taken; say so, and preview again in about a minute for the full estimate. Send the draft as it stands; only the agent and moments are required. Maps to POST /system/offer-manager/preview.',
|
|
92
|
+
kind: 'read',
|
|
93
|
+
roleFloor: 'viewer',
|
|
94
|
+
capability: 'offer-manager',
|
|
95
|
+
input: {
|
|
96
|
+
application: shared_1.application,
|
|
97
|
+
adUnits: R.adUnits.describe('The moment ids the draft applies to.'),
|
|
98
|
+
creatives: R.creatives
|
|
99
|
+
.optional()
|
|
100
|
+
.describe('The offer ids, for conditions on this offer’s history.'),
|
|
101
|
+
audience: R.audience,
|
|
102
|
+
exclusions: R.exclusions,
|
|
103
|
+
channels: R.channels,
|
|
104
|
+
schedule: R.schedule,
|
|
105
|
+
frequency: R.frequency,
|
|
106
|
+
id: (0, shared_1.id)('rule')
|
|
107
|
+
.optional()
|
|
108
|
+
.describe('The saved rule, when previewing a change to one.'),
|
|
109
|
+
},
|
|
110
|
+
async run({ client }, args) {
|
|
111
|
+
const { id: ruleId, ...draft } = (0, shared_1.defined)(args);
|
|
112
|
+
const parsed = offer_rules_1.PreviewDraft.safeParse({
|
|
113
|
+
...draft,
|
|
114
|
+
...(ruleId && { _id: ruleId }),
|
|
115
|
+
});
|
|
116
|
+
if (!parsed.success) {
|
|
117
|
+
throw new shared_1.ToolInputError(`The draft is not valid:\n${(0, shared_1.issues)(parsed.error)}`);
|
|
118
|
+
}
|
|
119
|
+
return client.post(`${shared_1.OM}/preview`, { rule: parsed.data });
|
|
120
|
+
},
|
|
121
|
+
});
|
|
122
|
+
exports.describeRule = (0, tool_1.defineTool)({
|
|
123
|
+
name: 'describe_rule',
|
|
124
|
+
title: 'Describe a rule',
|
|
125
|
+
description: 'A saved rule in plain language: its offer card, one sentence per field (agent, offer, who sees it, when, where, not shown to, how often, schedule, priority, status), written from the rule itself with its agent, moment, offer, and attribute names, plus a policy hash that changes when what the rule does changes. Maps to GET /system/offer-manager/describe/{id}.',
|
|
126
|
+
kind: 'read',
|
|
127
|
+
roleFloor: 'viewer',
|
|
128
|
+
capability: 'offer-manager',
|
|
129
|
+
input: { id: (0, shared_1.id)('rule') },
|
|
130
|
+
async run({ client }, { id: ruleId }) {
|
|
131
|
+
return client.get(`${shared_1.OM}/describe/${(0, shared_1.enc)(ruleId)}`);
|
|
132
|
+
},
|
|
133
|
+
});
|
|
134
|
+
exports.translationTools = [
|
|
135
|
+
exports.translateRuleText,
|
|
136
|
+
exports.describeRule,
|
|
137
|
+
exports.previewRuleImpact,
|
|
138
|
+
];
|
|
139
|
+
//# sourceMappingURL=translation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translation.js","sourceRoot":"","sources":["../../src/tools/translation.ts"],"names":[],"mappings":"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"}
|
package/bin/version.d.ts
ADDED
package/bin/version.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":";;;AAAA,2FAA2F;AAC9E,QAAA,OAAO,GAAG,QAAQ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@advertising-chat/mcp",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "MCP server for Advertising.chat
|
|
3
|
+
"version": "0.17.3",
|
|
4
|
+
"description": "MCP server for Advertising.chat: manage Offer Manager (agents, moments, rules, offers, decisions) with your own login, or serve in-chat ads with an API key",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Advertising.chat",
|
|
7
7
|
"homepage": "https://docs.advertising.chat/",
|
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
"mcp",
|
|
15
15
|
"model-context-protocol",
|
|
16
16
|
"advertising",
|
|
17
|
+
"offer-manager",
|
|
17
18
|
"ads",
|
|
18
|
-
"llm"
|
|
19
|
-
"monetization"
|
|
19
|
+
"llm"
|
|
20
20
|
],
|
|
21
21
|
"main": "bin/index.js",
|
|
22
22
|
"types": "bin/index.d.ts",
|
|
@@ -37,8 +37,11 @@
|
|
|
37
37
|
"node": ">=18"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@advertising-chat/
|
|
41
|
-
"@
|
|
42
|
-
"
|
|
40
|
+
"@advertising-chat/offer-rules": "^2.6.0",
|
|
41
|
+
"@advertising-chat/sdk": "^0.17.3",
|
|
42
|
+
"@modelcontextprotocol/sdk": "^1.32.2",
|
|
43
|
+
"ajv": "^8.17.1",
|
|
44
|
+
"ajv-formats": "^3.0.1",
|
|
45
|
+
"zod": "^4.6.7"
|
|
43
46
|
}
|
|
44
47
|
}
|