@arnaudjnn/billing-tools 0.63.2 → 0.64.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/dist/allowance.d.ts +20 -0
- package/dist/allowance.d.ts.map +1 -1
- package/dist/allowance.js +30 -5
- package/dist/allowance.js.map +1 -1
- package/dist/auth.d.ts +48 -0
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +53 -2
- package/dist/auth.js.map +1 -1
- package/dist/billing.d.ts +59 -3
- package/dist/billing.d.ts.map +1 -1
- package/dist/billing.js +73 -12
- package/dist/billing.js.map +1 -1
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +162 -1
- package/dist/cli/commands.js.map +1 -1
- package/dist/create-billing.d.ts +1 -1
- package/dist/doctor.d.ts +6 -1
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +66 -1
- package/dist/doctor.js.map +1 -1
- package/dist/index.d.ts +5 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -4
- package/dist/index.js.map +1 -1
- package/dist/metering.js +2 -2
- package/dist/metering.js.map +1 -1
- package/dist/plan-model.d.ts +11 -1
- package/dist/plan-model.d.ts.map +1 -1
- package/dist/plan-model.js +3 -2
- package/dist/plan-model.js.map +1 -1
- package/dist/subscription.d.ts +51 -17
- package/dist/subscription.d.ts.map +1 -1
- package/dist/subscription.js +153 -43
- package/dist/subscription.js.map +1 -1
- package/dist/tools/billing.d.ts +16 -1
- package/dist/tools/billing.d.ts.map +1 -1
- package/dist/tools/billing.js +7 -2
- package/dist/tools/billing.js.map +1 -1
- package/dist/tools/management.d.ts.map +1 -1
- package/dist/tools/management.js +92 -17
- package/dist/tools/management.js.map +1 -1
- package/dist/tools/profile.d.ts +4 -0
- package/dist/tools/profile.d.ts.map +1 -0
- package/dist/tools/profile.js +171 -0
- package/dist/tools/profile.js.map +1 -0
- package/dist/tools/register.d.ts +17 -1
- package/dist/tools/register.d.ts.map +1 -1
- package/dist/tools/register.js +28 -3
- package/dist/tools/register.js.map +1 -1
- package/dist/tools/subscription.d.ts +14 -0
- package/dist/tools/subscription.d.ts.map +1 -0
- package/dist/tools/subscription.js +167 -0
- package/dist/tools/subscription.js.map +1 -0
- package/dist/topup.d.ts +83 -1
- package/dist/topup.d.ts.map +1 -1
- package/dist/topup.js +107 -2
- package/dist/topup.js.map +1 -1
- package/dist/types.d.ts +18 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -1
- package/package.json +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"management.d.ts","sourceRoot":"","sources":["../../src/tools/management.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"management.d.ts","sourceRoot":"","sources":["../../src/tools/management.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAYlE,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAiB/D,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,cAAc,EACtB,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,WAAW,CAAC;IAAC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;CAAO,QA4R5F"}
|
package/dist/tools/management.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { enforceAccess } from "../auth.js";
|
|
2
|
+
import { currentPrincipal, enforceAccess, enforceAdmin } from "../auth.js";
|
|
3
3
|
import { getBillingCustomerId, usageSince, stripeConfigured } from "../billing.js";
|
|
4
|
-
import { requestTopUp, listTopUpRequests, approveTopUp, denyTopUp } from "../topup.js";
|
|
4
|
+
import { requestTopUp, listTopUpRequests, approveTopUp, denyTopUp, grantExtraAllowance, } from "../topup.js";
|
|
5
|
+
import { currentCycle } from "../allowance.js";
|
|
5
6
|
import { assignSeatType, listSeatAssignments } from "../seats.js";
|
|
6
7
|
import { normalizePlans } from "../plans.js";
|
|
7
8
|
import { usageSummary } from "../usage.js";
|
|
@@ -11,19 +12,24 @@ function json(obj) {
|
|
|
11
12
|
function err(text) {
|
|
12
13
|
return { isError: true, content: [{ type: "text", text }] };
|
|
13
14
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
function monthKey() {
|
|
19
|
-
const d = new Date();
|
|
20
|
-
return `${d.getUTCFullYear()}-${String(d.getUTCMonth() + 1).padStart(2, "0")}`;
|
|
21
|
-
}
|
|
15
|
+
// No local "what cycle is it" any more. These tools file and report things
|
|
16
|
+
// against a cycle, and the meter reads them back, so both go through
|
|
17
|
+
// `currentCycle` — see the note there for what drifting apart cost.
|
|
22
18
|
// Workspace-management tools: usage read, per-member seat assignment, and the
|
|
23
19
|
// user-seat top-up request/approval flow. All ORG-SCOPED (auth = the org's key /
|
|
24
20
|
// session). Seat + top-up tools require the adapter's metadata methods; when they
|
|
25
21
|
// are absent (an adapter without an org-metadata store) only get_usage registers.
|
|
26
22
|
export function registerManagementTools(server, adapter, config, opts = {}) {
|
|
23
|
+
// Every tool here that names a cycle resolves it the same way the meter does,
|
|
24
|
+
// including the plan lookup — a pooled or annual plan's cycle is its
|
|
25
|
+
// subscription period, and guessing it from the calendar silently misfiles.
|
|
26
|
+
const cycleFor = async (orgId) => currentCycle(adapter, {
|
|
27
|
+
orgId,
|
|
28
|
+
plans: opts.plans,
|
|
29
|
+
plan: opts.resolvePlan
|
|
30
|
+
? await opts.resolvePlan(orgId)
|
|
31
|
+
: ((await adapter.getSubscription?.(orgId))?.plan ?? null),
|
|
32
|
+
});
|
|
27
33
|
server.tool("get_usage", `Get your workspace's token usage for the current cycle (summed from the Stripe
|
|
28
34
|
balance-transaction ledger). Optionally filter by caller (user/api) or look back a
|
|
29
35
|
number of days instead of the calendar month.`, {
|
|
@@ -39,10 +45,15 @@ number of days instead of the calendar month.`, {
|
|
|
39
45
|
const cid = await getBillingCustomerId(adapter, auth.orgId);
|
|
40
46
|
if (!cid)
|
|
41
47
|
return json({ usage: 0, note: "No billing account yet." });
|
|
42
|
-
|
|
48
|
+
// The billing cycle, not the calendar month: on an annual plan those differ
|
|
49
|
+
// by up to eleven months, and this tool was reporting the wrong one.
|
|
50
|
+
const cycle = await cycleFor(auth.orgId);
|
|
51
|
+
const since = since_days
|
|
52
|
+
? Math.floor(Date.now() / 1000) - since_days * 86400
|
|
53
|
+
: Math.floor(cycle.start / 1000);
|
|
43
54
|
const filter = caller_kind ? { callerKind: caller_kind, callerId: caller_id } : undefined;
|
|
44
55
|
const usage = await usageSince(cid, since, filter);
|
|
45
|
-
return json({ usage, since, cycle:
|
|
56
|
+
return json({ usage, since, cycle: cycle.key, filter: filter ?? null });
|
|
46
57
|
});
|
|
47
58
|
// What an agent needs BEFORE it spends: every window that applies, how much of
|
|
48
59
|
// each is gone, and when each resets. Without this a caller can only discover a
|
|
@@ -124,7 +135,9 @@ the assignment (back to the default seat).`, {
|
|
|
124
135
|
member_id: z.string().describe("The member's user id"),
|
|
125
136
|
seat_type: z.string().optional().describe("Seat type key, or empty to clear"),
|
|
126
137
|
}, async ({ member_id, seat_type }) => {
|
|
127
|
-
|
|
138
|
+
// Who sits on which seat decides who spends what, so it is an admin action
|
|
139
|
+
// wherever the caller is a known person.
|
|
140
|
+
const auth = await enforceAdmin(adapter, "assign_seat_type");
|
|
128
141
|
if ("isError" in auth)
|
|
129
142
|
return auth;
|
|
130
143
|
const st = seat_type && seat_type.length ? seat_type : null;
|
|
@@ -145,13 +158,26 @@ allowance members have asked the owner to grant this cycle.`, {}, async () => {
|
|
|
145
158
|
approve_top_up). Use when a user seat has hit its per-cycle pack.`, {
|
|
146
159
|
member_id: z.string().describe("The member the extra allowance is for"),
|
|
147
160
|
amount: z.number().int().min(1).describe("Extra tokens requested (e.g. 25% of the seat pack)"),
|
|
148
|
-
cycle: z
|
|
161
|
+
cycle: z
|
|
162
|
+
.string()
|
|
163
|
+
.optional()
|
|
164
|
+
.describe("Cycle key the grant applies to. Defaults to the current billing cycle — pass one only to backfill"),
|
|
149
165
|
}, async ({ member_id, amount, cycle }) => {
|
|
150
166
|
const auth = await enforceAccess(adapter);
|
|
151
167
|
if ("isError" in auth)
|
|
152
168
|
return auth;
|
|
169
|
+
// Requesting is not an admin action — asking is the whole point. But a
|
|
170
|
+
// known non-admin caller may only ask for THEMSELVES: `member_id` arrives
|
|
171
|
+
// from the caller, and an unchecked one lets a member queue a grant against
|
|
172
|
+
// anyone's seat, which an owner approving in bulk would rubber-stamp.
|
|
173
|
+
const principal = currentPrincipal();
|
|
174
|
+
if (principal && member_id !== principal.userId) {
|
|
175
|
+
const admin = principal.isAdmin ?? (await adapter.isAdmin?.(auth.orgId, principal.userId)) ?? true;
|
|
176
|
+
if (!admin)
|
|
177
|
+
return err("Forbidden (403): you can only request a top-up for yourself.");
|
|
178
|
+
}
|
|
153
179
|
const id = crypto.randomUUID();
|
|
154
|
-
const c = cycle ??
|
|
180
|
+
const c = cycle ?? (await cycleFor(auth.orgId)).key;
|
|
155
181
|
await requestTopUp(adapter, auth.orgId, {
|
|
156
182
|
id,
|
|
157
183
|
memberId: member_id,
|
|
@@ -163,7 +189,7 @@ approve_top_up). Use when a user seat has hit its per-cycle pack.`, {
|
|
|
163
189
|
});
|
|
164
190
|
server.tool("approve_top_up", `Approve a pending top-up request → grants the requested extra tokens to that
|
|
165
191
|
member for the cycle (added on top of their seat pack by the meter).`, { request_id: z.string().describe("The request id from list_top_up_requests") }, async ({ request_id }) => {
|
|
166
|
-
const auth = await
|
|
192
|
+
const auth = await enforceAdmin(adapter, "approve_top_up");
|
|
167
193
|
if ("isError" in auth)
|
|
168
194
|
return auth;
|
|
169
195
|
const r = await approveTopUp(adapter, auth.orgId, request_id);
|
|
@@ -171,8 +197,57 @@ member for the cycle (added on top of their seat pack by the meter).`, { request
|
|
|
171
197
|
return err(`Request not found or already handled: ${request_id}`);
|
|
172
198
|
return json({ status: "approved", request_id });
|
|
173
199
|
});
|
|
174
|
-
server.tool("
|
|
200
|
+
server.tool("grant_top_up", `Grant a member extra allowance for the current cycle WITHOUT waiting for them to
|
|
201
|
+
request it, as a percentage of their own seat pack (default 25%). Admin action: the
|
|
202
|
+
caller's own permission is checked by the app, not here.`, {
|
|
203
|
+
member_id: z.string().describe("WorkOS user id of the member to top up"),
|
|
204
|
+
percent: z
|
|
205
|
+
.number()
|
|
206
|
+
.min(1)
|
|
207
|
+
.max(1000)
|
|
208
|
+
.optional()
|
|
209
|
+
.default(25)
|
|
210
|
+
.describe("Percentage of the member's seat pack to add (25 = +25%)"),
|
|
211
|
+
tokens: z
|
|
212
|
+
.number()
|
|
213
|
+
.int()
|
|
214
|
+
.min(1)
|
|
215
|
+
.optional()
|
|
216
|
+
.describe("Absolute tokens instead of a percentage"),
|
|
217
|
+
}, async ({ member_id, percent, tokens }) => {
|
|
175
218
|
const auth = await enforceAccess(adapter);
|
|
219
|
+
if ("isError" in auth)
|
|
220
|
+
return auth;
|
|
221
|
+
if (!opts.plans)
|
|
222
|
+
return err("No plans configured.");
|
|
223
|
+
const plan = opts.resolvePlan
|
|
224
|
+
? await opts.resolvePlan(auth.orgId)
|
|
225
|
+
: ((await adapter.getSubscription?.(auth.orgId))?.plan ?? null);
|
|
226
|
+
const res = await grantExtraAllowance(adapter, {
|
|
227
|
+
orgId: auth.orgId,
|
|
228
|
+
plans: opts.plans,
|
|
229
|
+
plan,
|
|
230
|
+
memberId: member_id,
|
|
231
|
+
// An explicit token figure wins; otherwise the percentage (default 25).
|
|
232
|
+
...(tokens != null ? { amount: tokens } : { percent }),
|
|
233
|
+
});
|
|
234
|
+
if (!res.ok) {
|
|
235
|
+
return err(res.reason === "not_capped"
|
|
236
|
+
? "This plan has no per-seat packs, so extra allowance cannot be granted. " +
|
|
237
|
+
"Its limits are workspace-wide (see get_usage_limits)."
|
|
238
|
+
: "Invalid amount.");
|
|
239
|
+
}
|
|
240
|
+
return json({
|
|
241
|
+
status: "granted",
|
|
242
|
+
member_id,
|
|
243
|
+
granted: res.granted,
|
|
244
|
+
seat_pack: res.packSize,
|
|
245
|
+
total_extra_this_cycle: res.total,
|
|
246
|
+
cycle: res.cycle,
|
|
247
|
+
});
|
|
248
|
+
});
|
|
249
|
+
server.tool("deny_top_up", `Deny a pending top-up request.`, { request_id: z.string().describe("The request id from list_top_up_requests") }, async ({ request_id }) => {
|
|
250
|
+
const auth = await enforceAdmin(adapter, "deny_top_up");
|
|
176
251
|
if ("isError" in auth)
|
|
177
252
|
return auth;
|
|
178
253
|
const r = await denyTopUp(adapter, auth.orgId, request_id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"management.js","sourceRoot":"","sources":["../../src/tools/management.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"management.js","sourceRoot":"","sources":["../../src/tools/management.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/tools/profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAYpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAyBlD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,QA8K9E"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { enforceAccess, enforceAdmin } from "../auth.js";
|
|
3
|
+
import { stripeConfigured } from "../billing.js";
|
|
4
|
+
import { getBillingProfile, updateBillingProfile } from "../billing-profile.js";
|
|
5
|
+
import { detachPaymentMethod, listPaymentMethods, setDefaultPaymentMethod, } from "../payment-methods.js";
|
|
6
|
+
import { listCustomerTaxIds, setCustomerTaxId } from "../tax-ids.js";
|
|
7
|
+
// The billing account itself: who the invoice is addressed to, what card pays
|
|
8
|
+
// it, and the tax id printed on it. All three existed as library functions and
|
|
9
|
+
// as app UI, and none was reachable from an API, a CLI or an agent — so a
|
|
10
|
+
// customer could be invoiced to the wrong address by every surface except the
|
|
11
|
+
// one they were using.
|
|
12
|
+
//
|
|
13
|
+
// Adding a CARD stays out on purpose: it needs a SetupIntent confirmed in a
|
|
14
|
+
// browser with Stripe.js. `get_billing_portal` is the headless answer, and it is
|
|
15
|
+
// already a tool.
|
|
16
|
+
function json(obj) {
|
|
17
|
+
return { content: [{ type: "text", text: JSON.stringify(obj, null, 2) }] };
|
|
18
|
+
}
|
|
19
|
+
// Only used to infer `eu_vat`, which is the one type derivable from a country
|
|
20
|
+
// alone. Anything else must be named by the caller.
|
|
21
|
+
const EU = new Set(("AT BE BG HR CY CZ DK EE FI FR DE GR HU IE IT LV LT LU MT NL PL PT RO SK SI ES SE").split(" "));
|
|
22
|
+
function err(text) {
|
|
23
|
+
return { isError: true, content: [{ type: "text", text }] };
|
|
24
|
+
}
|
|
25
|
+
export function registerProfileTools(server, adapter) {
|
|
26
|
+
server.tool("get_billing_profile", `The workspace's billing details: invoice recipient, company name, billing address
|
|
27
|
+
(which decides the VAT charged), invoice language, and any tax id on file.`, {}, async () => {
|
|
28
|
+
const auth = await enforceAccess(adapter);
|
|
29
|
+
if ("isError" in auth)
|
|
30
|
+
return auth;
|
|
31
|
+
if (!stripeConfigured())
|
|
32
|
+
return err("Billing is not configured (STRIPE_SECRET_KEY unset).");
|
|
33
|
+
const [profile, taxIds] = await Promise.all([
|
|
34
|
+
getBillingProfile(adapter, auth.orgId),
|
|
35
|
+
listCustomerTaxIds(adapter, auth.orgId).catch(() => []),
|
|
36
|
+
]);
|
|
37
|
+
return json({
|
|
38
|
+
invoice_email: profile.invoiceEmail,
|
|
39
|
+
company_name: profile.companyName,
|
|
40
|
+
address: profile.address,
|
|
41
|
+
invoice_locale: profile.invoiceLocale,
|
|
42
|
+
tax_ids: taxIds,
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
server.tool("set_billing_profile", `Update the billing details. Only the fields you pass are changed; pass an empty
|
|
46
|
+
string to clear one. The address determines the tax charged on future invoices —
|
|
47
|
+
Stripe does not reissue invoices already sent.`, {
|
|
48
|
+
invoice_email: z.string().optional().describe("Where invoices are emailed"),
|
|
49
|
+
company_name: z.string().optional().describe("Name printed on the invoice"),
|
|
50
|
+
invoice_locale: z.string().optional().describe('Invoice language, e.g. "it" or "en"'),
|
|
51
|
+
address_line1: z.string().optional(),
|
|
52
|
+
address_line2: z.string().optional(),
|
|
53
|
+
address_city: z.string().optional(),
|
|
54
|
+
address_state: z.string().optional(),
|
|
55
|
+
address_postal_code: z.string().optional(),
|
|
56
|
+
address_country: z.string().optional().describe("Two-letter country code, e.g. IT"),
|
|
57
|
+
}, async (args) => {
|
|
58
|
+
const auth = await enforceAdmin(adapter, "set_billing_profile");
|
|
59
|
+
if ("isError" in auth)
|
|
60
|
+
return auth;
|
|
61
|
+
if (!stripeConfigured())
|
|
62
|
+
return err("Billing is not configured (STRIPE_SECRET_KEY unset).");
|
|
63
|
+
// An address is all-or-nothing in Stripe (line1 + country are required), so
|
|
64
|
+
// a partial patch would be rejected. Merge onto what is already stored.
|
|
65
|
+
const anyAddress = [
|
|
66
|
+
args.address_line1,
|
|
67
|
+
args.address_line2,
|
|
68
|
+
args.address_city,
|
|
69
|
+
args.address_state,
|
|
70
|
+
args.address_postal_code,
|
|
71
|
+
args.address_country,
|
|
72
|
+
].some((v) => v !== undefined);
|
|
73
|
+
let address;
|
|
74
|
+
if (anyAddress) {
|
|
75
|
+
const current = (await getBillingProfile(adapter, auth.orgId)).address;
|
|
76
|
+
const line1 = args.address_line1 ?? current?.line1;
|
|
77
|
+
const country = args.address_country ?? current?.country;
|
|
78
|
+
if (!line1 || !country) {
|
|
79
|
+
return err("An address needs at least address_line1 and address_country.");
|
|
80
|
+
}
|
|
81
|
+
address = {
|
|
82
|
+
line1,
|
|
83
|
+
line2: args.address_line2 ?? current?.line2 ?? undefined,
|
|
84
|
+
city: args.address_city ?? current?.city ?? undefined,
|
|
85
|
+
state: args.address_state ?? current?.state ?? undefined,
|
|
86
|
+
postal_code: args.address_postal_code ?? current?.postal_code ?? undefined,
|
|
87
|
+
country,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
const updated = await updateBillingProfile(adapter, auth.orgId, {
|
|
91
|
+
invoiceEmail: args.invoice_email,
|
|
92
|
+
companyName: args.company_name,
|
|
93
|
+
invoiceLocale: args.invoice_locale,
|
|
94
|
+
...(address ? { address } : {}),
|
|
95
|
+
});
|
|
96
|
+
return json({
|
|
97
|
+
status: "ok",
|
|
98
|
+
invoice_email: updated.invoiceEmail,
|
|
99
|
+
company_name: updated.companyName,
|
|
100
|
+
address: updated.address,
|
|
101
|
+
invoice_locale: updated.invoiceLocale,
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
server.tool("set_tax_id", `Set the workspace's tax id (VAT number) as printed on invoices. It applies from
|
|
105
|
+
the next invoice issued — Stripe does not regenerate ones already sent. Pass an
|
|
106
|
+
empty value to remove it.`, {
|
|
107
|
+
value: z.string().describe('The tax id, e.g. "IT01234567890". Empty to remove'),
|
|
108
|
+
type: z.string().optional().describe('Stripe tax id type, e.g. "eu_vat". Inferred from the country when omitted'),
|
|
109
|
+
}, async ({ value, type }) => {
|
|
110
|
+
const auth = await enforceAdmin(adapter, "set_tax_id");
|
|
111
|
+
if ("isError" in auth)
|
|
112
|
+
return auth;
|
|
113
|
+
if (!stripeConfigured())
|
|
114
|
+
return err("Billing is not configured (STRIPE_SECRET_KEY unset).");
|
|
115
|
+
try {
|
|
116
|
+
let resolvedType = type;
|
|
117
|
+
if (value && !resolvedType) {
|
|
118
|
+
const country = (await getBillingProfile(adapter, auth.orgId)).address?.country?.toUpperCase();
|
|
119
|
+
resolvedType = country && EU.has(country) ? "eu_vat" : undefined;
|
|
120
|
+
if (!resolvedType) {
|
|
121
|
+
return err("Cannot infer the tax id type from the billing address — pass `type` (see Stripe's tax id types).");
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
const r = await setCustomerTaxId(adapter, auth.orgId, value && resolvedType ? { value, type: resolvedType } : null);
|
|
125
|
+
return json({ status: "ok", tax_ids: r });
|
|
126
|
+
}
|
|
127
|
+
catch (e) {
|
|
128
|
+
return err(e instanceof Error ? e.message : String(e));
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
server.tool("list_payment_methods", `The cards saved for this workspace, and which one is the default that
|
|
132
|
+
subscription and usage charges are billed to.`, {}, async () => {
|
|
133
|
+
const auth = await enforceAccess(adapter);
|
|
134
|
+
if ("isError" in auth)
|
|
135
|
+
return auth;
|
|
136
|
+
if (!stripeConfigured())
|
|
137
|
+
return err("Billing is not configured (STRIPE_SECRET_KEY unset).");
|
|
138
|
+
return json({ cards: await listPaymentMethods(adapter, auth.orgId) });
|
|
139
|
+
});
|
|
140
|
+
server.tool("set_default_payment_method", `Choose which saved card future charges are billed to. Use get_billing_portal to
|
|
141
|
+
ADD a card — that needs a browser to confirm it with Stripe.`, { payment_method_id: z.string().describe("Card id from list_payment_methods") }, async ({ payment_method_id }) => {
|
|
142
|
+
const auth = await enforceAdmin(adapter, "set_default_payment_method");
|
|
143
|
+
if ("isError" in auth)
|
|
144
|
+
return auth;
|
|
145
|
+
if (!stripeConfigured())
|
|
146
|
+
return err("Billing is not configured (STRIPE_SECRET_KEY unset).");
|
|
147
|
+
try {
|
|
148
|
+
await setDefaultPaymentMethod(adapter, auth.orgId, payment_method_id);
|
|
149
|
+
return json({ status: "ok", default_payment_method: payment_method_id });
|
|
150
|
+
}
|
|
151
|
+
catch (e) {
|
|
152
|
+
return err(e instanceof Error ? e.message : String(e));
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
server.tool("remove_payment_method", `Remove a saved card. Removing the default is refused while another card exists —
|
|
156
|
+
Stripe does not promote a replacement, so the next invoice would simply fail.`, { payment_method_id: z.string().describe("Card id from list_payment_methods") }, async ({ payment_method_id }) => {
|
|
157
|
+
const auth = await enforceAdmin(adapter, "remove_payment_method");
|
|
158
|
+
if ("isError" in auth)
|
|
159
|
+
return auth;
|
|
160
|
+
if (!stripeConfigured())
|
|
161
|
+
return err("Billing is not configured (STRIPE_SECRET_KEY unset).");
|
|
162
|
+
try {
|
|
163
|
+
await detachPaymentMethod(adapter, auth.orgId, payment_method_id);
|
|
164
|
+
return json({ status: "removed", payment_method_id });
|
|
165
|
+
}
|
|
166
|
+
catch (e) {
|
|
167
|
+
return err(e instanceof Error ? e.message : String(e));
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/tools/profile.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/register.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
2
|
import type { BillingAdapter, BillingConfig } from "../types.js";
|
|
3
|
+
import { type TopUpToolOptions } from "./billing.js";
|
|
4
|
+
import { type SubscriptionToolOptions } from "./subscription.js";
|
|
3
5
|
import { type PlanCatalog } from "../plans.js";
|
|
4
6
|
export declare function installInputLogging(server: McpServer): void;
|
|
5
7
|
export interface RegisterBillingToolsOptions {
|
|
@@ -14,7 +16,21 @@ export interface RegisterBillingToolsOptions {
|
|
|
14
16
|
plans?: PlanCatalog;
|
|
15
17
|
/** Default plan key (e.g. "hobby"). */
|
|
16
18
|
defaultPlan?: string;
|
|
19
|
+
/** How to find the org's current plan key, when it isn't on the adapter's
|
|
20
|
+
* subscription (gtm-tools keeps it in org metadata). Used by the usage tools
|
|
21
|
+
* and to resolve the billing cycle a top-up is filed against. */
|
|
22
|
+
resolvePlan?: (orgId: string) => Promise<string | null>;
|
|
23
|
+
/** Register the billing-account tools (invoice details, tax id, saved cards).
|
|
24
|
+
* Default true — they need only a Stripe customer. */
|
|
25
|
+
profileTools?: boolean;
|
|
26
|
+
/** Register the lifecycle tools (`change_plan`, `preview_plan_change`,
|
|
27
|
+
* `cancel_plan`, `get_plan`). Needs `plans`; pass `false` to leave plan
|
|
28
|
+
* changes to the app's own UI. */
|
|
29
|
+
subscriptionTools?: boolean | Omit<SubscriptionToolOptions, "plans">;
|
|
30
|
+
/** Tax and return URLs for `buy_tokens`. Supply `taxRates` on any account that
|
|
31
|
+
* charges tax on its subscriptions: without it a top-up invoices at 0%. */
|
|
32
|
+
topUp?: TopUpToolOptions;
|
|
17
33
|
}
|
|
18
34
|
export declare function registerBillingTools(server: McpServer, opts: RegisterBillingToolsOptions): void;
|
|
19
|
-
export declare const BILLING_TOOL_NAMES: readonly ["get_api_key", "list_api_keys", "revoke_api_key", "get_token_balance", "buy_tokens", "set_auto_reload", "get_billing_portal", "list_invoices", "view_invoice", "download_invoice", "get_usage", "get_usage_limits", "list_seats", "assign_seat_type", "list_top_up_requests", "request_top_up", "approve_top_up", "deny_top_up"];
|
|
35
|
+
export declare const BILLING_TOOL_NAMES: readonly ["get_api_key", "list_api_keys", "revoke_api_key", "get_token_balance", "buy_tokens", "set_auto_reload", "get_billing_portal", "list_invoices", "view_invoice", "download_invoice", "get_usage", "get_usage_limits", "list_seats", "assign_seat_type", "list_top_up_requests", "request_top_up", "approve_top_up", "grant_top_up", "deny_top_up", "get_billing_profile", "set_billing_profile", "set_tax_id", "list_payment_methods", "set_default_payment_method", "remove_payment_method", "get_plan", "preview_plan_change", "change_plan", "cancel_plan"];
|
|
20
36
|
//# sourceMappingURL=register.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/tools/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/tools/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjE,OAAO,EAA4B,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAG/E,OAAO,EAA6B,KAAK,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5F,OAAO,EAA2C,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAyBxF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,QAkBpD;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,aAAa,CAAC;IACtB,qFAAqF;IACrF,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,uEAAuE;IACvE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;+EAC2E;IAC3E,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;sEAEkE;IAClE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACxD;2DACuD;IACvD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;uCAEmC;IACnC,iBAAiB,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;IACrE;gFAC4E;IAC5E,KAAK,CAAC,EAAE,gBAAgB,CAAC;CAC1B;AAID,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,2BAA2B,QAiBxF;AA0DD,eAAO,MAAM,kBAAkB,wiBAiCrB,CAAC"}
|
package/dist/tools/register.js
CHANGED
|
@@ -2,6 +2,8 @@ import { resolveConfig } from "../types.js";
|
|
|
2
2
|
import { registerKeyTools } from "./keys.js";
|
|
3
3
|
import { registerBillingOnlyTools } from "./billing.js";
|
|
4
4
|
import { registerManagementTools } from "./management.js";
|
|
5
|
+
import { registerProfileTools } from "./profile.js";
|
|
6
|
+
import { registerSubscriptionTools } from "./subscription.js";
|
|
5
7
|
import { ensurePlans, normalizePlans, poolSizeOf } from "../plans.js";
|
|
6
8
|
// Keys whose values must never hit the logs (magic-auth codes, API keys, etc.).
|
|
7
9
|
const SENSITIVE_KEY_RE = /cookie|token|secret|password|passwd|authorization|api[_-]?key|session|credential|code/i;
|
|
@@ -52,10 +54,20 @@ export function registerBillingTools(server, opts) {
|
|
|
52
54
|
if (opts.installLogging !== false)
|
|
53
55
|
installInputLogging(server);
|
|
54
56
|
registerKeyTools(server, opts.adapter, config);
|
|
55
|
-
registerBillingOnlyTools(server, opts.adapter, config, opts.toolCosts ?? {});
|
|
56
|
-
registerManagementTools(server, opts.adapter, config, {
|
|
57
|
-
|
|
57
|
+
registerBillingOnlyTools(server, opts.adapter, config, opts.toolCosts ?? {}, opts.topUp ?? {});
|
|
58
|
+
registerManagementTools(server, opts.adapter, config, {
|
|
59
|
+
plans: opts.plans,
|
|
60
|
+
resolvePlan: opts.resolvePlan,
|
|
61
|
+
});
|
|
62
|
+
if (opts.profileTools !== false)
|
|
63
|
+
registerProfileTools(server, opts.adapter);
|
|
64
|
+
if (opts.plans) {
|
|
58
65
|
registerPlanTools(server, opts.plans, opts.defaultPlan, config.currency);
|
|
66
|
+
if (opts.subscriptionTools !== false) {
|
|
67
|
+
const sub = typeof opts.subscriptionTools === "object" ? opts.subscriptionTools : {};
|
|
68
|
+
registerSubscriptionTools(server, opts.adapter, config, { ...sub, plans: opts.plans });
|
|
69
|
+
}
|
|
70
|
+
}
|
|
59
71
|
}
|
|
60
72
|
// list_plans: returns the configured plans + live Stripe prices, provisioning
|
|
61
73
|
// the Stripe products/prices on first call (idempotent). Zero dashboard setup.
|
|
@@ -118,6 +130,19 @@ export const BILLING_TOOL_NAMES = [
|
|
|
118
130
|
"list_top_up_requests",
|
|
119
131
|
"request_top_up",
|
|
120
132
|
"approve_top_up",
|
|
133
|
+
"grant_top_up",
|
|
121
134
|
"deny_top_up",
|
|
135
|
+
// The billing account itself (registerProfileTools).
|
|
136
|
+
"get_billing_profile",
|
|
137
|
+
"set_billing_profile",
|
|
138
|
+
"set_tax_id",
|
|
139
|
+
"list_payment_methods",
|
|
140
|
+
"set_default_payment_method",
|
|
141
|
+
"remove_payment_method",
|
|
142
|
+
// The subscription lifecycle (registerSubscriptionTools; needs `plans`).
|
|
143
|
+
"get_plan",
|
|
144
|
+
"preview_plan_change",
|
|
145
|
+
"change_plan",
|
|
146
|
+
"cancel_plan",
|
|
122
147
|
];
|
|
123
148
|
//# sourceMappingURL=register.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/tools/register.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,wBAAwB,
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/tools/register.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { type PlanCatalog } from "../plans.js";
|
|
3
|
+
import type { BillingAdapter, ResolvedConfig } from "../types.js";
|
|
4
|
+
export interface SubscriptionToolOptions {
|
|
5
|
+
plans: PlanCatalog;
|
|
6
|
+
/** Where Stripe returns after a first-purchase Checkout, which has no
|
|
7
|
+
* subscription to prorate against. */
|
|
8
|
+
returnUrl?: string;
|
|
9
|
+
/** Stripe TaxRate ids for a change, when the account computes its own tax.
|
|
10
|
+
* Defaults to the rates already on the subscription's items. */
|
|
11
|
+
taxRates?: (orgId: string) => Promise<string[]> | string[];
|
|
12
|
+
}
|
|
13
|
+
export declare function registerSubscriptionTools(server: McpServer, adapter: BillingAdapter, config: ResolvedConfig, opts: SubscriptionToolOptions): void;
|
|
14
|
+
//# sourceMappingURL=subscription.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscription.d.ts","sourceRoot":"","sources":["../../src/tools/subscription.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAYpE,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AA+BlE,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,WAAW,CAAC;IACnB;2CACuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;qEACiE;IACjE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC;CAC5D;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,uBAAuB,QAuJ9B"}
|