Delete customer
delete_customer[demo: deshabilitada] Deletes a customer from this business (blocked when the customer has sales or invoices).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| customerId | Yes | ID of the customer to delete. |
delete_customer[demo: deshabilitada] Deletes a customer from this business (blocked when the customer has sales or invoices).
| Name | Required | Description | Default |
|---|---|---|---|
| customerId | Yes | ID of the customer to delete. |
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as destructive and idempotent, but the description adds a significant behavioral constraint not captured in annotations: the operation is blocked when the customer has sales or invoices. It also includes a demo environment note ('[demo: deshabilitada]'), providing extra context about availability.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with a useful parenthetical constraint. It is front-loaded and all content is relevant, with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple deletion tool with one parameter and no output schema, the description combined with annotations and schema is fully sufficient. It covers what the tool does, when it cannot be used, and is backed by strong annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage for the single parameter (customerId) with a clear description. The tool description does not add further parameter-specific detail, so it does not enrich beyond the schema. Baseline 3 is appropriate given the high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the function: 'Deletes a customer from this business', with a specific verb and resource. It also includes a meaningful constraint (blocked when the customer has sales or invoices) that distinguishes it from other delete tools like delete_product or delete_supplier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (to delete a customer) and explicitly states when it cannot be used ('blocked when the customer has sales or invoices'), which serves as a clear exclusion. However, it does not point to alternative tools like upsert_customer or suggest any alternative workflow, so guidance is slightly limited.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Add one secure layer between your agents and this server.
Multiple tools have overlapping purposes, such as caja_registrar_movimiento vs register_movement, get_payment_intent_status vs open_cobro_status, and adjust_stock vs stock_load. The distinctions are not immediately clear from names/descriptions, causing a high risk of misselection.
Naming is inconsistent: mixes English and Spanish (caja_*, emit_invoice, send_whatsapp_*), and uses different patterns (open_*, get_*, query_*, list_*, etc.). Some names like stock_load and bulk_price_update don't follow a clear verb_noun convention.
50 tools is excessive for most contexts, even for a broad ERP-like domain. Many are UI widgets (open_*) that add clutter and could be consolidated, making the tool set feel heavy and harder to navigate.
The tool set covers many core business functions (products, suppliers, customers, sales, invoicing, shipping, cash register, payments, integrations). However, there are noticeable gaps: purchase requests have only create (no list/update/delete), shipments cannot be updated/cancelled, and sales lack direct update/query by ID.