Skip to main content
Glama
thenavidm
by thenavidm

Update a customer

update_customer
Destructive

Modify an existing customer's profile in an authenticated workspace by ID or external ID, including name, email, avatar, country, Stripe ID, and subscription cancellation status.

Instructions

Update a customer for the authenticated workspace.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYesThe unique ID of the customer. You may use either the customer's `id` on Dub (obtained via `/customers` endpoint) or their `externalId` (unique ID within your system, prefixed with `ext_`, e.g. `ext_123`).
nameNoThe customer's name. If not provided, the email address will be used, and if email is not provided, a random name will be generated.
emailNoThe customer's email address.
avatarNoThe customer's avatar URL. If not provided, a random avatar will be generated.
accountNoExact configured private workspace profile label; not a tenant or provider account ID.
confirmNoMust be true for the requested mutation or exclusive private output file.
countryNoThe customer's country in ISO 3166-1 alpha-2 format. Updating this field will only affect the customer's country in Dub's system (and has no effect on existing conversion events).
payloadNoComplete native JSON body; do not mix with body flags or payload_file. Arrays use repeated JSON object flags or a whole native array in a private file.
externalIdNoThe customer's unique identifier your database. This is useful for associating subsequent conversion events from Dub's API to your internal systems.
payload_fileNoAbsolute regular non-symlink JSON body file, at most 1 MiB. Cannot mix with payload/body flags.
stripeCustomerIdNoThe customer's Stripe customer ID. This is useful for attributing recurring sale events to the partner who referred the customer.
subscriptionCanceledAtNoThe date the customer canceled their subscription. Set to a timestamp to mark the subscription as canceled, or `null` to clear it (e.g. if they resubscribe).
include_expanded_fieldsNoWhether to include expanded fields on the customer (`link`, `partner`, `discount`).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv2.0.0

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description adds no behavioral context of its own: it does not say whether the update is a partial merge or full replacement, what happens to omitted fields, or that repeated calls are not idempotent. With annotations present the bar is lower, but this adds essentially nothing.

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

Conciseness3/5

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

It is a single short sentence with no padding, so nothing is wasted, but the sentence is nearly redundant with the title and carries almost no substance, leaving it under-specified rather than genuinely concise.

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

Completeness2/5

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

For a 13-parameter destructive mutation with a nested payload object, multiple input modes (payload/payload_file/body flags), and no output schema, a one-line description is far too thin. It omits the update semantics, the confirm requirement, and any caveat surrounding the destructive change.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 13 parameters, including the confirm flag and the payload/payload_file mutual exclusion. The description adds no parameter meaning beyond that, so the baseline 3 applies.

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

Purpose3/5

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

The phrase "Update a customer" gives a clear verb+resource, but it largely restates the title and name. The only added information is the workspace scoping ("for the authenticated workspace"), and there is no differentiation from siblings such as get_customer, list_customers, or delete_customer.

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

Usage Guidelines2/5

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

The description offers no when-to-use guidance, no prerequisites, and no alternatives. It does not mention that the mutation requires confirm=true, nor how it relates to get_customer/delete_customer/upsert-style siblings.

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