Skip to main content
Glama

Upmind MCP Server v3

Model Context Protocol server for the Upmind platform: bundled API documentation search plus 97 live admin tools covering the daily operations of a hosting business — tickets, billing, services, clients, orders, provisioning, promotions, security, and reporting.

Built for and verified against a production Upmind organisation.

Highlights

  • 97 tools across 15 toolsets (read-only / write / destructive all annotated)

  • Secure auth CLI — session tokens stored in the macOS Keychain, never plaintext; upmind-mcp token set imports a fresh token straight from your clipboard

  • Read-only mode (UPMIND_READ_ONLY=true) blocks every write tool

  • Token-efficient responses — list tools return compact summaries (pass full: true for raw records)

  • Resilient API client — retry with backoff on 429/5xx, timeouts, Upmind field-error extraction, 401 renew-and-replay

  • Refreshable docs — npm run update-docs pulls the latest reference from apidocs.upmind.com (1,270+ endpoints incl. the web hosting module)

Related MCP server: Upmind MCP Server

Install

claude mcp add --transport stdio --scope user upmind -- npx -y github:spidyhost-crm/upmind-mcp-server

npx fetches and builds the server automatically; your config and tokens live in ~/.upmind-mcp/ + the Keychain, so updates never touch them.

From a clone

git clone git@github.com:spidyhost-crm/upmind-mcp-server.git && cd upmind-mcp-server
npm install && npm run build
claude mcp add --transport stdio --scope user upmind -- node $(pwd)/dist/index.js

Authentication

Your admin token controls the whole business — treat it accordingly. Two modes:

Nothing long-lived is ever stored. Session tokens expire after ~1 hour.

  1. Log into your Upmind admin as usual

  2. DevTools → Network → any api.upmind.io request → copy the Bearer token

  3. npx upmind-mcp token set — reads the clipboard, validates against the live API, stores in the macOS Keychain

When it expires, tools return a clear error telling you to repeat step 2–3.

Auto-renewal mode (convenience)

upmind-mcp login (email + password + 2FA) stores a session and refresh token in the Keychain; the server renews access tokens itself and rotates the stored pair. Revoke anytime by logging that session out in Upmind or upmind-mcp token clear.

CLI reference

upmind-mcp token set|show|clear   manage the stored token (Keychain-backed)
upmind-mcp login                  full login with auto-renewal
upmind-mcp whoami                 verify credentials against the live API
upmind-mcp status                 show config, backend, token expiry

Security model

  • Keychain storage (macOS): tokens encrypted at rest by the OS; UPMIND_TOKEN_BACKEND=file falls back to ~/.upmind-mcp/tokens.json chmod 600

  • Least privilege: create a dedicated staff/API user in Upmind with a restricted role for this server instead of using an owner account

  • IP whitelisting: use the built-in list/add/remove_whitelisted_ip tools to restrict org admin access to known IPs — a leaked token becomes useless elsewhere. Add your current IP first!

  • Read-only mode: UPMIND_READ_ONLY=true hard-blocks all 48 write tools server-side

  • Destructive-tool annotations: cancels/refunds/deletes carry destructiveHint so MCP clients can require confirmation

  • Never paste tokens into chats or commit them — .env, .tokens.json are gitignored; the CLI clipboard flow avoids both

Configuration

Config is layered: real env vars → project .env → ~/.upmind-mcp/config.env.

Env

Effect

UPMIND_ORIGIN

Your admin URL (e.g. https://secure.spidyhost.com) — required for OAuth flows

UPMIND_API_BASE

Default https://api.upmind.io/api/admin

UPMIND_READ_ONLY=true

Every write tool refuses to run

UPMIND_DEFAULT_BRAND_ID

Applied when tools accept brand_id and none is given

UPMIND_TOOLSETS=tickets,billing

Expose only selected toolsets (docs always on)

UPMIND_TOKEN_BACKEND

keychain / file (default auto)

UPMIND_API_TOKEN / UPMIND_REFRESH_TOKEN / UPMIND_USERNAME+UPMIND_PASSWORD

Env-based auth alternatives to the CLI

UPMIND_TIMEOUT_MS / UPMIND_MAX_RETRIES / UPMIND_DEBUG

Client tuning

Tool catalog

docs — search_endpoints, get_endpoint_details, list_api_groups, get_group_endpoints

brands — list_brands, get_brand

catalog — list_categories, create_category, list_products, get_product, create_product, update_product, duplicate_product, copy_product_to_brand, reorder_products, list_pricelists, get_product_prices, sync_pricing, list_currencies, get_upgrade_paths, set_upgrade_paths, remove_upgrade_path

provisioning — list_provision_fields, get_provision_field_values, update_provision_field_values, list_provision_configs, list_provision_functions

contracts (services) — list_contracts, get_contract, count_active_services, cancel_contract, cancel_contract_product, activate_contract_product, set_contract_product_renewal, update_contract_product_dates, update_contract_product_price, change_contract_product (upgrades, with dry_run), trigger_provision

clients — list_clients, get_client, create_client, update_client, list_client_accounts, reset_client_password, resend_client_verification

orders — list_orders, get_order, create_order (quick order → invoice), cancel_order, convert_order_to_invoice

billing — list_invoices, get_invoice, credit_invoice, apply_client_credit, refund_invoice, create_renewal_invoice, refresh_invoice, list_payments, add_payment, refund_payment, list_gateways, get_wallet_balance, list_wallet_transactions, refund_from_wallet

tickets — list_tickets, get_ticket, get_ticket_messages, create_ticket, reply_ticket (incl. private staff notes), update_ticket, assign_ticket, list_ticket_departments

marketing — list_promotions, get_promotion, create_promotion, update_promotion, disable_promotion, list_leads, create_lead, update_lead, convert_lead_to_client

emails — list_email_history, get_email, resend_email

webhooks — list_webhooks, list_webhook_events, create_webhook, update_webhook, delete_webhook

users — list_users, get_user

reports — get_stats, list_reports, run_report

security — list_whitelisted_ips, add_whitelisted_ip, remove_whitelisted_ip

Upmind API knowledge baked in

Verified against production:

  • Admin prefix: staff tokens call https://api.upmind.io/api/admin/...; doc URLs starting admin/ map to the same path with the prefix stripped.

  • Pagination: Upmind returns 10 results by default — always pass limit/offset; responses carry total. The client's getAll() auto-paginates (capped at 1,000 items).

  • Filters: filter[field]=value, e.g. filter[status.code], filter[product.id], filter[contract.client_id]. ⚠️ filter[status]=... on invoices causes a 500 database error — always filter status via status.code.

  • Status codes are prefixed: contract_active, contract_suspended, invoice_unpaid, invoice_paid, ticket_in_progress, ticket_waiting_response (short forms like unpaid also match).

  • Relations load via with=a,b,c; raw list rows only carry *_id fields (e.g. tickets have status_id but no status object without with=status).

  • OAuth: POST https://api.upmind.io/oauth/access_token with admin_password / admin_twofa / refresh_token grants; the Origin header of your admin domain is required when no oauth client id is sent. Access tokens live ~1 hour; refresh tokens rotate on every use.

  • Emails: the API exposes delivery metadata (sent, bounced, error_message) but not rendered bodies.

Architecture

src/
├── index.ts            # stdio server entry (existing MCP registrations)
├── cli.ts              # upmind-mcp CLI: token/login/whoami/status + serve
├── serve.ts            # shared server bootstrap
├── server.ts           # assembles McpServer from the tool registry
├── registry.ts         # ToolDef type + shared schema fragments
├── config.ts           # layered env/.env/~/.upmind-mcp config
├── api/
│   ├── client.ts       # HTTP client: retries, timeouts, error shaping
│   ├── auth.ts         # TokenManager: OAuth renewal, expiry handling
│   └── token-store.ts  # Keychain (macOS) / file token storage
├── docs/               # documentation cache, search, and doc tools
├── tools/              # one file per domain, exporting ToolDef[]
└── utils/compact.ts    # response summarisation helpers
scripts/
├── update-docs.mjs     # refresh bundled docs (npm run update-docs)
└── smoke.mjs           # read-only live smoke test (npm run smoke)
data/                   # bundled apidoc JSON (refreshable)

Adding a tool = adding one entry to a domain file. server.ts handles registration, read-only enforcement, annotations, and error shaping centrally.

Development

npm run build        # compile
npm run typecheck    # type check only
npm run smoke        # read-only smoke test against the live API
npm run update-docs  # refresh bundled API docs

License

MIT

Available Tools

97 tools
activate_contract_productActivate contract productA

Activate a pending/inactive contract product (marks the service active).

Inputs: contract_id (required), contract_product_id (required).

add_paymentAdd payment to invoiceA
Destructive

Record a payment against an invoice — typically an offline/manual payment through an offline gateway (see list_gateways), or charge a stored payment method. amount must be in the invoice currency. DESTRUCTIVE: records money movement.

Inputs: amount (required), invoice_id (required), extra, gateway_id, +1 more.

add_whitelisted_ipAdd whitelisted IPA

Whitelist an IP for the organisation (or one staff user). CAUTION: once a whitelist is active, access from other IPs is blocked — add your current IP first.

Inputs: ip (required), user_id, description.

apply_client_creditApply wallet credit to invoiceA

Pay (part of) an invoice using the client's wallet/credit balance.

Inputs: invoice_number (required), credit_amount.

assign_ticketAssign ticketA

Assign a ticket to a staff user (see list_users), or unassign with user_id omitted.

Inputs: ticket_id (required), user_id.

cancel_contractCancel contractA
Destructive

Cancel a whole contract or specific products on it. DESTRUCTIVE: this cancels live services. Provide a cancellation_reason; optionally limit to specific contract product UUIDs.

Inputs: contract_id (required), cancellation_reason (required), product_ids.

cancel_contract_productCancel contract productA
Destructive

Cancel a single service on a contract, with refund control. refund_mode: 0 = no refund, 1 = full refund, 2 = pro-rata refund. DESTRUCTIVE: cancels a live service.

Inputs: contract_id (required), contract_product_id (required), refund_mode, refund_source, +1 more.

cancel_orderCancel orderA
Destructive

Cancel a pending order. DESTRUCTIVE.

Inputs: order_id (required).

change_contract_productChange / upgrade service productA

Upgrade or downgrade a contract product to a different product (with pro-rata invoice/credit note). Set dry_run=true first to preview the billing impact without changing anything.

Inputs: contract_id (required), new_product_id (required), contract_product_id (required), price, +5 more.

convert_lead_to_clientConvert lead to clientC

Convert a lead into a real client record.

Inputs: lead_id (required).

convert_order_to_invoiceConvert order to invoiceA

Convert a draft order/basket into a real invoice.

Inputs: order_id (required).

copy_product_to_brandCopy product to another brandC

Copy a product into a different brand (multi-brand catalogue management).

Inputs: brand_id (required), product_id (required), category_id.

count_active_servicesCount active servicesA
Read-only

Count active contract products for a product.

Inputs: product_id (required).

create_categoryCreate product categoryA

Create a new product category (or subcategory via parent_id) for a brand.

Inputs: name (required), brand_id (required), parent_id.

create_clientCreate clientB

Create a new client under a brand. Provide email + name; optionally create login credentials. Use "extra" for additional fields (language_code, currency_code, …).

Inputs: email (required), brand_id (required), extra, lastname, +4 more.

create_leadCreate leadB

Create a sales lead (prospect) — e.g. from an inbound enquiry.

Inputs: name (required), brand_id (required), email, phone, +3 more.

create_orderCreate order (quick order)A

Create an order for a client via the admin quick-order flow. By default converts straight to an invoice (convert=true). Each product needs product_id and billing_cycle_months; selling_price overrides list pricing. PRODUCTION: creates real billing documents.

Inputs: products (required), client_id (required), extra, notes, +4 more.

create_productCreate productA

Create a new product in a category. Sensible defaults: single product, single-option order type, monthly billing. Use "extra" for any additional Upmind product fields (see docs endpoint PostAdminProducts). PRODUCTION: creates a live product (hidden from clients unless clients_can_order is true).

Inputs: name (required), brand_id (required), category_id (required), extra, +8 more.

create_promotionCreate promotionA

Create a promotion code. type: 1 = fixed amount (needs currency_id), 2 = percentage. Applies to all products unless restricted via "extra" (products, pricelists, billing_cycles).

Inputs: code (required), name (required), type (required), amount (required), +10 more.

create_renewal_invoiceCreate renewal invoiceA

Generate the next recurring (renewal) invoice for a contract now, instead of waiting for the scheduler. Optionally scope to one contract product.

Inputs: contract_id (required), contract_product_id.

create_ticketCreate ticketA

Open a new support ticket on behalf of a client (e.g. to document a phone call or start an outbound conversation).

Inputs: body (required), subject (required), client_id (required), priority, +3 more.

create_webhookCreate webhookA

Create a webhook endpoint. Optionally pass subscription event codes to subscribe immediately.

Inputs: url (required), name, secret, enabled, +1 more.

credit_invoiceCredit invoice amountA
Destructive

Issue a credit note against an invoice. Omit amount to credit the full remaining amount, or set full_credit=true. refund_source: 0 = original payment source, 1 = wallet. DESTRUCTIVE: moves money / changes billing records.

Inputs: invoice_id (required), amount, full_credit, refund_source, +1 more.

delete_webhookDelete webhookB
Destructive

Delete a webhook endpoint. DESTRUCTIVE.

Inputs: webhook_id (required).

disable_promotionDisable promotionA

Disable a promotion so it can no longer be used.

Inputs: promotion_id (required).

duplicate_productDuplicate productA

Clone an existing product within the same brand. The copy is created as "{name} Copy".

Inputs: product_id (required).

get_brandGet brandA
Read-only

Get full details for one brand.

Inputs: brand_id (required).

get_clientGet clientA
Read-only

Get client details. Common "with" values: emails, phones, addresses, accounts, tags, custom_fields.

Inputs: client_id (required), with.

get_contractGet contractA
Read-only

Get a contract with its products and related data. Common "with" values: products, client, products.product, products.status.

Inputs: contract_id (required), with.

get_emailGet sent emailA
Read-only

Get delivery details for one sent email: recipient, subject, sent/bounced state, and error/bounce data. (Upmind does not expose the rendered body via the API.)

Inputs: email_id (required).

get_endpoint_detailsGet endpoint detailsA
Read-only

Get full details for one API endpoint: parameters, response schema, headers, and permissions. Accepts the endpoint name (e.g. "GetAdminProducts") or an exact URL pattern.

Inputs: name (required).

get_group_endpointsGet group endpointsA
Read-only

List every endpoint in one API group/category (e.g. "Contracts", "Admin_Products").

Inputs: group (required), includeDetails.

get_invoiceGet invoiceA
Read-only

Get one invoice. Common "with" values: products, payments, client, credit_notes.

Inputs: invoice_id (required), with.

get_orderGet orderA
Read-only

Get one order with its products and totals.

Inputs: order_id (required), with.

get_productGet productA
Read-only

Get full product details. Use "with" to include related data: prices, provision_field_values, allowed_migrations, options, products_attributes.

Inputs: product_id (required), with.

get_product_pricesGet product pricesA
Read-only

Get all prices for one product across all pricelists, currencies, and billing cycles.

Inputs: product_id (required).

get_promotionGet promotionA
Read-only

Get full details of one promotion (products, restrictions, usage).

Inputs: promotion_id (required).

get_provision_field_valuesGet provision field valuesA
Read-only

Get the current provision field values configured on a product.

Inputs: product_id (required).

get_statsGet dashboard statsA
Read-only

Quick operational overview: active services, total clients, open tickets, unpaid invoices, and pending orders — optionally scoped to a brand.

Inputs: brand_id.

get_ticketGet ticketA
Read-only

Get one ticket with its metadata (status, client, assignees). Use get_ticket_messages for the conversation.

Inputs: ticket_id (required), with.

get_ticket_messagesGet ticket conversationA
Read-only

Get the message thread of a ticket with HTML stripped — readable conversation including private staff notes.

Inputs: ticket_id (required), limit, offset.

get_upgrade_pathsGet upgrade pathsA
Read-only

Get the products a given product is allowed to upgrade/migrate to.

Inputs: product_id (required).

get_userGet staff userA
Read-only

Get details for one staff user.

Inputs: user_id (required).

get_wallet_balanceGet wallet balanceA
Read-only

Get a client's wallet/credit balance. Pass client_id (default account is resolved automatically) or a specific account_id.

Inputs: client_id, account_id.

list_api_groupsList API groupsA
Read-only

List all endpoint groups/categories in the Upmind API reference.

Inputs: includeCount.

list_brandsList brandsA
Read-only

List all brands in the Upmind organisation with their IDs, domains, and currencies.

Inputs: no named parameters.

list_categoriesList product categoriesA
Read-only

List product categories (with subcategories and product counts), optionally scoped to a brand.

Inputs: brand_id.

list_client_accountsList client accountsA
Read-only

List the billing accounts of a client (account IDs are needed for wallet operations; most clients have one).

Inputs: client_id (required).

list_clientsList / search clientsA
Read-only

List or search clients by name, email, or company. Filter by brand.

Inputs: limit, offset, search, brand_id.

list_contractsList contracts / servicesA
Read-only

List contract products (services) with filters: product, client, status code (e.g. "contract_active", "contract_suspended", "contract_cancelled"), brand. Returns a compact summary per service; set full=true for raw records.

Inputs: full, with, limit, offset, +4 more.

list_currenciesList currenciesA
Read-only

List available currencies with their UUIDs, codes, and symbols.

Inputs: no named parameters.

list_email_historyList sent emailsA
Read-only

List emails the platform has sent, filterable by client or brand. Useful to confirm whether an invoice reminder, verification, or notification actually went out.

Inputs: limit, offset, brand_id, client_id.

list_gatewaysList payment gatewaysA
Read-only

List configured payment gateways (IDs needed for refunds and manual payments).

Inputs: no named parameters.

list_invoicesList invoicesA
Read-only

List invoices with filters: client, status (e.g. "unpaid", "paid", "overdue"), brand. Compact summaries by default; full=true for raw records.

Inputs: full, limit, offset, status, +2 more.

list_leadsList leadsA
Read-only

List sales leads/prospects, optionally searching by text.

Inputs: limit, offset, search, brand_id.

list_ordersList ordersA
Read-only

List orders/baskets. Use "with" for relations like client, products.

Inputs: with, limit, offset.

list_paymentsList paymentsA
Read-only

List payment transactions, filterable by client or invoice.

Inputs: limit, offset, client_id, invoice_id.

list_pricelistsList pricelistsA
Read-only

List all pricelists in the organisation.

Inputs: no named parameters.

list_productsList productsA
Read-only

List products, filterable by brand, category, or exact name.

Inputs: name, limit, offset, brand_id, +1 more.

list_promotionsList promotionsC
Read-only

List promotions/coupon codes.

Inputs: limit, offset.

list_provision_configsList provision configurationsA
Read-only

List provision configurations (e.g. servers) for a provision category code such as "shared-hosting". Omit category_code to list the provision categories themselves.

Inputs: limit, brand_id, category_code.

list_provision_fieldsList provision fieldsA
Read-only

List the provision blueprint fields (names, types, labels) defined for a product.

Inputs: product_id (required).

list_provision_functionsList provision functionsA
Read-only

List the provision functions available on a contract product (setup, suspend, terminate, getUsage, …). Use the returned function id with trigger_provision.

Inputs: contract_id (required), contract_product_id (required).

list_reportsList available reportsA
Read-only

List Upmind's built-in reports (revenue, churn, tax, transactions, …) that can be run with run_report.

Inputs: no named parameters.

list_ticket_departmentsList ticket departmentsA
Read-only

List ticket departments (IDs needed for creating/moving tickets).

Inputs: no named parameters.

list_ticketsList ticketsA
Read-only

List support tickets with filters (client, status code, department, brand) or full-text search across subjects and message bodies. Status codes: ticket_in_progress, ticket_waiting_response, ticket_resolved, ticket_closed (short forms like "in_progress" also match).

Inputs: full, limit, query, offset, +5 more.

list_usersList staff usersA
Read-only

List staff/admin users (IDs are needed for assign_ticket).

Inputs: limit, offset, search.

list_wallet_transactionsList wallet transactionsA
Read-only

List a client's wallet transaction history (credits, debits, top-ups).

Inputs: limit, offset, client_id, account_id.

list_webhook_eventsList webhook event typesA
Read-only

List the event types that webhook endpoints can subscribe to.

Inputs: limit, offset.

list_webhooksList webhooksA
Read-only

List configured webhook endpoints and their subscriptions.

Inputs: no named parameters.

list_whitelisted_ipsList whitelisted IPsA
Read-only

List whitelisted IPs for the organisation, or for one staff user when user_id is given. When a whitelist exists, admin access is only allowed from these addresses.

Inputs: user_id.

refresh_invoiceRefresh invoice data/PDFA

Regenerate invoice data and its PDF (e.g. after changing brand details or a template).

Inputs: invoice_id (required).

refund_from_walletRefund from walletA
Destructive

Manually refund an amount from a client's wallet balance (e.g. paying out unused credit outside the system). DESTRUCTIVE: reduces the client's credit balance.

Inputs: amount (required), client_id (required), currency_code (required), account_id, +2 more.

refund_invoiceManual refund / pay credit noteA
Destructive

Record a manual (offline) refund against an invoice or pay out a credit note. Requires the gateway the refund was made through. DESTRUCTIVE: records money movement.

Inputs: gateway_id (required), invoice_id (required), amount.

refund_paymentRefund paymentA
Destructive

Refund a captured payment through its gateway, by transaction reference. Omit amount to refund the full overpaid amount. DESTRUCTIVE: moves real money.

Inputs: transaction_id (required), amount.

remove_upgrade_pathRemove upgrade pathB

Remove one upgrade path from a product.

Inputs: product_id (required), migration_product_id (required).

remove_whitelisted_ipRemove whitelisted IPA
Destructive

Remove a whitelisted IP entry. DESTRUCTIVE: may lock out whoever uses that address.

Inputs: whitelisted_ip_id (required), user_id.

reorder_productsReorder productsA

Reorder products within a category. Pass ALL product UUIDs of the category in the desired display order.

Inputs: product_ids (required).

reply_ticketReply to ticketA

Post a reply on a ticket. Set is_private=true to add an internal staff note the client cannot see. PRODUCTION: public replies email the client.

Inputs: body (required), ticket_id (required), is_private.

resend_client_verificationResend verification emailB

Resend the account verification email to a client.

Inputs: client_id (required).

resend_emailResend emailA

Resend a previously sent email (e.g. an invoice or verification email that never arrived).

Inputs: email_id (required), dispatch_now.

reset_client_passwordSend client password resetA

Trigger a password-reset email for a client (admin-initiated).

Inputs: client_id (required), email.

run_reportRun reportA
Read-only

Run a built-in Upmind report by its code/name with optional parameters (date ranges etc.). Check list_reports first; parameters vary per report.

Inputs: report (required), parameters.

search_endpointsSearch API endpointsA
Read-only

Search the Upmind API reference (1,270+ endpoints) by keyword. Supports multi-word queries; searches names, titles, descriptions, groups, and URLs. Use this to discover the right endpoint before calling live tools or building integrations.

Inputs: query (required), limit.

set_contract_product_renewalSet renewal modeA

Turn auto-renewal on or off for a contract product. Turning renewal off schedules the service to expire at the end of the paid period.

Inputs: renew (required), contract_id (required), contract_product_id (required), cancellation_reason.

set_upgrade_pathsSet upgrade pathsA

Set which products a product can be upgraded to. PRODUCTION: changes are live.

Inputs: product_id (required), migration_product_ids (required).

sync_pricingSet product pricesA

Set/update prices for a product on a specific pricelist. Each entry needs currency_id, billing_cycle_months, and price. PRODUCTION: changes are live immediately.

Inputs: prices (required), product_id (required), pricelist_id (required).

trigger_provisionTrigger provision actionA
Destructive

Run a provisioning function (setup, suspend, unsuspend, terminate, getUsage, …) on a contract product. Find function IDs with list_provision_functions. PRODUCTION: executes immediately on the hosting server.

Inputs: contract_id (required), function_id (required), contract_product_id (required), provision_field_values.

update_clientUpdate clientB

Update client profile fields. Use "extra" for any other Upmind client field.

Inputs: client_id (required), extra, notes, lastname, +2 more.

update_contract_product_datesUpdate service datesA

Change suspend/cancel/close scheduling for a contract product: either intervals in days after next_due_date, or explicit hold-off dates (not_suspend_until / not_cancel_until / not_close_until, today or future). Useful to give clients extra time before suspension.

Inputs: contract_id (required), contract_product_id (required), close_interval, cancel_interval, +4 more.

update_contract_product_priceUpdate service priceA

Change the recurring selling price of a contract product (affects future invoices).

Inputs: contract_id (required), selling_price (required), contract_product_id (required), total_price, +1 more.

update_leadUpdate leadB

Update fields on a lead.

Inputs: fields (required), lead_id (required).

update_productUpdate productA

Update product fields (name, descriptions, category, visibility flags). Use "extra" for any other Upmind product field. PRODUCTION: changes are live.

Inputs: product_id (required), name, extra, category_id, +5 more.

update_promotionUpdate promotionB

Update fields of an existing promotion.

Inputs: fields (required), promotion_id (required).

update_provision_field_valuesUpdate provision field valuesA

Update provision field values on a product (e.g. {"package_name": "Reseller Tier 2"}). PRODUCTION: affects how new services provision.

Inputs: product_id (required), field_values (required).

update_ticketUpdate ticketA

Update ticket properties: status (by code, e.g. "closed"), subject, department, priority, or linked service.

Inputs: ticket_id (required), subject, priority, status_code, +2 more.

update_webhookUpdate webhookB

Update a webhook endpoint (URL, enabled state, name, secret).

Inputs: fields (required), webhook_id (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.6/5.0

    Scored across 97 tools

    Disambiguation4/5

    Most tools have clear, distinct purposes with detailed descriptions, and each targets a unique resource+action. However, the large number of similar product/contract/update tools (e.g., update_contract_product_dates vs update_contract_product_price) creates some risk of misselection, though descriptions mitigate this.

    Naming Consistency5/5

    All tools follow a consistent snake_case verb_noun pattern (list_, get_, create_, update_, delete_, etc.). Minor verb variations like change, sync, and apply do not break the overall predictable naming convention.

    Tool Count1/5

    With 97 tools, this is an extreme mismatch for an MCP server. The sheer number overwhelms an agent's ability to efficiently select the right tool, far exceeding the recommended 3-15 range and even the 25+ threshold.

    Completeness4/5

    The tool set covers comprehensive CRUD and lifecycle operations for clients, products, contracts, orders, invoices, payments, and tickets. Minor gaps exist (e.g., no delete_product, no create_department, no update_invoice), but agents can typically work around these omissions.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI tools to search and explore API documentation from Apidog projects or OpenAPI/Swagger specifications, providing endpoint details, schemas, and project statistics through natural language queries.
      1,398 npm
      1
      ISC
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables management of Upmind platform products, categories, pricing, and bundles through natural language via the Upmind API.
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      Exposes Swagger/OpenAPI API documentation to AI models, enabling exploration, search, and interaction with endpoints, schemas, and execution of API calls.
      14
      20 npm
      2
      MIT
    • A
      license
      C
      quality
      Not graded
      maintenance
      Enables AI agents to interact with GoHighLevel's internal v2 API, managing Agent Studio, Voice AI, and Knowledge Base features through natural language commands.
      47
      1
      MIT