Skip to main content
Glama

Give a Customer a Discount on Their First Months (operator only)

li_set_team_discount
Destructive

OPERATOR ONLY. Reads, gives or ends a CUSTOMER's (team's) discount on a NEW subscription: the same discount the dashboard's Users & access page shows per team. Name the team ONE way: teamId, the email of anyone in it, or account (an account id, label, LinkedIn name or slug; refused when it matches accounts of two teams). Omit kind and end to read the discount running now (or null), with adminSentence saying what it does. Give one with kind: 'percent' (value 1-99), 'amount' (value = a fixed amount off each month in the team's billing currency, major units, e.g. 500 for ₹500) or 'free' (no value), for months first months (1-12, default 1). The team's next checkout charges those months up front at the discounted price, then the usual monthly price starts by itself, on Razorpay (INR) and PayPal (USD) alike. validUntil (a date, YYYY-MM-DD, good to the end of that day UTC; at most a year ahead) makes the offer expire: a checkout after it pays the usual price. note is internal (never shown to the customer). Giving one emails the customer a special offer with the price, the deadline and a Subscribe link, once; the reply's customerEmailed says whether it really went out ('emailed', or 'not emailed: '). Refused: a team that already pays monthly (a discount applies to a new subscription only), a free or complimentary team, and a team with a discount still running (end it first with end: true, which emails the customer that it ended). The automatic offer after a trial is set with li_set_trial_end_offer.

Input Schema

NameRequiredDescriptionDefault
endNotrue = end the running discount now (the next checkout pays the usual price)
kindNo'percent', 'amount' (fixed off each month) or 'free'; omit to read
noteNoInternal note, e.g. "asked on a call"; never shown to the customer
emailNoThe sign-in email of anyone in the team
valueNoPercent off (1-99), or the amount off each month in major units; not for free
monthsNoHow many first months it covers, 1-12 (default 1)
teamIdNoTeam id (or use email or account)
accountNoAn account id, label, LinkedIn name or slug; its owner’s team is used
validUntilNoOffer valid until this day, YYYY-MM-DD (UTC); omit for no deadline

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say readOnly=false, destructive=true, openWorld=true; the description adds the real behavioral burden: giving a discount sends a one-time customer email, ending one emails the customer that it ended, `customerEmailed` reports whether it truly went out, `note` is never customer-visible, and the checkout/billing consequences (months charged up front, then normal monthly price resumes, Razorpay INR and PayPal USD). This is well beyond what the annotations declare.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the OPERATOR ONLY constraint and scoped in the first clause, with no filler sentences. However, it is a single dense block of long sentences that mixes modes, refusals and return fields together, so it is harder to scan than a shorter or segmented version would be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter, zero-required, mutation-heavy tool with no output schema, the description covers naming the team, all three discount kinds, the deadline, refusals, the email side effects, and even the returned `adminSentence` and `customerEmailed` fields. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description genuinely adds meaning: `amount` is a fixed per-month figure in the team's billing currency in major units (with a ₹500 example), `validUntil` is good to end of day UTC and capped at a year ahead (a limit absent from the schema), and the three team-naming options plus the refusal when `account` is ambiguous. Some of this does restate schema enum text, keeping it below a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb set (read/give/end) on a specific resource (a customer team's discount on a new subscription) and immediately scopes it as operator-only. It also disambiguates from siblings by name: li_set_trial_end_offer is called out as the tool for the post-trial automatic offer, and the billing/complimentary siblings are implicitly separated by the 'new subscription only' constraint.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use for each mode: omit kind/end to read, supply kind to give, use end:true to terminate. Alternatives and refusals are enumerated (already-paying teams, free/complimentary teams, teams with a running discount), and the reader is routed to li_set_trial_end_offer for the different scenario.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources