logiwa-mcp-server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@logiwa-mcp-serverlist all products in warehouse A"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
logiwa-mcp-server
An MCP server for the Logiwa IO (WMS) API. It lets MCP clients (Claude Desktop, Claude Code, etc.) work with your Logiwa warehouse data through well-described tools: products, inventory, shipment/purchase/return orders, warehouses & locations, customers/vendors/retailers, key reports, and reference lookups.
Language / transport: TypeScript · stdio
API base:
https://myapi.logiwa.com(override withLOGIWA_BASE_URL)Auth: JWT bearer — fetched from email/password, or a pre-issued token
Tools: 32 (see Tools)
Built with the mcp-builder skill.
Prerequisites
Node.js ≥ 18
A Logiwa IO account. Each user authenticates with their own credentials (email/password or a pre-issued JWT). The server calls the Logiwa API on behalf of whoever's credentials are configured — no credentials are bundled in this repo, so every user must supply their own.
Related MCP server: MoySklad MCP Server
Setup
git clone https://github.com/cgtykctn/Logiwa-IO-WMS--MCP-.git
cd Logiwa-IO-WMS--MCP-
npm install
npm run buildThen verify the build without needing credentials:
node dist/index.js --list-tools # prints the 32 registered toolsAuthentication
The server authenticates with a JWT bearer token. Provide credentials via environment variables
(see .env.example):
Variable | Description |
| Recommended. The server |
| A pre-issued JWT. If set, it takes precedence and no login call is made. |
| Optional. API base URL (default |
| Optional. Per-request timeout in ms (default |
Credentials are read from the process environment only — nothing is written to disk or logged.
Register with an MCP client
Replace
/absolute/path/to/Logiwa-IO-WMS--MCP-with the real path where you cloned the repo, and use your own Logiwa email/password. The server runs locally (stdio) alongside your MCP client — each user installs and configures it on their own machine.
Claude Code (CLI)
claude mcp add logiwa \
--env LOGIWA_EMAIL=you@example.com \
--env LOGIWA_PASSWORD=your-password \
-- node "/absolute/path/to/Logiwa-IO-WMS--MCP-/dist/index.js"Claude Desktop
Add to claude_desktop_config.json (Settings → Developer → Edit Config):
{
"mcpServers": {
"logiwa": {
"command": "node",
"args": ["/absolute/path/to/Logiwa-IO-WMS--MCP-/dist/index.js"],
"env": {
"LOGIWA_EMAIL": "you@example.com",
"LOGIWA_PASSWORD": "your-password"
}
}
}
}Restart the client after editing. Tools then appear under the logiwa server.
Tools
All list/report tools paginate with page (1-based) and page_size (≤200), and accept
response_format (markdown default, or json for full structured data). Logiwa's list endpoints
paginate by page index only (no server-side text filter), so page through results or use a get/lookup
tool when you already know an identifier. Write tools expose the API's required fields plus an
additional_fields escape hatch for any other Logiwa body field.
Products — logiwa_list_products, logiwa_get_product, logiwa_create_product, logiwa_update_product
Inventory — logiwa_list_inventory, logiwa_add_inventory, logiwa_adjust_inventory, logiwa_remove_inventory, logiwa_transfer_inventory
Shipment orders — logiwa_list_shipment_orders, logiwa_get_shipment_order, logiwa_create_shipment_order, logiwa_update_shipment_order, logiwa_cancel_shipment_order, logiwa_ship_shipment_orders
Purchase orders — logiwa_list_purchase_orders, logiwa_get_purchase_order, logiwa_create_purchase_order, logiwa_receive_purchase_order
Return orders — logiwa_list_return_orders, logiwa_create_return_order, logiwa_cancel_return_order
Warehouses — logiwa_list_warehouses, logiwa_list_warehouse_locations
Partners — logiwa_list_customers, logiwa_list_vendors, logiwa_list_retailers
Reports — logiwa_report_total_inventory, logiwa_report_shipment_history, logiwa_report_receiving_history, logiwa_report_available_to_promise
Lookups — logiwa_lookup (clients, warehouses, types, reasons, carriers, …)
Tip: start with
logiwa_lookupto resolve theclientIdentifier, type names, and currency ids that the create/update tools require.
Development
npm run dev # tsx watch (auto-reload)
npm run build # tsc -> dist/
npm start # node dist/index.js
npx @modelcontextprotocol/inspector node dist/index.js # interactive testingProject structure
src/
├── index.ts # entry point: wires up tools, stdio transport, --list-tools
├── constants.ts # base URL, limits, defaults
├── types.ts # response envelope types
├── registry.ts # registerTool wrapper that records tool names
├── services/
│ ├── client.ts # auth (token fetch + cache + 401 retry) and HTTP
│ └── format.ts # list/object formatting, pagination, truncation, error messages
├── schemas/
│ └── common.ts # shared Zod fragments (pagination, line items, packing)
└── tools/ # one file per domain
├── products.ts inventory.ts shipmentOrders.ts purchaseOrders.ts
├── returnOrders.ts warehouses.ts partners.ts reports.ts helpers.ts
└── simpleList.ts # factory for simple read-only list toolsScope & notes
Covers the core Logiwa domains (the API has 200+ endpoints). Niche areas — robotics, billing, count plans, warehouse tasks, webhooks, data-setup CRUD, user/role admin — are intentionally omitted from this first version and can be added the same way.
Destructive operations (
*_cancel_*,*_remove_*,*_adjust_*) are flagged withdestructiveHint.For Logiwa field references, see the developer docs at https://mydeveloper.logiwa.com/ and the Swagger UI at https://myapi.logiwa.com/swagger/index.html.
License
Licensed under the Apache License 2.0.
Available Tools
32 toolslogiwa_add_inventoryAdd InventoryA
Increases the on-hand quantity of an existing inventory record by quantity.
Identify the record with 'inventoryIdentifier' (UUID) from logiwa_list_inventory.
Args:
inventoryIdentifier (string, required): UUID of the inventory record
quantity (number, required): quantity to add
note (string): optional note
adjustmentReasonName (string): optional reason (must match a configured reason)
Returns: the operation result from Logiwa.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Optional note recorded with the transaction. | |
| quantity | Yes | Quantity to add. | |
| additional_fields | No | Escape hatch for any extra Logiwa request-body fields not exposed as typed parameters above. Keys must match the Logiwa API's camelCase field names; merged verbatim into the request body. | |
| inventoryIdentifier | Yes | Inventory record UUID (from logiwa_list_inventory). | |
| adjustmentReasonName | No | Optional adjustment reason name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only, non-destructive operation. The description adds behavioral context by stating the effect (increasing on-hand quantity), the requirement that the record must exist, and that adjustmentReasonName must match a configured reason. However, it does not discuss side effects, error cases, or idempotency beyond what annotations provide, so a 4 is appropriate.
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 well-structured: a clear one-sentence purpose, a brief identifying instruction, an Args list, and a Returns line. It is not excessively long, but the Args section largely duplicates schema information, which is slightly redundant. Overall, it is organized and front-loaded, earning a 4 rather than a 5.
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?
The tool has five parameters, no output schema, and is a mutation operation. The description covers the main inputs, the requirement to use an existing record, and the return value as 'the operation result from Logiwa,' which is vague. It lacks detail on error handling or what the result contains, leaving some gaps for such a complex tool.
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 input schema already documents all five parameters with descriptions, so coverage is 100%. The description mostly repeats the schema content, but adds a useful constraint ('adjustmentReasonName must match a configured reason') not present in the schema. This is a modest addition, consistent with a baseline 3 when schema does the heavy lifting.
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 tool increases the on-hand quantity of an existing inventory record by a given quantity. This specific verb+resource combination distinguishes it from sibling tools like logiwa_adjust_inventory or logiwa_remove_inventory, and the reference to 'existing inventory record' clarifies it is not a creation operation.
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 provides clear context for use: it increases quantity on an existing record and instructs the user to identify the record via inventoryIdentifier (UUID) from logiwa_list_inventory. It does not explicitly mention alternatives or when not to use this tool, but the 'increases' wording implies it is for increments specifically. Lacks explicit exclusions, hence not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logiwa_adjust_inventoryAdjust InventoryADestructive
Adjusts the on-hand quantity of an inventory record to a new value. This overwrites the counted quantity.
Identify the record with 'inventoryIdentifier' (UUID) from logiwa_list_inventory.
Args:
inventoryIdentifier (string, required): UUID of the inventory record
quantity (number, required): quantity to adjust
note (string): optional note
adjustmentReasonName (string): optional reason (must match a configured reason)
Returns: the operation result from Logiwa.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Optional note recorded with the transaction. | |
| quantity | Yes | Quantity to adjust. | |
| additional_fields | No | Escape hatch for any extra Logiwa request-body fields not exposed as typed parameters above. Keys must match the Logiwa API's camelCase field names; merged verbatim into the request body. | |
| inventoryIdentifier | Yes | Inventory record UUID (from logiwa_list_inventory). | |
| adjustmentReasonName | No | Optional adjustment reason name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals that the operation overwrites the counted quantity, which is a concrete destructive behavior beyond the general destructiveHint annotation. It also notes that adjustmentReasonName must match a configured reason and that the operation returns the Logiwa result. These details add meaningful behavioral context not fully captured by annotations.
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 front-loaded with a clear purpose, followed by a prerequisite and a structured argument list. It is somewhat redundant with the schema but remains efficient and well-organized. No filler sentences.
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?
The tool has 5 parameters, a nested additional_fields object, no output schema, and destructive annotations. The description covers purpose, prerequisites, overwrite behavior, the reason constraint, and return value. The schema covers the remaining parameter details, making the overall context adequate for an agent to invoke it correctly.
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 input schema covers all parameters with descriptions, providing a high baseline. The description adds value by specifying the inventoryIdentifier should come from logiwa_list_inventory and that adjustmentReasonName must match a configured reason, which is not in the schema. The argument list largely repeats schema, but the extra constraints justify a slight bump.
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 tool 'Adjusts the on-hand quantity of an inventory record to a new value' and emphasizes 'overwrites the counted quantity.' This distinguishes it from sibling tools like logiwa_add_inventory or logiwa_remove_inventory, and it specifies the record source (logiwa_list_inventory).
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 gives context by saying the adjustment sets a new value and overwrites the existing quantity, making it clear this is for absolute updates. It also instructs to identify the record via inventoryIdentifier from logiwa_list_inventory. However, it does not explicitly contrast with add/remove/transfer alternatives, so it's clear but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logiwa_cancel_return_orderCancel Return OrderADestructiveIdempotent
Cancel a return order. Identify it by rmaNumber and the related shipment order / warehouse / client.
Args (common):
rmaNumber (string): the RMA to cancel
shipmentOrderCode or shipmentOrderIdentifier (string)
warehouseIdentifier (string), clientIdentifier (string) Other identifiers via additional_fields.
Returns: the cancellation result. Destructive state change.
| Name | Required | Description | Default |
|---|---|---|---|
| client | No | ||
| rmaNumber | No | RMA number to cancel. | |
| warehouse | No | ||
| clientIdentifier | No | ||
| additional_fields | No | Escape hatch for any extra Logiwa request-body fields not exposed as typed parameters above. Keys must match the Logiwa API's camelCase field names; merged verbatim into the request body. | |
| shipmentOrderCode | No | ||
| warehouseIdentifier | No | ||
| shipmentOrderIdentifier | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover destructiveHint=true and readOnlyHint=false, so the description's 'Destructive state change' adds little new information. It does mention the return value ('Returns: the cancellation result'), which is useful, but overall behavioral disclosure relies heavily on annotations rather than description-specific details.
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 compact and well-structured, split into purpose, args, return value, and a destructive-state note. Every sentence adds useful information with no filler or redundancy, making it easy for an agent to parse quickly.
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 tool with 8 parameters, no output schema, and complex identification requirements, the description provides a coherent identification scheme and states the return outcome. It lacks detailed cancellation semantics (e.g., status changes or prerequisites), but given the annotations cover destructive and idempotent hints, the description is sufficient for most selection and invocation needs.
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?
With only 25% schema description coverage, the description compensates by clarifying the roles of key identifiers: it explains that rmaNumber is the RMA to cancel, that shipmentOrderCode and shipmentOrderIdentifier are alternatives, and that warehouseIdentifier/clientIdentifier are used. It also points to additional_fields as an escape hatch, adding meaning beyond the schema's bare field names.
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 tool's function with a specific verb ('Cancel') and resource ('return order'). It distinguishes from the sibling tool logiwa_cancel_shipment_order by emphasizing the return order context, making the purpose unambiguous.
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 explains how to identify the return order (via rmaNumber and related shipment/warehouse/client) but does not explicitly state when to use this tool versus alternatives like logiwa_cancel_shipment_order. There is no guidance on exclusions or when-not-to-use, leaving usage largely implied from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logiwa_cancel_shipment_orderCancel Shipment OrderADestructiveIdempotent
Cancel a shipment order by its identifier (UUID). This is a destructive state change.
Args:
identifier (string, required): the order UUID
cancelReasonName (string): optional cancellation reason
shipmentOrderCode (string): optional code for cross-checking Other fields (warehouseIdentifier, clientIdentifier, cancelReasonIdentifier) via additional_fields.
Returns: the cancellation result.
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes | Shipment order UUID to cancel (required). | |
| cancelReasonName | No | Cancellation reason name. | |
| additional_fields | No | Escape hatch for any extra Logiwa request-body fields not exposed as typed parameters above. Keys must match the Logiwa API's camelCase field names; merged verbatim into the request body. | |
| shipmentOrderCode | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that this is a destructive state change, which aligns with the destructiveHint annotation, and mentions the return result. However, it adds little beyond the annotations, and the additional_fields note is more parameter semantics than behavioral context.
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 compact, front-loaded with the main action, and uses a clear Args/Returns structure. Every sentence contributes value, including the note about cross-checking and additional_fields.
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?
Given no output schema, the description covers the required identifier, optional parameters, and the return value at a high level. It lacks details about preconditions (e.g., cannot cancel shipped orders) and consequences beyond 'destructive', but the annotations provide safety context.
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 description explains each parameter's purpose, including clarifying that shipmentOrderCode is for cross-checking and listing example additional_fields. This goes beyond the schema, which omits a description for shipmentOrderCode.
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 states 'Cancel a shipment order by its identifier (UUID)' with a specific verb and resource, clearly distinguishing it from siblings like cancel_return_order and get_shipment_order.
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 clearly implies when to use this tool (to cancel a shipment order) and provides clear context. It does not explicitly mention alternatives or exclusions, but the tool name and sibling list make the intended scope obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logiwa_create_productCreate ProductA
Create a new product (SKU) in Logiwa.
Required: clientIdentifier, sku, name, description, currencyId, isPackagingMaterial, packingSettings. Use logiwa_lookup to resolve clientIdentifier and currency/pack-type values. Provide any additional Logiwa fields (kit components, hazmat, custom fields, etc.) via additional_fields.
Returns: the create response from Logiwa (typically the new product identifier / status).
| Name | Required | Description | Default |
|---|---|---|---|
| sku | Yes | Stock Keeping Unit — unique product code (required). | |
| upc | No | List of UPC/barcode values. | |
| name | Yes | Product name (required). | |
| taxRate | No | ||
| isActive | No | ||
| currencyId | Yes | Currency id for pricing (required). See logiwa_lookup. | |
| salesPrice | No | ||
| description | Yes | Product description (required). | |
| purchasePrice | No | ||
| packingSettings | Yes | Packing settings (weight, dimensions, handling flags) for the product. | |
| productTypeName | No | ||
| uomPackTypeName | No | Base unit of measure pack-type name. | |
| clientIdentifier | Yes | Client UUID that owns this product (required). | |
| isDigitalProduct | No | ||
| productGroupName | No | ||
| additional_fields | No | Escape hatch for any extra Logiwa request-body fields not exposed as typed parameters above. Keys must match the Logiwa API's camelCase field names; merged verbatim into the request body. | |
| isPackagingMaterial | Yes | Whether this SKU is packaging material (required). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal readOnly=false, openWorld=true, and idempotent=false. The description adds that additional_fields are merged verbatim into the request and that the return is typically the new product identifier/status, which goes beyond annotation defaults. It does not mention auth or duplicate-SKU behavior, but the annotation coverage lowers that burden.
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?
Four short sentences front-load the purpose, then cover required fields, lookup guidance, extension, and return value with no filler. Every sentence contributes actionable information.
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 tool with 17 parameters, nested packingSettings, and no output schema, the description provides required fields, cross-tool lookup guidance, an extension mechanism, and expected return shape. It could be more precise about duplicate-SKU behavior and exact response format, but it is largely sufficient for selecting and invoking the tool.
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?
Schema description coverage is only 59%, so the description compensates by listing all seven required fields and directing agents to logiwa_lookup for resolving key values. It also explains the additional_fields escape hatch for untyped Logiwa fields. Optional fields are not individually detailed, but schema descriptions partially cover them.
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 opens with 'Create a new product (SKU) in Logiwa,' clearly identifying the action and resource. This distinguishes it from sibling tools such as logiwa_update_product and logiwa_get_product.
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?
It clearly frames the tool for new-product creation and provides actionable guidance to use logiwa_lookup to resolve clientIdentifier and currency/pack-type values. It does not explicitly contrast with update_product for existing SKUs, but the 'new product' framing gives sufficient context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logiwa_create_purchase_orderCreate Purchase OrderA
Create a new purchase (inbound) order.
Required: code, clientIdentifier, vendor, purchaseOrderTypeName, warehouseIdentifier, currencyId, purchaseOrderLineList (>=1 line). Resolve client/warehouse/type/currency with logiwa_lookup and logiwa_list_warehouses. Other fields via additional_fields.
Returns: the create response (new PO identifier / status).
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Unique PO code (required). | |
| note | No | ||
| vendor | Yes | Vendor name (required). | |
| currencyId | Yes | Currency id (required). | |
| referenceNumber | No | ||
| clientIdentifier | Yes | Client UUID (required). | |
| additional_fields | No | Escape hatch for any extra Logiwa request-body fields not exposed as typed parameters above. Keys must match the Logiwa API's camelCase field names; merged verbatim into the request body. | |
| warehouseIdentifier | Yes | Destination warehouse UUID (required). | |
| plannedReceivingDate | No | ISO date-time. | |
| purchaseOrderLineList | Yes | PO line products (required, >=1). | |
| purchaseOrderTypeName | Yes | Purchase order type name (required). See logiwa_lookup. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true. The description adds that it returns 'the create response (new PO identifier / status)' and requires certain fields, but does not elaborate on side effects or error behavior. It doesn't contradict annotations, but adds limited additional behavioral context.
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 concise and well-structured: it leads with the action, then lists required fields, gives resolution guidance, and ends with return value. Every sentence earns its place without unnecessary fluff.
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?
Given the tool's complexity (11 parameters, nested objects, no output schema), the description covers required fields, resolution strategy, the return payload, and the additional_fields escape hatch. It's well-aligned with the schema and provides sufficient context for an agent to invoke it correctly.
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?
Schema coverage is high (82%), but the description adds meaning by listing required fields, advising to resolve certain identifiers via lookup tools, and explaining that 'Other fields via additional_fields' serves as an escape hatch. This goes beyond the schema for those parameters.
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 opens with 'Create a new purchase (inbound) order,' a specific verb+resource that clearly distinguishes it from sibling tools like create_shipment_order and create_return_order. It also lists required fields and the return value, reinforcing the tool's purpose.
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 explicitly instructs to 'Resolve client/warehouse/type/currency with logiwa_lookup and logiwa_list_warehouses,' providing clear guidance on prerequisites and alternative tools. It doesn't explicitly state when not to use the tool, but does offer context for field resolution.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logiwa_create_return_orderCreate Return OrderA
Create a return order (RMA).
Required: rmaNumber, returnOrderProductLineList (>=1 line; each line needs productIdentifier + requestedQuantity). Link to the original sale with shipmentOrderCode or shipmentOrderIdentifier. Resolve product identifiers via logiwa_list_products. Other fields via additional_fields.
Returns: the create response (new return order identifier / status).
| Name | Required | Description | Default |
|---|---|---|---|
| client | No | ||
| carrier | No | ||
| rmaNumber | Yes | Return Merchandise Authorization number (required, unique). | |
| warehouse | No | ||
| trackingNumber | No | ||
| clientIdentifier | No | ||
| additional_fields | No | Escape hatch for any extra Logiwa request-body fields not exposed as typed parameters above. Keys must match the Logiwa API's camelCase field names; merged verbatim into the request body. | |
| shipmentOrderCode | No | Original shipment order code this return relates to. | |
| scheduledReturnDate | No | ISO date-time. | |
| warehouseIdentifier | No | ||
| shipmentOrderIdentifier | No | Original shipment order UUID. | |
| returnOrderProductLineList | Yes | Return line products (required, >=1). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly=false and destructive=false, and the description adds that the tool returns 'the create response (new return order identifier / status).' It also clarifies required fields and the need to link to an original sale, which is useful behavioral context beyond the raw annotations.
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 concise and front-loaded: it states the purpose first, then required fields, linking guidance, a pointer to a sibling tool, and the return value. Every sentence earns its place with no unnecessary noise.
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?
Given the tool has 12 parameters, a nested object, no output schema, and moderate schema description coverage, the description covers the most important operational details: required fields, product line structure, linking to original sale, and expected return value. It could be expanded with examples or more explicit field semantics, but it is sufficient for a competent agent.
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?
Schema description coverage is only 50%, but the description highlights the critical requirements: rmaNumber, returnOrderProductLineList with each line needing productIdentifier + requestedQuantity. It also explains the purpose of shipmentOrderCode/shipmentOrderIdentifier and additional_fields, adding meaning beyond the schema's bare property definitions.
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 tool name and title clearly state 'Create Return Order', and the description opens with 'Create a return order (RMA).' This is a specific verb+resource pairing that directly distinguishes it from siblings like logiwa_cancel_return_order or logiwa_list_return_orders.
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 states required fields (rmaNumber, returnOrderProductLineList) and explains how to link to the original sale using shipmentOrderCode or shipmentOrderIdentifier. It also directs users to logiwa_list_products for resolving product identifiers. While it doesn't explicitly name alternatives or exclusions, the context for when to use this tool is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logiwa_create_shipment_orderCreate Shipment OrderA
Create a new shipment (outbound) order.
Required: code, shipmentOrderType, shipmentOrderDate (ISO date-time), currencyId, shipmentOrderLineList (>=1 line). Provide customer / shipmentAddress / billingAddress as objects matching the Logiwa API. Resolve type/warehouse/currency values with logiwa_lookup. Any other fields go in additional_fields.
Returns: the create response (new order identifier / status).
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Unique order code (required). | |
| note | No | ||
| client | No | Client display name (alternative to clientIdentifier). | |
| customer | No | Customer block (name, email, phone, etc.) per the Logiwa API. | |
| warehouse | No | Warehouse code (alternative to warehouseIdentifier). | |
| currencyId | Yes | Currency id (required). | |
| billingAddress | No | Billing address block per the Logiwa API. | |
| shipmentAddress | No | Shipment/destination address block per the Logiwa API. | |
| clientIdentifier | No | ||
| additional_fields | No | Escape hatch for any extra Logiwa request-body fields not exposed as typed parameters above. Keys must match the Logiwa API's camelCase field names; merged verbatim into the request body. | |
| shipmentOrderDate | Yes | Order date, ISO date-time (required). | |
| shipmentOrderType | Yes | Shipment order type name (required). See logiwa_lookup. | |
| warehouseIdentifier | No | ||
| expectedShipmentDate | No | ISO date-time. | |
| shipmentOrderLineList | Yes | Order line products (required, >=1). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and openWorldHint=true. The description adds value by listing required fields, explaining the additional_fields mechanism, and stating the return value ('new order identifier / status'). This goes beyond the annotations without contradicting them.
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 three sentences, front-loaded with the primary action, and each sentence adds critical information (required fields, lookup resolution, return type). No filler or redundancy.
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 15-parameter tool with nested objects and no output schema, the description covers required fields, additional_fields, and return value. It does not address error cases or duplicate-code behavior, but given schema richness and openWorldHint, this is adequate.
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?
Schema coverage is 80%, so the baseline is 3. The description adds meaningful guidance by instructing to resolve type/warehouse/currency values via logiwa_lookup, which is not in the schema. It also clarifies that customer/shipmentAddress/billingAddress should be objects matching the Logiwa API, reinforcing schema descriptions.
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 opens with 'Create a new shipment (outbound) order,' which uses a specific verb and resource. It clearly distinguishes from sibling tools like logiwa_create_purchase_order and logiwa_create_return_order by naming the order type (shipment/outbound).
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 provides clear context for when to use this tool (creating a shipment order) and includes actionable guidance such as 'Resolve type/warehouse/currency values with logiwa_lookup' and 'Any other fields go in additional_fields.' However, it does not explicitly mention when not to use it or compare with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logiwa_get_productGet ProductARead-onlyIdempotent
Get the full detail of a single product by its Logiwa identifier (UUID).
Args:
identifier (string): the product's UUID (from logiwa_list_products items[].identifier)
response_format ('markdown' | 'json'): output format (default markdown)
Returns: the product object including SKU, name, description, pricing, packing settings, custom fields and flags.
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes | Product identifier (UUID). | |
| response_format | No | Output format: 'markdown' for a human-readable summary (default) or 'json' for the full structured payload. | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, idempotent, and non-destructive, so the description need not repeat those. It adds meaningful behavioral context by specifying the return content (SKU, name, description, pricing, packing settings, custom fields, flags) and the response_format behavior (markdown vs json). This goes beyond the structured fields.
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 compact and front-loaded, with a clear purpose sentence followed by labeled Args and Returns sections. Every line serves a purpose; there is no redundancy or irrelevant information.
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 two-parameter get tool with annotations and a complete schema, the description is fully sufficient. It explains the return value and parameter behavior, and the schema covers required fields and enums. No significant gaps remain.
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?
Schema coverage is 100%, so baseline is 3. The description enriches both parameters: it cross-references the identifier's origin (from logiwa_list_products) and clarifies that response_format defaults to markdown for a human-readable summary versus json for the full structured payload. This adds value over the schema descriptions.
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 tool gets the full detail of a single product by UUID, with a specific verb ('Get'), resource ('product'), and scope ('single product by its Logiwa identifier'). This distinguishes it from siblings like logiwa_list_products (which lists many) and logiwa_get_shipment_order (a different entity).
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 the appropriate usage context by specifying that the identifier comes from logiwa_list_products items[].identifier, guiding the user to first list products. It does not explicitly name alternatives or exclusions, but the context is clear enough for an agent to infer when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logiwa_get_purchase_orderGet Purchase OrderARead-onlyIdempotent
Get full detail (including line items) of one purchase order by its identifier (UUID).
Args:
identifier (string): the PO's UUID (from logiwa_list_purchase_orders)
response_format ('markdown' | 'json'): output format (default markdown)
Returns: the purchase order with vendor, warehouse, dates and line products.
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes | Purchase order identifier (UUID). | |
| response_format | No | Output format: 'markdown' for a human-readable summary (default) or 'json' for the full structured payload. | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds behavioral specifics: 'full detail (including line items)', the configurable response_format with default markdown, and the return fields (vendor, warehouse, dates, line products).
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 compact: a one-sentence purpose, a brief args list, and a return line. It is well-structured and every sentence adds information.
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?
Given the 2-parameter schema, no output schema, and strong annotations, the description covers the essential aspects: what it returns, the line items, and output format. It lacks only edge-case behavior (e.g., not found), but that is not required for a simple GET-like tool.
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?
Schema description coverage is 100%, so the schema already documents both parameters sufficiently. The description restates the params but adds only the provenance hint for identifier and confirms the default output format, which adds marginal value.
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 opens with a specific verb+resource: 'Get full detail (including line items) of one purchase order by its identifier (UUID).' This clearly distinguishes it from sibling list/receive/create tools, which operate on collections or different actions.
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 mentions the identifier comes 'from logiwa_list_purchase_orders', giving a usage context. It does not explicitly name alternatives or exclusions, but it clearly implies use for single-PO detail retrieval, which is sufficient context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logiwa_get_shipment_orderGet Shipment OrderARead-onlyIdempotent
Get full detail of one shipment order by its identifier (UUID).
Args:
identifier (string): the order's UUID (from logiwa_list_shipment_orders)
response_format ('markdown' | 'json'): output format (default markdown)
Returns: the shipment order including status, addresses, line products, carrier and tracking info.
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes | Shipment order identifier (UUID). | |
| response_format | No | Output format: 'markdown' for a human-readable summary (default) or 'json' for the full structured payload. | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds useful context about the return contents (status, addresses, line products, carrier, tracking) and the response_format options, which goes beyond the annotation coverage.
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 compact and well-structured: one-sentence summary, args list, and return summary. Every line adds value, and the main purpose is front-loaded.
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 2-parameter read tool with high schema coverage and annotations, the description covers the essential usage and return information. No output schema exists, but the described return fields are sufficient for invocation decisions.
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?
Schema coverage is 100% with descriptions for both parameters. The description adds extra value by noting the identifier comes from logiwa_list_shipment_orders and clarifying the response_format usage, which is not fully captured in the schema.
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 tool fetches full detail for a single shipment order by UUID, using the verb 'Get' and specifying the resource exactly. It distinguishes from list/cancel/update siblings by focusing on singular detail retrieval.
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 gives clear context: use this to retrieve one shipment order by its UUID, and even tells the agent the identifier comes from logiwa_list_shipment_orders. It doesn't explicitly exclude alternatives, but the usage scenario is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logiwa_list_customersList CustomersARead-onlyIdempotent
List customers (ship-to parties), paginated.
Args:
page (number): 1-based page number (default 1)
page_size (number): records per page, 1-200 (default 20)
response_format ('markdown' | 'json'): output format (default markdown)
Returns: customers with identifier, name and contact/address details.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based page number to fetch (Logiwa paginates by page index). | |
| page_size | No | Number of records per page (1-200, default 20). | |
| response_format | No | Output format: 'markdown' for a human-readable summary (default) or 'json' for the full structured payload. | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description does not need to restate safety. It adds valuable context about pagination behavior and the return payload (customers with identifier, name, contact/address details), going beyond the annotations and schema.
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 concise and well-structured: a one-line purpose, a clear argument list, and a returns summary. The Args section is somewhat redundant with the schema but is organized and easy to scan, making it useful in a tool description context.
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?
There's no output schema, so the description's return details ('identifier, name and contact/address details') are essential and provided. It also covers pagination and defaults. For a read-only list tool with 100% schema coverage, this description is complete enough to invoke and interpret results.
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?
Schema description coverage is 100%, so a baseline of 3 is appropriate. The description repeats each parameter in a docstring format, but does not add significant meaning beyond the schema. It does add a 'Returns' line describing output fields, which is useful since there is no output schema, but parameters themselves are fully covered by the schema.
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 states 'List customers (ship-to parties), paginated' with a specific verb and resource, and clarifies that customers are ship-to parties. This clearly distinguishes it from sibling list tools like logiwa_list_products or logiwa_list_inventory.
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?
There is no explicit guidance on when to use this tool versus other list tools. The description only states what it does and its parameters; it does not mention when to prefer it over alternatives or any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logiwa_list_inventoryList InventoryARead-onlyIdempotent
List on-hand inventory records with their warehouse locations, paginated.
Each record ties a product/SKU to a warehouse, location and on-hand quantity, and carries an 'inventoryIdentifier' UUID used by the add/adjust/remove tools.
Args:
page (number): 1-based page number (default 1)
page_size (number): records per page, 1-200 (default 20)
response_format ('markdown' | 'json'): output format (default markdown)
Returns: paginated { items[] } where each item includes inventoryIdentifier, sku, warehouse, location and quantity.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based page number to fetch (Logiwa paginates by page index). | |
| page_size | No | Number of records per page (1-200, default 20). | |
| response_format | No | Output format: 'markdown' for a human-readable summary (default) or 'json' for the full structured payload. | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds behavioral details about pagination, response_format options, and the fact that each record carries an inventoryIdentifier useful for mutations. This goes beyond simple safety and provides operational context, with no contradiction.
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 well-organized: opens with a clear purpose statement, then breaks down parameters, and closes with return structure. Each sentence adds value and there is no redundancy or fluff.
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?
Even without an output schema, the description defines the return shape (items[] with inventoryIdentifier, sku, warehouse, location, quantity). It also covers pagination and format options, and annotations cover safety. For a list tool of moderate complexity, this is complete.
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?
Input schema covers 100% of the parameters with descriptions, defaults, and ranges. The description repeats the same parameter details without adding new meaning beyond what's already in the schema, so baseline of 3 is appropriate.
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 tool lists on-hand inventory records with warehouse locations, paginated. It distinguishes itself from sibling tools like list_products and report_total_inventory by specifying the inventory scope and the inventoryIdentifier field used by mutation tools.
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 provides clear context by noting that inventoryIdentifier is used by add/adjust/remove tools, implying when this list tool is relevant. It does not explicitly name alternative tools for reports or aggregation, but the purpose is self-evident enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logiwa_list_productsList ProductsARead-onlyIdempotent
List products (SKUs) in the Logiwa catalog, paginated.
Logiwa list endpoints paginate by page index only — there is no server-side text filter, so page through results to find a SKU, or use logiwa_get_product when you already know the product identifier.
Args:
page (number): 1-based page number (default 1)
page_size (number): records per page, 1-200 (default 20)
response_format ('markdown' | 'json'): output format (default markdown)
Returns: { title, page, page_size, count, total_count, has_more, next_page, items[] }. Each item includes the product identifier (UUID), sku, name, stock and packaging info.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based page number to fetch (Logiwa paginates by page index). | |
| page_size | No | Number of records per page (1-200, default 20). | |
| response_format | No | Output format: 'markdown' for a human-readable summary (default) or 'json' for the full structured payload. | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds valuable behavior context: pagination is by page index only, there is no server-side filter, and it specifies the response shape. This goes beyond the annotations and helps set expectations for output.
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 well-structured: a clear one-line purpose, then pagination behavior, then parameter summaries, then return details. It is slightly longer than strictly necessary due to overlapping with the schema, but every sentence serves a purpose, so it remains efficient.
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?
Since there is no output schema, the description fully documents the return object and item contents. It also covers pagination mechanics, filtering limitations, and the alternative tool, making it sufficient for an agent to invoke and interpret results correctly. The context provided is complete for the tool's complexity.
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?
Schema coverage is 100%, so the baseline is 3. The description's arg list largely duplicates the schema's parameter descriptions, adding little beyond stating that page is 1-based and page_size has a max of 200. It does not introduce new semantic meaning for parameters that the schema already provides.
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 opens with 'List products (SKUs) in the Logiwa catalog, paginated', using a specific verb (List) and resource (products/SKUs), and clearly distinguishes itself from siblings by noting pagination and the absence of server-side filters. It also references logiwa_get_product for known identifiers, differentiating its scope from a single-product lookup.
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 explicitly states when to use this tool ('page through results to find a SKU') and when to use an alternative ('or use logiwa_get_product when you already know the product identifier'). It also explains the pagination-only behavior, giving clear guidance on how to retrieve products in the absence of search/filter capabilities.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logiwa_list_purchase_ordersList Purchase OrdersARead-onlyIdempotent
List purchase (inbound) orders, paginated.
Args:
page (number): 1-based page number (default 1)
page_size (number): records per page, 1-200 (default 20)
response_format ('markdown' | 'json'): output format (default markdown)
Returns: paginated { items[] } where each item includes the PO identifier (UUID), code, vendor, warehouse, status and dates.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based page number to fetch (Logiwa paginates by page index). | |
| page_size | No | Number of records per page (1-200, default 20). | |
| response_format | No | Output format: 'markdown' for a human-readable summary (default) or 'json' for the full structured payload. | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering safety. The description adds meaningful behavioral context by specifying that results are paginated and by describing the return payload structure (items array with PO UUID, code, vendor, warehouse, status, dates). This goes beyond what annotations provide, without contradicting them.
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 concise and well-structured: a one-line summary followed by an Args list and a Returns clause. Every element carries necessary information, and there is no fluff or redundancy beyond the schema repetition, which is acceptable for a standalone tool description.
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 paginated list tool with no output schema, the description is complete. It specifies all parameters with defaults, enumerates the response format options, and summarizes the fields present in each item. Given the low complexity and strong annotations, no additional context is needed.
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?
Schema description coverage is 100%, with detailed descriptions for each parameter (page, page_size, response_format) including ranges, defaults, and enum meanings. The tool description repeats these details without adding additional semantics, such as edge-case handling or parameter interactions. Therefore, the baseline 3 is appropriate.
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 tool lists purchase (inbound) orders and explicitly notes pagination. The parenthetical '(inbound)' distinguishes from outbound shipment orders, and the verb 'List' is specific to the collection-level operation, clearly differentiating it from sibling tools like get_purchase_order or create_purchase_order.
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 usage by the verb 'List' and the clarification of inbound orders, but it does not explicitly state when to use this tool versus alternatives such as get_purchase_order for a single order or create_purchase_order. There is no exclusionary guidance, but the intended use for listing multiple orders is clear from the title and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logiwa_list_retailersList RetailersARead-onlyIdempotent
List retailers / sales channels configured in the account, paginated.
Args:
page (number): 1-based page number (default 1)
page_size (number): records per page, 1-200 (default 20)
response_format ('markdown' | 'json'): output format (default markdown)
Returns: retailers with identifier and name.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based page number to fetch (Logiwa paginates by page index). | |
| page_size | No | Number of records per page (1-200, default 20). | |
| response_format | No | Output format: 'markdown' for a human-readable summary (default) or 'json' for the full structured payload. | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds behavior beyond annotations: 'paginated' behavior, 1-based page index, page size limits, and the returned fields ('identifier and name'). It also notes the response format options, giving context on output shape without contradicting annotations.
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 compact: one main sentence, a concise Args list, and a one-line return type. No filler or redundant text; every element adds value. It is front-loaded with purpose.
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, read-only list endpoint with no required parameters and a fully documented schema, the description plus the annotations cover all essential aspects: what is retrieved, pagination, output formats, and return shape. No output schema exists, but the description's return statement suffices.
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?
Schema description coverage is 100%; all three parameters (page, page_size, response_format) are fully described with defaults, ranges, and enums. The description's Args section largely paraphrases the schema ('records per page, 1-200 (default 20)') without adding new semantic meaning, so the baseline 3 applies.
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 opens with 'List retailers / sales channels configured in the account, paginated,' using a specific verb ('list') and clearly scoping the resource ('retailers / sales channels'). This distinguishes it from sibling list tools like logiwa_list_customers or logiwa_list_products, and the return statement confirms its purpose.
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 the tool is for retrieving account-configured retailer/sales channel data, and the pagination/formatting details clarify usage. However, it does not explicitly name alternatives or state when not to use it, so an agent must infer from sibling names; it lacks exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logiwa_list_return_ordersList Return OrdersARead-onlyIdempotent
List return orders (RMAs), paginated.
Args:
page (number): 1-based page number (default 1)
page_size (number): records per page, 1-200 (default 20)
response_format ('markdown' | 'json'): output format (default markdown)
Returns: paginated { items[] } where each item includes the return order identifier, rmaNumber, related shipment order, warehouse and status.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based page number to fetch (Logiwa paginates by page index). | |
| page_size | No | Number of records per page (1-200, default 20). | |
| response_format | No | Output format: 'markdown' for a human-readable summary (default) or 'json' for the full structured payload. | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, covering the safety profile. The description adds behavioral context beyond these by explaining the pagination mechanism (1-based page, page_size) and the return structure (items[] with specific fields like rmaNumber, warehouse, status), which is valuable for the agent.
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 concise and well-structured, front-loading the purpose in the first line, followed by a clear Args list and Returns summary. Every sentence earns its place without redundancy or fluff.
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?
Given the simplicity of the tool (3 optional parameters, no output schema), the description fully covers the core aspects: purpose, parameters, and return format. It provides enough detail for an agent to correctly invoke the tool and interpret results, and the annotations cover the safety profile, making it complete for its complexity level.
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 input schema has 100% coverage with descriptions for all three parameters. The description's Args section essentially restates the schema information without adding new meaning. However, the Returns section clarifies what the agent can expect from the response, which indirectly helps parameter understanding but doesn't enhance parameter semantics further.
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 explicitly states 'List return orders (RMAs), paginated.' This clearly identifies the verb (list), resource (return orders), and distinguishes it from sibling tools like list_shipment_orders or list_purchase_orders.
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 provides clear context that this tool is for listing return orders with pagination and different output formats. It does not explicitly mention alternatives or exclusions, but the purpose is unambiguous given the sibling tool names, so the context is sufficient without explicit when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logiwa_list_shipment_ordersList Shipment OrdersARead-onlyIdempotent
List shipment (outbound / sales) orders, paginated.
Args:
page (number): 1-based page number (default 1)
page_size (number): records per page, 1-200 (default 20)
response_format ('markdown' | 'json'): output format (default markdown)
Returns: paginated { items[] } where each item includes the order identifier (UUID), code, status, warehouse, customer and dates.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based page number to fetch (Logiwa paginates by page index). | |
| page_size | No | Number of records per page (1-200, default 20). | |
| response_format | No | Output format: 'markdown' for a human-readable summary (default) or 'json' for the full structured payload. | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses pagination behavior and return structure ('Returns: paginated { items[] } where each item includes the order identifier (UUID), code, status, warehouse, customer and dates.'). This adds value beyond the annotations, which already declare read-only and idempotent hints. It does not contradict annotations.
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 well-structured and front-loaded with the core purpose. It then concisely lists parameters and return format in a clear, scannable layout. Every sentence earns its place without unnecessary verbosity.
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 list tool with full schema coverage and informative annotations, the description is complete. It explains pagination, parameter defaults, and return fields. The lack of an output schema is mitigated by the detailed return description. No critical information is missing.
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 input schema covers 100% of parameters with detailed descriptions, including defaults and constraints. The description restates the parameters but adds no additional semantics beyond what the schema already provides. Baseline of 3 is appropriate.
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 tool's function: 'List shipment (outbound / sales) orders, paginated.' The verb 'list' plus the specific resource 'shipment orders' with the qualifier '(outbound / sales)' distinguishes it from sibling list tools like logiwa_list_purchase_orders and logiwa_list_return_orders.
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 provides clear context by specifying that these are outbound/sales orders, which helps differentiate from purchase and return orders. However, it does not explicitly state exclusions or alternative tools, though the parenthetical qualifier gives sufficient context for the agent to choose this tool over related list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logiwa_list_vendorsList VendorsARead-onlyIdempotent
List vendors (suppliers) used on purchase orders, paginated.
Args:
page (number): 1-based page number (default 1)
page_size (number): records per page, 1-200 (default 20)
response_format ('markdown' | 'json'): output format (default markdown)
Returns: vendors with identifier, name and contact details.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based page number to fetch (Logiwa paginates by page index). | |
| page_size | No | Number of records per page (1-200, default 20). | |
| response_format | No | Output format: 'markdown' for a human-readable summary (default) or 'json' for the full structured payload. | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds valuable behavioral context by specifying pagination (page and page_size), default values, and the return fields (identifier, name, contact details). This goes beyond the annotations and clarifies the output shape, which is especially helpful since there is no output schema.
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 compact and well-structured: a one-line purpose, a bulleted Args list, and a Returns line. Every sentence serves a purpose, with no filler or repetition. It front-loads the core behavior and then provides parameter details in an easily scannable format.
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 paginated list tool with strong annotations and full schema coverage, the description is complete. It states the purpose, scope, all parameters with defaults, and the return fields (identifier, name, contact details). Since there is no output schema, the explicit return information is critical and provided. No additional behavior or edge cases need explaining for this straightforward read-only operation.
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?
Schema coverage is 100%, with each parameter already described in detail (type, defaults, ranges, enum for response_format). The description's Args section replicates the schema almost verbatim, adding no extra semantic meaning beyond what the schema already provides. The baseline of 3 is appropriate because the description does not need to compensate for schema gaps.
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 'List vendors (suppliers) used on purchase orders, paginated.' The verb 'List' plus the specific resource 'vendors (suppliers)' and the scope 'used on purchase orders' distinguish it from sibling list tools like list_customers or list_products. The added scope prevents ambiguity with potentially similar entity types (e.g., retailers).
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 provides clear context by specifying that this lists vendors used on purchase orders, implying when to use it (e.g., when looking up PO-related suppliers). However, it does not explicitly mention alternatives or state when not to use the tool, so it stops short of full usage guidance. The implicit exclusion of vendors not on POs is a clear contextual hint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logiwa_list_warehouse_locationsList Warehouse LocationsARead-onlyIdempotent
List warehouse locations (bins/shelves), paginated.
Args:
page (number): 1-based page number (default 1)
page_size (number): records per page, 1-200 (default 20)
response_format ('markdown' | 'json'): output format (default markdown)
Returns: locations with their identifier (UUID), code, zone/group and warehouse — used to resolve location codes for inventory transfers and receiving.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based page number to fetch (Logiwa paginates by page index). | |
| page_size | No | Number of records per page (1-200, default 20). | |
| response_format | No | Output format: 'markdown' for a human-readable summary (default) or 'json' for the full structured payload. | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the description doesn't need to restate safety. It adds useful behavioral details: pagination semantics, response_format options, and the returned fields (UUID, code, zone/group, warehouse). These details go beyond annotations and help the agent understand runtime behavior.
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 compact and well-structured. It uses a clear 'Args:' block and a 'Returns:' line, making it easy to scan. Every sentence contributes meaningful information—purpose, parameters, and return value—without padding or redundancy.
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?
There is no output schema, so the description appropriately covers return values, listing the specific fields (identifier, code, zone/group, warehouse). It also covers pagination and output format controls. For a simple list operation with optional parameters, this is fully complete and actionable for an agent.
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?
Schema description coverage is 100%, so the schema already documents all three parameters with defaults and ranges. The description's Args section largely duplicates this information. It adds a remote link to the tool's purpose ('resolve location codes') but no substantive parameter semantics beyond what the schema provides. Thus, baseline 3 is appropriate.
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 tool's purpose: 'List warehouse locations (bins/shelves), paginated.' This distinguishes it from sibling tools like logiwa_list_warehouses, which lists warehouses (facilities), not individual locations. The verb 'List' and resource 'warehouse locations' are specific and unambiguous.
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 provides clear context by noting the tool is 'used to resolve location codes for inventory transfers and receiving.' This gives the agent a concrete scenario for when to use it. However, it does not explicitly name alternatives or state when not to use it, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logiwa_list_warehousesList WarehousesARead-onlyIdempotent
List the warehouses configured in the account, paginated.
Args:
page (number): 1-based page number (default 1)
page_size (number): records per page, 1-200 (default 20)
response_format ('markdown' | 'json'): output format (default markdown)
Returns: warehouses with their identifier (UUID), code and name — used to resolve warehouseIdentifier / warehouse code for other tools.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based page number to fetch (Logiwa paginates by page index). | |
| page_size | No | Number of records per page (1-200, default 20). | |
| response_format | No | Output format: 'markdown' for a human-readable summary (default) or 'json' for the full structured payload. | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds value by disclosing pagination behavior (1-based pages, page_size cap of 200), response_format options, and the return composition (UUID, code, name). No contradiction with annotations.
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 well-structured, starting with a clear purpose sentence, followed by an Args section and a Returns line. It is slightly redundant with the schema, but not bloated, and every section is easy to scan.
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 read-only list endpoint with rich schema and annotations, the description supplies pagination limits, output format options, and return purpose. It is sufficient for an agent to select and invoke the tool correctly without needing an output schema.
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 input schema covers 100% of parameters with detailed descriptions including defaults and ranges. The Args section in the description mostly repeats schema content, adding little new meaning beyond quick readability, so the high-coverage baseline of 3 is appropriate.
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 opens with a specific verb-resource pair: 'List the warehouses configured in the account, paginated.' It clearly identifies the scope and differentiates from sibling tools like logiwa_list_warehouse_locations and other list_* tools by naming the exact resource.
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?
It states the return value is 'used to resolve warehouseIdentifier / warehouse code for other tools', giving concrete context for when this tool is needed. It does not explicitly name alternatives or exclusions, but the purpose is specific enough to guide selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logiwa_lookupLookup Reference DataARead-onlyIdempotent
Fetch Logiwa reference/lookup data used to resolve names and identifiers needed by other tools (clients, warehouses, order types, product types/groups, pack types, damage/return reasons, carriers, users).
Many create/update tools need a clientIdentifier, type name, or currency — use this first to discover valid values.
Args:
category (string, optional): return only one list. One of: clientList, warehouseList, shipmentOrderTypeList, purchaseOrderTypeList, productTypeList, productGroupList, packTypeList, damageReasonList, returnReasonList, carrierList, userList. Omit to get a summary of all categories with their counts.
response_format ('markdown' | 'json'): output format (default markdown)
Returns: the requested lookup list (each entry typically has an identifier and a name), or a category summary.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Optional: return only this lookup list. Omit for a summary of all categories. | |
| response_format | No | Output format: 'markdown' for a human-readable summary (default) or 'json' for the full structured payload. | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds meaningful behavior context: it returns a list with typically an identifier and name, or a summary with counts when category is omitted, and supports markdown/json response formats. This goes beyond the annotations to clarify what the agent can expect from the call.
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 well-structured: it opens with a clear one-sentence purpose, adds a practical usage note, then lists parameters and return value concisely. Every sentence earns its place with no repetition or fluff, and the use of a short args list keeps it scannable.
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?
Given the tool's low complexity (2 optional params, no output schema), the description covers purpose, parameter behavior, return content, and usage context. It explains the category summary and typical entry structure, but could be more precise about the exact response format (e.g., JSON structure). Still, it is sufficiently complete for effective selection and invocation.
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 input schema already provides full descriptions and enums for both parameters (category and response_format), achieving 100% schema coverage. The description repeats these values and adds little new parameter-level semantics; it mentions the optionality and default but not beyond the schema. Thus the baseline of 3 is appropriate.
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 states 'Fetch Logiwa reference/lookup data used to resolve names and identifiers needed by other tools' – a specific verb, resource, and purpose. It clearly delineates this lookup tool from sibling tools like logiwa_list_inventory or logiwa_create_product by focusing on reference/lookup data, and lists the exact categories handled.
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 provides explicit guidance: 'Many create/update tools need a clientIdentifier, type name, or currency — use this first to discover valid values.' This tells the agent when to use the tool, though it does not explicitly mention alternatives or when not to use it. Still, the directive 'use this first' is strong and contextually clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logiwa_receive_purchase_orderReceive Purchase OrderA
Receive stock against a purchase order (records an inbound receipt for one product line).
Identify the PO (purchaseOrderCode or purchaseOrderIdentifier), the product (sku), the receiving warehouse and location, and the quantity received. Provide lot/expiry/serial or license-plate details via the typed fields or additional_fields.
Args (common):
purchaseOrderCode (string): the PO code being received
sku (string): product received
quantity (number): units received
warehouse / warehouseLocationCode (string): where it is received
client (string), packType (string), lotBatchNumber, expiryDate (string), licensePlateNumber (string): optional
Returns: the receipt result from Logiwa.
| Name | Required | Description | Default |
|---|---|---|---|
| sku | No | SKU being received. | |
| client | No | ||
| packType | No | ||
| quantity | No | Quantity received. | |
| warehouse | No | Warehouse code. | |
| expiryDate | No | ISO date. | |
| lotBatchNumber | No | ||
| clientIdentifier | No | ||
| additional_fields | No | Escape hatch for any extra Logiwa request-body fields not exposed as typed parameters above. Keys must match the Logiwa API's camelCase field names; merged verbatim into the request body. | |
| purchaseOrderCode | No | PO code to receive against. | |
| licensePlateNumber | No | ||
| warehouseIdentifier | No | ||
| warehouseLocationCode | No | Receiving location code. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover mutability (readOnlyHint=false) and non-idempotency. The description adds that it 'records an inbound receipt' for one product line and returns 'the receipt result from Logiwa,' giving a clear expectation of the outcome. It does not discuss failure modes or side effects, but it does not contradict annotations.
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 compact and well-structured: a one-sentence summary, a brief instructional line, a bulleted list of common args, and a return note. It is easy to scan and contains no redundant or excessive text.
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 tool with 13 parameters and no output schema, the description covers the essential workflow and states the return value. However, it omits some parameters (clientIdentifier, warehouseIdentifier) and references a non-existent purchaseOrderIdentifier, leaving gaps in completeness. It is reasonably helpful but not exhaustive.
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 description clarifies the meaning of key fields like purchaseOrderCode, sku, quantity, and warehouse/warehouseLocationCode, and lists optional parameters. However, it introduces 'purchaseOrderIdentifier' which is not in the schema, and omits clientIdentifier and warehouseIdentifier, creating confusion. With schema coverage at 54%, it adds useful detail but is not fully aligned with the schema.
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 begins with a clear verb+resource: 'Receive stock against a purchase order' and explicitly scopes it to 'one product line.' This distinguishes it from sibling tools like add_inventory or adjust_inventory by tying the action to a PO, making the purpose unmistakable.
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 the tool by instructing the user to identify the PO, product, warehouse, location, and quantity, which signals a receiving-against-PO scenario. However, it does not explicitly compare with alternatives (e.g., add_inventory) or state when not to use it, so the guidance is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logiwa_remove_inventoryRemove InventoryADestructive
Decreases (removes) quantity units from an existing inventory record.
Identify the record with 'inventoryIdentifier' (UUID) from logiwa_list_inventory.
Args:
inventoryIdentifier (string, required): UUID of the inventory record
quantity (number, required): quantity to remove
note (string): optional note
adjustmentReasonName (string): optional reason (must match a configured reason)
Returns: the operation result from Logiwa.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Optional note recorded with the transaction. | |
| quantity | Yes | Quantity to remove. | |
| additional_fields | No | Escape hatch for any extra Logiwa request-body fields not exposed as typed parameters above. Keys must match the Logiwa API's camelCase field names; merged verbatim into the request body. | |
| inventoryIdentifier | Yes | Inventory record UUID (from logiwa_list_inventory). | |
| adjustmentReasonName | No | Optional adjustment reason name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the description doesn't bear a heavy burden. It adds that the record must be 'existing' and that adjustmentReasonName must match a configured reason, but doesn't detail side effects (e.g., exceeding quantity, permissions). No contradictions.
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?
Description is compact, front-loaded with a clear purpose, followed by structured Args and Returns. No filler.
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 destructive inventory operation, it explains how to identify the record, what parameters are needed, and what it returns. However, it doesn't describe error conditions or edge cases (e.g., removing more than available), and the return is vaguely 'operation result from Logiwa' with no output schema.
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?
Schema has 100% coverage, so baseline 3. The description adds extra value by specifying that inventoryIdentifier comes from logiwa_list_inventory and that adjustmentReasonName must match a configured reason, which goes beyond the schema descriptions. The Args section mirrors schema but with useful operational context.
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?
Clearly states the operation: decreases quantity units from an existing inventory record. Uses specific verb 'Decreases (removes)' and resource 'inventory record', and distinguishes from siblings like add_inventory and adjust_inventory by specifying removal.
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?
Provides clear context: identify the record via inventoryIdentifier from logiwa_list_inventory. It implies this tool is for removing inventory, but doesn't explicitly contrast with adjust_inventory or transfer_inventory, nor state when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logiwa_report_available_to_promiseReport: Available To PromiseARead-onlyIdempotent
Available-to-promise (sellable) quantities per SKU, paginated. Best for "how many can I still sell?".
Args:
page (number): 1-based page number (default 1)
page_size (number): records per page, 1-200 (default 20)
response_format ('markdown' | 'json'): output format (default markdown)
Returns: ATP rows per SKU/warehouse with on-hand, allocated and available-to-promise quantities.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based page number to fetch (Logiwa paginates by page index). | |
| page_size | No | Number of records per page (1-200, default 20). | |
| response_format | No | Output format: 'markdown' for a human-readable summary (default) or 'json' for the full structured payload. | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered. The description adds pagination behavior, default output format, and the return structure (ATP rows with on-hand, allocated, available quantities), which is valuable non-obvious context beyond the annotations.
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 compact and well-structured: the core purpose is stated first, followed by a brief args list, then return description. Every sentence carries useful information, and the formatting makes it easy to scan.
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?
The tool has only three parameters, no output schema, and simple read-only behavior. The description adequately explains pagination, defaults, and what the returned rows contain, making it complete for an agent to use correctly.
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?
Schema coverage is 100% and every parameter has a detailed description with defaults and constraints. The description's arg list essentially repeats schema information without adding new semantics, so it meets the baseline but does not exceed it.
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 it reports available-to-promise (sellable) quantities per SKU, a specific verb+resource. It distinguishes itself from sibling report tools like total inventory by focusing on sellable quantities, and the question 'how many can I still sell?' adds a practical use case.
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 phrase 'Best for "how many can I still sell?"' provides a clear usage context. However, it does not explicitly mention when not to use this tool or name alternative tools like report_total_inventory, so it lacks exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logiwa_report_receiving_historyReport: Receiving HistoryARead-onlyIdempotent
Historical receipt records (inbound receiving history), paginated.
Args:
page (number): 1-based page number (default 1)
page_size (number): records per page, 1-200 (default 20)
response_format ('markdown' | 'json'): output format (default markdown)
Returns: receipt history with SKU, quantities, purchase order and date information.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based page number to fetch (Logiwa paginates by page index). | |
| page_size | No | Number of records per page (1-200, default 20). | |
| response_format | No | Output format: 'markdown' for a human-readable summary (default) or 'json' for the full structured payload. | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so safety is covered. The description adds behavioral context: it is paginated and returns specific fields (SKU, quantities, purchase order, date information). It does not mention potential side effects or further behaviors, but the annotations lower the burden. This is adequate with some added value.
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 extremely concise, front-loaded with the core purpose, and uses a clear structured format for arguments and returns. Every sentence contributes to understanding, with no fluff or redundancy.
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?
Despite having 3 optional parameters and no output schema, the description explains the return content, pagination behavior, and output format options. It is sufficient for an agent to know what results to expect and how to invoke the tool, though it does not describe any filtering capabilities or limitations beyond pagination. This is complete for the tool's complexity.
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 input schema provides 100% coverage of all three parameters with descriptions, defaults, and constraints. The description's 'Args' section duplicates this information without adding new meaning. Since the schema already does the heavy lifting, a baseline score of 3 is appropriate.
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 states 'Historical receipt records (inbound receiving history), paginated.' This clearly identifies the tool as a report for receiving history, using specific terminology ('receipt records', 'inbound receiving history') that distinguishes it from siblings like report_shipment_history. The verb is implied ('retrieve', 'list'), but the resource and scope are unambiguous.
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 usage for retrieving historical receiving records but does not explicitly state when to prefer this tool over alternatives. It mentions 'paginated' and the return content, giving some context, but there is no exclusion or alternative guidance. A score of 3 reflects the implied usage without explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logiwa_report_shipment_historyReport: Shipment HistoryARead-onlyIdempotent
Historical shipped-line records (outbound fulfillment history), paginated.
Args:
page (number): 1-based page number (default 1)
page_size (number): records per page, 1-200 (default 20)
response_format ('markdown' | 'json'): output format (default markdown)
Returns: shipment line history with SKU, quantities, order and date information.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based page number to fetch (Logiwa paginates by page index). | |
| page_size | No | Number of records per page (1-200, default 20). | |
| response_format | No | Output format: 'markdown' for a human-readable summary (default) or 'json' for the full structured payload. | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive behavior. The description adds pagination behavior, page/page_size defaults, and response_format options, which are useful beyond the annotations.
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?
Description is compact and well-structured: a one-line purpose, a clear Args list, and a Returns line. No unnecessary words.
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 read-only report with three optional parameters, the description covers purpose, pagination, output formats, and return fields. No output schema exists, so the Returns line sets correct expectations.
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?
Schema coverage is 100% and all three parameters are documented with defaults and constraints. The description's Args list essentially restates the schema without adding new meaning.
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?
Description clearly identifies the tool as returning historical outbound shipment line records, using 'outbound fulfillment history' to distinguish it from the sibling 'logiwa_report_receiving_history'. The Returns line further specifies the data content.
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 'outbound fulfillment history' phrase provides clear context for when this report is appropriate versus receiving/inventory reports. It does not explicitly name alternatives or exclusions, but the sibling list provides enough differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logiwa_report_total_inventoryReport: Total InventoryARead-onlyIdempotent
Total (consolidated) on-hand inventory across locations, paginated. Best for "how much of each SKU do we have?".
Args:
page (number): 1-based page number (default 1)
page_size (number): records per page, 1-200 (default 20)
response_format ('markdown' | 'json'): output format (default markdown)
Returns: consolidated inventory rows per SKU/warehouse with on-hand and available quantities.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based page number to fetch (Logiwa paginates by page index). | |
| page_size | No | Number of records per page (1-200, default 20). | |
| response_format | No | Output format: 'markdown' for a human-readable summary (default) or 'json' for the full structured payload. | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the operation as read-only/idempotent; the description adds useful behavioral context including pagination, response format options, and the returned row structure (per SKU/warehouse with on-hand/available quantities). It does not over-claim or contradict annotations.
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 concise and front-loaded: a one-sentence summary, a bulleted Args list, and a Returns line. Every sentence earns its place; there is no redundancy or filler.
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 read-only report tool with optional parameters and no output schema, the description covers the purpose, usage context, parameter defaults, and the response shape (consolidated rows with quantities). With strong annotations, this is sufficiently complete.
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 input schema already covers all three parameters with full descriptions and defaults (100% coverage). The description's Args section mostly mirrors the schema, adding only a slightly condensed version, so no additional semantic value beyond the schema.
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 tool provides total consolidated on-hand inventory across locations and highlights the use case 'how much of each SKU do we have?'. The word 'consolidated' differentiates it from list_inventory and other inventory tools.
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?
It provides a clear use case with 'Best for' and indicates that it's paginated, but does not explicitly specify when not to use it or name alternative tools like logiwa_list_inventory.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logiwa_ship_shipment_ordersShip Shipment OrdersAIdempotent
Mark one or more shipment orders as shipped (completes fulfillment).
Args:
shipmentOrderIdentifiers (string[], required): one or more order UUIDs to ship
Returns: the ship operation result from Logiwa.
| Name | Required | Description | Default |
|---|---|---|---|
| shipmentOrderIdentifiers | Yes | Shipment order UUIDs to mark as shipped (required, >=1). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already specify readOnlyHint=false, destructiveHint=false, and idempotentHint=true, so the safety profile is known. The description adds the outcome 'completes fulfillment' but does not disclose potential side effects like inventory changes, reversibility, or prerequisites (e.g., order must be in a certain state). This is adequate but not rich.
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 compact and well-structured: a one-sentence purpose, a brief Args list, and a one-line Returns note. No redundant information, and the most important content (the action) is front-loaded. Every sentence provides value.
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 one-parameter mutation with annotations covering idempotency and safety, the description gives the core information: action, parameter, and return value. It could improve by mentioning prerequisites or irreversible consequences, but given the simplicity and existing annotations, it is largely complete. However, the Returns line is vague ('the ship operation result from Logiwa') without a schema, and no usage guidance is included.
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?
Schema coverage is 100% and the schema already describes the parameter fully: 'Shipment order UUIDs to mark as shipped (required, >=1).' The description restates the parameter in the Args section as 'one or more order UUIDs to ship,' which adds minimal clarification (e.g., that they are UUIDs) but doesn't materially exceed the schema's own description. Baseline of 3 applies.
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 tool's action: 'Mark one or more shipment orders as shipped (completes fulfillment).' The verb 'mark as shipped' directly identifies the operation on shipment orders, and the parenthetical 'completes fulfillment' provides additional domain context. This clearly distinguishes it from sibling tools like cancel, create, or update.
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 provides clear context that this tool is for shipping orders and completing fulfillment, which implies its usage. However, it does not explicitly mention when not to use it or point to alternatives among the sibling tools, such as cancel_shipment_order or update_shipment_order. Thus it meets the 'clear context, no exclusions' level rather than the top tier.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logiwa_transfer_inventoryTransfer Inventory (Product)A
Move a quantity of a product between warehouse locations / license plates.
Identify the product (productSku or productIdentifier) and the source/target locations. Use codes (human-readable) or identifiers (UUIDs). Resolve values with logiwa_lookup, logiwa_list_warehouses and logiwa_list_warehouse_locations.
Args (common):
productSku or productIdentifier (string): which product to move
quantity (number, required): units to transfer
sourceWarehouseCode / sourceWarehouseLocationCode (string): where the stock is now
targetWarehouseLocationCode (string): where to move it
packTypeName, lotBatchNumber, expiryDate (string): optional Provide any other Logiwa transfer fields via additional_fields.
Returns: the transfer result from Logiwa.
| Name | Required | Description | Default |
|---|---|---|---|
| quantity | Yes | Quantity to transfer (required). | |
| expiryDate | No | ISO date. | |
| productSku | No | SKU of the product to move. | |
| packTypeName | No | ||
| lotBatchNumber | No | ||
| clientIdentifier | No | ||
| additional_fields | No | Escape hatch for any extra Logiwa request-body fields not exposed as typed parameters above. Keys must match the Logiwa API's camelCase field names; merged verbatim into the request body. | |
| productIdentifier | No | UUID of the product to move. | |
| sourceWarehouseCode | No | ||
| sourceLicensePlateNumber | No | ||
| targetLicensePlateNumber | No | ||
| sourceWarehouseLocationCode | No | ||
| targetWarehouseLocationCode | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false, so the description is not burdened with stating those. It adds useful context that codes or UUIDs are accepted and that additional_fields can be used for extra API fields. However, it does not disclose potential side effects like how the source stock is decremented or what happens on partial failure, which would be valuable for a mutation.
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 front-loaded with the core action, then provides a structured list of common arguments and a return note. Each sentence contributes useful information, but the informal 'Args (common)' list is slightly verbose and could be tightened without losing clarity.
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?
With 13 parameters, no output schema, and sparse annotations, the description covers the main requirements: what the tool does, how to identify the product and locations, optional fields, the escape hatch for additional fields, and a basic return statement. It is adequate for complex usage, though it could be more explicit about the need for a product reference and what the 'transfer result' contains.
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?
Schema description coverage is only 38%, so the description needs to compensate. It does this by explaining the core parameters: productSku/productIdentifier, quantity, source/target warehouse locations, and optional fields like packTypeName and lotBatchNumber. It also clarifies the role of additional_fields as a merge into the request body. Some parameters (e.g., sourceLicensePlateNumber) are not individually explained, but the opening phrase about license plates provides partial context.
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 opens with 'Move a quantity of a product between warehouse locations / license plates', which uses a specific verb and resource, clearly distinguishing it from sibling tools like add_inventory, adjust_inventory, and list_inventory. This is an unambiguous statement of the tool's function.
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 clearly indicates when to use the tool (to transfer stock between locations/license plates) and recommends resolving values with logiwa_lookup, logiwa_list_warehouses, and logiwa_list_warehouse_locations. However, it does not explicitly compare against alternatives such as adjust_inventory or add_inventory, so it lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logiwa_update_productUpdate ProductAIdempotent
Update an existing product. Provide the product 'identifier' (UUID) to locate it, plus the fields to change.
Required by the API: sku, name, description, packingSettings. Send the full intended state of these fields. Provide any other Logiwa fields via additional_fields.
Returns: the update response from Logiwa.
| Name | Required | Description | Default |
|---|---|---|---|
| sku | Yes | SKU (required). | |
| upc | No | ||
| name | Yes | Product name (required). | |
| taxRate | No | ||
| isActive | No | ||
| identifier | Yes | Product UUID to update (required to locate the record). | |
| salesPrice | No | ||
| description | Yes | Product description (required). | |
| purchasePrice | No | ||
| packingSettings | Yes | Packing settings (weight, dimensions, handling flags) for the product. | |
| productTypeName | No | ||
| clientIdentifier | No | ||
| productGroupName | No | ||
| additional_fields | No | Escape hatch for any extra Logiwa request-body fields not exposed as typed parameters above. Keys must match the Logiwa API's camelCase field names; merged verbatim into the request body. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a critical behavioral nuance: 'Required by the API: sku, name, description, packingSettings. Send the full intended state of these fields.' This goes beyond the annotations, which only indicate write, idempotent, and non-destructive behavior. It also mentions the additional_fields escape hatch and the return value, adding useful context.
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 four concise sentences, each carrying essential information: purpose, identifier use, required fields/full-state behavior, and additional fields/return value. No wordiness or redundancy; front-loaded with the main action.
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?
The description covers key aspects: how to locate the product, which fields are mandatory, the full-state update requirement, the escape hatch for extra fields, and the return type. With no output schema, the return description is brief but sufficient. Minor lack of guidance on optional field behavior (e.g., whether omitted optional fields are cleared) is a small gap.
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?
With only 43% schema description coverage, the description compensates by clarifying the role of 'identifier' (UUID to locate the record), highlighting the required fields, and explaining the full-state requirement. It also points to additional_fields for any other Logiwa fields, providing a fallback for undocumented parameters.
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 tool's purpose: 'Update an existing product.' It uses a specific verb (update) and resource (product), and distinguishes from siblings like logiwa_create_product and logiwa_get_product by emphasizing 'existing' and requiring an 'identifier' to locate the record.
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 this tool (for products that already exist) by requiring an identifier and stating 'existing product.' It does not explicitly name alternatives or exclusions, but the context of siblings and the phrase 'existing product' provide clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
logiwa_update_shipment_orderUpdate Shipment OrderAIdempotent
Update an existing shipment order. Provide 'identifier' (UUID) plus the full intended state of the required fields.
Required: code, shipmentOrderType, shipmentOrderDate, currencyId, shipmentOrderLineList. Other fields via additional_fields.
Returns: the update response from Logiwa.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Order code (required). | |
| note | No | ||
| warehouse | No | ||
| currencyId | Yes | Currency id (required). | |
| identifier | Yes | Shipment order UUID to update (required). | |
| additional_fields | No | Escape hatch for any extra Logiwa request-body fields not exposed as typed parameters above. Keys must match the Logiwa API's camelCase field names; merged verbatim into the request body. | |
| shipmentOrderDate | Yes | Order date, ISO date-time (required). | |
| shipmentOrderType | Yes | Shipment order type name (required). | |
| warehouseIdentifier | No | ||
| shipmentOrderLineList | Yes | Order line products (required). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a write operation (readOnlyHint: false), non-destructive (destructiveHint: false), and idempotent (idempotentHint: true). The description adds valuable context by stating that the full intended state of required fields must be provided, indicating a replace-style update rather than a partial patch. It also explains how to handle extra fields via additional_fields.
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 concise and front-loaded: the first sentence states the action, followed by the critical instruction about required fields and a brief note about additional fields. Every sentence earns its place, with no redundant or vague content.
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?
Given the tool's complexity (10 parameters, nested arrays, no output schema), the description covers the essential inputs but is thin on return details and the handling of optional fields. It mentions the response only as 'the update response from Logiwa,' and does not explain what happens to omitted optional fields, leaving some ambiguity for the agent.
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 covers 70% of parameters, and the description adds meaning by listing the required fields and emphasizing the 'full intended state' semantics, which is not clear from the schema alone. It also clarifies the role of additional_fields as an escape hatch for unexposed fields, though this is already in the schema.
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 'Update an existing shipment order' with a specific verb and resource, and distinguishes it from sibling tools like create, cancel, and get. It also specifies the requirement to provide the UUID identifier, which further clarifies its purpose.
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 provides clear context for when to use this tool (updating existing orders) and implies not to use it for creating/cancelling via the sibling list. It does not explicitly name alternatives or exclusions, but the 'existing shipment order' phrasing and the requirement of an identifier make the use case unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
32 tool updates
v1.0.0- First observed
logiwa_add_inventory - First observed
logiwa_adjust_inventory - First observed
logiwa_cancel_return_order - First observed
logiwa_cancel_shipment_order - First observed
logiwa_create_product - First observed
logiwa_create_purchase_order - First observed
logiwa_create_return_order - First observed
logiwa_create_shipment_order - First observed
logiwa_get_product - First observed
logiwa_get_purchase_order - First observed
logiwa_get_shipment_order - First observed
logiwa_list_customers - First observed
logiwa_list_inventory - First observed
logiwa_list_products - First observed
logiwa_list_purchase_orders - First observed
logiwa_list_retailers - First observed
logiwa_list_return_orders - First observed
logiwa_list_shipment_orders - First observed
logiwa_list_vendors - First observed
logiwa_list_warehouse_locations - First observed
logiwa_list_warehouses - First observed
logiwa_lookup - First observed
logiwa_receive_purchase_order - First observed
logiwa_remove_inventory - First observed
logiwa_report_available_to_promise - First observed
logiwa_report_receiving_history - First observed
logiwa_report_shipment_history - First observed
logiwa_report_total_inventory - First observed
logiwa_ship_shipment_orders - First observed
logiwa_transfer_inventory - First observed
logiwa_update_product - First observed
logiwa_update_shipment_order
TDQS
Every tool targets a distinct resource and action. The three inventory-related reporting tools are clearly differentiated (per-location, consolidated, and ATP), and operations like add/adjust/remove/transfer have unambiguous purposes. No two tools appear to overlap.
All tools follow a consistent logiwa_<verb>_<noun> pattern (e.g., list_products, create_shipment_order, cancel_return_order). The sole exception is logiwa_lookup, but it is still a clear verb and fits the overall style. Naming is predictable and uniform.
At 32 tools, the server exceeds the 25-tool threshold the rubric considers too many. Even though the scope is broad (WMS operations), the high count makes the surface feel heavy and potentially overwhelming for agents.
The server covers the primary workflows: products, inventory, shipment and purchase orders, returns, and reporting. However, there are notable gaps such as no delete operations anywhere, no update or cancel for purchase orders, and no get/update for return orders, which could leave agents with dead ends.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Unified MCP server for 70+ eCommerce platforms: products, orders, customers, and more.
MCP server for Product Management
MCP server for Appcircle mobile CI/CD platform.
MCP Server for JFrog, providing tools for development and artifact management.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that provides access to WooCommerce REST API functionality, enabling product, order, customer, and coupon management.1,2981MIT
- AlicenseCqualityBmaintenanceMCP server for MoySklad (МойСклад) warehouse and CRM management API. 21 tools covering the full order lifecycle: products, stock, counterparties, customer orders, shipments, supplies, warehouses, organizations, reports, and webhooks.601005MIT
- FlicenseNot gradedqualityDmaintenanceThis MCP server simplifies interaction with the ConnectWise Manage API through API discovery, execution, and a fast memory system for efficient workflows.20-
- FlicenseNot gradedqualityCmaintenanceMCP server wrapping Boxzooka's bxz-api to provide 33 tools for managing products, inbound orders, orders, inventory, shipments, and returns.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/cgtykctn/Logiwa-IO-WMS--MCP-'
If you have feedback or need assistance with the MCP directory API, please join our Discord server