@retensy/mcp 0.43.0 → 0.44.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/package.json +1 -1
- package/src/index.mjs +5 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@retensy/mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.44.0",
|
|
4
4
|
"description": "MCP server to build and publish Telegram and MAX bot funnels/automations, broadcasts, service integrations, block-based websites (incl. free-layout Zero blocks, designs, templates, custom domains, form leads) and Markdown blog articles in the Retensy Bots service. Zero dependencies.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
package/src/index.mjs
CHANGED
|
@@ -1268,8 +1268,8 @@ const TOOLS = [
|
|
|
1268
1268
|
{ name: "agent_api_key_list", description: "Список API-ключей агента (GET /api/bots/agents/{agentId}/api-keys): {id, name, keyPrefix, createdAt, lastUsedAt} — без секрета (key:null), секрет виден только один раз при agent_api_key_create. Read-only.", inputSchema: { type: "object", properties: { agentId: { type: "string" } }, required: ["agentId"] } },
|
|
1269
1269
|
{ name: "agent_api_key_revoke", description: "Отозвать API-ключ агента (DELETE /api/bots/agents/{agentId}/api-keys/{keyId}) — публичный чат с этим ключом сразу перестаёт отвечать (401). keyId — из agent_api_key_list. Необратимо: только по явной просьбе пользователя, с confirm:true.", inputSchema: { type: "object", properties: { agentId: { type: "string" }, keyId: { type: "string" }, confirm: { type: "boolean" } }, required: ["agentId", "keyId", "confirm"] } },
|
|
1270
1270
|
// ---- Пакеты ответов ИИ сверх тарифа (решение владельца 14.10) ----
|
|
1271
|
-
{ name: "ai_packs", description: "Пакеты ответов ИИ сверх месячного бюджета тарифа: каталог (GET /api/bots/ai-packs) — [{sku,
|
|
1272
|
-
{ name: "ai_pack_purchase", description: "ЭТО ПЛАТЁЖ, не покупка напрямую. Купить пакет ответов ИИ (POST /api/bots/ai-packs/purchase {sku, method}): тот же конвейер оплаты (ЮKassa/крипта), что у смены тарифа — ответ НЕ списывает деньги сам, а возвращает invoiceUrl, ссылку на оплату; пакет зачислится на баланс только после подтверждения платежа пользователем в браузере. sku — из ai_packs; method — \"card\" (по умолчанию), как у subscribe. Только по явной просьбе пользователя, с confirm:true.", inputSchema: { type: "object", properties: { sku: { type: "string", description: "sku из ai_packs, например ai_pack_5000" }, method: { type: "string", description: "card (по умолчанию) и т.п., как у subscribe" }, confirm: { type: "boolean" } }, required: ["sku", "confirm"] } },
|
|
1271
|
+
{ name: "ai_packs", description: "Пакеты ответов ИИ сверх месячного бюджета тарифа: каталог (GET /api/bots/ai-packs): offers — разовые пакеты [{sku, priceRub, tokens, approxAnswers}], periodOffers — те же на 1/3/12 мес. (months, priceRub — итог за период со скидкой, savingsRub — экономия, tokens/approxAnswers — за МЕСЯЦ, начисляются помесячно) (ai_pack_1000 — 1000 ответов/490₽, ai_pack_5000 — 5000/1990₽, ai_pack_20000 — 20000/6990₽; kopecks — внутренняя единица бюджета, справочно, не присылай её). Плюс баланс — aiPackAnswersLeft/aiPackTokensLeft из GET /api/bots/subscription: пакет не сгорает без активного тарифа, но списывается только при нём, ПОСЛЕ месячного бюджета тарифа, FIFO по старшинству покупки (сначала самый старый). Read-only; купить — ai_pack_purchase.", inputSchema: { type: "object", properties: {} } },
|
|
1272
|
+
{ name: "ai_pack_purchase", description: "ЭТО ПЛАТЁЖ, не покупка напрямую. Купить пакет ответов ИИ (POST /api/bots/ai-packs/purchase {sku, method}): тот же конвейер оплаты (ЮKassa/крипта), что у смены тарифа — ответ НЕ списывает деньги сам, а возвращает invoiceUrl, ссылку на оплату; пакет зачислится на баланс только после подтверждения платежа пользователем в браузере. sku — из ai_packs; method — \"card\" (по умолчанию), как у subscribe. Только по явной просьбе пользователя, с confirm:true.", inputSchema: { type: "object", properties: { sku: { type: "string", description: "sku из ai_packs, например ai_pack_5000" }, period: { type: "integer", enum: [1, 3, 12], description: "период, мес.: 1 (по умолчанию), 3 (скидка 10%) или 12 (скидка 20%) — токены начисляются каждый месяц, не сразу; можно вместо этого передать sku периода из periodOffers (ai_pack_5000_m3)" }, method: { type: "string", description: "card (по умолчанию) и т.п., как у subscribe" }, confirm: { type: "boolean" } }, required: ["sku", "confirm"] } },
|
|
1273
1273
|
];
|
|
1274
1274
|
|
|
1275
1275
|
async function handleCall(params) {
|
|
@@ -2701,7 +2701,9 @@ async function handleCall(params) {
|
|
|
2701
2701
|
const sku = String(a.sku ?? "").trim();
|
|
2702
2702
|
if (!sku) throw new Error("Передай sku — из ai_packs.");
|
|
2703
2703
|
if (a.confirm !== true) throw new Error("Это платёж. Спроси пользователя и повтори с confirm:true.");
|
|
2704
|
-
const
|
|
2704
|
+
const period = a.period === undefined ? undefined : Number(a.period);
|
|
2705
|
+
if (period !== undefined && ![1, 3, 12].includes(period)) throw new Error("period: 1, 3 или 12 месяцев.");
|
|
2706
|
+
const r = await api("/api/bots/ai-packs/purchase", { method: "POST", body: { sku, method: a.method || "card", ...(period ? { period } : {}) } });
|
|
2705
2707
|
return okResult({ ...r, hint: "Пакет зачислится после подтверждения оплаты по invoiceUrl — ничего не списано автоматически." });
|
|
2706
2708
|
}
|
|
2707
2709
|
default:
|