From sherweb
Manages Sherweb subscriptions: lists filtered by customer/status, retrieves details, changes seat/license quantities via MCP tools.
npx claudepluginhub wyre-technology/msp-claude-plugins --plugin sherwebThis skill uses the workspace's default tool permissions.
Subscriptions in Sherweb represent active cloud product licenses assigned to a customer through the distributor platform. When the MSP provisions a product for a customer via Sherweb, a subscription is created that tracks the product, quantity (seats/licenses), billing cycle, and status. Subscriptions are the core ongoing entity that MSPs manage -- adjusting seat counts as clients grow or contr...
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Analyzes BMad project state from catalog CSV, configs, artifacts, and query to recommend next skills or answer questions. Useful for help requests, 'what next', or starting BMad.
Subscriptions in Sherweb represent active cloud product licenses assigned to a customer through the distributor platform. When the MSP provisions a product for a customer via Sherweb, a subscription is created that tracks the product, quantity (seats/licenses), billing cycle, and status. Subscriptions are the core ongoing entity that MSPs manage -- adjusting seat counts as clients grow or contract, monitoring provisioning status, and ensuring license compliance.
| Tool | Description | Key Parameters |
|---|---|---|
sherweb_subscriptions_list | List subscriptions, optionally filtered by customer | customerId, page, pageSize, status |
sherweb_subscriptions_get | Get detailed information about a specific subscription | subscriptionId (required) |
sherweb_subscriptions_change_quantity | Change the seat/license quantity on a subscription | subscriptionId (required), quantity (required) |
Call sherweb_subscriptions_list with optional parameters:
customerId to a customer IDstatus to one of the allowed values (see below)page (1-based) and pageSize (default 25)Example: List all active subscriptions for a customer:
sherweb_subscriptions_list with customerId=cust-abc-123, status=Active, pageSize=100Example: List all subscriptions across all customers:
sherweb_subscriptions_list with pageSize=100Call sherweb_subscriptions_get with the subscriptionId parameter.
Example:
sherweb_subscriptions_get with subscriptionId=sub-def-456Call sherweb_subscriptions_change_quantity with:
subscriptionId - the subscription to modifyquantity - the new desired quantity (absolute number, not a delta)Example: Increase seats from 25 to 30:
sherweb_subscriptions_change_quantity with subscriptionId=sub-def-456, quantity=30Provisioning --> Active --> [Modify Quantity / Cancel] --> Cancelled
| |
Suspended PendingChange
|
Reactivated --> Active
| State | Description |
|---|---|
Active | Subscription is live, provisioned, and billing |
Suspended | Subscription temporarily paused (payment or compliance issue) |
Cancelled | Subscription has been terminated |
Provisioning | Initial setup in progress |
PendingChange | A quantity or configuration change is being processed |
PendingCancellation | Cancellation request submitted, not yet complete |
Failed | Provisioning or modification failed |
The quantity field represents the number of licenses (seats, devices, or units depending on the product). Key rules:
Active (not Suspended, PendingChange, etc.)sherweb_subscriptions_get to see the current seat countsherweb_subscriptions_change_quantity with the new quantitysherweb_subscriptions_get again to confirm the change was applied| Field | Type | Description |
|---|---|---|
id | string | Subscription unique identifier |
customerId | string | Customer this subscription belongs to |
customerName | string | Customer display name |
productName | string | Product or SKU name |
productId | string | Product identifier |
quantity | integer | Current number of licenses/seats |
status | string | Current subscription state |
billingCycle | string | Billing frequency (Monthly, Yearly) |
startDate | date | Subscription start date |
endDate | date | Subscription end date (for term commitments) |
renewalDate | date | Next renewal date |
createdDate | datetime | When the subscription was created |
modifiedDate | datetime | Last modification timestamp |
autoRenew | boolean | Whether the subscription auto-renews |
| Field | Type | Description |
|---|---|---|
subscriptionId | string | Subscription that was modified |
previousQuantity | integer | Quantity before the change |
newQuantity | integer | Quantity after the change |
status | string | Change status (Completed, Pending, Failed) |
effectiveDate | date | When the change takes effect |
sherweb_customers_list with searchsherweb_subscriptions_list with customerId and status=Activesherweb_customers_list to get all customers (paginate through all pages)sherweb_subscriptions_list with customerId and status=Activesherweb_subscriptions_list filtered by customerIdActive and note the current quantitysherweb_subscriptions_change_quantity with the new (higher) quantitysherweb_subscriptions_getsherweb_subscriptions_change_quantity with the new (lower) quantitysherweb_subscriptions_list with status=ActiverenewalDate within the next 30 dayssherweb_subscriptions_list with pageSize=100 (no status filter to get all)Subscription:
{
"id": "sub-def-456",
"customerId": "cust-abc-123",
"customerName": "Acme Corporation",
"productName": "Microsoft 365 Business Premium",
"productId": "prod-m365-bp",
"quantity": 25,
"status": "Active",
"billingCycle": "Monthly",
"startDate": "2025-06-01",
"endDate": null,
"renewalDate": "2026-04-01",
"createdDate": "2025-05-28T14:30:00.000Z",
"modifiedDate": "2026-02-15T09:00:00.000Z",
"autoRenew": true
}
Quantity Change Response:
{
"subscriptionId": "sub-def-456",
"previousQuantity": 25,
"newQuantity": 30,
"status": "Completed",
"effectiveDate": "2026-03-10"
}
| Error | Cause | Resolution |
|---|---|---|
| Subscription not found | Invalid subscriptionId | Verify the ID with sherweb_subscriptions_list |
| Invalid quantity | Below minimum or above maximum | Check product requirements for quantity limits |
| Cannot modify | Subscription not in Active state | Verify subscription status before attempting changes |
| Quantity decrease restricted | Annual commitment prevents decrease | Wait for renewal period or contact Sherweb support |
| Change already pending | A previous change is still processing | Wait for the pending change to complete before submitting another |
| Authentication error | Expired or invalid token | Re-authenticate using OAuth 2.0 client credentials flow |
| Current State | Attempted Action | Notes |
|---|---|---|
| Cancelled | Change quantity | Cannot modify cancelled subscriptions |
| Suspended | Change quantity | Resolve suspension before modifying |
| Provisioning | Change quantity | Wait for provisioning to complete |
| PendingChange | Change quantity | Wait for current change to finish |
| PendingCancellation | Change quantity | Cannot modify during cancellation |
Active before changing quantitycustomerId when checking a specific client