Skip to main content
Glama

Tiendanube MCP Server β€” manage your Tiendanube / Nuvemshop store with Claude, Codex, OpenCode and any AI agent

CI License: MIT MCP Node

πŸ‡ͺπŸ‡Έ Leer en espaΓ±ol Β· Website Β· Tool reference Β· Prompt recipes

tiendanube-mcp is a free, open-source Model Context Protocol (MCP) server that connects AI assistants to the Tiendanube (Nuvemshop in Brazil) API. Ask in plain language β€” "which products have less than 5 units left?", "raise all prices in the Summer category by 12%", "which orders are paid but not shipped?" β€” and your AI does the work through 191 tools covering 39 API resources: products, variants, stock, orders, customers, coupons, shipping, payments, webhooks and more.

Works with Claude Code, Claude Desktop, OpenAI Codex, OpenCode, Gemini CLI, Cursor, VS Code (Copilot), Windsurf and any client that speaks MCP over stdio or HTTP.

Not affiliated with Tiendanube or Nuvemshop. Independent community project. Tiendanube and Nuvemshop are trademarks of their owners.


Quick start (about 5 minutes, 3 steps)

1. Get your credentials β€” 2 minutes

You need a Store ID and an access token. The step-by-step guide is in guides/GETTING_CREDENTIALS.md (custom app from your admin panel, or OAuth for partner apps).

2. Let your AI agent install it β€” 1 minute

Open your AI coding agent (Claude Code, Codex, OpenCode, …) and paste this single line:

Install the Tiendanube MCP server by following https://raw.githubusercontent.com/fedeclavero/tiendanube-mcp/main/guides/AGENT_INSTALL.md

The agent will install it, configure your client, ask you for the few values it needs (and nothing else), and verify the connection. Prefer to do it yourself? Use the table below.

3. Ask something β€” 10 seconds

"Show me my store info and the 10 most recent orders."

Start in read-only mode (TIENDANUBE_READ_ONLY=true): the AI can look but not touch. When you trust it, switch it off.


Related MCP server: MCP Shopline

Manual install

Requirements: Node.js 18+. Every command below runs the server straight from GitHub; no global install needed. Replace the values with yours.

Client

Command / config

Claude Code

claude mcp add tiendanube --scope user -e TIENDANUBE_STORE_ID=123456 -e TIENDANUBE_ACCESS_TOKEN=xxxx -e TIENDANUBE_USER_AGENT="MyStore (me@example.com)" -e TIENDANUBE_READ_ONLY=true -- npx -y github:fedeclavero/tiendanube-mcp

OpenAI Codex

codex mcp add tiendanube --env TIENDANUBE_STORE_ID=123456 --env TIENDANUBE_ACCESS_TOKEN=xxxx --env TIENDANUBE_USER_AGENT="MyStore (me@example.com)" --env TIENDANUBE_READ_ONLY=true -- npx -y github:fedeclavero/tiendanube-mcp

OpenCode

add to opencode.json β†’ see below

Claude Desktop, Cursor, Windsurf, Gemini CLI, VS Code

JSON snippets in guides/AGENT_INSTALL.md

Generic stdio config (works in most clients):

{
  "mcpServers": {
    "tiendanube": {
      "command": "npx",
      "args": ["-y", "github:fedeclavero/tiendanube-mcp"],
      "env": {
        "TIENDANUBE_STORE_ID": "123456",
        "TIENDANUBE_ACCESS_TOKEN": "your_access_token",
        "TIENDANUBE_USER_AGENT": "MyStore (me@example.com)",
        "TIENDANUBE_READ_ONLY": "true"
      }
    }
  }
}

OpenCode (opencode.json):

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "tiendanube": {
      "type": "local",
      "command": ["npx", "-y", "github:fedeclavero/tiendanube-mcp"],
      "enabled": true,
      "environment": {
        "TIENDANUBE_STORE_ID": "123456",
        "TIENDANUBE_ACCESS_TOKEN": "your_access_token",
        "TIENDANUBE_USER_AGENT": "MyStore (me@example.com)",
        "TIENDANUBE_READ_ONLY": "true"
      }
    }
  }
}

Verify the connection any time with:

TIENDANUBE_STORE_ID=123456 TIENDANUBE_ACCESS_TOKEN=xxxx npx -y github:fedeclavero/tiendanube-mcp --check

First run is slower (npm downloads and builds the project, ~30 s). Run npx -y github:fedeclavero/tiendanube-mcp --version once before opening your MCP client so it doesn't time out.

Environment variables

Variable

Required

Description

TIENDANUBE_STORE_ID

βœ…

Numeric store ID (the user_id returned by OAuth)

TIENDANUBE_ACCESS_TOKEN

βœ…

Store access token

TIENDANUBE_USER_AGENT

recommended

AppName (contact@domain.com) β€” the API rejects requests without a User-Agent

TIENDANUBE_READ_ONLY

true β†’ registers only the 78 read tools

TIENDANUBE_API_DOMAIN

https://api.tiendanube.com (default, Spanish-speaking LatAm) or https://api.nuvemshop.com.br (Brazil)

TIENDANUBE_API_VERSION

Default 2025-03

TIENDANUBE_CLIENT_ID / TIENDANUBE_CLIENT_SECRET

Only for the OAuth helper tool

TRANSPORT, PORT, HOST

TRANSPORT=http β†’ streamable HTTP on 127.0.0.1:3000/mcp (default: stdio)


What can you ask?

Instead of clicking through the admin panel or exporting spreadsheets, you say the job and the AI picks the tools.

You say

The AI uses

"List products with stock below 5, cheapest first"

tiendanube_products_list

"Set the stock of SKU REM-001-M to 40"

tiendanube_products_get_by_sku β†’ tiendanube_variants_update_stock

"Apply 10% off to the whole 'Verano' category"

tiendanube_products_list β†’ tiendanube_products_batch_stock_price

"Which paid orders from this week haven't shipped?"

tiendanube_orders_list

"Mark order #1042 as dispatched with tracking code XYZ"

tiendanube_fulfillment_orders_update

"Create a 15% coupon BIENVENIDA15, valid until Dec 31"

tiendanube_coupons_create

"Who abandoned a cart in the last 3 days? Send them a coupon"

tiendanube_abandoned_checkouts_list β†’ tiendanube_abandoned_checkouts_apply_coupon

"Subscribe my backend to order/paid events"

tiendanube_webhooks_create

More than 20 copy-paste prompts in guides/RECIPES.md.

What's covered

Domain

Tools

Includes

Store & media

2

Store info, languages, plan, media quota

Catalog

43

Products, variants, stock, images, categories, kits, B2B price tables

Orders & fulfillment

31

Orders, draft orders, fulfillment orders + tracking, carts, abandoned checkouts

Customers

5

Full CRUD

Coupons & promotions

11

Coupons, automatic promotions, discount callbacks

Logistics

23

Locations & inventory levels, shipping carriers/options, business rules

Payments & billing

25

Payment providers/options, transactions, disputes, external invoices, app billing

Content

15

Pages, blog, email templates, scripts

Extensibility

35

Metafields, custom fields, custom objects, webhooks (36 events)

Full list with routes and required scopes: guides/TOOLS.md. Also ships an OAuth helper (tiendanube_oauth_exchange_code) and two documentation resources (tiendanube://docs/scopes-and-limits, tiendanube://docs/checkout-sdk).

Safe by design

  • Read-only mode β€” TIENDANUBE_READ_ONLY=true removes every write tool. Start here; unlock writes when you're comfortable.

  • Honest tool annotations β€” every tool declares readOnlyHint / destructiveHint / idempotentHint, so MCP clients can treat deletes and cancellations with extra care.

  • Least privilege β€” a 403 tells the AI exactly which OAuth scope is missing; grant only the scopes you need.

  • Your data stays yours β€” credentials live in your own client config and are sent only to Tiendanube's API. No telemetry, no third-party servers.

  • Rate-limit aware β€” follows the leaky-bucket headers, retries 429s a bounded number of times.

  • Context-friendly β€” pagination envelope, fields filter, markdown/json output and a 25 000-character cap keep the AI's context clean.

  • Open source (MIT) β€” read every line before you trust it.

Honest limitations

  • Endpoints follow the official API reference; some request bodies (promotions, transactions, disputes, billing, custom objects, business rules) are passed as free-form JSON, so the AI should consult the reference for exact fields. Found a mismatch? Open an issue.

  • Payment Provider and Shipping Carrier endpoints are meant for partner apps and may require approval from Tiendanube's platform team.

  • Access tokens can't list their own scopes; use the 403 messages to find what's missing.

  • Not published on npm yet β€” install from GitHub as shown above.

Alternatives

Tiendanube also offers an official remote Admin MCP (see Tiendanube's help center for what it covers today). Community servers exist too (ropu/MCP-tienda_nube, AlexandreProenca/nuvemshop-mcp-server). This project is aimed at people who want a self-hosted, scope-controlled server with broad API coverage (including unstable resources) that they can read, fork and run locally.

FAQ

What is an MCP server? A small program that lets an AI assistant call tools in another system. Here, the tools are the Tiendanube API operations.

Does it work with Nuvemshop (Brazil)? Yes. Set TIENDANUBE_API_DOMAIN=https://api.nuvemshop.com.br.

Do I need to know how to code? No. Paste the one-line install prompt into your AI agent and answer its questions. Credentials: guides/GETTING_CREDENTIALS.md.

Can the AI delete my products by mistake? Not in read-only mode. In read-write mode, delete/cancel tools are flagged destructive so well-behaved clients ask for confirmation. Keep a backup of your catalog before bulk operations.

How much does it cost? The server is free (MIT). You pay only for the AI service you already use. Tiendanube API access depends on your plan.

Which token scopes do I need? Only those for what you ask. Read-only analysis typically needs read_products, read_orders, read_customers. See the matrix in guides/GETTING_CREDENTIALS.md.

Is there an HTTP/remote mode? Yes: TRANSPORT=http serves stateless streamable HTTP on 127.0.0.1. Put it behind your own authentication before exposing it.

Develop

git clone https://github.com/fedeclavero/tiendanube-mcp.git
cd tiendanube-mcp && npm install     # also builds
npm test                              # offline self-test with a mocked API
npm run docs                          # regenerate guides/TOOLS.md

Architecture: each tool is a declarative EndpointDef in src/tools/, turned into an MCP tool (Zod schema, annotations, error mapping) by registry.ts. See CONTRIBUTING.md.

Support the project

If this saves you hours of copy-pasting prices or checking orders, a ⭐ on GitHub helps other Tiendanube merchants and developers find it. Bug reports and recipes you'd like to share are even better.

MIT Β© fedeclavero

Available Tools

191 tools
tiendanube_abandoned_checkouts_apply_couponAbandoned Checkouts Apply CouponA

Attach a coupon to an abandoned checkout (recovery campaigns). HTTP: POST /checkouts/{id}/coupon Required scope: write_orders API version: 2025-03

NameRequiredDescriptionDefault
idYesCheckout ID
coupon_idYesCoupon ID to apply
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already flag mutation and non-idempotency, and the description adds genuinely useful context: the required write_orders scope and the target API version. It stops short of saying whether an existing coupon on the checkout is replaced or added alongside another, which matters for a non-idempotent call.

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

Conciseness4/5

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

The purpose sentence is front-loaded and the endpoint/scope metadata follows in a compact block. The API version line is boilerplate that arguably doesn't help an agent decide or invoke, but nothing is bloated.

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

Completeness3/5

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

For a small non-idempotent mutation with no output schema, the description covers what it does and the auth scope, but omits what response or effect to expect and how repeated application behaves, which the agent must infer.

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

Parameters3/5

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

Schema description coverage is 100%, so id and coupon_id are already documented in structured form, and the description adds no format or constraint detail beyond them. The opaque additional_fields escape hatch is likewise left unexplained in both places.

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

Purpose5/5

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

States a specific verb (attach) and resource (coupon on an abandoned checkout), plus the exact HTTP route POST /checkouts/{id}/coupon. An agent can distinguish this from coupons_create or carts_delete_coupon without opening any schema.

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

Usage Guidelines3/5

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

The parenthetical '(recovery campaigns)' implies the scenario in which this is used, but there is no explicit statement of when to prefer this over tiendanube_coupons_create or tiendanube_carts_delete_coupon, nor any prerequisite or exclusion.

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

tiendanube_abandoned_checkouts_getAbandoned Checkouts GetA
Read-onlyIdempotent

Get one abandoned checkout. HTTP: GET /checkouts/{id} Required scope: read_orders API version: 2025-03

NameRequiredDescriptionDefault
idYesCheckout ID
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.5/5.0
Behavior3/5

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 safety profile is covered elsewhere. The description usefully adds the required OAuth scope (read_orders) and API version, but says nothing about behavior when the ID is unknown or about payload size behavior.

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

Conciseness4/5

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

Four short lines with the operation stated first, followed by endpoint, scope and API version β€” no filler. It is efficient, though the metadata lines are terse and could be consolidated.

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

Completeness4/5

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

For a simple read-by-ID tool with a fully documented 3-parameter schema and no output schema, the description covers what is needed to invoke it correctly, including endpoint and auth scope. Error/not-found behavior is the only notable omission.

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

Parameters3/5

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

Schema description coverage is 100%, with id, fields and response_format each documented in the schema, so the baseline of 3 applies. The description adds no meaning beyond repeating {id} as a path placeholder β€” it does not explain the fields projection or the markdown/json choice.

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

Purpose4/5

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

States a specific verb and resource ('Get one abandoned checkout') and the underlying endpoint GET /checkouts/{id}, so it is clearly a single-resource fetch. The 'one' plus the {id} path implicitly distinguishes it from the sibling tiendanube_abandoned_checkouts_list, though the sibling is never named.

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

Usage Guidelines3/5

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

The required 'id' in the path implies the tool is for retrieving a known checkout, and usage is implied by the list/get split. However, there is no explicit when-to-use or when-not-to-use guidance and the alternative list tool is not referenced.

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

tiendanube_abandoned_checkouts_listAbandoned Checkouts ListA
Read-onlyIdempotent

List abandoned checkouts (abandoned > 6 hours ago, up to 30 days back). HTTP: GET /checkouts Required scope: read_orders API version: 2025-03 Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
since_idNoOnly return records with an ID greater than this value (cursor pagination)
created_at_maxNoCreated at or before (ISO 8601)
created_at_minNoCreated at or after (ISO 8601, e.g. 2025-01-31T00:00:00-03:00)
updated_at_maxNoUpdated at or before (ISO 8601)
updated_at_minNoUpdated at or after (ISO 8601)
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive), so the description earns credit for what it adds: the required read_orders scope, the pinned API version, and the exact response envelope shape β€” the latter matters because no output schema exists. It stops short of noting rate limits or how the 6-hour/30-day window interacts with the created_at filters.

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

Conciseness5/5

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

Four tight lines: what it lists and its scope first, then endpoint, scope requirement, API version, and return shape. No filler, and the most decision-relevant information is front-loaded.

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

Completeness4/5

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

For a read-only list tool with zero required parameters and a well-documented schema, this is nearly complete β€” the missing output schema is compensated by the explicit response envelope. The remaining gap is the unresolved interaction between the fixed abandonment window and the caller-supplied date filters.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3 and the description adds no per-parameter detail. It does implicitly constrain the date semantics (only checkouts abandoned > 6 hours and within 30 days), but leaves ambiguous whether created_at_min/created_at_max can reach outside that window β€” which is exactly the clarification an agent would need.

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

Purpose4/5

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

States a specific verb and resource ('List abandoned checkouts') plus the defining domain criteria: abandoned > 6 hours ago and up to 30 days back. An agent immediately knows what this returns. It does not explicitly contrast with the singular tiendanube_abandoned_checkouts_get sibling, but the list/get distinction is conventional enough to infer.

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

Usage Guidelines3/5

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

Usage is implied by the definition β€” the time window tells the agent this is for recent-abandonment reporting β€” but there is no explicit 'use this instead of X' or when-not guidance. With a singular get sibling and related carts/orders tools present, naming the alternative would have removed guesswork.

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

tiendanube_billing_charges_createBilling Charges CreateA

Create a one-off or usage charge for an app service. HTTP: POST /services/{service_id}/charges Required scope: write_charges API version: 2025-03

NameRequiredDescriptionDefault
chargeYesCharge fields per the Billing API reference (amount, description, ...)
service_idYesBilling service ID (from the Partner Portal)

TDQS

A3.7/5.0
Behavior4/5

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

Beyond the annotations (readOnlyHint=false, idempotentHint=false, openWorldHint=true), the description adds genuinely useful behavior: the HTTP verb/path and, critically, the required OAuth scope write_charges, which determines whether the call will even authorize. It stops short of saying whether the charge is billed immediately, is immutable, or what a duplicate call does.

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

Conciseness5/5

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

Four short lines, front-loaded with the action, then endpoint, scope, and version. Nothing is padded and every line carries operative information an agent needs before calling.

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

Completeness3/5

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 must carry return-value expectations, and it doesn't say what a created charge returns or how billing/proration works. For a money-moving mutation on an app service this leaves a meaningful gap, though the auth scope and endpoint partially compensate.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters; the description only reconfirms service_id as a path segment via 'POST /services/{service_id}/charges'. The 'charge' payload is an opaque anyOf object whose real semantics live in the external Billing API reference, and the description adds no field-level meaning.

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

Purpose4/5

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

Specific verb+resource: 'Create a one-off or usage charge for an app service' tells the agent exactly what is produced and at what scope (app service billing). No sibling tool covers billing charges, so there is nothing to disambiguate against, which caps it just short of a 5.

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

Usage Guidelines3/5

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

The description states the prerequisite ('Required scope: write_charges') and the target surface (app service), which implicitly frames when this applies, but it names no alternative tool and gives no when-not guidance (e.g. subscriptions vs one-off charges, or which sibling billing plan/subscription endpoint to use instead).

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

tiendanube_billing_plans_createBilling Plans CreateB

Create an app billing plan. HTTP: POST /plans Required scope: write_plans API version: 2025-03

NameRequiredDescriptionDefault
planYesPlan definition per the Billing API reference

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already disclose readOnly=false, openWorld=true, idempotent=false and destructive=false, so the safety profile is covered. The description adds useful operational context (POST /plans, write_plans scope, API version 2025-03) that the annotations do not, but it says nothing about what happens on duplicate plans or error behavior for a non-idempotent create.

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

Conciseness4/5

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

Four short lines, front-loaded with the action, then HTTP path, scope and API version β€” no filler. It is terse to the point of being an API stub, but nothing is wasted.

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

Completeness3/5

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

For a non-idempotent create with a single completely opaque required body parameter and no output schema, the description should explain what a plan definition contains and what the response provides. It supplies solid operational metadata (endpoint, scope, version) but leaves the payload effectively undocumented.

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

Parameters3/5

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

Only one parameter and schema description coverage is nominally 100%, so the baseline is 3. However, the schema's 'plan' is an unconstrained anyOf object/array and the schema text just points to 'the Billing API reference'; the description adds no field names or shape details, so the agent learns nothing beyond what the schema already fails to say.

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

Purpose4/5

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

States a specific verb and resource ('Create an app billing plan') and is clearly separable from siblings like tiendanube_billing_plans_update, tiendanube_billing_plans_delete and tiendanube_billing_charges_create. It does not explicitly name those siblings, but the resource boundary is unambiguous.

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

Usage Guidelines3/5

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

The description gives a prerequisite (required scope write_plans) and the backing endpoint, which implies when the tool is callable, but it never states when to use this versus update/charge tools or what preconditions the plan requires.

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

tiendanube_billing_plans_deleteBilling Plans DeleteA
DestructiveIdempotent

Delete an app billing plan. HTTP: DELETE /plans/{plan_id} Required scope: write_plans API version: 2025-03

NameRequiredDescriptionDefault
plan_idYesPlan ID

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the description is not required to carry the safety profile. It usefully adds the required auth scope ('write_plans'), the HTTP verb/path, and API version β€” context not present in the annotations. It stops short of describing the consequence for subscriptions bound to the plan.

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

Conciseness5/5

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

Four short, front-loaded lines with the purpose first, then endpoint, scope, and version. Zero filler, and each line carries distinct information.

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

Completeness4/5

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

For a single-parameter destructive delete whose annotations already flag destructiveness and idempotency, the description covers the essentials: action, endpoint, auth scope, and version. The one meaningful gap is the downstream effect on existing billing subscriptions.

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

Parameters3/5

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

With a single parameter at 100% schema description coverage, the schema already carries the semantics of plan_id. The description only shows it as a path segment ({plan_id}), adding format/location context but no meaning beyond the schema β€” the baseline 3 applies.

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

Purpose5/5

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

The description states a specific verb and resource ('Delete an app billing plan'), which immediately distinguishes it from the billing_plans_create and billing_plans_update siblings. An agent can route to it without opening any schema.

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

Usage Guidelines3/5

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

Usage is implied by the name and by the presence of create/update siblings, and the required 'write_plans' scope acts as a prerequisite signal. However, there is no explicit statement of when to prefer this over alternatives or of any preconditions such as whether active subscriptions must be removed first.

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

tiendanube_billing_plans_updateBilling Plans UpdateA
Idempotent

Update an app billing plan. HTTP: PATCH /plans/{plan_id} Required scope: write_plans API version: 2025-03

NameRequiredDescriptionDefault
planYesPlan fields to update
plan_idYesPlan ID

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnly=false, idempotent=true, and destructive=false, so the mutation semantics are covered. The description adds genuinely useful operational context β€” the write_plans scope requirement and the 2025-03 API version β€” but says nothing about partial-update behavior or what happens to omitted fields on a PATCH.

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

Conciseness5/5

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

Five short lines, zero filler, with the action stated first and the endpoint/scope/version metadata trailing. Every line carries distinct information an agent can act on.

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

Completeness3/5

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

For a mutation tool with no output schema, the description covers the auth scope and API version but leaves the most consequential unknown unaddressed: which fields the free-form 'plan' object accepts and whether the update is partial or full. An agent can invoke it but cannot construct a correct body without outside knowledge.

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

Parameters4/5

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

Schema description coverage is 100%, so the schema already documents both plan_id and plan. The description adds the {plan_id} path binding and the PATCH method, which clarifies how plan_id is used, but the free-form 'plan' object remains opaque in both places. Baseline 3 plus the path-binding detail lands at 4.

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

Purpose4/5

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

The description states a specific verb and resource ('Update an app billing plan'), which cleanly separates it from its siblings tiendanube_billing_plans_create and tiendanube_billing_plans_delete. It stops short of naming those siblings explicitly, so it lacks the differentiation language a 5 would require.

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

Usage Guidelines3/5

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

The description gives the HTTP verb, path, and required scope, which implies when the tool applies, but never states the conditions under which an agent should update versus create or delete a plan. Usage is therefore inferable rather than explicit.

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

tiendanube_billing_subscriptions_getBilling Subscriptions GetA
Read-onlyIdempotent

Get the store's subscription(s) for an app service. HTTP: GET /concepts/app-cost/services/{service_id}/subscriptions Required scope: read_subscriptions API version: 2025-03

NameRequiredDescriptionDefault
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
service_idYesBilling service ID (from the Partner Portal)
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.5/5.0
Behavior2/5

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

The annotations provide high transparency regarding safety (readOnlyHint, destructiveHint). The description primarily adds technical metadata (HTTP path, scope, version) rather than explaining behavioral constraints like rate limits or failure modes. The description adds marginal value beyond what the structured fields already communicate.

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

Conciseness5/5

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

The definition is appropriately sized and highly efficient. It immediately front-loads the purpose and then follows with concise technical implementation details without extraneous language.

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

Completeness4/5

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

Given the high richness of the annotations and the comprehensive input schema coverage, the description provides a complete operational overview. It specifies the technical context (API path, scope) necessary for an agent to confidently execute the call.

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

Parameters4/5

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

The descriptions for the parameters add meaningful context beyond the schema. Specifically, it clarifies the origin of the 'service_id' (Partner Portal) and provides usage examples for the 'fields' parameter to reduce payload size.

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

Purpose4/5

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

The description clearly identifies the resource ('subscription(s)') and the context ('app service') using a specific action verb ('Get'). It is highly descriptive, though it could be slightly clearer by contrasting it with related subscription tools (e.g., those for orders).

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

Usage Guidelines3/5

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

Usage is implied by the resource name and API path, but the description provides no explicit guidance on when to use this tool versus alternatives. An agent might confuse 'app service' subscriptions with customer 'order' subscriptions present in the sibling tools list.

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

tiendanube_billing_subscriptions_updateBilling Subscriptions UpdateB
Idempotent

Update the store's subscription for an app service. HTTP: PATCH /concepts/app-cost/services/{service_id}/subscriptions Required scope: write_subscriptions API version: 2025-03

NameRequiredDescriptionDefault
service_idYesBilling service ID (from the Partner Portal)
subscriptionYesSubscription fields to update per the Billing API reference

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description does add genuinely useful non-annotation context: the required write_subscriptions scope and the API version. However, it says nothing about what a PATCH does when fields are omitted, whether the update is partial or a replace, or what happens on an invalid service_id.

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

Conciseness4/5

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

Four short lines, action statement front-loaded, with supporting metadata below. Nothing is padded, though 'API version: 2025-03' contributes little to an agent's decision to call the tool.

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

Completeness3/5

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

Only two required parameters and no output schema, so the bar is low, but the core payload (subscription fields) is completely opaque in both schema and description. For a mutation whose argument is an untyped free-form object, pointing at an external 'Billing API reference' leaves a real gap an agent cannot resolve from the definition alone.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already documented, and the endpoint line reinforces that service_id is a path parameter. The subscription parameter's schema is an unconstrained anyOf object/array, and the description does nothing to clarify its shape beyond deferring to 'the Billing API reference'. Baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb (Update) and resource (the store's subscription for an app service), and pins the exact endpoint PATCH /concepts/app-cost/services/{service_id}/subscriptions. That clearly separates it from sibling reads like tiendanube_billing_subscriptions_get and from tiendanube_billing_plans_update or tiendanube_billing_charges_create, though it never says so explicitly.

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

Usage Guidelines2/5

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

There is no guidance on when to choose this over the sibling tiendanube_billing_subscriptions_get or the plans/charges tools, and no stated preconditions beyond the scope string. The agent must infer the use case entirely from the name and endpoint.

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

tiendanube_blog_posts_listBlog Posts ListA
Read-onlyIdempotent

List posts of a blog. HTTP: GET /blogs/{blog_id}/posts Required scope: read_content API version: 2025-03 Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
blog_idYesBlog ID
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description usefully adds the required OAuth scope ('read_content'), the pinned API version (2025-03), and the full response envelope {count, page, per_page, total?, has_more, next_page?, items[]}, which matters 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.

Conciseness5/5

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

Five short lines, front-loaded with the verb and resource, followed by endpoint, scope, version and return shape. No filler or repetition of the title.

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

Completeness4/5

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

For a read-only list tool with 100% schema coverage and full annotations, the description supplies the missing pieces: auth scope, API version, and return envelope in the absence of an output schema. Only pagination-walking guidance is absent.

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

Parameters3/5

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

Schema description coverage is 100% and every parameter (page, per_page, fields, response_format, blog_id) is documented in the schema, so the baseline of 3 applies. The description adds no extra semantics about parameter interaction, such as the page*per_page cap, which the schema already carries.

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

Purpose4/5

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

States a specific verb and resource ('List posts of a blog') plus the exact HTTP route, so an agent can tell it apart from tiendanube_blogs_list and tiendanube_pages_list by resource alone. It does not explicitly call out the sibling boundary, which keeps it just below a 5.

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

Usage Guidelines3/5

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

Usage is only implied: the required scope 'read_content' and the mandatory blog_id signal a read operation on an existing blog, but there is no guidance on when to prefer this over tiendanube_blogs_list or how to paginate across large result sets. Adequate but leaves the routing decision to inference.

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

tiendanube_blogs_listBlogs ListA
Read-onlyIdempotent

List blogs of the store. HTTP: GET /blogs Required scope: read_content API version: 2025-03 Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds genuinely useful context beyond them: the required read_content scope, the API version, and the pagination envelope returned. The only gap is it doesn't state filtering/sorting behavior, which for a plain list is minor.

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

Conciseness4/5

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

Extremely compact and front-loaded: the purpose sentence comes first, followed by endpoint, scope, version, and return shape in that order. The terse field-list style is efficient rather than wasteful, though the return-shape line is somewhat notation-dense.

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

Completeness4/5

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

For a simple read-only list tool with no output schema, the description supplies the missing pieces an agent needs – auth scope, API version, and the exact response envelope including pagination fields. It stops short of 5 only because the relationship to blog posts endpoints is unaddressed.

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

Parameters3/5

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

Schema description coverage is 100%, so page, per_page, fields, and response_format are already fully documented in the schema. The description adds nothing about parameter semantics, which is the baseline-3 case when the schema carries the load.

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

Purpose4/5

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

The description opens with a specific verb and resource ('List blogs of the store'), which an agent can immediately map to the blogs collection. It does not explicitly contrast with the nearest sibling tiendanube_blog_posts_list, so the list-blogs vs list-posts distinction must be inferred from the names.

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

Usage Guidelines3/5

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

Usage is implied by 'List blogs of the store' – an agent can reasonably infer this is the read operation for blogs – but there is no explicit statement of when to use it instead of tiendanube_blog_posts_list or which prerequisites must hold beyond the scope line.

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

tiendanube_business_rules_upsertBusiness Rules UpsertA
Idempotent

Create or replace conditional business rules that filter payment methods, carriers, locations or cart behaviour at checkout. HTTP: PUT /business_rules/integrations/{domain} Required scope: write_shipping (domain shipping) | read_payment_options (payments) | write_locations (location) | write_orders (cart) API version: 2025-03

NameRequiredDescriptionDefault
rulesYesRules definition per the Business Rules API reference
domainYesRule domain (payments | shipping | location | cart)

TDQS

A4.2/5.0
Behavior4/5

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

Annotations cover the safety profile (idempotent=true, destructive=false, openWorld=true), and the description adds genuinely new context: this is a PUT upsert, so 'replace' means the prior rule configuration for that domain is superseded, plus the exact HTTP route and API version. It does not spell out what the response contains or whether other domains' rules are untouched.

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

Conciseness5/5

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

Front-loaded purpose sentence followed by compact structured lines for route, scopes, and version. Every line carries operational information with no filler.

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

Completeness4/5

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

For a two-parameter mutation tool with no output schema, the description supplies the route, auth scopes, API version, and upsert semantics β€” enough to invoke it correctly. The main gap is the opaque 'rules' payload shape and the absence of any note on return values or partial-failure behavior.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3, and the description only partially adds meaning by mapping the 'domain' enum values to their required scopes. The 'rules' payload is a freeform object/array and neither schema nor description explains its structure, so no additional semantic detail is contributed there.

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

Purpose5/5

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

Specific verb phrase ('Create or replace') paired with a precise resource ('conditional business rules') and the concrete checkout objects those rules filter (payment methods, carriers, locations, cart behaviour). No sibling tool covers business rules, so the scope statement alone makes it unambiguous.

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

Usage Guidelines4/5

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

It names the domain-specific prerequisites up front via per-domain required scopes (write_shipping, read_payment_options, write_locations, write_orders), which tells an agent whether it can call the tool for a given domain. It stops short of stating exclusions or when-not-to-use conditions, but there is no competing sibling to route against.

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

tiendanube_carts_delete_couponCarts Delete CouponB
DestructiveIdempotent

Remove a coupon applied to an active cart. HTTP: DELETE /carts/{id}/coupons/{coupon_id} Required scope: write_orders API version: 2025-03

NameRequiredDescriptionDefault
idYesCart ID
coupon_idYesCoupon ID

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already disclose destructive=true, idempotent=true, openWorld=true, readOnly=false, so the safety profile is covered. The description usefully adds the required OAuth scope (write_orders) and API version, which are genuine additions, but it doesn't say whether totals are recalculated, whether a missing coupon errors, or what state the cart ends in.

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

Conciseness4/5

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

The purpose is front-loaded in the first line, followed by compact metadata lines (endpoint, scope, version) that each carry distinct information. No filler sentences, though the metadata block is dense shorthand rather than prose.

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

Completeness3/5

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

For a two-parameter destructive call with rich annotations and no output schema, the definition covers identity, endpoint, and auth scope adequately. It is still thin on outcome: an agent doesn't know whether the call returns the updated cart, an empty body, or an error condition.

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

Parameters3/5

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

With 100% schema description coverage, both id and coupon_id are already documented in the schema. The description only restates them indirectly through the path template (/carts/{id}/coupons/{coupon_id}) and adds no format, type, or resolution guidance beyond that, so baseline 3 applies.

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

Purpose4/5

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

The description uses a specific verb and resource ("Remove a coupon applied to an active cart"), which separates it in practice from tiendanube_coupons_delete (deletes the coupon definition) and tiendanube_abandoned_checkouts_apply_coupon. It doesn't explicitly name those siblings, so an agent must infer the boundary, keeping it short of a 5.

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

Usage Guidelines3/5

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

The mention of "active cart" implies the applicable context, but there is no explicit when-to-use / when-not-to-use guidance and no named alternative. Nothing tells an agent what to do if the cart is inactive or the coupon isn't present.

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

tiendanube_carts_delete_line_itemCarts Delete Line ItemB
DestructiveIdempotent

Remove one line item from an active cart. HTTP: DELETE /carts/{id}/line-items/{line_item_id} Required scope: write_orders API version: 2025-03

NameRequiredDescriptionDefault
idYesCart ID
line_item_idYesLine item ID (64-bit; pass as string)

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare destructive=true, idempotent=true and openWorld=true, so the mutation profile is covered. The description adds genuinely new context: the required scope "write_orders" and the API version, which the agent needs to know before attempting the call and cannot get from annotations.

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

Conciseness4/5

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

Four short lines with the action front-loaded, followed by endpoint, scope and version metadata. Nothing is padded, though the HTTP verb/path line largely restates the tool name.

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

Completeness3/5

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

For a destructive two-parameter mutation, the description covers the endpoint, scope and version, which is adequate given annotations handle the safety profile and both params are fully documented. It omits what the response contains or whether the cart total is recalculated, leaving a small but real gap for a write operation.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (cart id, line_item_id) are already documented, including the 64-bit/pass-as-string caveat. The description's HTTP path echoes the parameters without adding format or edge-case detail, so the baseline 3 is appropriate.

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

Purpose4/5

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

"Remove one line item from an active cart" gives a specific verb (remove) and resource (line item within a cart), distinguishing it from carts_get and carts_delete_coupon. It stops short of explicitly naming which sibling applies to a different granularity of removal, but the operation is unambiguous.

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

Usage Guidelines2/5

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

The phrase "from an active cart" implies a precondition (the cart must be active), but there is no explicit when-to-use/when-not guidance and no mention of alternatives such as emptying the whole cart. An agent gets no help choosing between this and other cart mutation siblings.

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

tiendanube_carts_getCarts GetA
Read-onlyIdempotent

Get the state and contents of an active cart. HTTP: GET /carts/{id} Required scope: read_orders API version: 2025-03

NameRequiredDescriptionDefault
idYesCart ID
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, openWorld, so the safety profile is covered. The description adds genuine context beyond that: the HTTP verb/path, the required OAuth scope (read_orders), and the pinned API version 2025-03, which matters for behavior stability. It stops short of describing pagination or error conditions (e.g. cart not found / expired).

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

Conciseness4/5

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

Four short lines, front-loaded with the purpose followed by the endpoint, scope, and version. Every line carries usable information for an API wrapper; the only mild redundancy is the HTTP line restating the verb already in the first sentence.

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

Completeness4/5

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

For a read-only getter with full schema coverage and four annotations, this is close to self-sufficient: method, path, scope, and version are all present. The one remaining gap is that with no output schema, 'state and contents' is the only hint at the return payload, so an agent can't predict the shape of the cart object.

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

Parameters3/5

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

Schema description coverage is 100%, so the ID, fields projection, and response_format enum are fully documented in the schema itself. The description adds no parameter-level meaning (no format for id, no guidance on when to use fields). Baseline 3 applies when the schema carries the burden.

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

Purpose4/5

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

States a specific verb and resource ('Get the state and contents of an active cart') with a scope qualifier ('active'), which is more than a restatement of the title. It doesn't explicitly contrast with the cart-related siblings (carts_delete_line_item, carts_delete_coupon), but those are obviously mutating operations whose names diverge enough that confusion is unlikely.

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

Usage Guidelines3/5

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

Usage is implied β€” retrieve a cart by ID β€” and the 'Required scope: read_orders' line gives a real prerequisite. However, there is no statement of when to prefer this over e.g. abandoned_checkouts_get or orders_get, and no note on what to do when a cart is no longer active. Adequate but not guiding.

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

tiendanube_categories_createCategories CreateA

Create a category (set parent for nesting). HTTP: POST /categories Required scope: write_products API version: 2025-03

NameRequiredDescriptionDefault
nameYesCategory name β€” i18n object keyed by language code, e.g. {"es": "...", "pt": "...", "en": "..."}
handleNoURL slug β€” i18n object keyed by language code, e.g. {"es": "...", "pt": "...", "en": "..."}
parentNoParent category ID, or null for a root category
seo_titleNoSEO title β€” i18n object keyed by language code, e.g. {"es": "...", "pt": "...", "en": "..."}
descriptionNoDescription β€” i18n object keyed by language code, e.g. {"es": "...", "pt": "...", "en": "..."}
seo_descriptionNoSEO description β€” i18n object keyed by language code, e.g. {"es": "...", "pt": "...", "en": "..."}
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body
google_shopping_categoryNoGoogle Shopping category

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds useful context by stating the required scope and API version, but it does not describe the response, error behavior, or side effects beyond what annotations already convey.

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

Conciseness5/5

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

The description is extremely concise and front-loaded: it states the action first, then provides practical HTTP, scope, and version details in compact lines. Every sentence earns its place with no wasted words.

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

Completeness4/5

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

For a create tool with annotations covering safety and a fully documented 8-parameter schema, the description gives the essential invocation context: endpoint, required scope, and API version. It lacks any note about the returned resource or error handling, but no output schema exists, so that omission is a minor gap rather than a critical one.

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

Parameters3/5

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

Schema description coverage is 100%, so all parameters (including nested i18n objects and parent) are already documented in the schema. The description only reiterates parent usage for nesting, which is already described in the schema's parent field description. Baseline 3 is appropriate when the schema carries the parameter semantics.

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

Purpose4/5

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

The description states a specific verb and resource: "Create a category." It also adds "set parent for nesting," which clarifies the nesting behavior. It does not explicitly differentiate this tool from its siblings (e.g., categories_update or categories_list), though the create intent is clear from the name and description.

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

Usage Guidelines3/5

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

The description gives a useful usage hint ("set parent for nesting") and states the required scope (write_products), which is a prerequisite. However, it provides no explicit guidance on when to use this tool versus alternatives such as categories_update or categories_list, nor does it state exclusions.

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

tiendanube_categories_deleteCategories DeleteB
DestructiveIdempotent

Delete a category. HTTP: DELETE /categories/{id} Required scope: write_products API version: 2025-03

NameRequiredDescriptionDefault
idYesCategory ID

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful operational context the annotations don't: the HTTP endpoint, the required write_products scope, and the API version. It stops short of stating side effects like what happens to child categories or products referencing the deleted category.

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

Conciseness4/5

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

Front-loaded with the action, followed by compact metadata lines (HTTP method, scope, version). No filler, though the endpoint line partly duplicates the schema's path parameter.

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

Completeness3/5

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

For a destructive one-parameter delete, the scope and endpoint are helpful, but the description omits cascade/side-effect behavior and confirmation expectations. An agent would still be unsure what breaks when the category is removed.

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

Parameters3/5

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

Schema description coverage is 100% and the single id parameter is documented as "Category ID", so the baseline is 3. The description only restates the path template (DELETE /categories/{id}) without adding format or type meaning beyond the schema.

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

Purpose4/5

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

States a specific verb and resource ("Delete a category"), which is unambiguous on its own. It does not differentiate itself from sibling category tools (get/list/create/update) or name alternatives, leaving that to the tool name.

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

Usage Guidelines2/5

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

No guidance on when to use this versus categories_update or categories_list, and no warnings such as preconditions (e.g., deleting a parent category with children, or categories still assigned to products). The agent must infer the usage context entirely.

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

tiendanube_categories_getCategories GetA
Read-onlyIdempotent

Get one category. HTTP: GET /categories/{id} Required scope: read_products API version: 2025-03

NameRequiredDescriptionDefault
idYesCategory ID
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds valuable non-annotation context: the required OAuth scope ('read_products') and the pinned API version ('2025-03'), which an agent needs to predict auth failures.

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

Conciseness4/5

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

Front-loaded with the verb+resource, followed by terse HTTP endpoint, scope, and version lines. Every line carries useful information with no filler, though the label-style formatting is slightly dry rather than prose.

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

Completeness4/5

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

For a simple single-resource read with full schema coverage, functional annotations, and the scope/version metadata provided, the definition is nearly complete. Output shape is left unspecified (no output schema), but the annotated read semantics make this a minor gap.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters (id, fields, response_format) are already documented in the schema. The description only references the id via the path template and adds nothing about fields or response_format, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('Get') and resource ('one category'), making it clearly distinct from the sibling tiendanube_categories_list. It does not explicitly name alternatives, but the singular 'one' plus the id path makes the differentiation self-evident.

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

Usage Guidelines3/5

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

Usage is implied by 'Get one category' requiring an id, but there is no explicit statement of when to use this versus categories_list or categories_update. An agent can infer intent but gets no stated exclusions or prerequisites beyond the scope note.

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

tiendanube_categories_listCategories ListA
Read-onlyIdempotent

List categories. HTTP: GET /categories Required scope: read_products API version: 2025-03 Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
handleNoExact handle
languageNoLanguage code
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
since_idNoOnly return records with an ID greater than this value (cursor pagination)
parent_idNoOnly children of this category
created_at_maxNoCreated at or before (ISO 8601)
created_at_minNoCreated at or after (ISO 8601, e.g. 2025-01-31T00:00:00-03:00)
updated_at_maxNoUpdated at or before (ISO 8601)
updated_at_minNoUpdated at or after (ISO 8601)
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, but the description adds genuine value on top: the concrete endpoint, the required OAuth scope, the pinned API version, and the exact pagination envelope returned. It does not discuss rate limits or how filters interact, which keeps it short of a 5.

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

Conciseness4/5

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

Front-loaded with the action, then a compact metadata block where each line carries information (endpoint, scope, version, return shape). The 'HTTP: GET /categories' line is marginally redundant with the name, but nothing else is filler.

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

Completeness4/5

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

For a 12-parameter read-only list tool with full schema coverage and no output schema, the definition covers safety (via annotations), auth scope, and the return envelope β€” enough to call it correctly. It is slightly thin on pagination strategy and on disambiguating from the price-table category listings.

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

Parameters3/5

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

Schema description coverage is 100%, so every one of the 12 parameters is already documented, making 3 the baseline. The description adds no parameter-level insight, such as how parent_id interacts with pagination or when to prefer since_id over page, and instead spends its space on the response envelope.

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

Purpose4/5

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

States a specific verb and resource ('List categories') that is clearly separable from the sibling tiendanube_categories_get (single category). It does not explicitly name or contrast the sibling, and does not mention tiendanube_price_tables_categories_list, which is a different kind of category listing an agent could confuse it with.

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

Usage Guidelines2/5

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

No guidance on when to use this versus tiendanube_categories_get or the price-table category listings, and no note on when filters (parent_id, since_id, date ranges) matter. The only prerequisite-style information is the required scope 'read_products', which is useful but is an auth constraint, not usage direction.

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

tiendanube_categories_updateCategories UpdateA
Idempotent

Update a category. HTTP: PUT /categories/{id} Required scope: write_products API version: 2025-03

NameRequiredDescriptionDefault
idYesCategory ID
nameNoCategory name β€” i18n object keyed by language code, e.g. {"es": "...", "pt": "...", "en": "..."}
handleNoURL slug β€” i18n object keyed by language code, e.g. {"es": "...", "pt": "...", "en": "..."}
parentNoParent category ID, or null for a root category
seo_titleNoSEO title β€” i18n object keyed by language code, e.g. {"es": "...", "pt": "...", "en": "..."}
descriptionNoDescription β€” i18n object keyed by language code, e.g. {"es": "...", "pt": "...", "en": "..."}
seo_descriptionNoSEO description β€” i18n object keyed by language code, e.g. {"es": "...", "pt": "...", "en": "..."}
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body
google_shopping_categoryNoGoogle Shopping category

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare the mutation profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false), matching PUT semantics. The description adds the auth scope requirement (write_products) and API version, which is real value, but it omits partial-vs-full update semantics β€” whether omitted fields are preserved or cleared β€” which matters for a 9-param mutation.

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

Conciseness4/5

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

The description is front-loaded with the verb+resource, and the HTTP/scope/version lines are terse. However, the raw endpoint and API version lines are boilerplate that add little decision value for an agent.

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

Completeness5/5

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

With no output schema, the description does not need to explain returns, and the schema fully documents the 9 params including nested i18n objects. Annotations cover safety, so the primary remaining omission is update semantics, which is a modest gap against otherwise complete structured data.

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

Parameters3/5

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

Schema description coverage is 100% and documents all 9 params, including the i18n nested object pattern, so the schema carries the parameter burden. The description adds nothing about parameters, so the baseline 3 applies.

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

Purpose4/5

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

"Update a category" states a specific verb and resource, and the PUT endpoint confirms a full-update operation. It distinguishes cleanly from the sibling CRUD operations (create/get/list/delete) by the verb alone, though it does not explicitly name those alternatives.

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

Usage Guidelines3/5

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

The required scope (write_products) is a useful precondition, but there is no explicit guidance on when to use this versus categories_create or how it differs from a partial update. Usage is only implied by the "Update" verb and the {id} path.

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

tiendanube_coupons_createCoupons CreateB

Create a discount coupon. HTTP: POST /coupons Required scope: write_coupons API version: 2025-03

NameRequiredDescriptionDefault
codeYesCoupon code text
typeYesCoupon type (percentage | absolute | shipping)
validNoWhether the coupon is active
valueNoPercentage or amount as string; omit for 'shipping' coupons
end_dateNoEnd date (YYYY-MM-DD)
max_usesNoMaximum total uses
productsNoProduct IDs the coupon applies to
min_priceNoMinimum cart subtotal
categoriesNoCategory IDs the coupon applies to
start_dateNoStart date (YYYY-MM-DD)
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body
includes_shippingNoDiscount also applies to shipping
max_uses_per_clientNoMaximum uses per client
first_consumer_purchaseNoOnly for a customer's first purchase
combines_with_other_discountsNoCan be combined with other discounts

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare the mutation profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true, idempotentHint=false). The description adds genuinely useful context beyond them β€” the required write_coupons scope, the POST /coupons endpoint and the API version β€” but says nothing about failure behavior (e.g. duplicate coupon codes are rejected, invalid date ranges), which matters for a non-idempotent create.

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

Conciseness4/5

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

Four short, front-loaded lines with no filler; the verb+resource leads and the operational metadata follows. Slightly more could be trimmed (API version is of marginal use to an agent deciding how to call it).

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

Completeness3/5

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

For a 15-parameter nested create with no output schema, the description is adequate but thin: it doesn't say what comes back (a coupon object with an id), nor flag conditional parameter dependencies beyond what the schema hints at. An agent can call the tool, but lacks a behavioral picture of the result and error path.

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

Parameters3/5

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

Schema description coverage is 100%, so every one of the 15 parameters is already documented in the schema, including the shipping/percentage value nuance. The description adds no parameter-level meaning, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Create a discount coupon'), which is unambiguous and matches the coupons_* family of siblings. It does not, however, distinguish this from the adjacent tiendanube_promotions_create or explain the coupon-vs-promotion boundary.

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

Usage Guidelines3/5

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

The required write_coupons scope implies the precondition for calling it, but the description never says when to use this versus promotions_create / discounts_callbacks_upsert, nor any when-not condition. Usage is inferable from the name rather than stated.

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

tiendanube_coupons_deleteCoupons DeleteA
DestructiveIdempotent

Delete a coupon. HTTP: DELETE /coupons/{id} Required scope: write_coupons API version: 2025-03

NameRequiredDescriptionDefault
idYesCoupon ID

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is known. The description adds genuinely new behavioral context: the required write_coupons scope, the HTTP verb/path, and the API version β€” all of which affect whether the call can succeed.

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

Conciseness4/5

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

Four short lines, front-loaded with the action and followed by endpoint, scope, and version. Nothing is padded, though the API version line contributes little to invocation decisions.

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

Completeness4/5

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

For a one-parameter delete with no output schema, the description plus annotations cover what an agent needs: action, target, auth scope, and idempotency/destructiveness. A brief note on irreversibility or on retrieving the ID would make it complete.

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

Parameters3/5

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

With 100% schema description coverage and a single 'id' parameter documented as 'Coupon ID', the schema carries the burden. The description's `{id}` path reference adds nothing beyond what the schema already says, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('Delete') and resource ('a coupon'), which cleanly separates it from the sibling coupons_list/get/create/update tools. It is clear but minimal β€” no scope qualifiers beyond the resource name.

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

Usage Guidelines2/5

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

No guidance on when to use this versus coupons_update or how to obtain a coupon ID first. There is also no warning about irreversibility, which matters for a permanently destructive operation.

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

tiendanube_coupons_getCoupons GetB
Read-onlyIdempotent

Get one coupon. HTTP: GET /coupons/{id} Required scope: read_coupons API version: 2025-03

NameRequiredDescriptionDefault
idYesCoupon ID
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

B3.2/5.0
Behavior3/5

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

The annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is clear. The description adds useful operational contextβ€”required scope 'read_coupons' and API version '2025-03'β€”but does not describe error behavior or response characteristics.

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

Conciseness4/5

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

The description is short and front-loaded with the core action, followed by HTTP method, required scope, and API version. There is no filler, though the HTTP path line is slightly redundant with the tool name and schema.

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

Completeness4/5

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

For a simple single-resource GET tool with full schema coverage and complete annotations, the description provides enough context to call it correctly. The required scope and API version are helpful additions, and no output schema means return values need not be explained.

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

Parameters3/5

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

Schema description coverage is 100%, and all three parameters are documented in the schema, including the coupon ID, fields filter, and response_format enum. The description adds no parameter-specific meaning beyond what the schema provides, so the baseline of 3 applies.

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

Purpose4/5

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

The description uses a specific verb and resource: 'Get one coupon.' The singular 'one coupon' implicitly distinguishes it from the sibling tiendanube_coupons_list, though it does not explicitly name that sibling.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus tiendanube_coupons_list, nor any exclusions or prerequisites beyond the required scope. The agent must infer that this is for fetching a single coupon by ID.

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

tiendanube_coupons_listCoupons ListA
Read-onlyIdempotent

List coupons. HTTP: GET /coupons Required scope: read_coupons API version: 2025-03 Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
codeNoExact coupon code
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
typeNoCoupon type (percentage | absolute | shipping)
validNoFilter by validity
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
statusNoCoupon status (activated | deactivated)
sort_byNoSort order
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
since_idNoOnly return records with an ID greater than this value (cursor pagination)
max_end_dateNoEnd date to
min_end_dateNoEnd date from
created_at_maxNoCreated at or before (ISO 8601)
created_at_minNoCreated at or after (ISO 8601, e.g. 2025-01-31T00:00:00-03:00)
max_start_dateNoStart date to
min_start_dateNoStart date from (YYYY-MM-DD)
updated_at_maxNoUpdated at or before (ISO 8601)
updated_at_minNoUpdated at or after (ISO 8601)
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.6/5.0
Behavior4/5

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 useful operational context beyond annotations: the required read_coupons scope, API version 2025-03, and return envelope. It does not discuss rate limits or pagination nuances, so 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.

Conciseness5/5

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

Front-loaded with the core action, followed by compact and relevant operational metadata. There is no filler; every line (endpoint, scope, version, return shape) is useful.

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

Completeness4/5

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

For a filtered-list tool with 18 optional parameters and no output schema, the description supplies the endpoint, required scope, API version, and return envelope. The schema handles filters and annotations handle safety, but the description lacks sibling-routing guidance for get vs list, leaving a small gap.

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

Parameters3/5

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

All 18 parameters have schema descriptions, so the schema carries the parameter semantics. The description adds no parameter-specific meaning; it only describes the response shape and endpoint. Baseline 3 fits when schema coverage is 100%.

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

Purpose4/5

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

States a specific verb and resource ('List coupons') and includes the HTTP endpoint, so the core operation is clear. It does not explicitly differentiate from the sibling tiendanube_coupons_get or clarify filtering scope, so it falls short of a 5.

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

Usage Guidelines2/5

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

Provides no when-to-use guidance, prerequisites, or alternatives. An agent must infer that this is for browsing/filtering coupons rather than fetching one by ID, and no exclusion points to tiendanube_coupons_get is given.

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

tiendanube_coupons_updateCoupons UpdateA
Idempotent

Update a coupon. HTTP: PUT /coupons/{id} Required scope: write_coupons API version: 2025-03

NameRequiredDescriptionDefault
idYesCoupon ID
codeNoCoupon code text
typeNoCoupon type (percentage | absolute | shipping)
validNoWhether the coupon is active
valueNoPercentage or amount as string; omit for 'shipping' coupons
end_dateNoEnd date (YYYY-MM-DD)
max_usesNoMaximum total uses
productsNoProduct IDs the coupon applies to
min_priceNoMinimum cart subtotal
categoriesNoCategory IDs the coupon applies to
start_dateNoStart date (YYYY-MM-DD)
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body
includes_shippingNoDiscount also applies to shipping
max_uses_per_clientNoMaximum uses per client
first_consumer_purchaseNoOnly for a customer's first purchase
combines_with_other_discountsNoCan be combined with other discounts

TDQS

A3.5/5.0
Behavior3/5

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

The description adds the HTTP method, required write scope, and API version beyond the annotations, which already declare idempotent, non-destructive, and open-world behavior. It does not explain partial-update semantics or how omitted optional fields are treated, which are important behavioral details for a 16-parameter update tool.

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

Conciseness5/5

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

The description is four short lines, front-loads the purpose, and then gives endpoint, scope, and API version without wasted prose. Each line provides some actionable metadata.

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

Completeness3/5

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

The definition is adequate because the schema fully documents the many optional fields and annotations cover safety traits. However, for a mutation tool with 16 parameters, it leaves out whether this is a partial update or replacement and how omitted fields behave.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 16 parameters in detail. The description adds no parameter-level meaning beyond the schema, which is acceptable given full coverage but does not exceed baseline.

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

Purpose4/5

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

The description clearly states a specific verb and resource: "Update a coupon." It does not explicitly differentiate this tool from siblings such as coupons_create, coupons_get, or coupons_delete, but the update purpose is unambiguous.

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

Usage Guidelines3/5

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

Usage is only implied by the verb "Update"; there is no explicit guidance on when to use this versus coupons_create, coupons_get, or coupons_delete. The required scope line adds useful access context but not selection guidance.

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

tiendanube_customers_createCustomers CreateB

Create a customer. HTTP: POST /customers Required scope: write_customers API version: 2025-03

NameRequiredDescriptionDefault
nameYesFull name
noteNoPrivate note
emailYesEmail
extraNoAdditional customer data
phoneNoPhone
passwordNoInitial password
addressesNoAddresses: [{address, number, floor, locality, zipcode, city, province, country, default}]
identificationNoTax/ID document (DNI/CUIT/CPF)
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body
send_email_inviteNoSend an account invitation email

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=true and idempotentHint=false, so the safety profile is largely covered. The description adds genuinely useful non-schema context: the auth scope (write_customers) and API version (2025-03). It does not disclose what happens with a duplicate email, whether send_email_invite triggers side effects, or any response/error behavior.

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

Conciseness4/5

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

Four short lines, front-loaded with the action, followed by endpoint, scope and version in a scannable order. No filler, though the structured metadata style means it reads as reference data rather than explanatory prose.

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

Completeness3/5

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

For a 10-parameter mutation with nested objects and no output schema, the description covers the endpoint and auth requirement but omits the important operational details: what the response contains, whether the created customer is returned, and how duplicate-email conflicts are handled. Annotations cover the mutability profile, so the gap is moderate rather than severe.

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

Parameters3/5

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

Schema description coverage is 100% across all 10 parameters, including nested addresses and the pass-through additional_fields, so the schema already carries the semantic burden. The description contributes nothing about parameters, which is acceptable given full coverage but yields the baseline 3.

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

Purpose4/5

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

The description gives a specific verb and resource ("Create a customer"), which is unambiguous and clearly distinct from siblings like tiendanube_customers_update, tiendanube_customers_get, and tiendanube_customers_delete. It stops short of explicitly naming those siblings or stating scope boundaries, so it lands at a solid 4 rather than 5.

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

Usage Guidelines3/5

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

Usage is only implied by the verb "Create" and the required scope "write_customers", which is a useful prerequisite. There is no guidance on when to prefer this over other customer tools, no preconditions (e.g., duplicate email handling), and no mention of what to do afterward such as fetching the created record.

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

tiendanube_customers_deleteCustomers DeleteA
DestructiveIdempotent

Delete a customer. Only possible if the customer has no orders. HTTP: DELETE /customers/{id} Required scope: write_customers API version: 2025-03

NameRequiredDescriptionDefault
idYesCustomer ID

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already mark this as destructive, non-read-only, idempotent, and open-world, so safety is covered structurally. The description adds genuinely useful behavioral context beyond that: the no-orders precondition and the required write_customers scope.

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

Conciseness5/5

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

The description is front-loaded with the action and its key constraint, then provides compact operational context: HTTP method/path, required scope, and API version. Every line is short and useful.

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

Completeness5/5

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

For a single-parameter delete tool with annotations covering destructive/idempotent behavior and no output schema, the description supplies everything needed to call it correctly: the target resource, the precondition, the scope, and the API version.

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

Parameters3/5

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

There is one required parameter with 100% schema description coverage, so the schema already defines the ID input. The description shows the path template /customers/{id}, but adds no further meaning about the ID format or behavior.

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

Purpose5/5

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

States a specific verb and resource (delete a customer) and adds the critical scoping rule that the customer must have no orders. This clearly distinguishes it from sibling tools such as customers_get, customers_update, and customers_create.

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

Usage Guidelines4/5

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

The description gives a clear precondition for use: deletion is only possible if the customer has no orders. It does not name any alternative or fallback behavior for customers with orders, which keeps it short of full explicit when/when-not guidance.

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

tiendanube_customers_getCustomers GetA
Read-onlyIdempotent

Get one customer. HTTP: GET /customers/{id} Required scope: read_customers API version: 2025-03

NameRequiredDescriptionDefault
idYesCustomer ID
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuinely new operational context the annotations do not: the underlying HTTP verb/path, the required OAuth scope read_customers, and the API version β€” an agent can predict auth failures before calling.

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

Conciseness4/5

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

Four short lines, front-loaded with the purpose, and nothing is padded or repeated. The trailing HTTP/version metadata is templated but still carries usable information.

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

Completeness4/5

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

Three parameters are all documented, annotations cover safety, and the scope/version lines round out the operational picture, so an agent can call this correctly. Some minor gaps remain around not-found behavior and what a customer object contains, but no output schema was promised.

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

Parameters3/5

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

Schema description coverage is 100%, with 'id', 'fields' and 'response_format' all documented in the schema, so the baseline is 3. The description adds no extra meaning about accepted ID formats or fields syntax beyond what the schema already states.

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

Purpose4/5

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

"Get one customer" states a specific verb and singular resource, which cleanly separates it from the sibling tiendanube_customers_list. It stops short of explicitly naming the list/update/delete siblings as alternatives, so it is clear but not fully differentiated.

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

Usage Guidelines3/5

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

The singular framing implies the use case (fetch a known customer by ID), and the required scope is stated, but there is no explicit when-to-use or when-not guidance and no pointer to tiendanube_customers_list for browsing or tiendanube_customers_update for changes.

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

tiendanube_customers_listCustomers ListA
Read-onlyIdempotent

List customers. HTTP: GET /customers Required scope: read_customers API version: 2025-03 Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
qNoSearch by name, email or document
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
emailNoExact email
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
since_idNoOnly return records with an ID greater than this value (cursor pagination)
created_at_maxNoCreated at or before (ISO 8601)
created_at_minNoCreated at or after (ISO 8601, e.g. 2025-01-31T00:00:00-03:00)
updated_at_maxNoUpdated at or before (ISO 8601)
updated_at_minNoUpdated at or after (ISO 8601)
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json
total_spent_minNoMinimum total spent
accepts_marketingNoFilter by marketing consent

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), and the description adds genuinely useful context they don't carry: the required read_customers scope and the pinned API version 2025-03. It also discloses the return envelope (count, page, per_page, has_more, next_page, items[]), which no output schema provides here.

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

Conciseness4/5

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

Five short lines, front-loaded with the verb+resource, followed by endpoint, scope, version, and return shape β€” each line earning its place. The telegraphic style drops connective context (e.g. what 'count' counts against) but wastes no words.

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

Completeness4/5

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

With no output schema, the description usefully spells out the response envelope including pagination fields, and it names the required OAuth scope for a 13-parameter read tool. It falls short only on pagination guidance for a 10000-record page ceiling and on distinguishing itself from sibling customer tools.

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

Parameters3/5

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

Schema description coverage is 100% with 13 well-documented parameters, so the schema does the heavy lifting and baseline 3 applies. The description adds nothing about filter semantics β€” notably it never explains cursor pagination via since_id or how date cursors interact with page β€” so it neither compensates nor detracts.

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

Purpose4/5

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

States a specific verb and resource ('List customers') plus the underlying endpoint GET /customers, so the operation is unambiguous. It does not explicitly contrast with siblings such as tiendanube_customers_get or tiendanube_price_tables_customers_list, but the verb/resource pairing is distinct enough to be told apart by name.

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

Usage Guidelines2/5

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

The description gives no when-to-use / when-not-to-use guidance and never references an alternative tool. An agent must infer from the name alone that this is the bulk-retrieval path versus customers_get for a single record; nothing in the text states that routing rule.

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

tiendanube_customers_updateCustomers UpdateB
Idempotent

Update a customer. HTTP: PUT /customers/{id} Required scope: write_customers API version: 2025-03

NameRequiredDescriptionDefault
idYesCustomer ID
nameNoFull name
noteNoPrivate note
emailNoEmail
extraNoAdditional customer data
phoneNoPhone
passwordNoInitial password
addressesNoAddresses: [{address, number, floor, locality, zipcode, city, province, country, default}]
identificationNoTax/ID document (DNI/CUIT/CPF)
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body
send_email_inviteNoSend an account invitation email

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful context beyond them: the required write_customers scope and the API version. However, it omits the critical behavioral detail that PUT commonly replaces the resource, leaving unclear whether omitted fields are cleared.

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

Conciseness4/5

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

Four tightly packed lines with the operation stated first, followed by endpoint, scope, and API version β€” no filler. It is deliberately telegraphic, though the boilerplate formatting leaves no room for the one sentence of semantics that would matter most.

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

Completeness3/5

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

For an 11-parameter mutation with nested objects and no output schema, the definition covers identity, auth, and version but not merge/replace semantics or what the response contains. An agent can invoke it correctly but may not predict the side effects of omitting fields.

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

Parameters3/5

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

Schema description coverage is 100%, so every one of the 11 parameters is already documented in the schema, including nested addresses and the additional_fields escape hatch. The description adds no parameter-level meaning beyond that, which is the expected baseline when the schema does the work.

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

Purpose4/5

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

States a specific verb and resource ("Update a customer") plus the exact HTTP endpoint PUT /customers/{id}, which pins down the operation unambiguously. It does not explicitly differentiate from siblings like tiendanube_customers_create or tiendanube_customers_get, but the name and endpoint make the distinction obvious.

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

Usage Guidelines2/5

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

There is no guidance on when to use this instead of customers_create or customers_get, and no mention of whether this is a full replace (PUT semantics) or a partial update β€” a decisive detail for an agent deciding which call to make. The only usage-adjacent information is the required scope, which is an authorization prerequisite rather than selection guidance.

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

tiendanube_custom_field_capabilities_addCustom Field Capabilities AddA

Add a capability to a custom field definition (unstable API). HTTP: POST /{entity}/custom-fields/{namespace}/{slug}/capabilities Required scope: read_products/write_products API version: unstable

NameRequiredDescriptionDefault
slugYesDefinition slug
entityYesEntity type owning the definitions (categories | customers | orders | products | products/variants)
namespaceYesDefinition namespace
capabilityYesCapability per the API reference

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover safety (readOnlyHint=false, destructiveHint=false), and the description adds genuinely useful operational context beyond them: the API is flagged as unstable, the required OAuth scope is named, and the HTTP verb/path is disclosed. It does not mention that idempotentHint=false means repeating the call may append a duplicate capability, which is the main behavioral risk here.

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

Conciseness4/5

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

Front-loaded with the action in the first clause, followed by compact metadata lines (endpoint, scope, version). No filler; the only slight redundancy is repeating 'unstable' twice when once would suffice.

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

Completeness4/5

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

For a mutation tool with annotations covering safety, no output schema, and full schema coverage, the description supplies the remaining operational essentials: endpoint shape, auth scope, and API stability. The one substantive gap is that a 'capability' is never defined in either the description or schema.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters (entity, namespace, slug, capability) are already documented in the schema, including the entity enum. The description only mirrors the path structure and adds nothing about the shape or semantics of the 'capability' payload, which the schema also punts on with 'per the API reference'.

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

Purpose4/5

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

States a specific verb+resource: adding a capability to a custom field definition, with the exact HTTP endpoint showing the path parameters. It is distinguishable from the sibling capabilities_list/_remove and custom_field_defs_* tools by the verb, though it never names those siblings.

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

Usage Guidelines3/5

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

Usage is implied by the endpoint and the required scope (read_products/write_products), but there is no explicit statement of when to call this versus custom_field_defs_create/update or when a capability should be attached rather than set at definition creation.

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

tiendanube_custom_field_capabilities_listCustom Field Capabilities ListA
Read-onlyIdempotent

List capabilities of a custom field definition (unstable API). HTTP: GET /{entity}/custom-fields/{namespace}/{slug}/capabilities Required scope: read_products/write_products API version: unstable

NameRequiredDescriptionDefault
slugYesDefinition slug
entityYesEntity type owning the definitions (categories | customers | orders | products | products/variants)
namespaceYesDefinition namespace
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description still adds real context the annotations do not carry: the endpoint is marked unstable, the API version is unstable, and the required scopes are stated, which matters for an agent deciding whether to depend on it.

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

Conciseness4/5

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

The purpose is front-loaded in the first line, followed by endpoint, scope, and version β€” a tight, scannable shape with no filler. Minor redundancy: instability is signalled twice, in '(unstable API)' and 'API version: unstable'.

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

Completeness4/5

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

For a read-only, fully-described 4-parameter lookup with no output schema, the description covers what an agent needs to invoke it correctly. It stops short of describing what a 'capability' looks like in the response, which is the one substantive gap given no output schema exists.

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

Parameters3/5

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

Schema coverage is 100%, so all four parameters are already documented, including both enums; the baseline of 3 applies. The HTTP path template does clarify that entity/namespace/slug compose the definition identifier, but that is marginal value beyond the schema's own 'Definition namespace/slug' descriptions, and response_format is never discussed.

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

Purpose4/5

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

States a specific verb and resource: list the capabilities of a custom field definition, identified by entity/namespace/slug. That clearly separates it from the mutating siblings (custom_field_capabilities_add/remove) and from custom_field_defs_get, though it never names an alternative explicitly.

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

Usage Guidelines3/5

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

Usage is only implied β€” an agent must infer it should call this before adding or removing capabilities, or to introspect what a definition supports. The required OAuth scope (read_products/write_products) is a useful prerequisite, but there is no explicit when-to-use or when-not-to-use guidance.

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

tiendanube_custom_field_capabilities_removeCustom Field Capabilities RemoveA
DestructiveIdempotent

Remove a capability from a custom field definition (unstable API). HTTP: DELETE /{entity}/custom-fields/{namespace}/{slug}/capabilities Required scope: read_products/write_products API version: unstable

NameRequiredDescriptionDefault
slugYesDefinition slug
entityYesEntity type owning the definitions (categories | customers | orders | products | products/variants)
namespaceYesDefinition namespace
capabilityNoCapability to remove per the API reference

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds genuinely new behavior context: the required OAuth scope (read_products/write_products) and the fact that this hits an unstable API version, both of which affect whether an agent should call it at all.

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

Conciseness4/5

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

Four short, front-loaded lines that each carry information: purpose, endpoint, scope, version. The only waste is the mild redundancy between '(unstable API)' and 'API version: unstable'.

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

Completeness4/5

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

For a 4-parameter mutation with no output schema and rich annotations, the description supplies the auth requirement, the endpoint shape, and the stability caveat. What it omits is the effect of the removal itself β€” whether the capability payload is required and whether removal is reversible.

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

Parameters3/5

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

Schema coverage is 100%, so entity/namespace/slug are documented and the path template in the description reinforces their roles. The optional `capability` parameter is not mentioned anywhere beyond 'Capability to remove per the API reference', so how it is transmitted (body vs. query) and whether it may be omitted for a bulk removal remains unclear.

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

Purpose4/5

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

States a specific verb and resource ('Remove a capability from a custom field definition') and gives the exact HTTP path, so the target object is unambiguous. It never names its siblings (capabilities_list / capabilities_add), so the differentiation is left to the naming convention rather than made explicit in the text.

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

Usage Guidelines3/5

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

There is no explicit 'use this when…' or 'do not use this when…' guidance, nor a pointer to capabilities_add for the inverse operation. Usage is only implied by the verb and by the required scope line, which at least tells the caller what permission is needed.

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

tiendanube_custom_field_defs_createCustom Field Defs CreateA

Create a custom field definition (unstable API). HTTP: POST /{entity}/custom-fields Required scope: read_products/write_products API version: unstable

NameRequiredDescriptionDefault
entityYesEntity type owning the definitions (categories | customers | orders | products | products/variants)
definitionYesDefinition per the unstable Custom Fields API reference (namespace, slug, name, value_type...)

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=true, so the bar is lower. The description adds genuinely useful facts beyond the annotations: the required OAuth scope, the unstable API version, and the exact POST path with the {entity} path segment.

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

Conciseness4/5

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

Three short lines, front-loaded with the action, then operational metadata. Zero filler; the API-version note is slightly redundant since 'unstable' already appears in the first line.

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

Completeness4/5

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

For a two-param mutation with no output schema, the description plus the rich schema covers scope, endpoint and payload expectations adequately. It does not describe the response body or whether the created definition can be updated later, which would be a modest improvement.

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

Parameters3/5

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

Schema description coverage is 100% and both required parameters are documented there, including the entity enum and the definition shape hint. The description adds only the {entity} path templating, so baseline 3 applies.

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

Purpose4/5

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

Specific verb+resource: 'Create a custom field definition' with the HTTP endpoint spelled out. It implicitly distinguishes itself from tiendanube_custom_fields_create (which sets values) by naming 'definition', though it never explicitly contrasts with that near-identical sibling name.

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

Usage Guidelines3/5

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

The unstable-API caveat and required scope give useful context, but there is no statement of when to use this versus tiendanube_custom_fields_create or the defs_list/get/delete siblings. Usage must be inferred from the name alone.

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

tiendanube_custom_field_defs_deleteCustom Field Defs DeleteA
DestructiveIdempotent

Delete a custom field definition (unstable API). HTTP: DELETE /{entity}/custom-fields/{namespace}/{slug} Required scope: read_products/write_products API version: unstable

NameRequiredDescriptionDefault
slugYesDefinition slug
entityYesEntity type owning the definitions (categories | customers | orders | products | products/variants)
namespaceYesDefinition namespace

TDQS

A3.9/5.0
Behavior4/5

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

The annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds genuinely new behavioral context: the operation targets an unstable API version (a real risk for a destructive call), requires a specific OAuth scope, and maps to DELETE /{entity}/custom-fields/{namespace}/{slug}. It does not state whether deletion cascades to stored values or what happens when the definition is not found.

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

Conciseness4/5

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

The description is front-loaded and four short lines long, with no filler. It loses a point because "(unstable API)" in the first line is repeated verbatim as "API version: unstable" in the last line, which is redundant within such a compact definition.

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

Completeness4/5

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

This is a three-parameter destructive tool with no output schema, and the definition covers the endpoint, the required scope, and the instability warning, while the annotations carry the destructive/idempotent flags. It falls short of complete because it does not say whether the deletion is permanent, whether attached field values are removed, or what a successful response returns.

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

Parameters3/5

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

Schema coverage is 100%, and the entity enum is fully documented in the schema, so the schema already carries the burden of explaining parameters. The path template /{entity}/custom-fields/{namespace}/{slug} tells the agent how the three parameters are bound into the request, but it adds no format, validation, or lookup details. The baseline of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb and resource: "Delete a custom field definition." This is distinguishable from the sibling tools `tiendanube_custom_fields_delete`, which deletes field values, and `tiendanube_custom_field_defs_create/get/list`, which manage definitions. An agent can select the correct sibling without opening any schema.

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

Usage Guidelines3/5

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

The description states the required scope (read_products/write_products) and contains a useful warning that the API is unstable, but it does not say when to prefer this tool over `tiendanube_custom_fields_delete`, nor does it give any preconditions such as whether the definition must be unused or empty before deletion. Usage is therefore implied by the name rather than guided.

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

tiendanube_custom_field_defs_getCustom Field Defs GetA
Read-onlyIdempotent

Get a custom field definition by namespace/slug (unstable API). HTTP: GET /{entity}/custom-fields/{namespace}/{slug} Required scope: read_products/write_products API version: unstable

NameRequiredDescriptionDefault
slugYesDefinition slug
entityYesEntity type owning the definitions (categories | customers | orders | products | products/variants)
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
namespaceYesDefinition namespace
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, yet the description still adds real operational context: the API is flagged as unstable, the exact HTTP route is given, and the required scope (read_products/write_products) is named. It stops short of describing error behavior or response shape for a read tool.

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

Conciseness5/5

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

Three short, front-loaded lines: one for purpose, one for the endpoint, one for scope and API version. Every line carries actionable information and nothing is repeated or padded.

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

Completeness4/5

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

For a five-parameter read tool with full schema coverage and an explicit annotation profile, the definition covers what an agent needs to address and authorize the call. The only gap is that it does not hint at what the returned definition contains, which matters somewhat since there is no output schema.

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

Parameters3/5

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

Schema coverage is 100%, so entity, slug, namespace, fields, and response_format are all documented in the schema itself. The description's path template reinforces that namespace and slug are path-level identifiers, but adds nothing about the fields or response_format options, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb (Get) plus a precise resource (a custom field definition) and the exact key pair (namespace/slug) that addresses it, which cleanly separates it from the sibling list/delete/build tools of the same family.

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

Usage Guidelines3/5

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

The description gives the precondition for calling (you must have namespace and slug) and the required scope, but never states when to prefer this over tiendanube_custom_field_defs_list or how it differs from tiendanube_custom_fields_get. Usage is implied by the identifier-based addressing rather than spelled out.

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

tiendanube_custom_field_defs_listCustom Field Defs ListA
Read-onlyIdempotent

List custom field definitions (unstable API). HTTP: GET /{entity}/custom-fields Required scope: read_products/write_products API version: unstable Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
entityYesEntity type owning the definitions (categories | customers | orders | products | products/variants)
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.6/5.0
Behavior4/5

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

Beyond the annotations (which already say readOnly/idempotent, non-destructive), the description contributes real operational context: the required OAuth scope (read_products/write_products), that the API surface is unstable, the HTTP route, and the response envelope with pagination fields. Since there is no output schema, the return-shape note is genuinely useful. Only the 'unstable' label is left unexplored in terms of what could break.

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

Conciseness5/5

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

Five short lines, purpose first, then route, scope, version and return shape. Nothing is repeated and every line carries a distinct fact an agent would otherwise have to discover.

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

Completeness4/5

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

With no output schema, the description compensates by naming the response fields, and with 100% schema coverage the five parameters need no further explanation. The remaining gap is conceptual: it never says how a 'definition' relates to the values returned by tiendanube_custom_fields_list, which would help an agent pick correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so page, per_page, entity, fields and response_format are all documented in the schema itself. The description only echoes the path parameter via /{entity}/custom-fields and adds no format, default, or constraint detail of its own. Baseline 3 applies when the schema does the heavy lifting.

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

Purpose4/5

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

Specific verb+resource: 'List custom field definitions', which clearly separates it from sibling mutation tools (custom_field_defs_create/get/delete) and from tiendanube_custom_fields_list, which deals with field values rather than definitions. It does not explicitly name those siblings, so it stops just short of a 5.

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

Usage Guidelines2/5

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

No indication of when to use this versus tiendanube_custom_fields_list, tiendanube_custom_field_defs_get, or tiendanube_custom_fields_get_by_entity_id. The only context offered is an API-stability caveat, not usage guidance or prerequisites.

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

tiendanube_custom_fields_createCustom Fields CreateA

Define a custom field for an entity. HTTP: POST /{entity}/custom-fields Required scope: read_products/write_products (categories, products, products/variants) | read_customers/write_customers (customers) | read_orders/write_orders (orders) API version: 2025-03

NameRequiredDescriptionDefault
nameYesField name
entityYesEntity whose custom fields are managed (categories | customers | orders | products | products/variants)
valuesNoAllowed values (for list types)
read_onlyNoRead-only for merchants
value_typeYesValue type (text | text_list | numeric | date | boolean | object)
descriptionNoDescription
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, but the description adds real value the annotations cannot: the exact HTTP method/path, per-entity OAuth scope requirements, and the pinned API version. It stops short of disclosing behavior on duplicate field names or what happens to existing values, so it is strong rather than complete.

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

Conciseness4/5

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

Four tight lines: purpose first, then endpoint, scopes, and version. Every line carries operational information, with only the API-version line being near-boilerplate across sibling tools.

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

Completeness3/5

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

For a 7-parameter mutation with nested objects (values array, additional_fields) and no output schema, the definition covers auth and endpoint but says nothing about uniqueness constraints, validation rules per value_type, or what identifier is returned. Adequate to invoke, insufficient to predict results.

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

Parameters3/5

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

Schema coverage is 100%, so every parameter including the entity and value_type enums is already documented in the schema. The description's scope table loosely maps entities to permission scopes, adding marginal meaning but no format, default, or interaction details beyond the schema baseline.

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

Purpose4/5

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

States a specific verb and resource ('Define a custom field for an entity') plus the concrete HTTP path POST /{entity}/custom-fields, so the operation is unambiguous. It does not, however, differentiate itself from the close sibling tiendanube_custom_field_defs_create, leaving the agent to guess which of the two overlapping 'create' tools to use.

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

Usage Guidelines3/5

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

No explicit when-to-use vs. when-not guidance and no mention of the custom_field_defs / set_values siblings. Usage is only implied by the endpoint path and the required-scope table, which tells the agent what permissions are needed but not when this tool is the right choice.

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

tiendanube_custom_fields_deleteCustom Fields DeleteA
DestructiveIdempotent

Delete a custom field definition (and its values). HTTP: DELETE /{entity}/custom-fields/{custom_field_id} Required scope: read_products/write_products (categories, products, products/variants) | read_customers/write_customers (customers) | read_orders/write_orders (orders) API version: 2025-03

NameRequiredDescriptionDefault
entityYesEntity whose custom fields are managed (categories | customers | orders | products | products/variants)
custom_field_idYesCustom field ID

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds meaningful context beyond that: the deletion cascades to stored values, and it lists the exact OAuth scopes required per entity type, which the agent needs to know before attempting 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.

Conciseness4/5

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

The destructive effect is stated first, followed by compact endpoint, scope, and version lines. No filler sentences, though the HTTP path line is largely boilerplate for an agent.

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

Completeness3/5

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

For a destructive, annotation-covered operation with full schema coverage, the description covers effect, cascade, and permissions adequately. It still leaves open whether deletion is recoverable and how this differs from the custom_field_defs_delete sibling, which matters for correct selection.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description goes further by mapping which read/write scope pair applies to each entity value (categories, products, customers, orders), giving semantics the enum list in the schema does not convey. It adds nothing for custom_field_id beyond the schema.

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

Purpose4/5

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

States a specific verb and resource ('Delete a custom field definition') and adds the crucial cascade detail that its values go with it. It does not, however, distinguish itself from the sibling tiendanube_custom_field_defs_delete, which an agent could easily confuse with this tool.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus tiendanube_custom_field_defs_delete or custom_fields_set_values; the description is purely descriptive plus endpoint metadata. The agent must infer the distinction from tool names alone.

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

tiendanube_custom_fields_getCustom Fields GetA
Read-onlyIdempotent

Get one custom field definition. HTTP: GET /{entity}/custom-fields/{custom_field_id} Required scope: read_products/write_products (categories, products, products/variants) | read_customers/write_customers (customers) | read_orders/write_orders (orders) API version: 2025-03

NameRequiredDescriptionDefault
entityYesEntity whose custom fields are managed (categories | customers | orders | products | products/variants)
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
custom_field_idYesCustom field ID
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.5/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is clear. The description adds required scope information and the API version, but does not describe errors, rate limits, or response behavior beyond what the annotations provide.

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

Conciseness5/5

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

The description is compact and front-loaded: the core action appears first, followed by the endpoint, scopes, and API version. Every line carries relevant operational information and there is no redundant prose.

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

Completeness3/5

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

The description covers the endpoint, required scopes, and API version, which is good for an authenticated GET tool. However, there is no output schema, and the description does not explain what the returned custom field definition contains or how the fields parameter affects the response, leaving a notable gap.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters are already documented in the input schema. The description adds the endpoint path and maps entity types to required scopes, which is mildly helpful, but it does not add syntax or meaning beyond what the schema already provides for fields and response_format.

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

Purpose4/5

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

The description clearly states a specific verb and resource: "Get one custom field definition," and reinforces it with the HTTP endpoint. It does not differentiate this tool from close siblings such as tiendanube_custom_field_defs_get or tiendanube_custom_fields_get, leaving some ambiguity about which getter to choose.

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

Usage Guidelines3/5

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

It provides useful access context by listing the required OAuth scopes per entity, which implicitly tells the agent what permissions are needed. However, it does not say when to use this tool versus sibling retrieval tools or describe any exclusions or alternatives.

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

tiendanube_custom_fields_get_by_entity_idCustom Fields Get By Entity IdA
Read-onlyIdempotent

Get the custom field values of one entity instance (e.g. one product). HTTP: GET /{entity}/{entity_id}/custom-fields Required scope: read_products/write_products (categories, products, products/variants) | read_customers/write_customers (customers) | read_orders/write_orders (orders) API version: 2025-03

NameRequiredDescriptionDefault
entityYesEntity whose custom fields are managed (categories | customers | orders | products | products/variants)
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
entity_idYesID of the product/customer/order/category/variant
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the description's job is the extra context it does provide: required OAuth scopes broken out per entity family and the API version (2025-03). It does not mention rate limits or response/pagination behavior, but the auth requirement is a real addition beyond annotations.

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

Conciseness4/5

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

Front-loaded with the purpose, then the HTTP route, then scope requirements and API version as separate lines. Four lines with no filler; the scope line is dense but each element is actionable.

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

Completeness5/5

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

For a read-only 4-parameter lookup with full schema coverage and complete annotations, the description supplies exactly the missing operational context: route, per-entity scopes, and API version. No output schema exists, but a keyed lookup's result shape is implied by the purpose statement.

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

Parameters3/5

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

Schema description coverage is 100% and every parameter (entity enum, entity_id, fields, response_format) is already documented in the schema. The description adds no syntax or format detail beyond echoing example entity values, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb and resource: 'Get the custom field values of one entity instance', with a concrete example (one product). Combined with the endpoint path it clearly separates this from definition-oriented siblings, though it never names those siblings explicitly.

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

Usage Guidelines3/5

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

The per-entity scope list implies which entity types are readable and under what permissions, but there is no explicit 'use this when…' guidance or a named alternative such as custom_fields_list or custom_field_defs_get. The agent must infer the choice from the name and the endpoint line.

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

tiendanube_custom_fields_listCustom Fields ListB
Read-onlyIdempotent

List custom field definitions of an entity. HTTP: GET /{entity}/custom-fields Required scope: read_products/write_products (categories, products, products/variants) | read_customers/write_customers (customers) | read_orders/write_orders (orders) API version: 2025-03 Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
entityYesEntity whose custom fields are managed (categories | customers | orders | products | products/variants)
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, open-world, and non-destructive behavior. The description adds meaningful context beyond those: required OAuth scopes per entity, API version, and the return shape (count, page, per_page, has_more, next_page, items). It does not explain pagination behavior or rate limits, but given the annotation coverage this is a solid addition.

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

Conciseness4/5

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

The description front-loads the purpose and then adds scopes, version, and return shape in a compact block. Some lines (HTTP endpoint, API version) are technical metadata that may not help an agent decide how to call it, but overall it is efficient and well-structured.

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

Completeness3/5

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

Given the rich schema and annotations, the description covers purpose, auth scopes, and return shape. The main gap is sibling disambiguationβ€”it never explains how this differs from tiendanube_custom_field_defs_list or tiendanube_custom_fields_get_by_entity_idβ€”so an agent may still hesitate. This is adequate but incomplete context.

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

Parameters3/5

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

Schema description coverage is 100%, so all five parametersβ€”including enums for entity and response_formatβ€”are fully documented in the schema. The description only implicitly references the entity parameter and adds no extra meaning for fields, page, per_page, or response_format. Baseline 3 is appropriate when the schema carries the parameter semantics.

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

Purpose4/5

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

The description clearly states a specific verb and resource: 'List custom field definitions of an entity.' However, it does not differentiate from sibling tools like tiendanube_custom_field_defs_list, which sounds nearly identical, so an agent may not know which one to choose.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as tiendanube_custom_field_defs_list or tiendanube_custom_fields_get_by_entity_id. The required scopes are helpful for authentication but do not explain selection criteria.

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

tiendanube_custom_fields_list_ownersCustom Fields List OwnersA
Read-onlyIdempotent

List entity instances that have a value for a custom field. HTTP: GET /{entity}/custom-fields/{custom_field_id}/owners Required scope: read_products/write_products (categories, products, products/variants) | read_customers/write_customers (customers) | read_orders/write_orders (orders) API version: 2025-03 Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
entityYesEntity whose custom fields are managed (categories | customers | orders | products | products/variants)
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
custom_field_idYesCustom field ID
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower. The description adds genuinely useful behavior context: the per-entity OAuth scope required (read_products for categories/products/products-variants, read_customers, read_orders) and the pinned API version 2025-03, which tells the agent an authorization failure is likely if the wrong scope is missing.

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

Conciseness4/5

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

Four short, front-loaded lines: purpose first, then route, then scope, then response envelope. Nothing is repeated from the schema, though the raw HTTP path is somewhat incidental for an agent that already has the tool bound.

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

Completeness4/5

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

With six parameters, no output schema and no nested objects, the description does the needed work by disclosing the return envelope {count, page, per_page, has_more, next_page, items[]} and the scope prerequisites. It stops short of saying what an 'owner' item actually contains, but the pagination and auth picture is complete enough to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents entity, custom_field_id, page, per_page, fields and response_format. The description adds only the entity-to-scope mapping, not format, allowed values or interpretation of the ID types, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource -- list the entity instances that hold a value for a given custom field -- and backs it with the concrete HTTP route GET /{entity}/custom-fields/{custom_field_id}/owners. It is distinguishable from custom_fields_list (lists the field definitions) and custom_fields_set_values, though the description never explicitly contrasts them.

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

Usage Guidelines3/5

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

Usage is only implied: an agent can infer it should call this when it needs to know which products/customers/orders actually carry a value for a field. There is no explicit when-to-use or when-not, and no sibling alternatives are named (e.g. custom_fields_get_by_entity_id for the reverse lookup).

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

tiendanube_custom_fields_set_valuesCustom Fields Set ValuesB
Idempotent

Set custom field values on one entity instance. HTTP: PUT /{entity}/{entity_id}/custom-fields/values Required scope: read_products/write_products (categories, products, products/variants) | read_customers/write_customers (customers) | read_orders/write_orders (orders) API version: 2025-03

NameRequiredDescriptionDefault
entityYesEntity whose custom fields are managed (categories | customers | orders | products | products/variants)
valuesYesValues payload per the API reference, e.g. [{id: <custom_field_id>, value: ...}]
entity_idYesID of the entity instance

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare write, idempotent, non-destructive, open-world behavior. The description adds genuinely useful context beyond that β€” per-entity scope requirements, the exact endpoint, and the API version β€” but leaves the key behavioral question unanswered: whether the values payload replaces all existing values or merges/patches them.

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

Conciseness5/5

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

Four short lines, zero filler, with the core action front-loaded and the endpoint/scope/version details as scannable follow-ups. Nothing is repeated or padded.

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

Completeness3/5

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

For a 3-parameter mutation with no output schema, the definition covers auth scope and endpoint but omits overwrite/merge semantics and any indication of what the call returns. Adequate to invoke, thin on consequences of invoking.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents entity, entity_id and values with an example payload. The description's only addition is mapping entity/entity_id onto the URL template, which is marginal; no extra semantics about payload shape or id limits.

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

Purpose4/5

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

States a specific verb+resource+scope: 'Set custom field values on one entity instance', reinforced by the concrete HTTP path PUT /{entity}/{entity_id}/custom-fields/values. It is distinguishable from the sibling definition tools (custom_fields_create/update/delete), though it never explicitly contrasts itself with tiendanube_custom_fields_update.

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

Usage Guidelines2/5

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

The description supplies prerequisites (required OAuth scopes per entity) but no when-to-use guidance, no exclusions, and no pointer to alternatives such as tiendanube_custom_fields_update or the corresponding *_get_by_entity_id read tool. An agent must infer selection from the name alone.

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

tiendanube_custom_fields_updateCustom Fields UpdateA
Idempotent

Update a custom field definition. HTTP: PUT /{entity}/custom-fields/{custom_field_id} Required scope: read_products/write_products (categories, products, products/variants) | read_customers/write_customers (customers) | read_orders/write_orders (orders) API version: 2025-03

NameRequiredDescriptionDefault
nameNoField name
entityYesEntity whose custom fields are managed (categories | customers | orders | products | products/variants)
valuesNoAllowed values
read_onlyNoRead-only for merchants
descriptionNoDescription
custom_field_idYesCustom field ID
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body

TDQS

A4.1/5.0
Behavior4/5

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

Beyond the safety markers in annotations, the description adds crucial technical context: the specific HTTP method used (PUT), the API version (2025-03), and the required scope structure. These details are vital behavioral constraints that influence how the agent must formulate the request.

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

Conciseness4/5

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

The definition is highly condensed and efficient, placing the primary function in the opening line. The subsequent technical data follows a logical progression (Endpoint -> Scope -> Version) without unnecessary filler.

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

Completeness4/5

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

Given the complexity of an API integration tool, the description is quite complete. It satisfies the need to define the operation's boundaries (API version, required permissions, URL structure) which are essential for correct invocation, even if the parameter details are in the schema.

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

Parameters3/5

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

With schema description coverage at 100%, the description provides little semantic value over the structured input. It defines the tool's existence but does not elaborate on the meaning or acceptable values of the parameters themselves.

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

Purpose5/5

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

The description clearly identifies the action ('Update') and the resource being acted upon ('custom field definition'). The inclusion of the HTTP method and path (PUT /{entity}/custom-fields/{custom_field_id}) provides even greater specificity, distinguishing it immediately from related list or create actions.

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

Usage Guidelines4/5

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

While it does not compare usage against sibling tools, it explicitly defines the required scopes (e.g., read_products/write_products) necessary for execution. This provides a clear operational guideline on the tool's applicability within the system context, ensuring the agent knows the permissions needed to use it.

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

tiendanube_custom_object_entries_createCustom Object Entries CreateA

Create an entry in a custom object (unstable API). HTTP: POST /custom-objects/{namespace}/{slug}/entries Required scope: read_products/write_products API version: unstable

NameRequiredDescriptionDefault
slugYesCustom object slug
entryYesEntry data per the API reference
namespaceYesCustom object namespace

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=false, so the description is not obligated to restate mutability. It adds genuinely useful context beyond that: the API surface is flagged 'unstable' (a real risk of breaking changes) and the required OAuth scope plus API version are given. It stops short of noting whether retries are safe given non-idempotency or what happens on duplicate entries.

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

Conciseness5/5

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

Four short lines, front-loaded with the action and the instability caveat, followed by machine-actionable metadata. Every line carries information an agent needs; there is no filler.

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

Completeness3/5

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

With only 3 required params, full schema coverage and annotations present, the basics are covered. But the 'entry' payload is left entirely unspecified (anyOf object/array with free-form properties, deferred to an external API reference), so an agent cannot construct a valid call from this definition alone, and with no output schema the description also omits any hint of the created entry's identifier.

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

Parameters3/5

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

Schema description coverage is 100%, so namespace, slug and entry are already documented in the schema, setting the baseline at 3. The description confirms the path mapping (/custom-objects/{namespace}/{slug}/entries) but adds no insight into the shape of 'entry', which is the genuinely ambiguous parameter β€” it defers to 'the API reference'.

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

Purpose5/5

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

States a specific verb and resource ('Create an entry in a custom object') and scopes it to a namespace/slug pair, which cleanly separates it from the sibling update/get/delete/list entry tools and from custom_objects_create. An agent knows exactly what is produced without opening the schema.

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

Usage Guidelines3/5

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

Prerequisites are supplied (required scope read_products/write_products, API version, endpoint), which helps an agent decide whether the call is permitted. However, there is no guidance on when to use this versus tiendanube_custom_objects_create (define the object) or how it relates to custom_fields_set_values, so selection between similar write paths is left to inference.

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

tiendanube_custom_object_entries_deleteCustom Object Entries DeleteA
DestructiveIdempotent

Delete a custom object entry (unstable API). HTTP: DELETE /custom-objects/{namespace}/{slug}/entries/{entrySlug} Required scope: read_products/write_products API version: unstable

NameRequiredDescriptionDefault
slugYesCustom object slug
entrySlugYesEntry slug
namespaceYesCustom object namespace

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds genuinely non-derivable context: the required OAuth scope (read_products/write_products) and the fact that this is an unstable API surface, which affects whether an agent should rely on it.

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

Conciseness4/5

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

Four short, front-loaded lines with the verb+resource first, then endpoint, scope, and stability. Nothing is padded, though the HTTP line partially duplicates information already carried by the schema.

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

Completeness4/5

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

For a destructive delete with no output schema, the description covers the essentials: what is removed, which credentials are needed, and the endpoint. It omits post-delete effects (cascading, error on missing entry), but annotations already flag destructiveness and idempotency.

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

Parameters3/5

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

Schema coverage is 100% and all three parameters are described in the schema, so the baseline is 3. The HTTP path template confirms namespace/slug/entrySlug are all path segments and shows their nesting order, but adds no format or validation detail beyond the schema.

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

Purpose4/5

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

The description gives a specific verb and resource ("Delete a custom object entry") plus the exact HTTP route, which clearly separates it from the sibling entries_get/list/update/create tools. It does not name a sibling explicitly, but the verb+resource is unambiguous.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus alternatives, no precondition that the entry must exist, and no warning about irreversibility or confirmation. The only contextual cues are the scope requirement and the "unstable API" tag, which are constraints rather than usage guidance.

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

tiendanube_custom_object_entries_getCustom Object Entries GetA
Read-onlyIdempotent

Get one custom object entry (unstable API). HTTP: GET /custom-objects/{namespace}/{slug}/entries/{entrySlug} Required scope: read_products/write_products API version: unstable

NameRequiredDescriptionDefault
slugYesCustom object slug
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
entrySlugYesEntry slug
namespaceYesCustom object namespace
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, but the description adds non-obvious context beyond them: the API is flagged as unstable, the required OAuth scope is given, and the API version is named. That is real value on top of the structured hints, though return behavior is not described.

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

Conciseness5/5

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

Four short lines: purpose, endpoint, scope, version. Nothing is redundant and the operation is front-loaded, with the 'unstable' caveat placed immediately next to the purpose.

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

Completeness3/5

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

For a single-resource GET there is no output schema, and the description says nothing about what an entry returns or how the fields/response_format options shape the payload. Parameters and safety are adequately covered, but the return-side context is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the five parameters including the fields selector and response_format enum are already fully documented. The description only echoes the three required slugs via the path template, adding no syntax or format detail beyond the schema.

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

Purpose4/5

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

States a specific verb and resource ('Get one custom object entry') and reinforces it with the exact HTTP path template. The singular 'one entry' implicitly distinguishes it from tiendanube_custom_object_entries_list, though no sibling is named explicitly.

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

Usage Guidelines3/5

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

Usage is only implied: the path template shows you must supply namespace, slug and entrySlug to fetch a single entry, and the required scope is stated. There is no explicit guidance on when to use this versus the list or other entry tools.

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

tiendanube_custom_object_entries_listCustom Object Entries ListA
Read-onlyIdempotent

List entries of a custom object (unstable API). HTTP: GET /custom-objects/{namespace}/{slug}/entries Required scope: read_products/write_products API version: unstable Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
slugYesCustom object slug
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
namespaceYesCustom object namespace
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the marginal value here is the 'unstable API' warning, the required scope, and the explicit response envelope. That unstable-version caveat is behavioral context the annotations cannot express.

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

Conciseness5/5

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

Four compact labeled lines β€” purpose, HTTP route, scope, return shape. Front-loaded with the verb and resource, zero filler.

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

Completeness4/5

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

With no output schema, the description steps in with the return shape {count, page, per_page, total?, has_more, next_page?, items[]}, plus scope and stability. What's missing is any note on pagination behavior or the fields projection, though the schema covers those.

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

Parameters3/5

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

Schema description coverage is 100%, so page, per_page, slug, namespace, fields and response_format are already documented. The description adds no syntax or constraint detail beyond the schema, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('List entries of a custom object') and nails the endpoint. Against sibling tools like tiendanube_custom_object_entries_get/create/delete, the list semantics are unambiguous from the first three words.

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

Usage Guidelines3/5

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

It supplies a prerequisite (required scope read_products/write_products) which genuinely helps routing, but it never says when to use this versus entries_get for a single entry or custom_objects_list for the parent definitions. Usage is implied by the name rather than stated.

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

tiendanube_custom_object_entries_updateCustom Object Entries UpdateA
Idempotent

Update a custom object entry (unstable API). HTTP: PUT /custom-objects/{namespace}/{slug}/entries/{entrySlug} Required scope: read_products/write_products API version: unstable

NameRequiredDescriptionDefault
slugYesCustom object slug
entryYesEntry fields to update
entrySlugYesEntry slug
namespaceYesCustom object namespace

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description usefully adds the required scope (read_products/write_products) and flags instability, but is silent on whether PUT replaces the whole entry or merges fields, and on what happens to unspecified existing fields.

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

Conciseness4/5

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

Four short lines, front-loaded with the action, then route, scope and version. No filler, though the HTTP line is largely redundant with the tool name and schema.

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

Completeness5/5

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

For a straightforward mutation tool with full schema coverage and rich annotations, the description covers the essentials: operation, route, scope and stability caveat. The only missing piece is the structure of the free-form 'entry' object, which the schema deliberately leaves open.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters (namespace, slug, entrySlug, entry) are documented in the schema; baseline 3 applies. The description only restates the three path parameters via the HTTP route and adds nothing about the shape or semantics of the 'entry' payload.

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

Purpose4/5

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

States a specific verb and resource ('Update a custom object entry'), which cleanly separates it from the sibling create/get/list/delete entry tools. The 'unstable API' qualifier and HTTP route add precision, though nothing explicitly contrasts it with the other entry operations.

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

Usage Guidelines3/5

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

Usage is only implied by the verb 'update' β€” the agent can infer this modifies an existing entry rather than creating one. There is no explicit when-to-use, no prerequisites, and no pointers to alternatives such as the create or get entry tools; the only real guidance is the 'unstable API' warning.

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

tiendanube_custom_objects_createCustom Objects CreateB

Create a custom object definition (unstable API). HTTP: POST /custom-objects Required scope: read_products/write_products API version: unstable

NameRequiredDescriptionDefault
definitionYesCustom object definition per the API reference

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare this is a non-readonly, open-world, non-idempotent, non-destructive write. The description adds real context beyond them: the endpoint is explicitly flagged as an unstable API version, and the required OAuth scope (read_products/write_products) is stated, which is exactly the kind of operational prerequisite an agent needs. It stops short of describing what happens on name collisions or whether the definition can be modified afterward.

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

Conciseness4/5

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

Three short lines, front-loaded with the purpose, then endpoint, scope, and version. No filler, though the terse format leaves little room for the one thing an agent would most need (definition shape).

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

Completeness3/5

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

For a mutation tool whose single required argument is an unconstrained free-form object (anyOf object/array with no properties), the description gives no indication of what the definition must contain, which is the hardest part of calling it correctly. The scope and API-version warnings help, but the gap on the payload shape keeps this at minimum-viable.

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

Parameters3/5

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

Only one parameter and schema coverage is 100%, so the schema itself carries the documentation burden. The description adds nothing about the shape or required fields of the `definition` object, deferring entirely to 'per the API reference'. Baseline 3 is appropriate here.

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

Purpose4/5

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

States a specific verb+resource (create a custom object definition), which is distinguishable from the sibling entries endpoints (tiendanube_custom_object_entries_create) and the list/get/update/delete custom_objects siblings. It does not explicitly name those siblings, so differentiation is inferred from the resource name rather than spelled out.

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

Usage Guidelines2/5

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

No guidance on when to use this versus creating custom object entries or the custom_field_defs family, and no prerequisites beyond the required API scope. The only usage-adjacent signal is the '(unstable API)' warning, which doesn't route the agent between alternatives.

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

tiendanube_custom_objects_deleteCustom Objects DeleteA
DestructiveIdempotent

Delete a custom object definition (unstable API). HTTP: DELETE /custom-objects/{namespace}/{slug} Required scope: read_products/write_products API version: unstable

NameRequiredDescriptionDefault
slugYesCustom object slug
namespaceYesCustom object namespace

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered. The description adds genuinely new context: the API is unstable (a real risk signal for production use) and the required OAuth scope. It still doesn't say whether deletion cascades to existing custom object entries or is irreversible.

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

Conciseness5/5

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

Four short lines, front-loaded with the action, then the endpoint, scope, and API version. Nothing is wasted or repeated.

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

Completeness3/5

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

For a destructive mutation with no output schema, the description covers endpoint, scope and stability but omits cascade behavior, permanence, and error cases. Annotations partially compensate for the destructive framing, leaving a moderate gap.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters carry descriptions, so the schema does the heavy lifting. The description only reinforces parameter placement via the route template /custom-objects/{namespace}/{slug}; it adds no format or constraint detail beyond that.

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

Purpose4/5

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

States a specific verb and resource β€” 'Delete a custom object definition' β€” plus the exact HTTP route, which pins down the operation. The word 'definition' implicitly separates it from the sibling tiendanube_custom_object_entries_delete, though it never names that sibling explicitly.

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

Usage Guidelines2/5

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

No guidance on when to delete a definition versus updating it or deleting individual entries instead. No prerequisites or warnings that removing a definition affects the schema that entries depend on.

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

tiendanube_custom_objects_getCustom Objects GetA
Read-onlyIdempotent

Get a custom object definition (unstable API). HTTP: GET /custom-objects/{namespace}/{slug} Required scope: read_products/write_products API version: unstable

NameRequiredDescriptionDefault
slugYesCustom object slug
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
namespaceYesCustom object namespace
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, openWorld, so the safety profile is covered. The description adds genuinely new context: an 'unstable API' stability warning, the required OAuth scope, and the concrete HTTP route. It does not describe failure modes for a bad namespace/slug, which keeps it below 5.

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

Conciseness4/5

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

Four short lines, front-loaded with the purpose, then the endpoint, then the scope. Each line carries distinct information, though the raw HTTP line partially duplicates what the name and path template already imply.

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

Completeness4/5

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

For a single-resource read with full schema coverage and rich annotations, this gives the agent everything essential: what is returned (a definition), auth scope, instability caveat, and no output-schema obligation. Only the error behavior for an unknown namespace/slug is unstated.

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

Parameters3/5

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

Schema description coverage is 100%, so slug, namespace, fields, and response_format are already fully documented, including the enum for response_format. The description only adds that namespace and slug appear as path segments in '/custom-objects/{namespace}/{slug}', a marginal clarification. Baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource: 'Get a custom object definition'. The word 'definition' separates it from tiendanube_custom_object_entries_get, which returns entries rather than the schema. It does not explicitly name or exclude the sibling list/create/update/delete tools, so it falls short of a 5.

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

Usage Guidelines3/5

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

The scope requirement ('read_products/write_products') and the API version are useful prerequisites, but there is no statement of when to choose this over tiendanube_custom_objects_list or how to obtain the namespace/slug pair. Usage must be inferred from the name and path template.

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

tiendanube_custom_objects_listCustom Objects ListA
Read-onlyIdempotent

List custom object definitions (unstable API). HTTP: GET /custom-objects Required scope: read_products/write_products API version: unstable Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds material value beyond that: it flags the unstable API version, states the required read_products/write_products scope (an auth requirement agents must satisfy), and discloses the response envelope including pagination fields. It only misses rate-limit or caveat details specific to the unstable surface.

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

Conciseness5/5

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

The description is four short lines, front-loaded with the purpose, followed by endpoint, scope, version and return shape. Every line carries distinct information with no filler.

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

Completeness4/5

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

With no output schema, the description usefully spells out the return envelope (count, page, per_page, total, has_more, next_page, items). Combined with the scope and API-version notes, an agent has what it needs to call this correctly; only pagination edge cases and sibling routing are left implicit.

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

Parameters3/5

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

Schema description coverage is 100%, so page, per_page, fields and response_format are already fully documented in the schema, establishing a baseline of 3. The description adds nothing about parameter meaning beyond echoing page/per_page as response keys, which is not the same as input guidance.

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

Purpose4/5

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

States a specific verb and resource: 'List custom object definitions'. The word 'definitions' meaningfully separates it from the sibling entry-level tools such as tiendanube_custom_object_entries_list, which lists entries rather than schemas. It stops short of an explicit sibling comparison, so it lands at 4 rather than 5.

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

Usage Guidelines3/5

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

Usage is only implied by the tool name and endpoint; there is no explicit statement of when to call this versus listing entries or fetching a single object with tiendanube_custom_objects_get. The 'unstable API' note gives useful context about reliability but does not route the agent between alternatives.

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

tiendanube_custom_objects_updateCustom Objects UpdateA
Idempotent

Update a custom object definition (unstable API). HTTP: PUT /custom-objects/{namespace}/{slug} Required scope: read_products/write_products API version: unstable

NameRequiredDescriptionDefault
slugYesCustom object slug
namespaceYesCustom object namespace
definitionYesFields to update per the API reference

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare that this is a non-readOnly, idempotent, non-destructive mutation. The description adds useful extra context by disclosing the required OAuth scope and that the API version is unstable, though it does not explain side effects on the definition.

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

Conciseness4/5

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

The description is short and front-loads the core purpose. It slightly duplicates that the API is unstable in both the first sentence and the final API version line.

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

Completeness3/5

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

There is no output schema, so return values need not be explained. However, for updating a custom object definition, the description only says fields follow the API reference and does not explain the definition payload shape or update semantics beyond the schema's generic anyOf.

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

Parameters3/5

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

Schema coverage is 100%, so namespace, slug, and definition are already described structurally. The HTTP path in the description reinforces where namespace and slug are used, but it adds little meaning about the accepted shape or fields inside the definition payload.

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

Purpose4/5

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

States a specific verb ('Update') and resource ('custom object definition'), which helps distinguish it from tiendanube_custom_object_entries_update. It does not explicitly name alternative tools, but the purpose is clear.

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

Usage Guidelines3/5

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

The description provides operational context such as required scope and HTTP method, but gives no explicit guidance on when to use this versus create/get/delete or custom object entry tools. The intended mutation is implied by 'Update' but not otherwise clarified.

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

tiendanube_discounts_callbacks_deleteDiscounts Callbacks DeleteA
DestructiveIdempotent

Remove the registered discount callback. HTTP: DELETE /discounts/callbacks Required scope: write_discounts API version: 2025-03

NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare destructiveHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds genuinely useful context beyond that β€” the required write_discounts scope and API version β€” but says nothing about what happens if no callback is registered or what state remains after removal.

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

Conciseness4/5

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

Four short lines, front-loaded with the action and followed by endpoint, scope, and version. The HTTP-method and version lines are largely boilerplate but are cheap and moderately useful for an API wrapper.

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

Completeness4/5

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

For a zero-parameter destructive call with no output schema, the description plus annotations cover what an agent needs: action, endpoint, required scope, idempotency and destructiveness. Only failure-mode behavior (e.g., deleting when nothing is registered) is unaddressed.

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

Parameters4/5

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

The tool takes zero parameters, which is the baseline-4 case; there is nothing for the description to disambiguate. The absence of a store or callback identifier parameter is consistent with a per-store implicit endpoint.

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

Purpose4/5

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

"Remove the registered discount callback" gives a specific verb (remove) plus resource (discount callback), and the DELETE /discounts/callbacks line confirms the operation. The sibling relationship with tiendanube_discounts_callbacks_upsert is inferable from naming, though the description never names it explicitly.

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

Usage Guidelines3/5

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

Usage is implied by the destructive verb and the endpoint, but there is no explicit statement of when to call this versus tiendanube_discounts_callbacks_upsert, nor any prerequisite such as an existing registration. The required scope is the only guidance given.

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

tiendanube_discounts_callbacks_upsertDiscounts Callbacks UpsertA
Idempotent

Register/replace the external callback used to compute dynamic discounts. HTTP: PUT /discounts/callbacks Required scope: write_discounts API version: 2025-03

NameRequiredDescriptionDefault
callbackYesCallback config, e.g. {url: 'https://...'} per the API reference

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds real value on top by naming the required OAuth scope (a common failure mode) and version, and the word 'replace' signals that any existing callback config is overwritten.

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

Conciseness5/5

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

Four short lines: purpose first, then HTTP method/path, then scope and version. No filler and everything is front-loaded.

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

Completeness4/5

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

For a single-parameter mutation with no output schema, the description covers what it does, the endpoint, the required scope and the API version. It stops short of explaining what the callback contract must implement or what replaces the previous registration, which would be the last missing piece.

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

Parameters3/5

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

Only one parameter, and the schema already documents it at 100% coverage with a concrete example ('{url: https://...}'). The description contributes nothing beyond that on shape, allowed keys, or validation, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb pair and resource: 'Register/replace the external callback used to compute dynamic discounts', which tells the agent this is the upsert for the discount-callback config. It does not explicitly contrast with the sibling tiendanube_discounts_callbacks_delete, though the register/replace framing makes the distinction inferable.

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

Usage Guidelines3/5

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

The required scope (write_discounts) and API version are useful preconditions, but there is no explicit guidance on when to use this versus alternatives (e.g. the callbacks_delete sibling) or when a callback is appropriate versus coupons/promotions.

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

tiendanube_disputes_createDisputes CreateA

Open a dispute/chargeback on a transaction. HTTP: POST /orders/{order_id}/transactions/{transaction_id}/disputes Required scope: write_payments API version: 2025-03

NameRequiredDescriptionDefault
disputeYesDispute fields per the Disputes API reference
order_idYesOrder ID
api_versionNoAPI branch to call (default 2025-03)
transaction_idYesTransaction ID

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=true and idempotentHint=false. The description adds genuinely useful operational context the annotations don't carry: the required write_payments scope, the concrete HTTP path, and the pinned API version 2025-03. It doesn't cover error/duplicate behavior or what a successful call yields.

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

Conciseness4/5

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

Front-loaded with the action in the first line, then compact metadata lines. Every line carries information; the HTTP line is the weakest but still conveys path-parameter placement.

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

Completeness3/5

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

For a mutation with no output schema, the description should say what comes back (dispute ID/status) or what happens on duplicate disputes. It covers endpoint, scope and version well but omits the response shape and failure behavior, leaving a meaningful gap for agent planning.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter is already documented and the baseline is 3. The endpoint line restates order_id and transaction_id as path segments, adding no syntax or format detail beyond the schema, and the opaque `dispute` payload is only deferred to "the Disputes API reference."

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

Purpose4/5

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

States a specific verb and resource ("Open a dispute/chargeback on a transaction") plus the exact endpoint, which pins down the resource hierarchy (order β†’ transaction β†’ dispute). It is clear, but it doesn't explicitly distinguish itself from the sibling tiendanube_disputes_update or disputes_get.

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

Usage Guidelines3/5

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

The verb "open" implies first-time creation versus the sibling disputes_update, but that routing is left to inference. No statement of when a dispute should be opened versus an existing one updated, and no prerequisites beyond the scope line.

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

tiendanube_disputes_getDisputes GetA
Read-onlyIdempotent

Get a dispute. HTTP: GET /orders/{order_id}/transactions/{transaction_id}/disputes/{dispute_id} Required scope: read_payments API version: 2025-03

NameRequiredDescriptionDefault
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
order_idYesOrder ID
dispute_idYesDispute ID
api_versionNoAPI branch to call (default 2025-03)
transaction_idYesTransaction ID
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, so the safety profile is covered. The description adds genuine non-annotation context: the required OAuth scope (read_payments) and the pinned API version, both of which affect whether the call succeeds.

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

Conciseness4/5

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

Four short lines with the purpose front-loaded, followed by endpoint, scope and version. No filler; could be marginally tighter but every line carries information.

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

Completeness3/5

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

For a read-only single-record fetch with a fully documented schema and covering annotations, this is nearly sufficient. However, with no output schema, the description gives no hint of what a dispute record contains, leaving the agent to discover the response shape blind.

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

Parameters3/5

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

Schema description coverage is 100%, so all six parameters (including fields, api_version, response_format) are already documented in the schema. The description only echoes the three path parameters via the endpoint template, adding no format or constraint detail beyond the schema β€” baseline 3.

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

Purpose4/5

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

States a specific verb and resource ('Get a dispute') and the full endpoint path disambiguates it from the sibling disputes_create/update tools by showing it retrieves a single dispute under an order/transaction hierarchy. It falls short of a 5 only because it never names the alternatives in prose.

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

Usage Guidelines3/5

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

Usage is only implied: the singular resource and path imply a single-record fetch, and the 'Required scope: read_payments' line gives a prerequisite. There is no explicit statement of when to use this versus disputes_create/update or a list-style dispute tool.

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

tiendanube_disputes_updateDisputes UpdateB
Idempotent

Update a dispute (status, evidence...). HTTP: PUT /orders/{order_id}/transactions/{transaction_id}/disputes/{dispute_id} Required scope: write_payments API version: 2025-03

NameRequiredDescriptionDefault
disputeYesDispute fields to update
order_idYesOrder ID
dispute_idYesDispute ID
api_versionNoAPI branch to call (default 2025-03)
transaction_idYesTransaction ID

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare the mutation profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false), so the description's main added value is the operational requirement "Required scope: write_payments" and the pinned API version 2025-03, both of which are real context an agent needs before calling. It does not say what happens to dispute fields not included in the payload, nor whether status transitions are constrained.

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

Conciseness4/5

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

Front-loaded with the action, then the endpoint, scope, and version in scannable lines β€” nothing redundant. The dangling "(status, evidence...)" is the one flaw: it truncates rather than earning its place.

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

Completeness3/5

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

For a mutation tool with no output schema, the definition covers endpoint, scope, and version but leaves the agent without the two things that matter most for a PUT on a dispute: which fields are accepted and what the response/updated state looks like. Annotations carry the safety profile, so this is adequate rather than complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description's mention of "status, evidence" adds a hint about the shape of the opaque `dispute` body, but it trails off with "..." and never enumerates the accepted dispute fields, leaving the anyOf object/array payload underspecified beyond the schema's "Dispute fields to update".

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

Purpose4/5

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

States a specific verb and resource ("Update a dispute") and lists the primary fields touched (status, evidence), which distinguishes it from siblings tiendanube_disputes_create and tiendanube_disputes_get. The trailing ellipsis keeps the field list incomplete, but the operation itself is unambiguous.

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

Usage Guidelines3/5

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

Usage is only implied: an agent can infer this modifies an existing dispute rather than creating or reading one, but the description never states prerequisites (e.g. a dispute must already exist in a state that permits updates) or when to prefer this over other payment/transaction tools.

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

tiendanube_draft_orders_confirmDraft Orders ConfirmA

Convert a draft order into a real confirmed Order. HTTP: POST /draft_orders/{id}/confirm Required scope: write_draft_orders API version: 2025-03

NameRequiredDescriptionDefault
idYesDraft order ID

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare this is a non-readonly, non-idempotent, open-world operation. The description adds required auth scope and API version, but does not disclose side effects, irreversibility, or failure conditions of confirmation.

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

Conciseness5/5

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

The description is front-loaded, compact, and every sentence contributes endpoint, scope, or version information. There is no wasted prose.

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

Completeness3/5

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

For a one-parameter mutation, the description covers the core action and auth scope. However, with no output schema, it does not describe what is returned or what side effects occur when a draft becomes a confirmed order.

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

Parameters3/5

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

Schema coverage is 100%, so the only parameter is already documented as the draft order ID. The description adds no new parameter-level detail beyond the endpoint path placeholder.

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

Purpose5/5

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

The description states a specific verb and resource: convert a draft order into a real confirmed order. It clearly distinguishes this state transition from sibling draft-order operations such as update, delete, and get.

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

Usage Guidelines3/5

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

It implies the use case of finalizing a draft order, but does not explicitly compare when to use confirm versus draft_orders_update or orders_create. Required scope is given, but no exclusions or preconditions are stated.

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

tiendanube_draft_orders_createDraft Orders CreateA

Create a draft order. The response includes a checkout_url to share with the buyer. HTTP: POST /draft_orders Required scope: write_draft_orders API version: 2025-03

NameRequiredDescriptionDefault
discountNoDiscount object
productsNoLine items: [{variant_id, quantity}]
shippingNoShipping: {cost, shipping_address, shipping_option}
contact_nameNoBuyer first name
contact_emailNoBuyer email
payment_statusNoPayment status
contact_lastnameNoBuyer last name
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already say this is a non-read-only, non-idempotent, open-world write, so the safety profile is covered. The description adds meaningful context beyond that: the returned checkout_url that can be shared with a buyer, plus the HTTP route, scope, and API version. It stops short of saying whether draft creation reserves stock or affects inventory, which matters 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.

Conciseness5/5

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

Four compact lines with the purpose and the key return value front-loaded, followed by compact metadata. No sentence is filler and the structure makes scanning easy.

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

Completeness4/5

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

With no output schema, the description usefully names the one return field that matters (checkout_url). Combined with full schema coverage for eight nested parameters, an agent has enough to call it, though behavior on partial bodies (no required fields) and error handling go unmentioned.

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

Parameters3/5

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

Schema description coverage is 100% and all eight parameters (products, shipping, discount, contact fields, additional_fields) are documented inline, so the baseline of 3 applies. The description adds nothing about parameter meaning, required combinations, or the nested body shapes beyond what the schema already says.

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

Purpose4/5

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

States a specific verb and resource ("Create a draft order") and adds the notable outcome that the response carries a checkout_url. It does not explicitly distinguish itself from tiendanube_draft_orders_confirm or tiendanube_orders_create, but the verb+resource pair is unambiguous on its own.

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

Usage Guidelines3/5

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

The description gives a real prerequisite ("Required scope: write_draft_orders"), which is genuinely useful for an agent checking permissions. It offers no guidance, however, on when to create a draft order rather than a direct order via tiendanube_orders_create, nor on the relationship to the confirm sibling, leaving the choice to inference.

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

tiendanube_draft_orders_deleteDraft Orders DeleteA
DestructiveIdempotent

Delete a draft order. HTTP: DELETE /draft_orders/{id} Required scope: write_draft_orders API version: 2025-03

NameRequiredDescriptionDefault
idYesDraft order ID

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the dangerous nature of the call is established without the description. The description adds useful operational context (required OAuth scope and API version) but says nothing about what deletion destroys (line items? linked order?) or whether it is recoverable.

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

Conciseness4/5

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

Four short lines, front-loaded with the action, then endpoint, scope, and API version. The HTTP line partially restates the tool name but is cheap and informative; there is no filler text.

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

Completeness4/5

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

For a single-parameter destructive tool with rich annotations and no output schema, the description covers action, endpoint, and authorization scope β€” enough to call it correctly. The main missing piece is consequence information (irreversibility, side effects on related records).

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

Parameters3/5

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

Only one parameter, and schema description coverage is 100% ("Draft order ID"), so the schema fully documents it. The description adds no meaning about the ID's format or accepted types beyond the schema, which is the expected baseline for a single well-documented param.

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

Purpose4/5

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

States a specific verb and resource ("Delete a draft order") that is unambiguous against siblings like draft_orders_get, draft_orders_update, and draft_orders_confirm. It does not explicitly contrast itself with those siblings, but the verb alone makes selection clear.

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

Usage Guidelines3/5

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

Usage is implied by the destructive verb, and the description supplies a real prerequisite by naming the required scope (write_draft_orders). It gives no when-not-to-use guidance, no mention of alternatives such as draft_orders_confirm or status changes, and no warning about irreversibility.

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

tiendanube_draft_orders_getDraft Orders GetB
Read-onlyIdempotent

Get a draft order. HTTP: GET /draft_orders/{id} Required scope: read_draft_orders API version: 2025-03

NameRequiredDescriptionDefault
idYesDraft order ID
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered. The description adds genuinely useful operational context β€” the required scope 'read_draft_orders' and the pinned API version 2025-03 β€” but says nothing about response shape, pagination, or error behavior.

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

Conciseness4/5

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

Four short lines with the action front-loaded, followed by the HTTP route, scope, and API version. Nothing is padded, though the HTTP route largely restates what the tool name already implies.

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

Completeness3/5

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

With no output schema, the description could note what a draft order object contains or that `fields` trims the payload, which matters for an agent deciding how to call it. As written it covers access requirements adequately but leaves the return-value picture to inference.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters (id, fields, response_format) are already documented with examples and an enum. The description adds no parameter-level detail beyond the path template, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb and resource ("Get a draft order"), which distinguishes it from the sibling list/create/update/delete/confirm draft-order tools by the verb alone. It stops short of explicitly naming an alternative, but the operation is unambiguous.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus tiendanube_draft_orders_list, tiendanube_orders_get, or tiendanube_draft_orders_confirm. The only conditional information is the required scope line, which is an auth precondition rather than usage guidance.

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

tiendanube_draft_orders_listDraft Orders ListA
Read-onlyIdempotent

List draft orders. HTTP: GET /draft_orders Required scope: read_draft_orders API version: 2025-03 Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, openWorld. The description adds genuinely new context: the required OAuth scope (read_draft_orders), the API version, and the exact response envelope including pagination fields. That is real value 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.

Conciseness4/5

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

Front-loaded with the action, then compact structured lines for endpoint, scope, version, and return shape. No filler, though the return-shape line is dense and could be slightly clearer.

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

Completeness4/5

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

No output schema exists, but the description supplies the response envelope (count, page, per_page, has_more, next_page, items), which is exactly what an agent needs. Combined with full schema coverage, the definition is nearly complete; only filtering/usage context is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so page, per_page, fields, and response_format are fully documented in the schema. The description adds no parameter-level detail, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ("List draft orders") that clearly distinguishes it from the get/create/update/delete/confirm siblings in the draft_orders family. It does not explicitly contrast with tiendanube_orders_list, but the resource noun is unambiguous.

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

Usage Guidelines2/5

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

No guidance on when to use this versus tiendanube_orders_list or tiendanube_draft_orders_get. The only context is the HTTP endpoint and required scope, which tells an agent how to call it but not when to prefer it.

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

tiendanube_draft_orders_updateDraft Orders UpdateB
Idempotent

Update a draft order. HTTP: PUT /draft_orders/{id} Required scope: write_draft_orders API version: 2025-03

NameRequiredDescriptionDefault
idYesDraft order ID
discountNoDiscount object
productsNoLine items: [{variant_id, quantity}]
shippingNoShipping: {cost, shipping_address, shipping_option}
contact_nameNoBuyer first name
contact_emailNoBuyer email
payment_statusNoPayment status
contact_lastnameNoBuyer last name
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnly=false, idempotent=true, destructive=false and openWorld=true, so the safety profile is covered. The description contributes the required OAuth scope (write_draft_orders) and API version, which are genuinely additive auth/versioning facts, but it never says whether this is a partial merge or a full replace, nor what happens to omitted line items.

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

Conciseness4/5

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

Four short lines, with the action front-loaded and the HTTP method, scope, and version on separate lines for easy scanning. Nothing is padded, though the terse style leaves little room for meaning.

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

Completeness3/5

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

For a nine-parameter nested mutation with no output schema, the definition is adequate but thin: it omits update semantics (merge vs replace), what is returned after the update, and how the draft-order lifecycle connects to the confirm sibling. The scope line partially compensates on the auth side.

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

Parameters3/5

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

Schema description coverage is 100%, so every one of the nine parameters is documented in the schema itself, establishing the baseline of 3. The description adds no parameter-level detail beyond the id embedded in the path template, which the schema already conveys.

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

Purpose4/5

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

States a specific verb and resource ("Update a draft order") and names the concrete endpoint, so an agent knows exactly what object is being mutated. It is distinguishable from the draft_orders_create/get/list/delete siblings by the verb, though it does not explicitly separate itself from draft_orders_confirm, which also touches an existing draft.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus draft_orders_confirm, draft_orders_create, or orders_update, nor any prerequisites beyond the scope line. The agent must infer usage purely 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.

tiendanube_email_templates_getEmail Templates GetA
Read-onlyIdempotent

Get one email template. HTTP: GET /email-templates/{templateID} Required scope: read_email_templates API version: 2025-03

NameRequiredDescriptionDefault
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
templateIDYesTemplate ID
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive, so the description's contributions are the required OAuth scope (read_email_templates) and the API version (2025-03) β€” both real, operationally relevant facts an agent cannot infer from annotations or schema. It stops short of describing what the returned template object contains, but an output schema absence is partly offset by the fields parameter.

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

Conciseness5/5

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

Four short, front-loaded lines: purpose first, then endpoint, scope, and version. Every line carries distinct information and nothing is padded.

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

Completeness3/5

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

For a simple single-resource read with full schema coverage and read-only annotations, the description covers the call mechanics (endpoint, scope, version). It does not say what a template object looks like or what a not-found/404 response means, which leaves a modest gap since no output schema exists.

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

Parameters3/5

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

Schema description coverage is 100%, with templateID, fields, and response_format all documented inline including an enum default. The description adds nothing beyond restating the templateID path variable, so it sits at the baseline for fully-covered schemas.

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

Purpose5/5

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

States a specific verb and resource ('Get one email template') and pins it to an endpoint (GET /email-templates/{templateID}). The 'one' scoping plus the singular resource path cleanly separates it from siblings tiendanube_email_templates_list and tiendanube_email_templates_update.

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

Usage Guidelines3/5

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

Use is implied by the name/endpoint shape, but the description never states when to call this versus tiendanube_email_templates_list or what precondition (a known templateID) is needed. No exclusions or alternatives are named.

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

tiendanube_email_templates_listEmail Templates ListA
Read-onlyIdempotent

List transactional email templates. HTTP: GET /email-templates Required scope: read_email_templates API version: 2025-03 Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds real value beyond that: the HTTP verb/path, the required OAuth scope (read_email_templates), and the API version (2025-03), which the agent cannot derive from 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.

Conciseness4/5

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

Four short lines, each carrying distinct information: purpose, endpoint, scope, and version, then return shape. Front-loaded and waste-free, though the response-shape line could be trimmed if an output schema existed.

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

Completeness4/5

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

No output schema exists, but the description discloses the response envelope (count, page, per_page, total, has_more, next_page, items), which is the key missing piece. Scope and API version round out what an agent needs to call this correctly.

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

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so page, per_page, fields, and response_format are fully documented in the schema itself. The description adds no parameter-level detail beyond that, which matches the baseline-3 expectation when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List transactional email templates'), which is unambiguous against siblings like tiendanube_email_templates_get and _update. It does not explicitly name those siblings or differentiate the retrieval granularity, keeping it just below a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the 'list' verb and the pagination parameters, but there is no explicit statement of when to use this versus tiendanube_email_templates_get or _update. Required scope is given, which is useful context but not usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_email_templates_updateEmail Templates UpdateA
Idempotent

Update an email template's subject and HTML. HTTP: PUT /email-templates/{templateID} Required scope: write_email_templates API version: 2025-03

NameRequiredDescriptionDefault
subjectNoEmail subject β€” i18n object keyed by language code, e.g. {"es": "...", "pt": "...", "en": "..."}
templateIDYesTemplate ID
template_htmlNoEmail HTML body β€” i18n object keyed by language code, e.g. {"es": "...", "pt": "...", "en": "..."}
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare non-readonly, idempotent, non-destructive, open-world behavior, so the safety profile is covered. The description adds useful operational context (PUT endpoint, write_email_templates scope, API version 2025-03), but leaves a real ambiguity: with PUT semantics and only templateID required, it doesn't say whether omitted subject/template_html are preserved or cleared.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the action and affected fields, followed by endpoint, scope, and API version β€” every line carries information an agent would otherwise have to guess. Slightly terse at the cost of the missing replacement-semantics detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter mutation with full schema coverage, annotations, and no output schema, the description covers purpose, endpoint, permission, and version. The main omission is whether the update is a full replace or a partial merge, which matters for a PUT-style call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and nested i18n objects are documented in-schema, so the baseline is 3. The description's mention of subject and HTML mirrors the schema rather than adding new meaning, and it says nothing about additional_fields or the merge behavior of extra body fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ("Update an email template's subject and HTML") and even identifies the exact fields being modified. It is clearly distinct from the email_templates_list and email_templates_get siblings via the update verb, though it never explicitly contrasts them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied β€” an agent can infer it should call this when modifying an existing template, but there is no statement of prerequisites (e.g., fetch the template first via get/list to obtain templateID), no when-not guidance, and no mention of alternatives. The required-scope line gives a permissive condition but not a selection rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_external_invoices_createExternal Invoices CreateA

Attach an external fiscal invoice (NFe/CAE...) to an order (unstable API). HTTP: POST /orders/{order_id}/invoices/external Required scope: write_orders API version: unstable

NameRequiredDescriptionDefault
keyYes44-digit fiscal key
xmlNoFiscal XML (or URL/data per the API reference)
numberNoInvoice number
seriesNoInvoice series
order_idYesOrder ID
issued_atNoIssue timestamp (ISO 8601)
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the write/destructive/idempotency profile, yet the description adds genuinely non-derivable context: the exact HTTP route, the required write_orders scope, and an 'unstable' API-version warning. It does not describe what happens on duplicate fiscal keys or what the response contains, so a 4 rather than 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short lines with zero filler: the action statement first, then HTTP route, scope and version as scannable metadata. Every line carries information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter mutation with a nested additional_fields object and no output schema, the description covers endpoint, auth scope and stability but omits selection guidance versus sibling invoice tools and any note on what a successful attachment returns. Adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and every property (key, xml, number, series, issued_at, additional_fields) is documented in the schema. The description adds no parameter-level detail such as format constraints on the 44-digit key or how additional_fields merge, so it sits at the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb ('Attach') and resource ('external fiscal invoice, NFe/CAE') plus the target ('to an order'), which distinguishes it from the sibling tiendanube_orders_invoices_create (internal invoices) and tiendanube_external_invoices_update. It stops short of explicitly contrasting with those siblings, so not a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this instead of tiendanube_orders_invoices_create or tiendanube_external_invoices_update. The only qualifier, 'unstable API', warns about reliability rather than telling the agent which tool or which situation calls for this one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_external_invoices_deleteExternal Invoices DeleteA
DestructiveIdempotent

Delete an external invoice (unstable API). HTTP: DELETE /orders/{order_id}/invoices/external/{key} Required scope: write_orders API version: unstable

NameRequiredDescriptionDefault
keyYesInvoice fiscal key (44 digits, e.g. NFe access key or CAE)
order_idYesOrder ID

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered; the description adds value beyond that by disclosing the auth scope requirement and marking the endpoint as an unstable API. It stops short of saying what happens to the order's invoice record after deletion (hard vs soft delete, downstream effects).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four compact lines with the core action front-loaded and no filler. The HTTP/scope/version lines each carry distinct operational information, though the block is more spec-sheet than prose and could integrate the scope caveat more naturally.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter destructive delete with full annotation coverage and full schema coverage, the definition supplies everything needed to call it: target, path, required scope, and a stability warning. No output schema exists, so nothing is owed about return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% β€” both order_id and key are fully documented in the schema, including the 44-digit fiscal key format. The description only restates parameter placement via the HTTP path template, adding no semantics beyond structured data; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (delete an external invoice) and embeds the endpoint path, which makes the target unambiguous. It does not name or contrast with sibling operations like tiendanube_external_invoices_update or _get, so sibling differentiation rests on the name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a real prerequisite (required scope: write_orders) and flags the API as unstable, which implies caution. However, it never says when to use this versus the other external-invoice tools, nor any condition that should give an agent pause before deleting.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_external_invoices_getExternal Invoices GetA
Read-onlyIdempotent

Get an external invoice by fiscal key. HTTP: GET /orders/{order_id}/invoices/external/{key} Required scope: read_orders API version: unstable

NameRequiredDescriptionDefault
keyYesInvoice fiscal key (44 digits, e.g. NFe access key or CAE)
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
order_idYesOrder ID
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and openWorld, so the safety profile is covered. The description adds genuinely new context: the required OAuth scope 'read_orders' and the 'unstable' API version warning, which is a real behavioral caveat an agent should know before depending on the response shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One purpose sentence followed by endpoint, scope and version metadata – front-loaded and free of filler. The HTTP line is somewhat redundant with the tool name but is short and useful as a reference.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-by-key endpoint with full schema coverage and rich annotations, the description covers purpose, scope and version stability. Return shape is not described, but with no output schema and a plain GET this is a minor gap rather than a blocking one.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameter meaning is already carried by the schema. The description's phrase 'by fiscal key' corroborates the key parameter but adds no format or syntax detail beyond the schema's '44 digits' note; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get an external invoice') and narrows the lookup to 'by fiscal key'. It implicitly separates itself from tiendanube_external_invoices_list by being a single-record fetch, but never names the sibling or states the distinction explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The required scope 'read_orders' and the HTTP path imply when the call is valid, but there is no explicit guidance on when to choose this over tiendanube_external_invoices_list or tiendanube_orders_invoices_list, nor any prerequisite or failure-mode note.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_external_invoices_listExternal Invoices ListA
Read-onlyIdempotent

List external fiscal invoices of an order (unstable API; per_page max 50). HTTP: GET /orders/{order_id}/invoices/external Required scope: read_orders API version: unstable Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
order_idYesOrder ID
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, and the description adds genuinely useful context beyond them: the API is unstable, the endpoint and API version, the required scope, and a 50-item per_page cap. It does not cover error behavior or rate limits, but for a read-only list this is strong added disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and the unstable-API warning, then endpoint/scope/return shape in a compact telegraphic style. Minor redundancy between 'unstable API' and 'API version: unstable' costs it a point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully states the response envelope (count/page/per_page/has_more/next_page/items), plus endpoint, scope and the stability caveat. Sufficient for correct invocation, though it omits any note on ordering or empty-result behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents page, fields, order_id, per_page and response_format. The description only restates the per_page cap (already in the schema) and adds nothing about fields/response_format, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource: 'List external fiscal invoices of an order', which is distinguishable from tiendanube_orders_invoices_list (regular invoices) and tiendanube_external_invoices_get by name alone. It does not explicitly name those siblings, so it stops short of 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'of an order' and the required read_orders scope, but there is no explicit when-to-use or when-not-to-use guidance versus the sibling invoice list/get tools. An agent must infer the selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_external_invoices_updateExternal Invoices UpdateB
Idempotent

Update an external invoice (unstable API). HTTP: PUT /orders/{order_id}/invoices/external/{key} Required scope: write_orders API version: unstable

NameRequiredDescriptionDefault
keyYesInvoice fiscal key (44 digits, e.g. NFe access key or CAE)
xmlNoFiscal XML
numberNoInvoice number
seriesNoInvoice series
order_idYesOrder ID
issued_atNoIssue timestamp (ISO 8601)
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare non-read-only, idempotent, non-destructive, open-world. The description adds genuinely new behavioral information: required OAuth scope (write_orders), the HTTP verb PUT (implying replacement semantics, consistent with idempotentHint), and the warning that the API version is unstable. It stops short of explaining what happens to invoice fields omitted from the payload under PUT.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four terse, front-loaded lines with zero filler β€” the warning, endpoint, scope and version are all immediately scannable. Slightly telegraphic rather than prose, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter mutation with no output schema, the description covers auth and endpoint but leaves open whether this is a full replacement or a partial update (PUT vs merge, relevant to additional_fields) and what the response contains. Adequate but with meaningful gaps for a write operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every field (key, xml, number, series, issued_at, additional_fields) is already documented in the schema; baseline 3 applies. The description adds only the small detail that order_id and key are path parameters via the URL template, which is marginal added value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Update an external invoice") and gives the exact endpoint, so the agent knows exactly what is being modified. It does not differentiate itself from the sibling external_invoices_create/get/list/delete tools or say why one would update rather than create.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this versus tiendanube_external_invoices_create or the orders_invoices_* siblings, and no prerequisites beyond the scope string. The only contextual hint is the "unstable API" warning, which tells the agent to be careful but not when to choose this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_fulfillment_orders_deleteFulfillment Orders DeleteB
DestructiveIdempotent

Delete a fulfillment order. HTTP: DELETE /orders/{order_id}/fulfillment-orders/{id} Required scope: write_fulfillment_orders API version: 2025-03

NameRequiredDescriptionDefault
idYesFulfillment order ID
order_idYesOrder ID

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so safety is covered. The description adds genuinely new context: the required OAuth scope (write_fulfillment_orders), the concrete HTTP endpoint, and the pinned API version. It stops short of describing side effects (e.g. what happens to associated fulfillments/tracking) or reversibility.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines with the action front-loaded and the endpoint/scope/version metadata separated out. No wasted prose, though the line-break format reads as generated API spec rather than explanatory text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive operation with no output schema, the definition covers the mechanics (endpoint, scope, version) but omits what an agent most needs before invoking: whether deletion is recoverable, what dependent records are affected, and the error behavior for a fulfillment order that is already shipped or completed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with both required parameters documented ('Fulfillment order ID', 'Order ID'). The path template /orders/{order_id}/fulfillment-orders/{id} usefully confirms the nesting relationship, but adds no format or type detail beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Delete a fulfillment order'), which an agent can act on immediately. It does not, however, distinguish this from the closely named sibling tiendanube_order_fulfillments_delete, nor clarify what a 'fulfillment order' is versus an order fulfillment β€” a real ambiguity in this catalog.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this versus the sibling delete/update tools, no prerequisites, and no conditions under which deletion should be avoided. The agent must infer that this is the destructive counterpart to fulfillment_orders_update purely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_fulfillment_orders_getFulfillment Orders GetA
Read-onlyIdempotent

Get one fulfillment order. HTTP: GET /orders/{order_id}/fulfillment-orders/{id} Required scope: read_fulfillment_orders API version: 2025-03

NameRequiredDescriptionDefault
idYesFulfillment order ID
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
order_idYesOrder ID
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description provides critical behavioral metadata that is outside of the structured annotations, namely the specific HTTP method (GET), the full API endpoint path, and the required security scope. This is essential for correct invocation and authorization.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is highly dense and concise, front-loading the core function and immediately following with the technical implementation details (HTTP method and URL path).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

By providing the full URL structure, required scope, and identifying the exact version, the description provides maximum technical context necessary for an agent to successfully attempt the API call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

While the input schema covers 100% of parameters, the description adds valuable context by including the API version (2025-03) and confirming the usage context (e.g., that it retrieves a specific instance), elevating it above a baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the function ('Get one fulfillment order') and distinguishes this specific resource retrieval from generic order or list-based siblings by naming the resource path components.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It is clear that the function retrieves a single record based on the provided context (order_id and id). While it does not explicitly name all alternatives, the specific resource retrieval implies it is not a list operation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_fulfillment_orders_listFulfillment Orders ListA
Read-onlyIdempotent

List fulfillment orders of an order (modern way to manage packing, dispatch and tracking). HTTP: GET /orders/{order_id}/fulfillment-orders Required scope: read_fulfillment_orders API version: 2025-03 Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
order_idYesOrder ID
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive, open-world behavior. The description adds meaningful context beyond those annotations by disclosing the HTTP endpoint, required OAuth scope, API version, and the response envelope, though it does not discuss rate limits or pagination behavior beyond the response fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded, with the main purpose stated first followed by endpoint, scope, version, and return shape. Every line adds practical information without unnecessary prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list operation, the description covers the essential context: endpoint, required scope, API version, and response structure. With no output schema, the included return shape is especially valuable, and the annotations plus full parameter schema cover the remaining gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents page, fields, order_id, per_page, and response_format in detail. The description only restates the endpoint's order_id path variable and does not add syntax or usage guidance beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: list fulfillment orders of an order. It adds useful domain context by noting this is the modern way to manage packing, dispatch, and tracking, but it does not explicitly differentiate itself from nearby siblings such as tiendanube_order_fulfillments_list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage through 'modern way to manage packing, dispatch and tracking,' giving some context for when this tool is relevant. However, it does not state when to use this instead of alternatives like order fulfillments list/get, nor does it mention exclusions or prerequisites beyond the required scope.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_fulfillment_orders_updateFulfillment Orders UpdateA
Idempotent

Update fulfillment status, tracking info and customer notification. HTTP: PATCH /orders/{order_id}/fulfillment-orders/{id} Required scope: write_fulfillment_orders API version: 2025-03

NameRequiredDescriptionDefault
idYesFulfillment order ID
statusNoNew fulfillment status (UNPACKED | PACKED | DISPATCHED | READY_FOR_PICKUP | DELIVERED | NOT_DELIVERED | CANCELLED)
order_idYesOrder ID
tracking_infoNoTracking info, e.g. {code, url, carrier}
notify_customerNoEmail the customer about this change
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds value beyond that by disclosing the HTTP method (PATCH), the exact endpoint, the required auth scope, and the pinned API version 2025-03 β€” all operationally relevant facts absent from the annotations. It does not describe status-transition validation or partial-update semantics, keeping it below a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the operative sentence and followed by endpoint, scope, and version metadata. No filler. The only mild inefficiency is that the title-ish first line repeats the tool name before adding the field list.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter mutation with a nested tracking_info object and no output schema, the description covers endpoint, auth scope, and version but says nothing about the return payload, error behavior, or how to source the fulfillment order id. Adequate to invoke safely, but reasonably more could be said given the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with the status enum fully enumerated, so the schema carries the parameter documentation and baseline 3 applies. The description restates the updatable fields but does not explain the semantics of additional_fields (the passthrough escape hatch) or how notify_customer interacts with the update.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (update) and resource (fulfillment orders) plus the three things that can be changed: status, tracking info, customer notification. That is concrete, but it does not differentiate from nearby siblings such as tiendanube_order_fulfillments_create or tiendanube_fulfillment_tracking_events_update, so the agent must infer the boundary from the names.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Required scope: write_fulfillment_orders' line is a genuine prerequisite, and PATCH implies an existing resource, but there is no explicit when-to-use/when-not or pointer to tiendanube_fulfillment_orders_get for obtaining the fulfillment order id. Usage is implied by the name rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_fulfillment_tracking_events_createFulfillment Tracking Events CreateA

Add a tracking event to a fulfillment order. HTTP: POST /orders/{order_id}/fulfillment-orders/{id}/tracking-events Required scope: write_fulfillment_orders API version: 2025-03

NameRequiredDescriptionDefault
idYesFulfillment order ID
eventYesTracking event fields per the API reference (status, description, location, happened_at, ...)
order_idYesOrder ID

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false, openWorldHint=true). The description adds genuinely useful non-annotation context β€” the required scope and API version β€” but says nothing about what side effects adding an event has (buyer notifications, status transitions, duplicate handling).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short, front-loaded lines with no filler; the action sentence comes first and the operational metadata follows. The HTTP/version lines are boilerplate but each carries actionable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter mutation with full schema coverage and no output schema, the description covers the essentials plus auth scope. It lacks any statement about the success response or event-limit behavior, which a write tool would ideally mention.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters are already documented, giving a baseline of 3. The description only implies parameter placement through the URL template; the 'event' payload's shape is left entirely to the schema's pointer to the API reference.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Add a tracking event to a fulfillment order" gives a specific verb and resource, and the HTTP endpoint path reinforces the resource hierarchy. It stops short of naming the sibling operations (tracking_events_update / tracking_events_delete), so an agent must infer that 'add' is the create variant.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description supplies a prerequisite (write_fulfillment_orders scope) but never states when to use this versus updating or deleting a tracking event, nor when an event should be recorded at all. Usage is implied by the verb rather than explained.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_fulfillment_tracking_events_deleteFulfillment Tracking Events DeleteA
DestructiveIdempotent

Delete a tracking event. HTTP: DELETE /orders/{order_id}/fulfillment-orders/{id}/tracking-events/{event_id} Required scope: write_fulfillment_orders API version: 2025-03

NameRequiredDescriptionDefault
idYesFulfillment order ID
event_idYesTracking event ID
order_idYesOrder ID

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered. The description adds the required OAuth scope and API version, which are useful auth/versioning context, but says nothing about permanence of deletion or what happens to the fulfillment order afterward.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short, front-loaded lines: action first, then endpoint, then scope and version. Zero filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 3-parameter delete with full schema coverage and rich annotations, the description covers action, endpoint, authorization scope and API version. The only omission is the consequence of deletion (permanent vs. soft delete), which is a minor gap given destructiveHint is already set.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so each ID is documented there. The endpoint template does reinforce the hierarchy β€” order_id for the order, id for the fulfillment order, event_id for the tracking event β€” which adds mild value, but there is no added syntax or constraint detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Delete a tracking event") and disambiguates from the sibling create/update tracking-event tools. The HTTP path further pins down that the event belongs to a fulfillment order within an order.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The name, verb and endpoint imply the use case, and the required scope (write_fulfillment_orders) gives a practical precondition. However, there is no explicit when-to-use guidance, no note that this is irreversible, and no mention of the sibling update tool as an alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_fulfillment_tracking_events_updateFulfillment Tracking Events UpdateB
Idempotent

Update a tracking event. HTTP: PUT /orders/{order_id}/fulfillment-orders/{id}/tracking-events/{event_id} Required scope: write_fulfillment_orders API version: 2025-03

NameRequiredDescriptionDefault
idYesFulfillment order ID
eventYesTracking event fields to update
event_idYesTracking event ID
order_idYesOrder ID

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this as a non-read-only, idempotent, non-destructive, open-world operation, so the safety profile is covered. The description adds permissions and versioning context, which is valuable, but it does not say whether the update is a partial merge or a replacement, nor what happens to fields omitted from the event payload.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short lines, front-loaded with the action, followed by endpoint, scope, and version metadata. Nothing is padded, though the brevity borders on under-specification.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema and lightweight annotations mean the description needn't explain returns, and the ID parameters are fully covered. However, the free-form `event` payload β€” the core of what is being updated β€” is left entirely unexplained, which is the main completion gap for a mutation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters are documented in the schema and the baseline applies. The URI template restates the ID hierarchy already present in the schema, but the opaque `event` object's acceptable fields are undefined in both places.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Update a tracking event" is a specific verb plus resource, and the HTTP path disambiguates which identifiers scope it (order β†’ fulfillment order β†’ tracking event). It does not explicitly contrast with the sibling create/delete tracking-event tools, but the names make the distinction largely self-evident.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The stated required scope (write_fulfillment_orders) and the API version give a useful precondition, but there is no explicit when-to-use versus when-not guidance, nor a pointer to sibling tools such as tiendanube_fulfillment_tracking_events_create or _delete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_kits_getKits GetA
Read-onlyIdempotent

Get a Kit/Combo product and the products/variants composing it. HTTP: GET /kits/{id} Required scope: read_products API version: 2025-03

NameRequiredDescriptionDefault
idYesKit ID
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered; the description adds the required auth scope, the API version, and the endpoint, which matter for a read against a versioned API. It also discloses that the payload includes composing products/variants β€” useful since there is no output schema. It stops short of describing pagination of components or error behavior for a non-kit id.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the verb and what is returned, then credentials and version metadata. The HTTP line partially restates the tool's nature but is defensible mapping info for a versioned REST API.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-id read with full annotation coverage and full schema coverage, the description covers purpose, auth scope, and rough return shape, which is enough to call it correctly. Missing only edge-case behavior (component list size, invalid/non-kit id) that a caller might want.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with 'id', 'fields', and the 'response_format' enum all documented in the schema, so the description need not compensate. It adds nothing about the parameters β€” no guidance on which fields are valid for 'fields' on a kit, which would have been the one genuinely useful addition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource and disambiguates the domain term ("Kit/Combo product and the products/variants composing it"), so the agent knows this returns a bundle plus its component items rather than a plain product. It doesn't explicitly contrast with tiendanube_products_get or tiendanube_variants_get, which are the nearest siblings, so it falls short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the resource name, and "Required scope: read_products" supplies a real prerequisite the agent can check. There is no explicit when-to-use/when-not, and no pointer to products_get or variants_get for the case where the agent actually wants a plain product; the choice is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_locations_createLocations CreateA

Create a location. HTTP: POST /locations Required scope: write_locations API version: 2025-03

NameRequiredDescriptionDefault
nameYesLocation name β€” i18n object keyed by language code, e.g. {"es": "...", "pt": "...", "en": "..."}
addressNoAddress: {zipcode, street, number, floor, locality, city, region:{code}, country:{code}}
allows_pickupNoCustomers can pick up orders here
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a non-read-only, non-destructive, open-world, non-idempotent operation. The description adds two pieces of context not in annotations: the required OAuth scope (write_locations) and the pinned API version (2025-03), both meaningful for auth and compatibility. It stops short of saying what the call returns or how errors surface.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the action, followed by method/path, scope, and version. Every line conveys operational information; nothing is padded or redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple create with fully described params and annotations covering the safety profile, the description is adequate. Since there is no output schema, it leaves the agent guessing about the response shape (e.g., whether the created location including its ID is returned) and any uniqueness or validation constraints on name.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% β€” the name i18n object, address structure, allows_pickup, and additional_fields merge behavior are all documented in the schema. The description adds no parameter-level detail beyond that, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Create a location") and adds the HTTP method and path (POST /locations), so the operation is unambiguous. It does not distinguish itself from siblings such as tiendanube_locations_update or locations_set_default, but the name suffix and the singular-object framing make the distinction reasonably clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The required scope (write_locations) is a useful gating prerequisite, and "Create" implies usage when a new location is needed. However, there is no explicit when-to-use/when-not guidance, no mention of alternatives like locations_update for existing locations, and no note about limits on how many locations can be created.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_locations_deleteLocations DeleteA
DestructiveIdempotent

Delete a location. HTTP: DELETE /locations/{id} Required scope: write_locations API version: 2025-03

NameRequiredDescriptionDefault
idYesLocation ID

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds valuable technical context by providing the HTTP method and the required scope ('write_locations'), which complements the metadata in the annotations. However, since annotations already declare it destructive and idempotent, the added behavioral context is only moderate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is highly efficient and front-loaded. It provides the verb, the resource, the API path, the required scope, and the version in a minimal, waste-free manner.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the tool is technically complete for invocation (it requires one ID), it lacks the 'why' of the operation. Without usage guidance, the agent relies entirely on external logic to decide if deletion is appropriate for the given context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Since the schema coverage is 100%, the parameter 'id' is fully defined in the structure. The description adds no semantic meaning beyond what is already captured in the schema's 'Location ID' description, meeting the baseline requirement.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the action ('Delete a location') and the resource, which, when combined with the specific name, distinguishes it from sibling tools like tiendanube_locations_create or tiendanube_locations_update.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when this tool should be used versus alternatives. It assumes the agent knows the correct state for deletion and does not mention preconditions or potential consequences beyond the implicit destructive nature.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_locations_getLocations GetA
Read-onlyIdempotent

Get one location. HTTP: GET /locations/{id} Required scope: read_locations API version: 2025-03

NameRequiredDescriptionDefault
idYesLocation ID
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so the safety profile is covered. The description adds genuine extra context beyond the annotations: the required OAuth scope read_locations, the underlying HTTP endpoint, and the API version, which helps the agent confirm access prerequisites.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the purpose followed by endpoint and scope metadata. No filler, though the HTTP path is mildly redundant with the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-resource read with full schema coverage and rich annotations, the description supplies the missing operational details (scope, API version). No output schema exists, but returned fields can be shaped via the documented fields parameter, so the agent has enough to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and all three parameters (id, fields, response_format) are documented in the schema, including the enum for response_format. The description adds no parameter-level meaning beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Get one location" names a specific verb and resource, and the singular wording implicitly contrasts with the locations_list sibling. It stops short of explicitly naming the list tool as the alternative for enumerating locations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: fetch a single location by id. There is no explicit when-to-use vs when-not guidance (e.g. use locations_list to discover ids first, or when to prefer inventory_levels_list for stock).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_locations_inventory_levels_listLocations Inventory Levels ListA
Read-onlyIdempotent

List stock levels of variants at one location. HTTP: GET /locations/{id}/inventory-levels Required scope: read_locations API version: 2025-03 Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
idYesLocation ID
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and open-world behavior, so the safety profile is covered. The description adds genuinely new context: the required OAuth scope 'read_locations', the pinned API version 2025-03, and the pagination envelope (count, page, per_page, total?, has_more, next_page?, items[]) that the annotations do not convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four compact lines with the purpose front-loaded, followed by endpoint, scope, version and return shape. Every line carries information an agent would otherwise have to dig out of the schema or API docs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description helpfully enumerates the response envelope, and it covers scope and API version. The remaining gap is that the shape of each item[] entry (what an inventory level actually contains) is not described, though that is a minor omission for a list endpoint.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so id, page, per_page, fields and response_format are all documented in the schema itself. The description only hints that the call is scoped to 'one location' (the id parameter) and adds no format or constraint detail beyond the schema, which is the baseline-3 case.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List stock levels of variants at one location') and pins the exact scope with the endpoint GET /locations/{id}/inventory-levels. This is clearly distinguishable from sibling reads like tiendanube_locations_get or tiendanube_variants_list, which return location metadata or variant records rather than per-location stock.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The purpose implies when to use it (fetching stock for a known location), and the required scope 'read_locations' signals the permission context. However, it names no alternatives and gives no explicit when-not guidance β€” an agent cannot tell from the description whether tiendanube_variants_list or tiendanube_variants_get would be a better source for stock data.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_locations_listLocations ListA
Read-onlyIdempotent

List locations (branches / distribution centers). HTTP: GET /locations Required scope: read_locations API version: 2025-03 Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and open-world behavior, so the bar is lower; the description still adds real value by disclosing the required OAuth scope, the pinned API version, and the pagination envelope (count/page/per_page/has_more/next_page). It stops short of noting rate limits or the page*per_page cap that governs paging behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines with zero filler; the purpose is front-loaded and the endpoint, scope, version and return shape follow in a predictable order. Every line carries information an agent can act on.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description compensates by spelling out the response envelope keys including the optional total/next_page and the has_more flag. Combined with the auth scope and API version, an agent has everything needed to call and interpret this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so page, per_page, fields and response_format are fully documented in the schema and the baseline is 3. The description adds no parameter-level meaning beyond that, leaving the schema to carry all of it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("List locations") and clarifies the domain concept with "(branches / distribution centers)", which helps an agent map the term. It does not explicitly distinguish itself from tiendanube_locations_get or tiendanube_locations_inventory_levels_list, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the verb "List" and the scope note "read_locations" acts as a prerequisite, but there is no explicit when-to-use guidance or routing to alternatives such as locations_get for a single branch. An agent must infer the choice from naming conventions alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_locations_set_defaultLocations Set DefaultB
Idempotent

Mark a location as the default one. HTTP: PATCH /locations/{id}/chosen-as-default Required scope: write_locations API version: 2025-03

NameRequiredDescriptionDefault
idYesLocation ID

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this a non-destructive, idempotent, open-world mutation, and the description usefully adds the required scope (write_locations) and API version (2025-03), which are not in structured fields. However, it omits the most important behavioral consequence: whether the previously default location is automatically unset or whether this call fails if one already exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The action is stated in a single front-loaded sentence, with scope and version on separate lines that are easy to scan. The HTTP line is largely boilerplate for an agent, but it does not bloat the definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, annotated, non-destructive mutation, most of what an agent needs is present. The remaining gap is the side effect on the existing default location, which materially affects whether the call should be made blindly, and there is no output schema to answer it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is only one parameter (id) and schema description coverage is 100%, so the schema already documents it. The wording "a location" plus the {id} path template confirms intent but adds no syntax, format, or constraint detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Mark a location as the default one" is a specific verb plus resource, and the endpoint PATCH /locations/{id}/chosen-as-default reinforces the single, unambiguous effect. It is distinguishable from locations_update only by inference from the name, but the stated effect is clear enough on its own.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description never says when to reach for this instead of tiendanube_locations_update, nor any precondition such as having at least one other location to demote. The required scope write_locations is auth context, not usage guidance, so an agent must guess at the selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_locations_updateLocations UpdateB
Idempotent

Update a location. HTTP: PUT /locations/{id} Required scope: write_locations API version: 2025-03

NameRequiredDescriptionDefault
idYesLocation ID
nameNoLocation name β€” i18n object keyed by language code, e.g. {"es": "...", "pt": "...", "en": "..."}
addressNoAddress: {zipcode, street, number, floor, locality, city, region:{code}, country:{code}}
allows_pickupNoCustomers can pick up orders here
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the mutation profile (readOnly=false, destructive=false, idempotent=true, openWorld=true), and the description adds genuinely useful context beyond them: the PUT endpoint, the required write_locations scope, and the API version. It omits one important behavioral detail for an update tool β€” whether omitted fields are preserved or cleared, and how additional_fields is merged relative to named fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the action, then endpoint, scope, and version as scannable metadata. Every line carries information an agent can act on; nothing is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With five parameters at full schema coverage and no output schema, the description needn't explain return values, and the annotations cover the safety profile. What is still missing is update semantics (partial vs full replacement) and any note on the response, which matters for a tool with an additional_fields escape hatch.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: every parameter, including the i18n name object, the nested address shape, and the additional_fields merge behavior, is documented in the schema itself. The description adds no parameter-level information beyond what is already structured, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update a location') and pins the exact HTTP operation. It does not, however, distinguish this from siblings like tiendanube_locations_set_default or tiendanube_locations_update_priorities, which also mutate a location, nor does it hint at which fields are editable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use or when-not-to-use guidance and names no alternative. An agent must infer from the name alone that this is the general field-edit tool versus the specialized set_default/update_priorities siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_locations_update_prioritiesLocations Update PrioritiesB
Idempotent

Set the order in which locations are used to deduct stock. HTTP: PATCH /locations/priorities Required scope: write_locations API version: 2025-03

NameRequiredDescriptionDefault
prioritiesYesPriority list per the API reference, e.g. [{id: <location_id>, priority: 0}, ...]

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful context: the required OAuth scope and the API version. However, it does not state whether the provided list fully replaces the existing ordering or merges with it, which is the key behavioral question for a priority-setting call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The key semantic is front-loaded in sentence one, followed by the endpoint, scope, and version as compact metadata. No filler sentences; the only inefficiency is that the metadata block is not something an agent strictly needs to invoke the tool correctly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, non-destructive, idempotent mutation with no output schema, the description covers endpoint, scope, and version. It falls short on the one thing that matters most: whether the priorities list is a full replacement or a partial update, which affects how an agent must construct the payload.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter's description already carries the example format [{id: <location_id>, priority: 0}, ...]. The tool description adds nothing beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first line states a specific verb and resource: setting the order in which locations deduct stock. It is clearly distinct from siblings like locations_update or locations_set_default, though the description never names those alternatives explicitly. Purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage through the required scope write_locations and the endpoint path, but never says when to call this instead of tiendanube_locations_update or tiendanube_locations_set_default. An agent must infer the distinction from the sibling names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_metafields_createMetafields CreateB

Create a metafield. HTTP: POST /metafields Required scope: read_*/write_* matching owner_resource: products (Product, Product_Variant, Category) | content (Page) | orders (Order) | customers (Customer) API version: 2025-03

NameRequiredDescriptionDefault
keyYesKey
valueYesValue
owner_idYesOwner ID
namespaceYesNamespace
descriptionNoDescription
owner_resourceYesOwner resource type (Product | Product_Variant | Category | Page | Order | Customer)
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the mutation profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), and the description usefully adds the required OAuth scopes per owner_resource plus the pinned API version. It says nothing about the failure mode an agent most needs β€” what happens when a metafield with the same namespace/key already exists (error vs. overwrite) β€” so the non-idempotent hint is left unexplained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short, front-loaded lines with zero padding: purpose, endpoint, scope, version. The scope line is dense but each element is actionable, and nothing is repeated from the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter write tool with no output schema, the description covers identity, auth, and API version but leaves out the return payload and duplicate-key behavior. The nested additional_fields escape hatch is also unaddressed, so an agent cannot tell when the typed parameters are insufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 earns an increment by mapping owner_resource enum values to the scopes they require (products: Product/Product_Variant/Category, content: Page, and so on), which the schema does not express. It adds no guidance on the value field's expected format for structured types, which is the other ambiguity in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Create a metafield") and pins it to an HTTP endpoint, which cleanly separates it from the metafields_get/update/delete siblings. It does not, however, distinguish metafields from the adjacent tiendanube_custom_fields_* family, which an agent could easily confuse.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this versus tiendanube_metafields_update (e.g., whether an existing namespace/key should be updated instead) or versus tiendanube_custom_fields_create. The only directional content is a required-OAuth-scope list, which is a prerequisite, not usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_metafields_deleteMetafields DeleteA
DestructiveIdempotent

Delete a metafield. HTTP: DELETE /metafields/{id} Required scope: read_*/write_* matching owner_resource: products (Product, Product_Variant, Category) | content (Page) | orders (Order) | customers (Customer) API version: 2025-03

NameRequiredDescriptionDefault
idYesMetafield ID

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuine context beyond that: the required OAuth scope tied to owner_resource, and that metafields span products/variants/categories, pages, orders and customers. It still doesn't say what a successful delete returns or what happens when the ID doesn't exist, and the 'read_*/write_*' scope wording is odd for a delete operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines with the action front-loaded first, then endpoint, scope and API version as supporting metadata. No filler sentences; each line carries a distinct fact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter destructive call with no output schema and full annotation coverage, the definition is close to sufficient: endpoint, scope and API version are all present. The only meaningful gap is post-delete behavior (response shape, error on missing ID), which is minor given the strong annotation set.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single parameter, so 'Metafield ID' is already documented structurally. The description adds nothing about the ID's form (numeric vs string, global vs store-scoped), so it neither compensates nor harms β€” the schema baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Delete a metafield') and pins it down further with the HTTP verb and path (DELETE /metafields/{id}). Among the metafields_* siblings (list_by_resource, get, create, update) the tool's role is unambiguous, though the description doesn't explicitly contrast with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the verb β€” an agent infers it should call this to remove an existing metafield. There is no explicit 'when to use this vs tiendanube_metafields_update' guidance, nor any note about prerequisites such as needing the metafield ID from metafields_list_by_resource or metafields_get first.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_metafields_getMetafields GetA
Read-onlyIdempotent

Get one metafield. HTTP: GET /metafields/{id} Required scope: read_*/write_* matching owner_resource: products (Product, Product_Variant, Category) | content (Page) | orders (Order) | customers (Customer) API version: 2025-03

NameRequiredDescriptionDefault
idYesMetafield ID
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=true, idempotent=true, destructive=false, so the safety profile is covered; the description adds real value on top by disclosing the required OAuth scopes and the per-owner_resource scope mapping (products/content/orders/customers) plus the pinned API version 2025-03. It stops short of describing auth failure modes or payload size behavior beyond the fields parameter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, zero filler, and the core action is front-loaded ahead of the endpoint, scope, and version metadata. Every line (purpose, endpoint, scope, version) earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should signal what a metafield record contains (namespace/key/value/owner_resource) and whether a missing ID errors or returns null; neither is covered. Prerequisites and version pinning are well covered, so it is adequate but leaves the return-value gap unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with all three parameters (id, fields, response_format) documented inline, including an enum default, so the schema carries the burden. The description adds nothing about how id is formed (string vs number, owner-scoped) or what fields accepts beyond what the schema already says; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Get one metafield") and backs it with the exact HTTP endpoint GET /metafields/{id}, so the single-record scope is unambiguous. It never names the obvious alternative (tiendanube_metafields_list_by_resource), so the differentiation is implied by name rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use / when-not-to-use guidance and no mention of the sibling list tool for enumerating metafields or of metafields_create/update for mutations. The scope line conveys a prerequisite (read_*/write_* matching owner_resource) rather than selection guidance, which partly helps but is not usage routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_metafields_list_by_resourceMetafields List By ResourceA
Read-onlyIdempotent

List metafields of a resource type, optionally filtered by owner/namespace/key/value. HTTP: GET /metafields/{owner_resource} Required scope: read_*/write_* matching owner_resource: products (Product, Product_Variant, Category) | content (Page) | orders (Order) | customers (Customer) API version: 2025-03 Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
keyNoKey
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
valueNoValue
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
owner_idNoOnly metafields of this owner
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
namespaceNoNamespace
owner_resourceYesOwner resource type (Product | Product_Variant | Category | Page | Order | Customer)
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the description correctly spends its budget elsewhere: the HTTP route, the per-resource scope requirement (products/content/orders/customers), the API version, and the exact pagination envelope. That is real operational context an agent cannot get from 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded one-line purpose followed by terse structured lines for HTTP route, scope, version, and return shape. No filler, though the scope line is dense enough to require a second read.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter read tool with no output schema, the description supplies the return envelope shape and the permission model, which are the two things an agent most needs. Only the relationship to the singular get tool is left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents every parameter including enum values and pagination limits. The description restates the filter set (owner/namespace/key/value) without adding syntax or format detail, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource: 'List metafields of a resource type', and names the filterable dimensions. The singular sibling tiendanube_metafields_get is distinguishable by name, but the description never explicitly contrasts the two.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied (bulk/listing with optional owner/namespace/key/value filters) but there is no explicit when-to-use guidance or steering away from tiendanube_metafields_get for single-record lookups. The scope requirement hints at which resources are accessible, but not when to pick this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_metafields_updateMetafields UpdateB
Idempotent

Update a metafield. HTTP: PUT /metafields/{id} Required scope: read_*/write_* matching owner_resource: products (Product, Product_Variant, Category) | content (Page) | orders (Order) | customers (Customer) API version: 2025-03

NameRequiredDescriptionDefault
idYesMetafield ID
valueNoNew value
descriptionNoDescription
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare non-read-only, idempotent, non-destructive, open-world behavior, so the description is not carrying the safety burden alone. It does add genuinely useful non-annotated context: the PUT route, the required OAuth scope mapped to owner_resource types, and the API version. It omits the key behavioral question for an update tool β€” whether omitted fields are left untouched or cleared β€” and says nothing about the metafield value type constraint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short, front-loaded lines with no filler β€” operation first, then route, then auth, then version. Every line is factual, though the scope enumeration is verbose relative to its decision value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter mutation with full schema coverage, no output schema, and annotations covering the safety profile, this is close to sufficient: identity, route, auth scope and API version are all present. The remaining gap is update semantics (partial vs. replace, type validation of `value`), which matters for metafields specifically.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents id, value, description and additional_fields; the baseline of 3 applies. The description adds nothing about parameter behavior beyond showing {id} in the path, and notably does not warn that `value` must conform to the metafield definition's type.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update a metafield') plus the exact HTTP route, so the agent knows precisely what operation this performs. It does not name or contrast the sibling metafields_create / metafields_get / metafields_delete tools, but the verb makes the distinction obvious.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to choose this over metafields_create (upsert semantics?) or when a metafield must be deleted and recreated. The scope line describes an authorization prerequisite rather than a usage decision, and no conditions or exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_oauth_exchange_codeExchange OAuth Code For Access TokenA

Exchange the temporary OAuth 'code' (received on the app's redirect URL as ?code=...) for the permanent access_token. The response includes access_token, token_type, scope (granted scopes) and user_id β€” which is the store_id to use as TIENDANUBE_STORE_ID. Tokens do not expire unless the app is uninstalled or the token is rotated. The code is single-use and short-lived. Requires client credentials: pass client_id/client_secret or set TIENDANUBE_CLIENT_ID / TIENDANUBE_CLIENT_SECRET. Does not need a store access token. HTTP: POST https://www.tiendanube.com/apps/authorize/token (or nuvemshop.com.br).

NameRequiredDescriptionDefault
codeYesAuthorization code from the redirect URL
regionNo'tiendanube' (HispanoamΓ©rica) or 'nuvemshop' (Brasil)tiendanube
client_idNoApp client_id (default: env TIENDANUBE_CLIENT_ID)
client_secretNoApp client_secret (default: env TIENDANUBE_CLIENT_SECRET)

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond the annotations: the code is single-use and short-lived, tokens never expire unless the app is uninstalled or the token rotated, no store token is needed, and credentials can come from env vars. It also discloses the concrete HTTP endpoint and both regional hosts, which the annotations (readOnly=false, idempotent=false, openWorld=true) do not cover.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five dense sentences, front-loaded with the action and the code source, then response shape, token lifetime, credential requirements, and endpoint. Nothing is redundant with the title or schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description compensates by naming the returned fields (access_token, token_type, scope, user_id) and explaining the lifetime of the resulting token. An agent has everything needed to invoke this correctly on the first try.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds semantics the schema lacks: the 'code' is single-use and short-lived, and the response user_id is the value to use as TIENDANUBE_STORE_ID. The 'region' enum is only obliquely hinted at through the '(or nuvemshop.com.br)' note.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Exchange the temporary OAuth code ... for the permanent access_token') and immediately identifies the input source (app redirect URL ?code=...). No sibling tool performs OAuth, and the description makes that scope unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly frames the context of use (right after the app redirect hands back a code) and states explicit prerequisites β€” client credentials required, store access token NOT required. It stops short of naming a when-not-to-use condition or alternative path, but no such sibling exists.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_order_fulfillments_createOrder Fulfillments CreateA

Create a legacy fulfillment event (e.g. shipped with tracking). HTTP: POST /orders/{order_id}/fulfillments Required scope: write_shipping API version: 2025-03

NameRequiredDescriptionDefault
order_idYesOrder ID
fulfillmentYesFulfillment fields (status, tracking_number, tracking_url, notify_customer, ...)

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the write/openWorld/non-idempotent/non-destructive profile, and the description adds genuinely non-structured context: the required write_shipping scope, API version 2025-03, and the concrete endpoint. It does not mention the customer-notification side effect implied by notify_customer or the consequences of repeating the call despite idempotentHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four compact lines, front-loaded with purpose, followed by endpoint, scope, and API version β€” all operationally relevant for a versioned API. Terse fragment style costs nothing in clarity, though it borders on reference-sheet terseness rather than guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description never says what a create returns (the resulting fulfillment object) or how to reference it afterwards, and it omits any note on the non-idempotent behavior flagged in annotations. For a mutation on an order record, that leaves real gaps an agent must guess at.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters are documented there, so the baseline applies. The description's parenthetical field list duplicates what the schema's fulfillment description already provides and adds no format, enum, or constraint detail beyond it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Create a legacy fulfillment event') and gives a concrete example ('shipped with tracking'), so an agent knows exactly what operation it performs. The 'legacy' qualifier implicitly separates it from the newer fulfillment_orders / fulfillment_tracking_events siblings, but no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The word 'legacy' hints that this is the older path and that newer fulfillment tools exist, but there is no explicit when-to-use/when-not-to-use statement and no named alternative. In a sibling list containing tiendanube_fulfillment_orders_update and tiendanube_fulfillment_tracking_events_create, the routing decision is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_order_fulfillments_deleteOrder Fulfillments DeleteB
DestructiveIdempotent

Delete a legacy fulfillment event. HTTP: DELETE /orders/{order_id}/fulfillments/{id} Required scope: write_shipping API version: 2025-03

NameRequiredDescriptionDefault
idYesFulfillment ID
order_idYesOrder ID

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so the broad safety profile is known. The description adds valuable auth context ('Required scope: write_shipping') and the exact HTTP endpoint, but it does not say what is destroyed, whether the deletion is reversible, or what happens to related records. It is useful 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the action and resource, followed by the endpoint, scope, and API version on separate lines. Every line earns its place for an API-gateway-style tool. It is slightly terse but not padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation with a complete two-parameter schema and rich annotations, the description covers endpoint, scope, and API version. It still omits the expected success response (e.g., 204/no content) and any note on irreversibility or side effects, which an agent invoking a destructive delete would benefit from knowing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters have descriptions, so the schema already carries the semantic load for order_id and id. The path template in the description reinforces how those values are used, but adds no format, type, or constraint detail beyond what the schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: 'Delete a legacy fulfillment event.' The word 'legacy' helps distinguish it from the sibling family around fulfillment_orders, though it never names the non-legacy alternative explicitly. An agent can still tell what the tool does without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The adjective 'legacy' implies this should be used only for legacy fulfillment events, and the required scope 'write_shipping' signals the permission gate. However, there is no explicit when-to-use versus the sibling tiendanube_fulfillment_orders_delete, and no prerequisites or exclusions are stated. Usage is inferred rather than guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_order_fulfillments_getOrder Fulfillments GetA
Read-onlyIdempotent

Get a legacy fulfillment event. HTTP: GET /orders/{order_id}/fulfillments/{id} Required scope: read_shipping API version: 2025-03

NameRequiredDescriptionDefault
idYesFulfillment ID
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
order_idYesOrder ID
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and open-world, so safety is covered. The description adds genuinely new operational context β€” the required read_shipping scope and the pinned API version 2025-03 β€” which affects whether the call will succeed. It stops short of describing the payload shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the purpose and followed by route, scope, and version β€” no filler. The HTTP line partially duplicates the schema's required parameters, keeping it just short of ideal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A read-only GET with full schema coverage and complete annotations needs little prose, and the scope/version lines cover the auth dimension. What is missing is the disambiguation an agent actually needs: what a "legacy fulfillment" contains versus the newer fulfillment_orders resources, and when each applies.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and every parameter (id, order_id, fields, response_format) is documented there, so baseline 3 applies. The description's URL template only restates the two path parameters and adds nothing about the fields or response_format options.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Get a legacy fulfillment event") and pins the exact route GET /orders/{order_id}/fulfillments/{id}. It is clearly a single-resource read, distinct from the sibling list tool, though the word "event" is slightly at odds with the "fulfillments/{id}" path and the definition never explains how this differs from tiendanube_fulfillment_orders_get.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The adjective "legacy" weakly implies this should be used only for older fulfillment records rather than the fulfillment_orders family, but no when-to-use or when-not-to-use rule is stated. The agent is left to infer the choice between tiendanube_order_fulfillments_get and tiendanube_fulfillment_orders_get.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_order_fulfillments_listOrder Fulfillments ListA
Read-onlyIdempotent

List legacy fulfillment events of an order (prefer fulfillment orders). HTTP: GET /orders/{order_id}/fulfillments Required scope: read_shipping API version: 2025-03 Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
order_idYesOrder ID
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds genuinely useful operational context beyond them: the exact HTTP route, the required read_shipping scope, and the pinned API version 2025-03. That auth/versioning detail is the value-add structured fields don't carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five short lines, front-loaded with the purpose and the sibling preference before the mechanical details. The HTTP/scope/version/return lines are compact and each carries distinct information, though the format is closer to a reference card than prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by specifying the response envelope shape ({count, page, per_page, total?, has_more, next_page?, items[]}), so an agent knows what comes back. Combined with scope and route info, this is nearly complete; only the 'legacy' boundary conditions are left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with page, per_page, fields, order_id, and response_format all documented in-schema, so the baseline is 3. The description only reiterates order_id implicitly via the path template and adds no new semantics for pagination or field selection.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List legacy fulfillment events of an order') and immediately distinguishes it from the modern equivalent with 'prefer fulfillment orders'. An agent can separate this from tiendanube_fulfillment_orders_list and tiendanube_order_fulfillments_get without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The parenthetical 'prefer fulfillment orders' is an explicit routing instruction toward the preferred sibling tool, which is exactly the kind of when-to-use signal that helps selection. It stops short of stating when this tool is the correct choice (e.g., only for pre-migration/legacy data), so it is not a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_orders_cancelOrders CancelA
Destructive

Cancel an order. Irreversible; can email the buyer and restock inventory. HTTP: POST /orders/{id}/cancel Required scope: write_orders API version: 2025-03

NameRequiredDescriptionDefault
idYesOrder ID
emailNoNotify the buyer by email
reasonNoCancellation reason (customer | inventory | fraud | other)
restockNoReturn items to inventory
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=false, but the description goes further by exposing the actual side effects (buyer email, inventory restock) and the required OAuth scope write_orders. It does not say what happens to paid or already-fulfilled orders or whether refunds are triggered, which keeps it from a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and the irreversible warning, then metadata. Five short lines, no filler; the HTTP path and API version are boilerplate but cheap and operationally useful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive 5-parameter mutation the description covers scope, endpoint, and side effects, and annotations cover the safety profile. The one gap is the absence of an output schema combined with no statement of what the call returns (the cancelled order, an error state, etc.).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so every parameter (id, email, reason, restock, additional_fields) is already documented in the schema. The description's mention of emailing the buyer and restocking inventory mirrors those schema descriptions rather than adding new meaning; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Cancel an order") and immediately distinguishes it from read siblings like orders_get/orders_list by declaring its destructive nature. The HTTP verb+path and required scope leave no ambiguity about what the call does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The word "Irreversible" acts as a strong caution but not as routing guidance; nothing tells the agent when to prefer this over siblings such as tiendanube_orders_close or tiendanube_order_fulfillments_delete. Usage is implied by the name rather than explained.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_orders_closeOrders CloseA

Close (archive) an open order. HTTP: POST /orders/{id}/close Required scope: write_orders API version: 2025-03

NameRequiredDescriptionDefault
idYesOrder ID

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare the safety profile (readOnlyHint=false, destructiveHint=false, not idempotent), and the description adds real value beyond them: the required OAuth scope write_orders, the exact HTTP endpoint and method, and the clarification that "close" means archive rather than delete. It does not say whether the action is reversible via orders_open or what happens on an invalid state β€” a minor remaining gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the operation and its meaning, followed by terse endpoint, scope, and version lines. Slight boilerplate in the API-version line, but no sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter mutation with no output schema, the essentials are covered by annotations plus the scope statement. Still missing: side effects on the order (does it affect fulfillments/payment?), error behavior when the order is not open, and whether orders_open can reverse it β€” all relevant given the many order-related siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (id) and schema coverage is 100%, so the schema already documents it fully. The "{id}" in the HTTP path echoes the schema without adding format, type, or resolution guidance; baseline 3 applies since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ("Close (archive) an open order") and disambiguates the ambiguous word "close" with "archive". Sibling tools like tiendanube_orders_open and tiendanube_orders_cancel exist but are not named, so the differentiation is only implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"an open order" implies the precondition that the order must be in an open state, which is useful usage context. However, it never says what to do for a non-open order, nor does it explicitly point to tiendanube_orders_open as the inverse or tiendanube_orders_cancel as the alternative for a different outcome.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_orders_createOrders CreateA

Create an order (e.g. for imports or manual sales). Check inventory_behaviour to control stock. HTTP: POST /orders Required scope: write_orders API version: 2025-03

NameRequiredDescriptionDefault
noteNoCustomer note
statusNoOrder status (open | closed | cancelled)
gatewayNoPayment gateway name
currencyNoISO currency code, e.g. ARS
customerNoCustomer: {name, email, phone, document}
discountNoDiscount amount
languageNoLanguage code (es, pt, en)
productsYesLine items: [{variant_id, quantity, price}]
shippingNoShipping carrier name
owner_noteNoPrivate store note
payment_statusNoPayment status (pending | authorized | paid | voided | refunded | abandoned)
billing_addressNoBilling address
shipping_optionNoShipping option name
shipping_addressNoShipping address
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body
inventory_behaviourNobypass = do not touch stock; claim = reserve stock (bypass | claim)
shipping_cost_ownerNoShipping cost paid by the store
shipping_pickup_typeNoDelivery type (ship | pickup)
send_fulfillment_emailNoEmail fulfillment updates to the buyer
shipping_cost_customerNoShipping cost charged to customer
send_confirmation_emailNoEmail confirmation to the buyer

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the mutation and safety profile (readOnlyHint=false, destructiveHint=false, non-idempotent). The description adds useful operational context: required scope 'write_orders', API version, and the inventory_behaviour switch. It does not cover failure behavior or return semantics, so it 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded with the core action and key caveat. The HTTP method, scope, and API version add useful operational metadata, though the line breaks could be slightly more organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 21-parameter create tool with full schema coverage and annotations, the description supplies the critical scope and stock-control hint. It does not describe the response, but no output schema exists and the schema itself covers the input details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 21 parameters. The description only highlights inventory_behaviour and is otherwise silent on parameter semantics, making 3 the appropriate baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Create an order') and gives examples ('imports or manual sales'). It does not explicitly differentiate this from sibling tools such as draft_orders_create or orders_update, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The parenthetical examples give some context for when to use the tool, and the description points to inventory_behaviour for stock control. However, it does not name alternatives or state when not to use this tool versus creating a draft order or updating an existing order.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_orders_getOrders GetB
Read-onlyIdempotent

Get one order. Note: products[].id values are 64-bit; they are returned as-is (treat as strings). HTTP: GET /orders/{id} Required scope: read_orders API version: 2025-03 (unstable if noted)

NameRequiredDescriptionDefault
idYesOrder ID
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
aggregatesNoComma-separated extras: fulfillment_orders, custom_fields (price_tables β†’ unstable)
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, openWorld, so the safety profile is covered. The description adds real context beyond that: the required OAuth scope (read_orders), the HTTP route, the API version/stability marker, and a 64-bit precision caveat for products[].id. Only the return shape and pagination/size behaviour are left unstated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the action, then the precision caveat, then request metadata. Nothing is padded, though the HTTP method/route line is largely redundant for an agent that only needs the tool name and arguments.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of describing returns, and beyond the products[].id caveat it says nothing about the order object's shape or the effect of fields/aggregates trimming. For a simple single-resource read with full schema coverage and rich annotations, this is adequate but leaves visible gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters (id, fields, aggregates, response_format) are already documented in the schema, making 3 the baseline. The description adds no parameter-level semantics β€” the 64-bit note concerns returned data, not inputs β€” so it neither compensates for nor extends the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Get one order" states a specific verb and resource, and the singular scope implicitly separates it from tiendanube_orders_list. It stops short of naming the sibling or spelling out what makes a single-order fetch distinct (e.g. full detail, aggregates), so it is clear but not fully differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this versus tiendanube_orders_list, tiendanube_draft_orders_get, or the related order sub-resource tools. The only usage signal is that an id is required, which the schema already enforces.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_orders_history_editions_getOrders History Editions GetA
Read-onlyIdempotent

Get the log of product/quantity edits applied to an order. HTTP: GET /orders/{id}/history/editions Required scope: read_orders API version: 2025-03

NameRequiredDescriptionDefault
idYesOrder ID
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: the required OAuth scope (read_orders) and the API version (2025-03), both of which affect whether a call will succeed. It does not cover pagination or result size, which is a minor gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the purpose, followed by endpoint, scope, and version. Every line carries information an agent can act on, with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only log retrieval with fully documented parameters and no output schema, the description covers purpose, auth scope, and API version. It stops short of describing what an edition log entry contains or how results are ordered or paginated, which would help the agent interpret the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with all three parameters documented including the fields and response_format semantics. The description adds no parameter-level detail beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: 'Get the log of product/quantity edits applied to an order,' which is far more precise than the title 'Orders History Editions Get'. It does not explicitly distinguish itself from the sibling tiendanube_orders_history_values_get, leaving the agent to infer the difference between the two history endpoints.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the resource description and the 'Required scope: read_orders' line, which tells the agent the permission needed. However, there is no statement of when to prefer this over tiendanube_orders_history_values_get or tiendanube_orders_get, and no exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_orders_history_values_getOrders History Values GetB
Read-onlyIdempotent

Get the history of financial values of an edited order. HTTP: GET /orders/{id}/history/values Required scope: read_orders API version: 2025-03

NameRequiredDescriptionDefault
idYesOrder ID
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

B3.4/5.0
Behavior3/5

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 safety profile is covered. The description contributes the required scope (read_orders) and API version, which is genuinely useful context, but says nothing about pagination, result volume, or what happens for orders that were never edited.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the purpose, followed by endpoint, scope and version. The HTTP path and version lines are boilerplate but cheap; nothing is redundant with the name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, three-parameter tool with full schema coverage and no output schema, the essentials are present. The notable gap is that 'financial values' is never unpackedβ€”an agent cannot anticipate whether it returns totals, deltas, currency, or timestamps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with id, fields and response_format all documented in the schema, so the baseline of 3 applies. The description adds no semantics beyond the schemaβ€”it never explains that 'id' is the edited order's ID or how the fields filter interacts with this nested resource.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get the history of financial values of an edited order') and pins the endpoint. The 'financial values' qualifier separates it in spirit from tiendanube_orders_history_editions_get, but the sibling is never named, so the agent must infer the split.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'of an edited order' implicitly scopes usage to orders that have been edited, which is a real condition. However, there is no explicit guidance on when to choose this over tiendanube_orders_get or tiendanube_orders_history_editions_get, nor any prerequisite statement beyond the scope line.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_orders_invoices_createOrders Invoices CreateB

Attach an invoice to an order. Body per the API reference. HTTP: POST /orders/{id}/invoices Required scope: write_orders API version: 2025-03

NameRequiredDescriptionDefault
idYesOrder ID
invoiceYesInvoice object (fields per the API reference)

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare it is a non-read-only, non-destructive, non-idempotent open-world call, so the safety profile is covered; the description usefully adds the required OAuth scope and API version. It stays silent on the traits that matter for this specific call, notably that non-idempotent repeated posts may duplicate invoices and what happens when the order is already invoiced or invalid.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines with the purpose front-loaded, then endpoint, scope, and version as scannable metadata. "Body per the API reference" is low-information filler but cheap in length, so structure is not harmed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation endpoint with no output schema and an opaque free-form body, the definition leaves the agent unable to construct a valid call without consulting external docs it may not have. It should at least sketch the invoice object's expected keys or state what the response confirms.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description only says "Body per the API reference," which adds no meaning beyond the schema. The schema's own coverage is nominal: the invoice parameter is an unconstrained object described as "fields per the API reference," so the real payload shape is documented nowhere the agent can see. This is exactly the case where the description should compensate and does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource ("Attach an invoice to an order") plus the concrete endpoint POST /orders/{id}/invoices, so the agent knows exactly what it does. It does not address how it differs from nearby siblings such as tiendanube_external_invoices_create or tiendanube_orders_invoices_list, leaving a small ambiguity for a sibling-heavy namespace.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The required scope (write_orders) is a genuine usage precondition, which is more than nothing. However, there is no statement of when to use this versus the external-invoice or invoice-list siblings, nor any exclusion or sequencing guidance (e.g. whether the invoice must exist first).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_orders_invoices_listOrders Invoices ListA
Read-onlyIdempotent

List invoices attached to an order. HTTP: GET /orders/{id}/invoices Required scope: read_orders API version: 2025-03 Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
idYesOrder ID
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and openWorld, so the safety profile is covered. The description adds genuinely new context: the required OAuth scope (read_orders) and the API version, which affect whether the call will succeed. With no output schema, the return envelope is also useful disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short, front-loaded lines: purpose first, then endpoint, scope, version, and return shape. No filler sentences and nothing repeated from the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by naming the response envelope fields, and the fully documented parameters plus scope requirement make the tool callable without further inference. It could go further by noting the external-invoice per_page cap or how it differs from external_invoices_list, but nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with page/per_page/fields/response_format all documented in the schema itself, so the baseline is 3. The description's mention of the paginated envelope ({count, page, per_page, has_more, next_page}) hints at pagination but adds no syntax or constraint detail beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List invoices attached to an order'), which is clearly distinct from the sibling tiendanube_orders_invoices_create and reasonably distinct from tiendanube_external_invoices_list by scoping to a single order. It stops short of explicitly naming the alternative invoice-listing tool, so it is clear but not fully differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer it should call this when it needs the invoices belonging to one order. There is no explicit when-to-use, when-not-to-use, or pointer to tiendanube_external_invoices_list for standalone invoices. The 'Required scope: read_orders' line is a prerequisite, not selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_orders_listOrders ListA
Read-onlyIdempotent

List orders. Hard cap: page * per_page must be <= 10000 β€” for deeper history slice by created_at/updated_at ranges or use since_id. HTTP: GET /orders Required scope: read_orders API version: 2025-03 (unstable if noted) Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
qNoSearch by order number, customer name/email, etc.
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
statusNoOrder status (open | closed | cancelled | any)
channelsNoComma-separated: form, store, api, meli, pos
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
since_idNoOnly return records with an ID greater than this value (cursor pagination)
total_maxNoMaximum order total
total_minNoMinimum order total
aggregatesNoComma-separated extras: fulfillment_orders, custom_fields (price_tables switches to the unstable API)
customer_idNoOnly orders of this customer
created_at_maxNoCreated at or before (ISO 8601)
created_at_minNoCreated at or after (ISO 8601, e.g. 2025-01-31T00:00:00-03:00)
updated_at_maxNoUpdated at or before (ISO 8601)
updated_at_minNoUpdated at or after (ISO 8601)
payment_methodsNoComma-separated payment method names
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json
shipping_statusNoShipping status (unpacked | unfulfilled | partially_fulfilled | fulfilled)
financial_statusNoPayment status (pending | authorized | paid | partially_paid | voided | refunded | partially_refunded)

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), yet the description still adds real value: the page*per_page <= 10000 hard cap, the read_orders scope requirement, the API version and its instability caveat, and the response envelope. That is substantive operational context beyond 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five compact lines: purpose first, then the highest-risk constraint, then transport/auth/version metadata, then the return shape. No sentence is redundant and nothing important is buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 19-parameter read tool with no output schema, the description still discloses the response envelope, auth scope, version risk and the pagination ceiling, which is what an agent most needs. It stops short of describing how the many filters compose or which are recommended for typical queries.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 19 parameters including enums and the page/per_page constraint. The description repeats the cap rule but adds no filter-combination or format semantics of its own; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ("List orders") plus the underlying endpoint GET /orders and required scope. It is clear against tiendanube_orders_get, but it never explicitly distinguishes itself from tiendanube_draft_orders_list or notes what it does not return, leaving a small inference gap.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The deep-history workaround (slice by created_at/updated_at or use since_id) is genuinely actionable usage guidance for the pagination cap. However, there is no guidance on when to pick this over sibling list/get tools or which filters to prefer for common tasks.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_orders_openOrders OpenA

Re-open a closed order. HTTP: POST /orders/{id}/open Required scope: write_orders API version: 2025-03

NameRequiredDescriptionDefault
idYesOrder ID

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false, openWorldHint=true). The description adds real context beyond them: the required write_orders OAuth scope and the API version, which is exactly the auth-needs disclosure the rubric rewards. It still doesn't say what the order's status becomes after reopening or what happens if the order isn't closed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The action is front-loaded in the first sentence, and each subsequent line (HTTP endpoint, required scope, API version) carries distinct operational information with zero filler. Nothing is repeated from the title or schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter state-transition tool with no output schema and a fully-described parameter, the description covers action, precondition, auth scope, and API version. The only material gap is the resulting state change and error behavior, which an agent would have to infer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter (`id`) with 100% schema description coverage ("Order ID"). The description adds nothing about the id format, accepted types, or lookup semantics, so the schema does all the work β€” baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise verb+resource+precondition: "Re-open a closed order." That is unambiguous and clearly distinct from the sibling tiendanube_orders_close and from tiendanube_orders_update. It stops short of naming sibling alternatives explicitly, so it lands at 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase "a closed order" implies a precondition (the order must currently be closed), which is useful selection guidance. However, it never states when not to use it, what to do for orders in other states, or which sibling to pick instead β€” the usage context is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_orders_subscriptions_getOrders Subscriptions GetA
Read-onlyIdempotent

List subscriptions linked to an order. HTTP: GET /orders/{id}/subscriptions Required scope: read_orders API version: 2025-03

NameRequiredDescriptionDefault
idYesOrder ID
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds genuinely non-redundant context: the exact HTTP endpoint and the read_orders scope an agent must hold before calling, which annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the one-sentence purpose followed by endpoint, scope and version. Nothing is padded and every line carries usable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only sub-resource listing with full schema coverage and annotations, the description covers what an agent needs to invoke it. Only minor details such as empty-result behavior or pagination are absent, and neither is critical here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and every parameter (id, fields, response_format) is documented in the schema itself. The description adds no parameter-level meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"List subscriptions linked to an order" names a specific verb (list) and resource (subscriptions scoped to an order), which separates it from tiendanube_billing_subscriptions_get and the other order sub-resource tools. It does not explicitly name an alternative, but the scoping is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description supplies the required scope (read_orders) and API version, which are real preconditions for calling. However, it never says when to use this instead of related tools like tiendanube_orders_get or billing subscriptions, so selection guidance is only implied by the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_orders_updateOrders UpdateB
Idempotent

Update an order's owner_note, status or gateway_link. HTTP: PUT /orders/{id} Required scope: write_orders API version: 2025-03

NameRequiredDescriptionDefault
idYesOrder ID
statusNoOrder status (open | closed | cancelled)
owner_noteNoPrivate store note
gateway_linkNoPayment gateway link
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare that this is not read-only, is idempotent, is open-world, and is not destructive. The description adds useful context by naming the PUT endpoint and the required write_orders scope, but it does not explain side effects, unspecified-field behavior, or status-change implications.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, front-loaded, and free of waste. It states the action first, then endpoint, scope, and API version in compact lines.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description plus annotations and complete schema provide enough to call the tool correctly. The main omission is sibling routing guidance, especially around status updates versus tiendanube_orders_open, tiendanube_orders_close, and tiendanube_orders_cancel.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema itself documents all five parameters, including the status enum and the additional_fields merge behavior. The description names three updatable fields but adds no semantic detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: update an order's owner_note, status, or gateway_link. That is clear, but it does not distinguish this generic update from specialized siblings like tiendanube_orders_open, tiendanube_orders_close, and tiendanube_orders_cancel, which also affect order status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives the required scope and HTTP endpoint but no guidance on when to use this tool versus the specialized order status tools. An agent must infer that this tool handles note/link/status updates while siblings handle specific status transitions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_pages_createPages CreateB

Create a page. HTTP: POST /pages Required scope: write_content API version: 2025-03

NameRequiredDescriptionDefault
i18nYesPer-language content: {es: {title, content (HTML), seo_handle, seo_title, seo_description}, pt: {...}}
publishNoWhether the page is published
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=false, non-idempotent, and openWorld, so the mutation profile is known. The description adds useful operational context β€” the HTTP endpoint and required scope write_content β€” but says nothing about publish defaults, slug/handle collisions, or failure modes for a non-idempotent create.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines with the core action front-loaded and no filler prose. The HTTP method/path and API version lines are slightly redundant with the tool name but are legitimately useful for debugging and version pinning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a create tool with a nested per-language i18n object, the description does not clarify required sub-fields, whether content must be HTML, or what publish defaults to. The rich schema partially compensates and there is no output schema to explain, but the definition is only minimally sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the i18n, publish, and additional_fields parameters are all documented in the schema, so the baseline of 3 applies. The description adds no parameter-level meaning beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ("Create a page") that, combined with the tool name, unambiguously separates it from siblings like pages_update, pages_get, and pages_list. It does not explicitly name those siblings or scope boundaries, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to create a page versus alternatives, no prerequisites about i18n content requirements, and no note on how this relates to pages_update or blog posts. The only actionable context is the required OAuth scope (write_content), which is a prerequisite but not usage routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_pages_deletePages DeleteB
DestructiveIdempotent

Delete a page. HTTP: DELETE /pages/{pageID} Required scope: write_content API version: 2025-03

NameRequiredDescriptionDefault
pageIDYesPage ID

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description usefully adds the auth scope (write_content), the raw HTTP verb, and the API version, but does not disclose irreversibility, side effects on linked content, or failure behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short, front-loaded lines with zero filler: action first, then endpoint, scope, and API version. Nothing to trim and nothing important buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter destructive endpoint whose annotations already flag destructiveness and idempotency, the description plus scope gives an agent enough to call it correctly. The remaining gap is what deletion implies for the page's content and how errors surface, which a richer definition would mention.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter and schema description coverage is 100%, so the schema already documents pageID fully. The description merely restates it in the path template; nothing is added about accepted ID formats or whether a numeric ID differs from a slug.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Delete a page') and the endpoint DELETE /pages/{pageID}, which unambiguously separates it from the pages_list/get/create/update siblings. It stops short of explicitly contrasting against pages_update (e.g., that this is permanent removal rather than unpublishing), so it lands just below the top mark.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use / when-not-to-use guidance beyond the implicit 'this removes a page'. The 'Required scope: write_content' line is a prerequisite, not a routing hint, and nothing tells the agent whether a non-existent or already-deleted page errors out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_pages_getPages GetA
Read-onlyIdempotent

Get one page. HTTP: GET /pages/{pageID} Required scope: read_content API version: 2025-03

NameRequiredDescriptionDefault
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
pageIDYesPage ID
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered structurally. The description adds the required authorization scope (read_content) and API version, which is genuinely useful context, but nothing about behavior on a missing/invalid page ID.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the purpose, then endpoint, scope, and version. Nothing redundant and no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-resource read with full schema coverage and annotations covering safety, the description is nearly sufficient. A brief note on what a page record contains or the response_format trade-off would close the remaining gap, though the response_format param is already described in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents pageID, fields, and response_format (including the enum). The description only reinforces that pageID is a path parameter via the endpoint notation, adding little beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get one page') and pins it to the HTTP endpoint GET /pages/{pageID}, which distinguishes it from the sibling tiendanube_pages_list. It does not explicitly name the list sibling, but the singular framing makes the distinction obvious.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by 'Get one page' versus the sibling list tool. The description does give a required scope (read_content), which is a practical prerequisite, but it never states when to prefer this over pages_list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_pages_listPages ListA
Read-onlyIdempotent

List store pages (about, FAQ, policies...). HTTP: GET /pages Required scope: read_content API version: 2025-03 Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag readOnly/idempotent/non-destructive, so the bar is lower, yet the description still adds real context: the HTTP endpoint, the required permission scope (read_content), the API version, and the exact response envelope shape. That goes meaningfully 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four compact lines with the purpose front-loaded and supporting metadata (scope, version, shape) appended. No wasted prose, though the endpoint/version lines are reference-style rather than decision-relevant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully spells out the pagination envelope (count, page, per_page, has_more, next_page, items). Combined with the read-only annotations and fully documented schema, an agent has what it needs to invoke this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including page/per_page constraints, field selection, and the response_format enum, so the schema carries the parameter burden. The description adds no parameter-level meaning beyond that baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("List store pages") and gives concrete examples of what a page is (about, FAQ, policies), which disambiguates the resource. The list-vs-get distinction from tiendanube_pages_get is implied by naming but not stated explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not guidance and no named alternative (e.g. "use pages_get for a single page"). Usage is only inferable from the verb and the required scope declaration.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_pages_updatePages UpdateB
Idempotent

Update a page. HTTP: PUT /pages/{pageID} Required scope: write_content API version: 2025-03

NameRequiredDescriptionDefault
i18nNoPer-language content: {es: {title, content (HTML), seo_handle, seo_title, seo_description}}
pageIDYesPage ID
publishNoWhether the page is published
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare non-readOnly, idempotent, non-destructive and open-world, so the safety profile is covered. The description adds real value by disclosing the required OAuth scope (write_content), the API version and the HTTP verb, but it never states whether the update is a full replace or a partial merge - a material ambiguity for a PUT-style call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the action, followed by endpoint, scope and version - each line carries operational value with no filler. Slightly telegraphic but efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a nested i18n object, an escape-hatch additional_fields parameter and no output schema, the agent still needs to know what an update returns and whether omitted fields are cleared or preserved. The scope/version metadata is helpful, but these behavioral gaps remain for a mutation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with i18n, pageID, publish and additional_fields each documented in the schema. The description adds nothing beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Update a page") plus the exact endpoint, so the agent can distinguish it from pages_create, pages_get and pages_delete. It stops short of explicitly naming the sibling actions, leaving differentiation to the tool name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the verb and the required write_content scope, which signals a mutation requiring write authorization. There is no statement of when to prefer this over pages_create/pages_get or of any preconditions such as the page needing to exist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_payment_options_listPayment Options ListA
Read-onlyIdempotent

List the payment options available in the store. HTTP: GET /payment-options Required scope: read_payment_options API version: 2025-03 Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds real value beyond that: the required OAuth scope, the pinned API version (2025-03), and the exact pagination envelope returned, which lets an agent plan the call and parse the result without guessing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the purpose, then endpoint, scope, version, and response shape. Nothing is repeated from the annotations and every line is actionable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully discloses the return envelope ({count, page, per_page, has_more, items[]}) and the auth scope. The only gap for an agent deciding between payment-related list tools is the missing differentiation from siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so page, per_page, fields, and response_format are all documented in the schema. The description mentions none of them and adds no extra semantics, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the payment options available in the store'), which is clear on its own. However, the sibling set contains near-neighbors like tiendanube_payment_providers_list and tiendanube_payment_provider_options_list, and the description does nothing to distinguish this tool from them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Prerequisites are provided (required scope read_payment_options), which implies when the call will succeed, but there is no explicit guidance on when to prefer this over payment_providers_list or provider_options_list, nor any exclusions. Usage must be inferred from the name and scope.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_payment_provider_options_listPayment Provider Options ListA
Read-onlyIdempotent

List the options of the app's payment providers. HTTP: GET /payment_providers/options Required scope: read_payments API version: 2025-03 Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/openWorld, and the description adds genuinely non-obvious context: it requires the read_payments scope and targets API version 2025-03. It also discloses the response envelope, which annotations never cover; it stops short of noting rate limits or what an 'option' actually contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short, front-loaded lines with no filler; the purpose line comes first and the metadata lines are scannable. The metadata is formatted as fragmented labels rather than prose, which is efficient but slightly telegraphic.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so documenting the {count, page, per_page, has_more, items[]} envelope is real added value, and the auth scope is stated. What remains unexplained is the semantic content of an 'option' and how this differs from sibling payment listing tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with page/per_page/fields/response_format all documented, so the schema carries the parameter burden. The description adds nothing beyond what the schema states, so the 3 baseline applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Uses a specific verb ('List') plus a concrete resource ('options of the app's payment providers') and pins it with the exact endpoint GET /payment_providers/options. However, it never distinguishes itself from the very similarly named siblings tiendanube_payment_options_list and tiendanube_payment_providers_list, so an agent must infer which one returns 'provider options'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance, and no mention of the near-duplicate payment_options_list / payment_providers_list siblings. The only implicit cue is 'of the app's payment providers', which requires the agent to already know the domain model.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_payment_providers_createPayment Providers CreateA

Register a payment provider. HTTP: POST /payment_providers Required scope: write_payments API version: 2025-03

NameRequiredDescriptionDefault
nameYesInternal provider name
enabledNoWhether the provider is enabled
featuresNoProvider feature flags
logo_urlsNoLogo URLs by size
rates_urlNoRates/fees URL
descriptionNoDescription
public_nameNoName shown to buyers
support_urlNoSupport URL
checkout_js_urlNoURL of the checkout JavaScript
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body
configuration_urlNoMerchant configuration URL
checkout_payment_optionsNoPayment options offered at checkout

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the mutation profile (readOnly=false, idempotent=false, destructive=false, openWorld=true), and the description adds genuinely new operational context: the required OAuth scope write_payments, the POST endpoint, and the API version. It does not mention duplicate-creation risk or error behavior, which keeps it below a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the action, followed by endpoint, scope, and version. Every line carries distinct information with no repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter create with nested objects, the description plus a fully documented schema and mutation annotations cover what an agent needs to invoke it. The one gap is that no output schema exists and the description says nothing about what is returned or what happens to an existing provider with the same name.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and each of the 12 fields (name, enabled, logo_urls, checkout_payment_options, etc.) is documented in the schema, so the baseline of 3 applies. The description adds no field-level meaning or guidance on required-vs-optional semantics beyond what the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Register a payment provider" gives a specific verb (register/create) and resource, and the sibling set (payment_providers_list/get/update/delete) makes the create-vs-read-vs-modify split obvious. It does not explicitly name a sibling, but the operation type is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the verb and the required scope write_payments; there is no statement of when to call this versus tiendanube_payment_providers_update, or whether a provider should exist first. The scope requirement gives a useful precondition but not routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_payment_providers_deletePayment Providers DeleteA
DestructiveIdempotent

Delete a payment provider. HTTP: DELETE /payment_providers/{id} Required scope: write_payments API version: 2025-03

NameRequiredDescriptionDefault
idYesProvider ID

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered. The description adds useful authorization context by naming the required write_payments scope and the API version and endpoint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: the action comes first, followed by the HTTP endpoint, required scope, and API version. There is no redundant or filler text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter delete operation with annotations covering destructive and idempotent behavior, the description is largely complete. It does not describe side effects or return behavior, but no output schema exists and the core invocation details are present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single id parameter is already documented as "Provider ID." The description only repeats it as a path placeholder in DELETE /payment_providers/{id}, so it adds little beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: "Delete a payment provider." It also gives the exact HTTP endpoint, making it clearly distinguishable from sibling payment provider operations such as get, list, create, and update.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says only that this deletes a payment provider. It gives no explicit guidance on when to use deletion versus alternatives such as updating or disabling a provider, and it does not mention preconditions or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_payment_providers_getPayment Providers GetA
Read-onlyIdempotent

Get one payment provider. HTTP: GET /payment_providers/{id} Required scope: read_payments API version: 2025-03

NameRequiredDescriptionDefault
idYesProvider ID
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent and non-destructive, so the safety profile is covered. The description adds genuinely non-structured context: the required read_payments scope and the API version 2025-03, which are useful for auth planning and version-drift awareness.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the verb+resource, followed by endpoint, scope and API version on separate lines. No filler, though the HTTP line largely restates the schema's required id.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple three-parameter read with full schema coverage and a clear annotation set, the description covers scope and version. It stops short of describing what a payment provider payload contains, but with no output schema that is a modest gap for a getter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so id, fields and response_format are all documented in the schema itself. The description adds no meaning beyond that (for example, that id is a path parameter is only visible via the HTTP line), so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: "Get one payment provider", which clearly distinguishes a single-fetch from the sibling tiendanube_payment_providers_list. The distinction is made by the word "one" rather than an explicit statement, so it is one notch short of fully explicit sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: fetch a single provider, presumably when you already have its id. There is no explicit statement of when to prefer this over tiendanube_payment_providers_list or tiendanube_payment_provider_options_list, and no prerequisites beyond the required scope.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_payment_providers_listPayment Providers ListA
Read-onlyIdempotent

List payment providers registered by the app. HTTP: GET /payment_providers Required scope: read_payments API version: 2025-03 Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safety profile is covered. The description adds genuinely new behavioral context: the required OAuth scope (read_payments) and the pinned API version (2025-03), both of which affect whether a call will succeed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the purpose, then endpoint, scope, version, and response shape. No filler; each line conveys a distinct operational fact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the inline response shape ({count, page, per_page, has_more, next_page?, items[]}) usefully tells the agent what comes back and that pagination exists. Auth scope and API version are covered. Minor gaps remain: whether inactive/uninstalled providers appear and whether any filtering is supported.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and all four parameters (page, per_page, fields, response_format) are documented in the schema with defaults, bounds, and examples. The description adds nothing about parameters, so baseline 3 applies β€” the schema does all the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List payment providers') plus a scoping qualifier ('registered by the app') that narrows the result set. It does not explicitly distinguish itself from the nearby tiendanube_payment_providers_get or tiendanube_payment_options_list / tiendanube_payment_provider_options_list siblings, which an agent could easily confuse.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the verb 'list' and the 'registered by the app' qualifier; there is no explicit statement of when to choose this over tiendanube_payment_providers_get or the payment options tools in the same family. The agent can infer it is the enumeration counterpart to the get tool, but must do the work itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_payment_providers_updatePayment Providers UpdateA
Idempotent

Update a payment provider. HTTP: PUT /payment_providers/{id} Required scope: write_payments API version: 2025-03

NameRequiredDescriptionDefault
idYesProvider ID
nameNoInternal provider name
enabledNoWhether the provider is enabled
featuresNoProvider feature flags
logo_urlsNoLogo URLs by size
rates_urlNoRates/fees URL
descriptionNoDescription
public_nameNoName shown to buyers
support_urlNoSupport URL
checkout_js_urlNoURL of the checkout JavaScript
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body
configuration_urlNoMerchant configuration URL
checkout_payment_optionsNoPayment options offered at checkout

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds value beyond them by disclosing the OAuth scope required (write_payments), the concrete endpoint, and the API version (2025-03), which an agent needs before attempting the call. It stops short of explaining partial-vs-full update semantics for the 13 optional fields, which is the main remaining behavioral unknown.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines with zero filler, front-loaded with the action and followed by endpoint, scope and version. Every line is scannable and earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 13-parameter mutation with nested objects and no output schema, the description leaves the agent guessing about partial-update behavior (are omitted fields preserved or cleared?) and what the response contains. The auth scope and endpoint are covered, so it is adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all 13 parameters including id, enabled, features, logo_urls and additional_fields are already documented in the schema. The description adds no semantics of its own about which fields are mutable or how additional_fields is merged, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Update a payment provider") plus the underlying HTTP operation PUT /payment_providers/{id}, which pins down exactly which object family is mutated among the many siblings. It does not explicitly differentiate itself from tiendanube_payment_providers_get/create/delete, but the verb makes the distinction obvious without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the verb "Update"; there is no statement of when to prefer this over payment_providers_create or when to fall back to get first. The "Required scope: write_payments" line gives a genuine auth prerequisite, which is the only real usage condition supplied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_price_tables_categories_addPrice Tables Categories AddB

Assign categories to a price table. Body shape per the API reference. HTTP: POST /products/price-tables/{table_id}/categories Required scope: write_products API version: 2025-03

NameRequiredDescriptionDefault
payloadYesRequest body (object or array)
table_idYesPrice table ID

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare non-readOnly, non-destructive, non-idempotent, and open-world behavior. The description adds the required OAuth scope (write_products) and the exact HTTP endpoint, which are useful. However, it doesn't explain whether assigning categories is additive, what happens on duplicate assignment (despite idempotentHint=false), or what the response contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the purpose, then endpoint and scope. Efficient, but the sentence 'Body shape per the API reference' occupies space without conveying anything actionable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema, the description covers scope and HTTP details but leaves the most critical unknown – the payload structure – completely to an external reference, and says nothing about the effect of duplicate assignments. Adequate but with significant gaps for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. But the payload schema is essentially opaque ('Request body (object or array)'), and the description explicitly punts with 'Body shape per the API reference,' adding no meaning beyond the generic schema description. table_id is adequately documented in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Assign categories to a price table.' An agent can tell it apart from the sibling list/update/remove operations by implication of 'add', though the description never explicitly names those alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides required scope and endpoint, but gives no guidance on when to use this versus price_tables_categories_update or _remove, nor any prerequisite conditions beyond the scope string. The agent must infer usage from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_price_tables_categories_listPrice Tables Categories ListA
Read-onlyIdempotent

List categories assigned to a price table. HTTP: GET /products/price-tables/{table_id}/categories Required scope: read_products API version: 2025-03 Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
table_idYesPrice table ID
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, and the description adds genuinely non-structured context: the required `read_products` scope and the API version. The response envelope is also spelled out, which helps an agent anticipate pagination fields like has_more and next_page.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five compact lines, purpose first, then endpoint, scope, version, and return shape. Every line carries operational information an agent would otherwise have to infer.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by summarizing the response envelope, and schema coverage for all five params is complete. Minor gaps remain around error behavior and pagination limits (page*per_page <= 10000 is only in the schema).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so page, per_page, fields, response_format and table_id are already fully documented. The description adds nothing about parameter behavior beyond the path template, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('List categories assigned to a price table'), which is unambiguous on its own. It doesn't explicitly contrast with the add/update/remove siblings, but the read-only scope is self-evident from 'List'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the HTTP path (GET /products/price-tables/{table_id}/categories) and the required table_id. There is no explicit statement of when to prefer this over price_tables_variants_list or price_tables_customers_list, nor any precondition beyond the scope line.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_price_tables_categories_removePrice Tables Categories RemoveA
DestructiveIdempotent

Remove categories from a price table. Body shape per the API reference. HTTP: DELETE /products/price-tables/{table_id}/categories Required scope: write_products API version: 2025-03

NameRequiredDescriptionDefault
payloadNoRequest body (object or array) identifying what to remove
table_idYesPrice table ID

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is largely covered. The description adds genuinely useful context beyond those: the required scope (write_products), the HTTP method/path, and API version, which help the agent call it correctly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the verb+resource, followed by the endpoint, scope, and version. No padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation the annotations and scope line cover the safety and auth needs, and parameters are schema-documented. The only gap is the undefined payload structure, which is punted to an external reference rather than explained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%; both table_id and payload are documented in the schema itself. The description's 'Body shape per the API reference' is vague and adds no syntax or field meaning for the loosely-typed payload, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Remove categories from a price table'), and the qualifier 'categories' clearly differentiates it from the sibling price-table tools for variants (variants_remove) and customers (customers_remove). The endpoint line reinforces the exact operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The operation is unambiguous, so the correct tool is inferable, but there is no explicit when-to-use vs when-not guidance or mention of alternatives like categories_add/update. The 'Body shape per the API reference' note gives no selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_price_tables_categories_updatePrice Tables Categories UpdateB
Idempotent

Update categories entries of a price table (e.g. prices). Body shape per the API reference. HTTP: PUT /products/price-tables/{table_id}/categories Required scope: write_products API version: 2025-03

NameRequiredDescriptionDefault
payloadYesRequest body (object or array)
table_idYesPrice table ID

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safety profile (readOnly=false, idempotent=true, destructive=false, openWorld=true), so the bar is lower. The description adds useful auth context ('Required scope: write_products') and pins the API version, but it never explains the crucial semantic for a bulk collection PUT: whether existing category entries not present in the body are replaced/removed or merged, which is exactly what an agent needs before mutating a price table.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Short and front-loaded: action and target first, then HTTP method/path, scope, and API version as scannable metadata. No filler sentences, though the 'Body shape per the API reference' line is a non-statement that occupies space without informing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a write tool with no output schema and an open-world hint, the description covers endpoint, scope, and version, which is adequate metadata. However, it leaves the request body entirely to an external document, so an agent cannot construct a correct call from the definition alone, which is a meaningful gap for the required 'payload' parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters carry descriptions, so baseline is 3. The description adds no meaning beyond the schema for the payload, explicitly deferring ('Body shape per the API reference') on a body schema that is otherwise unconstrained (anyOf object/array with additionalProperties {}), so it does not compensate for the effectively empty payload definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: update the categories entries of a price table, with the exact endpoint PUT /products/price-tables/{table_id}/categories. It is clear enough to separate from price_tables_update, but it does not explicitly distinguish itself from the sibling categories_add / categories_remove operations, which are the most confusable alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the verb 'update' and the PUT endpoint; there is no statement of when to use this instead of categories_add or categories_remove, and no prerequisites beyond the required scope. The write_products scope line is the only concrete gating information provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_price_tables_createPrice Tables CreateB

Create a price table. HTTP: POST /products/price-tables Required scope: write_products API version: 2025-03

NameRequiredDescriptionDefault
nameYesPrice table name
descriptionNoDescription
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false, and the description adds concrete operational context: the HTTP endpoint, the required OAuth scope, and the API version. However, it says nothing about duplicate-name behavior, failure modes, or what the call returns β€” meaningful gaps given the tool is non-idempotent and open-world.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the first line and the remaining lines are short metadata (endpoint, scope, version) with no filler. The HTTP/version lines are of marginal use to a tool-calling agent but are cheap and non-distracting.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema, the description never indicates what comes back (e.g., the created price table's id) or whether the new table is immediately usable by price_tables_variants_add / customers_add. Auth scope and endpoint are covered, so it is adequate but leaves real operational gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters (name, description, additional_fields) are documented in the schema itself, which sets the baseline at 3. The description adds no parameter-level meaning beyond that, and notably does not explain how additional_fields is merged into the request body.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first line states a specific verb and resource ('Create a price table'), which cleanly separates it from the sibling list/get/update/delete price-table tools. It does not explicitly name or rule out alternatives, but the operation is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage-relevant information is the prerequisite 'Required scope: write_products', which tells the agent what auth is needed before calling. There is no statement of when to prefer this over, say, price_tables_update or when creation is inappropriate, so guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_price_tables_customers_addPrice Tables Customers AddB

Assign customers to a price table. Body shape per the API reference. HTTP: POST /products/price-tables/{table_id}/customers Required scope: write_products API version: 2025-03

NameRequiredDescriptionDefault
payloadYesRequest body (object or array)
table_idYesPrice table ID

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a non-readonly, non-idempotent, non-destructive write to an open world. The description adds two useful non-schema facts β€” the required write_products scope and API version 2025-03 β€” but says nothing about behavior on duplicate assignment (which the non-idempotent hint makes relevant) or error cases.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short front-loaded lines: purpose first, then body note, endpoint, scope and version. Minimal waste, though the 'Body shape per the API reference' line is a pointer rather than information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation whose entire semantic content lives in an untyped 'payload' object or array, deferring to an external API reference leaves the agent unable to construct a valid body from the definition alone. With no output schema, the description also gives no signal about what a successful assignment returns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are documented at a baseline level. The description adds nothing about payload contents beyond deflecting to 'the API reference', so it neither compensates for nor worsens the generic 'object or array' payload schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Assign customers to a price table') and the concrete endpoint POST /products/price-tables/{table_id}/customers, so the agent can tell it apart from price_tables_categories_add or price_tables_variants_add. It stops short of explicitly contrasting with the sibling it mirrors, customers_remove.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this versus customers_list, customers_remove, or the categories/variants add tools. The only conditional information is the required write scope, which is a prerequisite rather than usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_price_tables_customers_listPrice Tables Customers ListA
Read-onlyIdempotent

List customers assigned to a price table. HTTP: GET /products/price-tables/{table_id}/customers Required scope: read_products API version: 2025-03 Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
table_idYesPrice table ID
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive behavior, so the safety profile is covered. The description adds real value beyond that by disclosing the required scope (read_products), the API version (2025-03), and the pagination envelope (count, page, per_page, has_more, next_page, items), which is especially useful given 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five short lines, front-loaded with the one-line purpose, followed by endpoint, scope, version, and return shape. No redundant or filler sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only paginated list tool with full schema coverage and no output schema, the description supplies the endpoint, scope, and response envelope, which is what an agent needs to call and parse results. It leaves minor gaps, such as whether filtering or ordering options exist beyond pagination.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter (page, per_page, fields, table_id, response_format) is already documented in the schema. The description only echoes table_id through the path template and adds no syntax or format detail beyond it, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: list customers assigned to a price table. This clearly distinguishes it from tiendanube_customers_list (all customers) and from the sibling add/remove mutation tools for the same sub-resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The list-vs-add/remove distinction is implied by the verb, and the required table_id makes the scoping prerequisite implicit. However, there is no explicit statement of when to prefer this tool over alternatives, and no note on prerequisites such as the price table existing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_price_tables_customers_removePrice Tables Customers RemoveB
DestructiveIdempotent

Remove customers from a price table. Body shape per the API reference. HTTP: DELETE /products/price-tables/{table_id}/customers Required scope: write_products API version: 2025-03

NameRequiredDescriptionDefault
payloadNoRequest body (object or array) identifying what to remove
table_idYesPrice table ID

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered. The description adds the required scope and HTTP method, which is useful, but 'Body shape per the API reference' offloads the most important behavioral detail to an external document.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action, then scope and version in compact lines. The 'Body shape per the API reference' line is a non-statement that consumes space without informing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation with no output schema and an undefined payload shape, the description should clarify what the body must contain and what happens on partial/empty input. It covers scope and version but leaves the critical request shape unresolved.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. However, the payload is an untyped anyOf(object|array) and the description only says 'Body shape per the API reference,' adding no real meaning about what identifiers the body must contain.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Remove customers from a price table.' An agent can distinguish it from customers_add/list and categories_remove/variants_remove by the resource named. It stops short of explicitly contrasting with those siblings, so a 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus customers_add or the categories/variants remove variants, and no prerequisites or side-effect warnings. The required scope (write_products) and API version are context, not usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_price_tables_deletePrice Tables DeleteB
DestructiveIdempotent

Delete a price table. HTTP: DELETE /products/price-tables/{id} Required scope: write_products API version: 2025-03

NameRequiredDescriptionDefault
idYesPrice table ID

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered upstream. The description adds genuinely useful auth context (required scope write_products) and the API version, but says nothing about irreversibility or what happens to attached variant/customer price records.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the action, then endpoint, scope and version. No filler, though the HTTP line is mostly redundant with the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter destructive delete whose annotations already flag destruction and idempotency, the description supplies the missing piece an agent needs before calling it: the required scope. There is no output schema to explain, and the remaining gaps are minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with a single required 'id' parameter already documented as "Price table ID". The path template {id} in the description merely restates what the schema provides, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Delete a price table") plus the underlying endpoint, which clearly distinguishes it from tiendanube_price_tables_create/update/list. It stops short of explicitly naming those siblings as alternatives, so a 5 is not warranted.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to delete versus update or how to remove only variants/customers from a table (the price_tables_variants_remove / customers_remove siblings). The only implied usage comes from the verb itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_price_tables_getPrice Tables GetA
Read-onlyIdempotent

Get one price table. HTTP: GET /products/price-tables/{id} Required scope: read_products API version: 2025-03

NameRequiredDescriptionDefault
idYesPrice table ID
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful context the annotations do not: the required OAuth scope (read_products) and the API version, both of which affect whether the call will succeed. It omits error behavior for an invalid or missing ID.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the action and then the endpoint, scope and version. Every line carries distinct information with zero filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only single-resource getter with full schema coverage and no output schema, the description is adequate but thin: it does not say what happens when the ID is not found, nor how the fields/response_format parameters affect results. Given the low complexity, a 3 is reasonable but there is room to say more.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so id, fields and response_format are already documented in the schema. The description adds no syntax, format, or interaction detail beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Get one price table" states a specific verb (get) and resource (price table), and the word "one" signals single-resource retrieval versus the siblings tiendanube_price_tables_list and tiendanube_price_tables_create. It does not explicitly name the sibling it contrasts with, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the verb – fetch a single price table by ID. There is no statement of when to prefer this over tiendanube_price_tables_list, nor any prerequisite or exclusion. An agent can infer the intent but is not routed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_price_tables_listPrice Tables ListA
Read-onlyIdempotent

List price tables (wholesale / B2B price lists). HTTP: GET /products/price-tables Required scope: read_products API version: 2025-03 Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and openWorld, so the safety profile is covered. The description adds the concrete endpoint, required scope (read_products) and API version, plus the response envelope {count, page, per_page, total?, has_more, next_page?, items[]} β€” meaningful behavioral context, especially since no output schema exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded on the first line, followed by compact metadata lines. Every line carries information; the HTTP verb/path and API version are mildly redundant for an agent given the tool name but are cheap and useful for tracing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully supplies the pagination envelope and count/has_more/next_page fields, and covers scope and version. For a zero-required-parameter list tool with fully documented params, that is nearly everything an agent needs to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and every parameter (page, per_page, fields, response_format) is documented in the schema, so the description does not need to compensate. It adds no parameter meaning beyond the schema, which is the baseline-3 case.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('List price tables') and clarifies the domain with '(wholesale / B2B price lists)', which disambiguates it from unrelated list tools. It doesn't explicitly distinguish itself from adjacent siblings like price_tables_variants_list or price_tables_customers_list, relying on the name and endpoint path to imply top-level tables.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description never says when to use this versus price_tables_get, price_tables_variants_list, or price_tables_customers_list, nor does it state prerequisites beyond the scope token. The B2B/wholesale parenthetical hints at the domain but stops short of routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_price_tables_updatePrice Tables UpdateA
Idempotent

Update a price table. HTTP: PUT /products/price-tables/{id} Required scope: write_products API version: 2025-03

NameRequiredDescriptionDefault
idYesPrice table ID
nameNoPrice table name
descriptionNoDescription
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnlyHint=false, idempotentHint=true, destructiveHint=false), and the description adds two things annotations cannot express: the OAuth scope required (write_products) and the HTTP verb PUT, which signals replacement-of-resource semantics rather than a merge. It stops short of stating explicitly what happens to fields omitted from the body, which is the main behavioral risk for a PUT.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, with the purpose front-loaded and metadata (HTTP method, scope, API version) broken out rather than buried in prose. Every line carries information; nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation endpoint with full schema coverage, annotations, and no output schema, the description supplies what structured fields cannot: endpoint path, required scope, and API version. The remaining gap is the semantics of a partial body under PUT and whether omitted fields are cleared.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and all four parameters carry descriptions, so the schema does the documentation work and the baseline of 3 applies. The description adds nothing about the id/body relationship or how 'additional_fields' is merged into the request body β€” a nested escape hatch that is only explained in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update a price table') and pins down the exact endpoint PUT /products/price-tables/{id}, leaving no ambiguity about what object is mutated. It does not differentiate from nearby siblings that also 'update' price-table sub-resources (tiendanube_price_tables_variants_update, ..._categories_update), which would require the agent to infer from the tool name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Required scope: write_products' line gives a real precondition the agent can check, but there is no explicit guidance on when to use this versus create/delete or the variants/categories sub-resource update tools. Usage is only implied by the verb and endpoint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_price_tables_variants_addPrice Tables Variants AddC

Assign variants to a price table. Body shape per the API reference. HTTP: POST /products/price-tables/{table_id}/variants Required scope: write_products API version: 2025-03

NameRequiredDescriptionDefault
payloadYesRequest body (object or array)
table_idYesPrice table ID

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a non-read-only, non-idempotent, non-destructive open-world write, so the safety profile is covered. The description adds genuinely useful context the annotations don't carry, namely the required write_products scope and the exact endpoint, but it says nothing about what happens when a variant is already in the table or whether the payload replaces existing assignments.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is short and front-loaded with the operation before the mechanics. Every line carries information, though 'Body shape per the API reference' is a pointer with no payload and earns its place only weakly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool whose only real input is a free-form body and which has no output schema, the description leaves out the payload shape, the duplicate/conflict behavior, and the response content. An agent would know the endpoint but not what to put in the request or what to expect back.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is technically 100%, but the payload parameter is an opaque, loosely-typed anyOf with the sole description 'Request body (object or array)'. The description's 'Body shape per the API reference' defers the entire payload contract to an external document an agent may not have, so it does not compensate for the schema's lack of semantic detail despite the high nominal coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: 'Assign variants to a price table', which an agent can distinguish from the sibling list/update/remove variants tools by intent. It stops short of explicitly naming how it differs from tiendanube_price_tables_variants_update, so sibling differentiation is only implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this versus tiendanube_price_tables_variants_update or _remove, nor any prerequisite statement beyond the OAuth scope. The required scope and HTTP verb are stated, but that describes the call mechanics rather than when to choose this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_price_tables_variants_listPrice Tables Variants ListA
Read-onlyIdempotent

List variants assigned to a price table. HTTP: GET /products/price-tables/{table_id}/variants Required scope: read_products API version: 2025-03 Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
table_idYesPrice table ID
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent and non-destructive behavior, so the description doesn't need to re-assert safety. It does add genuinely new context: the read_products scope requirement, the pinned API version, and the paginated response envelope ({count, page, per_page, has_more, next_page, items[]}), which the agent would otherwise have to guess.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five short, front-loaded lines with no filler; the purpose is first and the operational metadata follows. The raw HTTP line and version tag are somewhat redundant for an agent but still cheap and diagnostically useful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema present, the description usefully sketches the return envelope, and the required scope plus API version cover the main operational unknowns. Minor gaps remain around ordering of returned variants and whether values are price-table-specific overrides, but an agent can call it correctly from what's given.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so paging, fields and response_format semantics are already fully documented in the schema. The description adds no parameter-level meaning beyond repeating the endpoint path and the shape of the response, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with a scope qualifier ('variants assigned to a price table'), which implicitly separates it from the generic tiendanube_variants_list and from the sibling categories/customers sub-lists. It stops short of naming the alternative tools explicitly, so the differentiation is inferred rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the name and endpoint but never spelled out: nothing says when to pick this over tiendanube_variants_list or price_tables_customers_list, nor any prerequisite beyond the scope requirement. The stated 'Required scope: read_products' is the only concrete gating information.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_price_tables_variants_removePrice Tables Variants RemoveB
DestructiveIdempotent

Remove variants from a price table. Body shape per the API reference. HTTP: DELETE /products/price-tables/{table_id}/variants Required scope: write_products API version: 2025-03

NameRequiredDescriptionDefault
payloadNoRequest body (object or array) identifying what to remove
table_idYesPrice table ID

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds two genuinely useful items not in annotations: the required write_products scope (an auth requirement) and the API version, but it says nothing about whether the removed variants are recoverable or what the response contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines with the action front-loaded and no filler. The telegraphic style is efficient, though the line-per-fact layout reads more like a stub than a guided description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation with no output schema, the definition is only partly adequate: the auth scope is stated, but the request payload shape is punted to an external API reference, leaving the agent unable to construct a correct call from the available information alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are documented structurally. The description adds no meaning beyond that β€” 'Body shape per the API reference' defers to an external document the agent cannot read, and the payload schema itself only says 'object or array identifying what to remove', leaving the actual field shape unspecified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Remove variants from a price table'), which cleanly distinguishes it from siblings like variants_add, variants_update, and variants_list. It does not explicitly call out the removal scope (e.g. bulk vs single) but the core action is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this versus variants_update, categories_remove, or customers_remove, nor any stated preconditions. The HTTP endpoint and scope hint at the operation's context but do not tell the agent when this tool is the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_price_tables_variants_updatePrice Tables Variants UpdateC
Idempotent

Update variants entries of a price table (e.g. prices). Body shape per the API reference. HTTP: PUT /products/price-tables/{table_id}/variants Required scope: write_products API version: 2025-03

NameRequiredDescriptionDefault
payloadYesRequest body (object or array)
table_idYesPrice table ID

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=false, idempotent=true, destructive=false and openWorld=true; the description adds genuinely useful context (required scope write_products, API version 2025-03, PUT endpoint). However, the critical bulk semantics are undisclosed: whether this replaces the entire variant set, upserts by variant_id, or partially patches rows.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines with the action front-loaded and the endpoint, scope and version packed efficiently. Nothing is redundant, but the space saved is spent on metadata rather than on the payload semantics the agent actually needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a bulk mutation with an unconstrained body schema and no output schema, the definition should describe the expected array/object item structure and the replace-vs-merge behavior. Neither is present; 'per the API reference' is a gap, not a specification.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is nominally 100%, but the payload is an untyped object/array with no property definitions, so the schema conveys almost nothing. The description's only parameter guidance is 'Body shape per the API reference', pushing the agent to an external document instead of describing item fields such as variant_id and price.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (update) and resource (variants entries of a price table) with an example of what is being set (prices). It is distinguishable from siblings like tiendanube_price_tables_variants_add/remove, though it never explicitly contrasts with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this bulk endpoint versus the sibling add/remove/update-single variants tools, nor any prerequisite beyond the required scope. The agent must infer selection from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_product_images_createProduct Images CreateA

Add an image from a public URL (src) or Base64 (attachment + filename). jpg/png/gif/webp, max 250 per product. HTTP: POST /products/{product_id}/images Required scope: write_products API version: 2025-03

NameRequiredDescriptionDefault
altNoAlt text β€” i18n object keyed by language code, e.g. {"es": "...", "pt": "...", "en": "..."}
srcNoPublic image URL
filenameNoFile name when using attachment
positionNoPosition in the gallery
attachmentNoBase64 image content
product_idYesProduct ID
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds substantial context beyond the annotations: accepted MIME types (jpg/png/gif/webp), a hard per-product limit of 250 images, the required write_products scope, the underlying endpoint, and the pinned API version. What is missing is failure behavior β€” no statement of what happens when the 250 cap is exceeded, when the URL is unreachable, or whether a successful call appends to the end of the gallery.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four tightly packed lines with the operation first and constraints after; the image formats and 250 cap sit exactly where a caller needs them. The HTTP endpoint line is somewhat boilerplate for an MCP caller, but the scope and API version lines carry real operational value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-purpose mutation with full schema coverage, no output schema, and annotations already declaring it non-destructive and non-idempotent, the description supplies everything an agent needs to call it correctly: two input modes, format allowlist, per-product ceiling, and required scope. Return-value documentation is not needed since no output schema exists and nothing downstream depends on it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds genuine semantic value the schema does not encode: src and attachment+filename are alternative input modes, and filename is only meaningful in the Base64 path. The pairing relationship is the key decision an agent must make and the schema leaves it implicit. alt, position, and additional_fields are left entirely to their schema docs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names a specific verb (add) and resource (image) and states the two supported input modes: public URL via src, or Base64 via attachment plus filename. It is unambiguous what the tool does, but it never names the sibling tiendanube_product_images_upload_unattached, so an agent must infer the boundary between attaching an image to a product and uploading an unattached one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the presence of product_id and a per-product cap of 250 images makes it clear this is the attach-to-existing-product path. There is no explicit when-to-use versus tiendanube_product_images_update vs tiendanube_product_images_upload_unattached, and no stated prerequisite such as the product needing to exist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_product_images_deleteProduct Images DeleteA
DestructiveIdempotent

Delete a product image. HTTP: DELETE /products/{product_id}/images/{id} Required scope: write_products API version: 2025-03

NameRequiredDescriptionDefault
idYesImage ID
product_idYesProduct ID

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint, so the risk profile is covered structurally; the description still adds real value by naming the required OAuth scope (write_products), the HTTP verb/endpoint and the API version. It stops short of saying whether the image is permanently removed or whether it can be restored.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the action, followed by endpoint, scope and API version β€” every line carries distinct operational information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter destructive endpoint with full annotation coverage and no output schema, this is close to sufficient: it gives auth scope, endpoint and version. The only meaningful gap is the consequence of deletion (permanent removal, effect on remaining images/ordering).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both parameters, so the schema already carries 'Image ID' and 'Product ID'. The endpoint template reinforces that both are path parameters, which is a minor addition over the schema; nothing on format or accepted ID types goes beyond it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Delete a product image") and pairs it with the concrete endpoint, so there is no ambiguity against siblings like product_images_update or product_images_create. It does not explicitly name a sibling to prefer in borderline cases, but the operation is unambiguous from the name plus description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the verb: an agent can infer this is the call to remove an existing image, and the scope note (write_products) signals the prerequisite. However, there is no explicit guidance on when-not to use it versus product_images_update (e.g., to detach vs. delete) and no warning about irreversibility.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_product_images_getProduct Images GetA
Read-onlyIdempotent

Get one product image. HTTP: GET /products/{product_id}/images/{id} Required scope: read_products API version: 2025-03

NameRequiredDescriptionDefault
idYesImage ID
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
product_idYesProduct ID
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and open-world, so the safety profile is fully covered. The description adds genuinely new operational context β€” the required OAuth scope 'read_products' and the API version 2025-03 β€” but says nothing about the returned image representation, which matters since no output schema exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the action, then endpoint, scope and API version. Zero filler; every line carries distinct information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-resource read with full annotation coverage and complete schema descriptions, this is nearly sufficient. The only remaining gap is what fields an image object contains and what 'fields' filtering returns, though the schema example partially covers the latter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters (id, product_id, fields, response_format) are already documented. The HTTP path line reinforces that product_id and id are path identifiers, but adds no syntax or format detail beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get one product image'), which unambiguously separates it from tiendanube_product_images_list. It stops short of naming the sibling or clarifying the ID-scoping rule, but the singular 'one' does the differentiation work.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: fetch a single image when you already have both a product_id and an image id. There is no explicit statement of when to prefer this over tiendanube_product_images_list, though the required-scope line gives useful gating context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_product_images_listProduct Images ListA
Read-onlyIdempotent

List images of a product. HTTP: GET /products/{product_id}/images Required scope: read_products API version: 2025-03 Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
srcNoFilter by image URL
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
positionNoFilter by position
since_idNoCursor
product_idYesProduct ID
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and open-world, so the safety profile is covered. The description adds real value beyond that: the required OAuth scope and the pinned API version, plus the pagination envelope that signals this is a paged collection read.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, purpose front-loaded, nothing padded. The HTTP line is mildly redundant with the tool name but is compact and useful for agents mapping to the public API; the return-shape line is dense and earns its space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 8 parameters, no output schema, and a 100%-covered input schema, the description supplies the missing piece (the response envelope: count/page/per_page/has_more/items) plus auth scope and API version. An agent has enough to call this correctly; only explicit sibling routing and paging guidance are absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all eight parameters (src, page, per_page, fields, position, since_id, product_id, response_format) are already documented in the schema. The description only restates product_id as a path variable and adds nothing about filtering or cursor semantics; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ("List images of a product") plus the underlying endpoint, so an agent can distinguish it from the sibling create/update/delete/get image tools without opening a schema. It stops short of explicitly naming those siblings or stating the scope of the list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer this is the read-all operation for a product's images, and "Required scope: read_products" gives a useful prerequisite. There is no explicit guidance on when to prefer this over tiendanube_product_images_get or how to page through large image sets.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_product_images_updateProduct Images UpdateA
Idempotent

Update an image's position, alt text or source. HTTP: PUT /products/{product_id}/images/{id} Required scope: write_products API version: 2025-03

NameRequiredDescriptionDefault
idYesImage ID
altNoAlt text β€” i18n object keyed by language code, e.g. {"es": "...", "pt": "...", "en": "..."}
srcNoNew source URL
positionNoNew position
product_idYesProduct ID
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so the safety profile is largely covered. The description adds auth context (write_products scope) and API versioning, but remains silent on whether omitted fields are preserved or overwritten, and on side effects of replacing 'src'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One functional sentence followed by the endpoint, scope, and version metadata, with zero filler. The purpose statement is front-loaded, and the operational facts are grouped in a scan-friendly block.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With six parameters including a nested i18n object, no output schema, and annotations that cover safety, the description is minimally viable but leaves open questions about partial-update semantics and the effect of 'additional_fields'. A mutation tool with this much schema surface would benefit from one more sentence on how unspecified fields are treated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter including the i18n-shaped 'alt' object and the 'additional_fields' escape hatch is already documented. The description only names three of the six fields at a high level and adds no syntax, format, or interaction detail beyond the schema, so the baseline score applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update an image's position, alt text or source'), making the mutation target and the editable fields unambiguous. It does not explicitly contrast itself with the adjacent siblings ('product_images_create', 'product_images_upload_unattached'), so an agent must infer differentiation from the name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Required scope: write_products' line is a genuine precondition that helps an agent decide whether it may call this at all. However, there is no explicit guidance on when to choose update versus create/upload, nor any exclusion or prerequisite about the image already existing on the product.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_product_images_upload_unattachedProduct Images Upload UnattachedA

Upload an image to the store repository before attaching it to a product. HTTP: POST /products/images Required scope: write_products API version: 2025-03

NameRequiredDescriptionDefault
srcNoPublic image URL
filenameNoFile name when using attachment
attachmentNoBase64 image content
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already disclose that this is a non-read-only, non-idempotent, non-destructive, open-world operation. The description adds useful auth context ('Required scope: write_products') and the HTTP endpoint/API version, though it does not describe the response or repository media constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is four short lines with the purpose front-loaded, followed by endpoint, required scope, and API version. Every line contributes operational context without repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a write operation with annotations and full schema coverage, the description supplies enough context to invoke the endpoint correctly. It leaves some workflow gaps, such as what the upload returns or how the unattached image is later attached, and does not clarify that at least one image source field is practically expected.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already explains src, filename, attachment, and additional_fields. The description adds no parameter-level meaning beyond the schema, which is the baseline expectation when schema coverage is complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Upload an image to the store repository') and clarifies the scope ('before attaching it to a product'). This distinguishes it from sibling product image tools that attach, update, delete, or list images.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'before attaching it to a product' gives clear context for when to use this unattached-upload tool rather than a product-attached image operation. It does not name explicit alternatives or exclusions, so it falls short of full when-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_products_batch_stock_priceProducts Batch Stock PriceA
Idempotent

Bulk-update price, promotional price and inventory levels of many products/variants in one call. Body items: [{id: product_id, variants:[{id, price, promotional_price, inventory_levels:[{location_id, stock}]}]}]. Prefer this over per-variant calls to save rate limit. HTTP: PATCH /products/stock-price Required scope: write_products API version: 2025-03

NameRequiredDescriptionDefault
itemsYesProducts to update: [{id, variants:[{id, price, promotional_price, inventory_levels:[{location_id, stock}]}]}]

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare mutating-but-non-destructive and idempotent; the description adds real value on top with the required write_products scope, the HTTP PATCH /products/stock-price path and the API version, plus the rate-limit rationale for batching. It does not state atomicity (whether a bad item aborts the whole batch) or any per-request item cap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose, then payload shape, then operational metadata in a compact multi-line block with no filler. The payload line partly duplicates the schema's own items description, which is the only wasted content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one required parameter, no output schema and annotations already covering safety/idempotency, the description supplies everything needed to construct a call: payload shape, scope, endpoint and version. Only the response behavior and batch size limits are unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so the baseline is 3; the description earns an extra point by spelling out the nested item shape (id, variants, price, promotional_price, inventory_levels with location_id/stock), making the loosely-typed additionalProperties object actionable. It still does not say whether omitted fields are left untouched or cleared.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (bulk-update) with named resources (price, promotional price, inventory levels) and scope (many products/variants in one call), which is far more precise than the title. It does not, however, separate itself from the other bulk siblings such as tiendanube_variants_batch_update or tiendanube_variants_batch_replace, which also mutate many variants at once.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Prefer this over per-variant calls to save rate limit' gives a clear selection rule and names the class of alternative (per-variant calls such as variants_update_stock). It stops short of saying when NOT to use it (e.g. single-variant edits, or when price-table-specific prices are needed), so the routing guidance is good but incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_products_createProducts CreateA

Create a product (optionally with variants and images). Prices, SKU, weight and stock belong to variants. HTTP: POST /products Required scope: write_products API version: 2025-03

NameRequiredDescriptionDefault
nameYesProduct name β€” i18n object keyed by language code, e.g. {"es": "...", "pt": "...", "en": "..."}
tagsNoComma-separated tags
brandNoBrand
handleNoURL slug β€” i18n object keyed by language code, e.g. {"es": "...", "pt": "...", "en": "..."}
imagesNoImages: [{src:'https://...', position, alt}]
variantsNoVariants. Price/SKU/weight/stock live here, not on the product. Each: {price, promotional_price, stock, stock_management, sku, weight, width, height, depth, values:[{es:'M'}], inventory_levels:[{location_id,stock}]}. Infinite stock = stock null
publishedNoWhether visible in the storefront
seo_titleNoSEO title β€” i18n object keyed by language code, e.g. {"es": "...", "pt": "...", "en": "..."}
video_urlNoVideo URL
attributesNoUp to 3 variant attribute names, each an i18n object (e.g. [{"es":"Talle"},{"es":"Color"}])
categoriesNoCategory IDs
descriptionNoProduct description (HTML allowed) β€” i18n object keyed by language code, e.g. {"es": "...", "pt": "...", "en": "..."}
free_shippingNoFree shipping
seo_descriptionNoSEO description β€” i18n object keyed by language code, e.g. {"es": "...", "pt": "...", "en": "..."}
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body
requires_shippingNoWhether the product needs shipping

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a non-read-only, non-idempotent, non-destructive, open-world call. The description adds genuinely new behavioral context: the exact endpoint (POST /products), the OAuth scope required (write_products) and the API version, plus a warning about where price/stock data must live. It stops short of saying what is returned or how errors/duplicates behave.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the action and scope, followed by the endpoint, permission and version. Nothing is redundant and the most failure-prone detail (variant-level pricing) is placed early.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 16-parameter nested creation tool with no output schema, the definition covers purpose, auth and the variant pitfall but says nothing about the response (e.g. whether the created product with its ID is returned) or failure modes such as duplicate handles/SKUs or validation limits. Adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 16 parameters, including the i18n object shape and the nested variants/images structures. The description's only parameter-level contribution is the 'prices, SKU, weight and stock belong to variants' note, which largely repeats the schema's own variants description, so it stays at the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Create a product') and scopes it ('optionally with variants and images'), which cleanly separates it from products_update, products_delete and variants_create. The clause about prices/SKU/weight/stock belonging to variants is a purposeful distinction rather than filler.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: the variant note hints that adding variants to an existing product belongs to the variant tools, and the required scope signals the permission context. However, there is no explicit when-to-use/when-not, no mention of the sibling to reach for adding variants or images to an existing product, and no note on idempotency or duplicate handling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_products_deleteProducts DeleteA
DestructiveIdempotent

Permanently delete a product with all its variants and images. HTTP: DELETE /products/{id} Required scope: write_products API version: 2025-03

NameRequiredDescriptionDefault
idYesProduct ID

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint/idempotentHint, but the description adds genuinely new behavioral context: the deletion is permanent and cascades to variants and images, plus the required write_products scope and pinned API version. It stops short of stating irreversibility recovery options or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the destructive behavior in the first sentence, then compact HTTP/scope/version metadata. Slightly terse boilerplate lines but each carries operational value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter destructive delete with full annotation coverage and no output schema, the description supplies the necessary consequence, endpoint, and auth scope. Only explicit alternative routing is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single 'id' parameter, so the baseline is 3. The description only references '{id}' via the HTTP path and adds no format or meaning beyond the schema's 'Product ID'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Permanently delete a product') and explicitly scopes the cascade ('with all its variants and images'), which distinguishes it from siblings like tiendanube_variants_delete and tiendanube_product_images_delete.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The destructive scope implies when to use it, but there is no explicit guidance on when not to use it or which sibling to prefer (e.g., deleting only a variant or image). No prerequisites or warnings beyond the scope line.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_products_getProducts GetA
Read-onlyIdempotent

Get one product by ID, including variants, images, categories and attributes. HTTP: GET /products/{id} Required scope: read_products API version: 2025-03

NameRequiredDescriptionDefault
idYesProduct ID
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description still adds real operational context beyond them: the required OAuth scope 'read_products', the underlying GET /products/{id} endpoint, and the pinned API version 2025-03 β€” all relevant to whether a call will be authorized and which schema shape to expect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines: the payload scope is front-loaded, followed by endpoint, scope, and version metadata. Every line carries information an agent can act on; the HTTP line is mildly redundant with the tool name but still useful for scope/endpoint reasoning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only single-resource getter with no output schema, the description tells the agent what comes back (variants, images, categories, attributes) and what auth scope is needed. The remaining gap β€” no mention of error behavior for missing or deleted products or of how large the embedded collections can be β€” is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and all three parameters (id, fields, response_format) are documented in the schema with examples and an enum. The description only restates 'by ID' and adds no format or syntax detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('one product by ID') and enumerates the included sub-resources (variants, images, categories, attributes), which tells an agent what payload to expect. It does not explicitly contrast with the two nearest siblings, products_list and products_get_by_sku, but the singular-by-ID framing makes the distinction inferable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied by 'by ID' versus the list/SKU siblings, but the description never says when to prefer this over tiendanube_products_get_by_sku or tiendanube_variants_get, nor does it mention behavior on an unknown ID. No exclusions or alternatives are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_products_get_by_skuProducts Get By SkuA
Read-onlyIdempotent

Find the product owning a variant with the given SKU. HTTP: GET /products/sku/{sku} Required scope: read_products API version: 2025-03

NameRequiredDescriptionDefault
skuYesVariant SKU
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (which are present), the description provides crucial operational context, including the HTTP method (GET), the exact URI path structure (GET /products/sku/{sku}), the required read scope, and the API version. This informs the agent about how to interact with the endpoint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is maximally concise. It presents the core purpose first, followed by technical metadata (HTTP/Scope/Version) that is necessary for precise execution, all in an efficient manner.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that the input schema is rich and detailed, the description successfully provides all the necessary context for an agent to select this tool, understand its requirements, and execute it correctly without ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Since the schema description coverage is 100%, the definition relies heavily on the structured schema for parameter explanation. The description adds no semantic value beyond confirming what the tool performs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description immediately and specifically states the tool's goal: 'Find the product owning a variant with the given SKU.' This is highly distinct from general product listing or modification tools in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

While it doesn't contrast with alternatives, its specificity (getting by SKU) clearly defines its use case versus general product fetching. It implicitly guides the user to choose this tool when the SKU is the primary known identifier.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_products_listProducts ListA
Read-onlyIdempotent

List products with their variants, images and categories. Supports rich filters. HTTP: GET /products Required scope: read_products API version: 2025-03 Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
qNoSearch text in name/description/SKU
idsNoComma-separated product IDs
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
handleNoExact handle (slug)
sort_byNoSort order, e.g. 'created-at-ascending', 'created-at-descending', 'name-ascending', 'price-descending'
has_skusNoOnly products with SKUs set
languageNoLanguage code used for text search/sorting (es, pt, en)
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
since_idNoCursor: only products with ID greater than this
max_stockNoMaximum stock
min_stockNoMinimum stock
publishedNoFilter by published state
has_weightNoOnly products with weight set
category_idNoOnly products in this category
free_shippingNoFilter by free shipping
created_at_maxNoCreated at or before (ISO 8601)
created_at_minNoCreated at or after (ISO 8601)
has_dimensionsNoOnly products with dimensions set
updated_at_maxNoUpdated at or before (ISO 8601)
updated_at_minNoUpdated at or after (ISO 8601)
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json
has_promotional_priceNoOnly products with promotional price

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and openWorld, so the safety profile is covered; the description adds real value beyond that with the HTTP verb/path, the required read_products scope, and the pinned API version 2025-03. It does not mention rate limits or any pagination ceiling of its own, but the essential operational context is there.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with purpose, then endpoint, scope, version, and return shape β€” easy to scan. "Supports rich filters" is the one weakly-informative fragment, mildly redundant with the schema it sits above.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully spells out the response envelope ({count, page, per_page, total?, has_more, next_page?, items[]}), which is the most valuable thing it could add for a 23-parameter list tool. The scope and API version round it out; only pagination limits and multi-filter interaction are left entirely to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all 23 parameters (search, ids, handle, sort_by, stock ranges, published, date bounds, fields, response_format, etc.) are already documented in the schema. The description adds only the generic phrase "rich filters" and does not explain interaction between filters or cursor vs. page pagination, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("List products") plus the payload detail that variants, images and categories are included, which tells an agent exactly what a call returns at a glance. It stops short of naming the sibling boundary (products_get for a single product, products_get_by_sku, variants_list), so differentiation is inferred rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Supports rich filters" implies this is the filtered/collection retrieval path, and the required scope hints at prerequisites, but there is no explicit when-to-use or when-not-to-use guidance. Nothing tells the agent to prefer products_get when it already has an ID, which is the most likely sibling confusion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_products_updateProducts UpdateA
Idempotent

Update product metadata. Does NOT modify variants; use the variants tools for price/stock/SKU. HTTP: PUT /products/{id} Required scope: write_products API version: 2025-03

NameRequiredDescriptionDefault
idYesProduct ID
nameNoProduct name β€” i18n object keyed by language code, e.g. {"es": "...", "pt": "...", "en": "..."}
tagsNoComma-separated tags
brandNoBrand
handleNoURL slug β€” i18n object keyed by language code, e.g. {"es": "...", "pt": "...", "en": "..."}
imagesNoImages: [{src:'https://...', position, alt}]
variantsNoVariants. Price/SKU/weight/stock live here, not on the product. Each: {price, promotional_price, stock, stock_management, sku, weight, width, height, depth, values:[{es:'M'}], inventory_levels:[{location_id,stock}]}. Infinite stock = stock null
publishedNoWhether visible in the storefront
seo_titleNoSEO title β€” i18n object keyed by language code, e.g. {"es": "...", "pt": "...", "en": "..."}
video_urlNoVideo URL
attributesNoUp to 3 variant attribute names, each an i18n object (e.g. [{"es":"Talle"},{"es":"Color"}])
categoriesNoCategory IDs
descriptionNoProduct description (HTML allowed) β€” i18n object keyed by language code, e.g. {"es": "...", "pt": "...", "en": "..."}
free_shippingNoFree shipping
seo_descriptionNoSEO description β€” i18n object keyed by language code, e.g. {"es": "...", "pt": "...", "en": "..."}
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body
requires_shippingNoWhether the product needs shipping

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare non-read-only, non-destructive, idempotent, open-world, so credit goes to what the description adds: the required OAuth scope (write_products), the underlying HTTP verb, and the pinned API version. What it omits is material for a 17-parameter mutation: whether omitted fields are left untouched or cleared (PUT semantics), and the consequence of sending a partial body.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the purpose and the critical negative constraint before the operational metadata. No sentence is padding; the HTTP path, scope, and API version each carry distinct value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 17-parameter nested mutation with no output schema, the definition is serviceable but thin on the two things an agent most needs: update semantics (full replace vs partial merge, and what happens to unspecified fields) and the reconciliation of the 'variants' property with the stated exclusion. Everything else is adequately covered by the rich schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and every one of the 17 parameters carries an inline description, so the schema already does the heavy lifting and the baseline of 3 applies. The description adds no field-level syntax, defaults, or merge behavior beyond the variants exclusion.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Update product metadata') and immediately bounds the scope with an explicit negative ('Does NOT modify variants'). An agent can distinguish it from the variants_update / variants_batch_update siblings without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the alternative explicitly ('use the variants tools for price/stock/SKU'), which is the single most likely misrouting for this tool. Minor deduction: the schema nonetheless exposes a 'variants' array with price/stock/SKU guidance, so the exclusion is not fully consistent with the tool's own contract, leaving an agent unsure whether passing variants routes them elsewhere.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_promotions_createPromotions CreateB

Create an automatic cart/catalog promotion. Body per the Discount API reference. HTTP: POST /promotions Required scope: write_discounts API version: 2025-03

NameRequiredDescriptionDefault
promotionYesPromotion definition (name, type, conditions, benefits...) per the API reference

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=false, destructive=false, idempotent=false and openWorld=true, so the safety profile is covered. The description adds genuinely useful non-schema context β€” required scope write_discounts and API version 2025-03 β€” but says nothing about what happens after creation (e.g., whether the promotion goes live immediately, or how non-idempotency manifests).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the action, then endpoint, scope and version. No filler whatsoever.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The sole required parameter is an opaque anyOf object with no enumerated properties, and the description defers all structure to an external "Discount API reference" that is not included. For a create tool with no output schema, the agent is given no way to construct a valid body β€” the one thing the description most needed to address.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter already documents itself as "Promotion definition (name, type, conditions, benefits...) per the API reference". The description's "Body per the Discount API reference" merely restates that pointer without adding field-level meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Create an automatic cart/catalog promotion"), and the qualifier "automatic" implicitly separates it from code-based coupon tools among the many siblings. It does not explicitly name the alternatives, but the resource being created is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The required scope (write_discounts) and the word "automatic" imply when this applies, but the description never states when to use this versus tiendanube_coupons_create or tiendanube_discounts_callbacks_upsert, nor any prerequisites. Usage is inferable, not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_promotions_deletePromotions DeleteB
DestructiveIdempotent

Delete a promotion. HTTP: DELETE /promotions/{id} Required scope: write_discounts API version: 2025-03

NameRequiredDescriptionDefault
idYesPromotion ID

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered structurally. The description adds genuinely useful non-schema context: the required write_discounts scope and the pinned API version 2025-03. It stops short of saying whether deletion is permanent, whether related discounts/coupons are affected, or whether confirmation is expected.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Effectively four short lines with the action front-loaded and no filler prose. The HTTP path is mildly redundant with the schema, but the scope and version lines carry real information an agent can act on.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, idempotent delete with one required param and annotations covering the safety profile, the description is minimally sufficient. It omits the return behavior (no output schema exists, so the agent cannot know whether an empty body, a deleted object, or an error-on-missing-id is returned) and any irreversibility note.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter (id, accepting string or number) is documented as "Promotion ID". The description echoes the id in the HTTP path but adds no format, sourcing, or type-coercion detail beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Delete a promotion") that maps cleanly to the tool name and to the sibling set, which contains promotions_list/get/create as well as a separate coupons_delete. It does not explicitly contrast itself with coupons_delete or discounts_callbacks_delete, so an agent must infer that promotions are a distinct resource, but the core purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to delete versus when to instead deactivate or leave a promotion in place, and no mention of prerequisites beyond the OAuth scope. The scope and API version lines are operational metadata, not usage direction, so the agent gets no when/when-not reasoning.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_promotions_getPromotions GetA
Read-onlyIdempotent

Get one promotion. HTTP: GET /promotions/{id} Required scope: read_discounts API version: 2025-03

NameRequiredDescriptionDefault
idYesPromotion ID
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.6/5.0
Behavior4/5

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 genuinely useful non-annotation context: the required OAuth scope 'read_discounts' and the API version '2025-03', both of which affect whether the call will succeed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the action, followed by the HTTP route, scope, and version. No filler; it is telegraphic but every line carries operational information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-resource GET with a fully documented schema and covered safety annotations, the essentials are present. However, the description says nothing about what a promotion record contains or how a missing/invalid id behaves (404), which is the remaining gap for a bare getter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so id, fields, and response_format are all documented at the schema level. The description adds nothing about parameter semantics beyond that, which is the baseline expectation when the schema is complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get one promotion'), which clearly separates it from the sibling tiendanube_promotions_list retrieval of many. It does not name the sibling explicitly, but the singular/plural pairing is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The singular 'one promotion' plus the required id implicitly signals this is the single-record retrieval path versus the list tool, but there is no explicit when-to-use or when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_promotions_listPromotions ListA
Read-onlyIdempotent

List automatic promotions (2x1, 3x2, volume discounts...). HTTP: GET /promotions Required scope: read_discounts API version: 2025-03 Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely non-schema information: the required OAuth scope (read_discounts), the API version (2025-03), and the response envelope. The one gap is pagination behavior limits, though the page param documents those.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the first line, followed by compact labeled lines for endpoint, scope, version, and return shape. The 'HTTP: GET /promotions' line is somewhat boilerplate given the tool name, but the rest is dense and earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only paginated list with no output schema, the description supplies the auth scope and the exact response envelope (count, page, per_page, has_more, next_page, items), which is the main thing an agent would otherwise lack. Only the relationship to coupons/promotions_get remains unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters (page, per_page, fields, response_format) are already fully documented in the schema. The description adds no parameter-level meaning beyond what the schema provides, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List automatic promotions') and clarifies the resource with concrete examples (2x1, 3x2, volume discounts), which helps distinguish automatic promotions from coupon-style discounts. It does not explicitly name the closest siblings (tiendanube_promotions_get, tiendanube_coupons_list), so differentiation is inferential rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the verb 'List' and the 'automatic promotions' qualifier β€” an agent can infer this is the collection-level read for promotions. There is no explicit when-to-use/when-not guidance, no pointer to promotions_get for a single promotion, and no mention of how this differs from coupons_list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_scripts_createScripts CreateA

Associate a Partner Portal script with the store. HTTP: POST /scripts Required scope: write_scripts API version: 2025-03

NameRequiredDescriptionDefault
script_idYesScript ID from the Partner Portal
query_paramsNoStringified JSON with dynamic parameters for the script
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true), and the description adds genuinely new context: the required OAuth scope write_scripts and the API version. It does not say what happens if the script is already associated, but that gap is partly covered by idempotentHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose, followed by compact metadata lines for method/path, scope, and API version. Every line carries information, though the HTTP path largely duplicates what the tool name implies.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a non-idempotent mutation with no output schema, the description never indicates what is returned on success or how duplicate associations are handled. It is adequate for invocation but leaves the agent guessing about the response and conflict behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so script_id, query_params, and additional_fields are already documented in the schema. The description adds no parameter-level meaning (e.g. how query_params interacts with the script, or what additional_fields overrides), so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Associate a Partner Portal script with the store', which clearly separates it from tiendanube_scripts_list/get/update/delete siblings. It does not explicitly name a sibling or contrast behaviors, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the verb 'associate' plus the required write_scripts scope; there is no statement of when to call this versus scripts_update or what preconditions must hold (e.g. the script must already exist in the Partner Portal). No exclusions or alternatives are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_scripts_deleteScripts DeleteA
DestructiveIdempotent

Remove a script from the store. HTTP: DELETE /scripts/{id} Required scope: write_scripts API version: 2025-03

NameRequiredDescriptionDefault
idYesStore script ID

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true, openWorldHint=true, so the description adds little behavioral value. It names the required scope, which is genuinely useful auth context, but it does not state that deletion is irreversible or what happens on an invalid/already-deleted id.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the action, followed by endpoint, scope and API version. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A one-param destructive tool with full schema coverage and rich annotations; scope and API version are given. Missing only confirmation-of-irreversibility and post-delete behavior, which is a minor gap at this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single param 'id' is documented as 'Store script ID', so baseline 3 applies. The description adds no format or lookup guidance (e.g. obtainable from scripts_list) beyond the path template /scripts/{id}.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (Remove) and resource (a script from the store), with the exact endpoint DELETE /scripts/{id} reinforcing it. Distinguished from siblings tiendanube_scripts_create/update/get/list by name and semantics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use/when-not-to-use guidance and no mention of alternatives (e.g. update to modify, scripts_list to find the id). The required scope 'write_scripts' implies prerequisites, which is a partial substitute, but nothing about irreversible effects is stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_scripts_getScripts GetA
Read-onlyIdempotent

Get a script association. HTTP: GET /scripts/{id} Required scope: none (any valid token) API version: 2025-03

NameRequiredDescriptionDefault
idYesStore script ID
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and openWorld, so the safety profile is covered; the description adds genuinely new context that the call requires no scope beyond any valid token plus the API version. It omits error behavior for an unknown ID, which keeps it off a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short lines, front-loaded with the verb and resource, and no filler prose. The HTTP/version lines are boilerplate but cheap and each carries discrete information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-record read with full schema coverage and a complete annotation set, the definition gives everything needed to invoke it correctly: what it returns (a script association), the identifier, and the auth requirement. Only the behavior on a missing/invalid ID is left unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so id, fields and response_format are already documented in the schema. The description only maps {id} into the URL path and adds no meaning about the fields projection or format choice, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get a script association') and the underlying endpoint GET /scripts/{id}, which makes it clearly the single-object counterpart to scripts_list. It stops short of naming siblings explicitly, so differentiation relies on the get/list naming convention.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied only: fetch one script by ID when you already have the ID. There is no statement of when to prefer scripts_list, no prerequisite beyond the scope note, and no guidance on the not-found case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_scripts_listScripts ListA
Read-onlyIdempotent

List scripts associated with the store. HTTP: GET /scripts Required scope: none (any valid token) API version: 2025-03 Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive behavior, so the description doesn't need to re-state safety. It instead adds genuinely new context: the HTTP verb/path, the required OAuth scope, the API version pin, and the envelope structure of the response.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five short, front-loaded lines: purpose first, then transport, auth, version, and return shape. Nothing is wasted and the most decision-relevant information leads.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by describing the response envelope and keys, and it covers auth scope and API version. Minor gaps remain around default sort order and what a 'script' resource actually contains, but an agent could call this correctly as-is.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with page, per_page, fields, and response_format all documented in-schema, so the baseline is 3. The description's return envelope (count, page, per_page, has_more, next_page, items) indirectly signals pagination semantics but adds no new parameter-level detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List scripts associated with the store'), which cleanly separates it from the get/create/update/delete script siblings. It stops short of explicitly naming an alternative, but the plural list phrasing makes the scope unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Required scope: none (any valid token)' line tells the agent there is no auth prerequisite, and pagination fields imply a paged-listing context. However, there is no explicit when-to-use vs. tiendanube_scripts_get or guidance on when full enumeration is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_scripts_updateScripts UpdateB
Idempotent

Update a store's script association/parameters. HTTP: PUT /scripts/{id} Required scope: write_scripts API version: 2025-03

NameRequiredDescriptionDefault
idYesStore script ID
script_idNoScript ID from the Partner Portal
query_paramsNoStringified JSON parameters
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body

TDQS

B3.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (destructiveHint=false, idempotentHint=true, openWorldHint=true), so the bar is lower. The description still adds real context beyond them: the PUT verb implies full-replace semantics, and 'Required scope: write_scripts' plus the API version tell the agent what authorization it needs before calling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the action, with no filler. It is efficient, though the terseness borders on under-specification for a mutation tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with four parameters, one nested raw-body escape hatch, and no output schema, the description never says what the update actually changes, what happens to fields not supplied under PUT, or what is returned. Annotations cover safety and idempotency but not the effect of the mutation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters, making 3 the baseline. The description does not clarify the meaningful ambiguity between 'id' (store script ID) and 'script_id' (Partner Portal script ID) or how 'query_params' and 'additional_fields' are merged into the body.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (update) and resource (a store's script association/parameters), and the HTTP line 'PUT /scripts/{id}' pins down the target entity. It is distinguishable from scripts_create/scripts_get/scripts_delete by name and verb, though 'association/parameters' remains a somewhat vague object of the update.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this rather than the sibling scripts_create or scripts_delete, and no prerequisites other than the required scope. The agent must infer from the name alone that this modifies an existing script rather than creating one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_shipping_carrier_options_createShipping Carrier Options CreateB

Create a carrier option. Body per the API reference. HTTP: POST /shipping_carriers/{carrier_id}/options Required scope: write_shipping API version: 2025-03

NameRequiredDescriptionDefault
optionYesCarrier option fields (name, code, additional_days, additional_cost, allow_free_shipping, active, ...)
carrier_idYesShipping carrier ID

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare it non-read-only, non-destructive, non-idempotent and open-world, so the safety profile is covered. The description adds value beyond that with the required OAuth scope (write_shipping) and API version (2025-03) β€” genuinely useful operational context for a write call. It stops short of describing validation or failure behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action verb, then endpoint, scope and version in four short lines with no filler. The endpoint line partly restates the name and the 'Body per the API reference' line is a dangling pointer, but overall it is tight and scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a create mutation with no output schema, the description covers scope, version and endpoint but says nothing about the response, error cases, or what a valid option body requires beyond the loose inline field list. Because the option parameter is an untyped object, 'Body per the API reference' leaves the agent dependent on documentation it may not have.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both carrier_id and option documented inline (option even enumerates candidate fields), so the baseline of 3 applies. 'Body per the API reference' defers rather than adds meaning β€” it gives no detail the schema does not already carry, and the option object is loosely typed (additionalProperties: {}), so a pointer to external docs is all that is offered.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Create a carrier option') and the HTTP endpoint, which makes clear it is the create operation on a shipping carrier's options β€” distinguishable by verb from the sibling options_list/get/update/delete tools. It does not, however, explicitly contrast itself with any sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement about when to use this versus tiendanube_shipping_carrier_options_update or options_get, nor about prerequisites such as the carrier needing to exist. 'Required scope: write_shipping' is an auth constraint, not usage guidance, so an agent must infer the workflow entirely.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_shipping_carrier_options_deleteShipping Carrier Options DeleteB
DestructiveIdempotent

Delete a carrier option. HTTP: DELETE /shipping_carriers/{carrier_id}/options/{option_id} Required scope: write_shipping API version: 2025-03

NameRequiredDescriptionDefault
option_idYesOption ID
carrier_idYesShipping carrier ID

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered structurally. The description adds genuinely new context β€” the required write_shipping scope and API version β€” but says nothing about what happens to the option's configuration or whether the deletion is recoverable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, action first, followed by endpoint, scope and version β€” easy to scan with no filler. The HTTP/API-version metadata is arguably boilerplate but is at least uniformly formatted and placed after the essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter delete, the description plus annotations (destructive, idempotent, open-world) and the auth scope give the agent what it needs to invoke correctly. Remaining gaps β€” side effects on existing carrier configuration and response body β€” are modest for a terminal delete operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented. The path template confirms carrier_id/option_id nesting order, which is mildly additive but not meaningfully beyond the schema; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb + resource ('Delete a carrier option') with the exact HTTP path, so it is unmistakably a delete of a nested option rather than of the carrier itself. It does not explicitly contrast with siblings like tiendanube_shipping_carriers_delete or tiendanube_shipping_carrier_options_update, leaving the boundary to be inferred.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to delete versus disable/update an option, nor any warning about prerequisites (e.g., whether an option in use can be removed). The agent must infer usage purely from the name and endpoint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_shipping_carrier_options_getShipping Carrier Options GetA
Read-onlyIdempotent

Get one carrier option. HTTP: GET /shipping_carriers/{carrier_id}/options/{option_id} Required scope: read_shipping API version: 2025-03

NameRequiredDescriptionDefault
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
option_idYesOption ID
carrier_idYesShipping carrier ID
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered. The description adds genuinely useful context beyond that β€” the required OAuth scope read_shipping and the API version 2025-03 β€” but says nothing about behavior on missing IDs (404 vs empty) or the shape of the returned payload.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the verb and resource, then the endpoint, scope and version. No filler, no restatement of the title, and the constraint metadata is placed where an agent will see it first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only single-resource fetch with full schema coverage, complete annotations and no output schema, the description supplies everything needed to invoke it correctly. The one small gap is that it does not hint at what a carrier option contains, leaving the agent dependent on the raw response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters (carrier_id, option_id, fields, response_format) are already documented, which sets the baseline at 3. The description slightly exceeds baseline by embedding the path template that shows exactly where carrier_id and option_id are substituted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get one carrier option') and pins the exact endpoint GET /shipping_carriers/{carrier_id}/options/{option_id}, which makes clear it fetches a single option rather than a list. It does not explicitly name tiendanube_shipping_carrier_options_list as the alternative, but the singular/'one' phrasing and the ID-keyed path differentiate it adequately.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the required IDs and the single-object framing, so an agent can infer it is for retrieving one known option. There is no explicit when-to-use / when-not-to-use guidance and no mention of the list sibling for discovery, and the required scope is stated as a fact rather than an actionable prerequisite caveat.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_shipping_carrier_options_listShipping Carrier Options ListA
Read-onlyIdempotent

List options of a shipping carrier. HTTP: GET /shipping_carriers/{carrier_id}/options Required scope: read_shipping API version: 2025-03 Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
carrier_idYesShipping carrier ID
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful context beyond that: the required read_shipping scope, the API version 2025-03, and the pagination envelope returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose, then endpoint, scope, version and return shape in a compact block with no filler. The HTTP line is slightly redundant with the tool name but earns its place by fixing the resource path.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, but the description compensates by spelling out the response envelope (count, page, per_page, has_more, next_page, items). Combined with full schema coverage and annotations, an agent has what it needs to call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so page, per_page, fields, carrier_id and response_format are all documented in the schema. The description adds no parameter-level meaning beyond the path template, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List options of a shipping carrier') and the HTTP endpoint, which pins down exactly what is returned. It is distinguishable from the singular sibling tiendanube_shipping_carrier_options_get, though the description never names that sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the verb 'List' and the required carrier_id; there is no explicit statement of when to use this versus tiendanube_shipping_carrier_options_get or the carriers list. An agent can infer the intent but must do the routing work itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_shipping_carrier_options_updateShipping Carrier Options UpdateB
Idempotent

Update a carrier option. HTTP: PUT /shipping_carriers/{carrier_id}/options/{option_id} Required scope: write_shipping API version: 2025-03

NameRequiredDescriptionDefault
optionYesCarrier option fields to update
option_idYesOption ID
carrier_idYesShipping carrier ID

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=false, idempotent=true, destructive=false and openWorld=true, so the safety profile is covered. The description adds genuinely useful context beyond that β€” the required 'write_shipping' scope and the API version β€” but says nothing about which option fields can be changed or how the opaque 'option' payload is interpreted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the operation and followed by endpoint, scope and version metadata. No filler, though the endpoint line partly duplicates the parameter names already in the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool this is adequate: annotations cover safety, idempotency and open-world behavior, and the schema documents the identifiers. The key gap is the free-form 'option' payload β€” an agent still cannot tell what fields it may send or whether unspecified fields are cleared, and there is no output schema to indicate what is returned.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all three parameters carry descriptions and the baseline is 3. However the central 'option' parameter is an untyped anyOf object/array with no field-level detail in the schema, and the description does not compensate by naming valid updatable fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Update a carrier option') and pins the exact endpoint PUT /shipping_carriers/{carrier_id}/options/{option_id}, so the operation is unambiguous. It does not distinguish itself from siblings such as options_create/options_get/options_delete, relying on the name for that split.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to update versus create or delete an option, no prerequisites, and no statement about what a partial update does. The only contextual hint is the required scope line, which implies permissions but not usage conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_shipping_carriers_createShipping Carriers CreateA

Register a shipping carrier with a live-rate callback. HTTP: POST /shipping_carriers Required scope: write_shipping API version: 2025-03

NameRequiredDescriptionDefault
nameYesCarrier name
typesNoComma-separated delivery types, e.g. 'ship,pickup'
activeNoWhether the carrier is active
callback_urlYesHTTPS endpoint Tiendanube calls to quote live rates at checkout
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare non-readOnly, non-idempotent, openWorld, non-destructive, so the safety profile is covered. The description contributes auth requirements ('Required scope: write_shipping'), the concrete HTTP endpoint, and the fact that the callback is invoked at checkout to quote live rates β€” real context beyond the annotations, though it says nothing about duplicate-name handling or failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short, front-loaded lines: purpose, endpoint, scope, version. Every line carries actionable information and nothing is repeated from the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a create tool with no output schema, the description plus a fully-covered schema tells an agent everything needed to construct a valid request, including scope and version. It stops short of explaining what the callback endpoint must return or what happens to omitted optional fields like types/active.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters are already self-documenting, including the nested passthrough object. The description only reinforces that a callback is central to the call; it adds no format or constraint detail beyond the schema, which is the expected baseline here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Register') plus the resource ('shipping carrier') and adds the defining behavioral detail: a live-rate callback. This clearly separates it from the sibling list/get/update/delete carrier tools without needing the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The prerequisite (write_shipping scope) and pinned API version (2025-03) are given, which is useful operational context, but there is no explicit statement of when to choose this over tiendanube_shipping_carriers_update or tiendanube_shipping_carrier_options_create, and no preconditions such as prior carrier registration.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_shipping_carriers_deleteShipping Carriers DeleteA
DestructiveIdempotent

Delete a shipping carrier. HTTP: DELETE /shipping_carriers/{id} Required scope: write_shipping API version: 2025-03

NameRequiredDescriptionDefault
idYesCarrier ID

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is carried by structured data. The description still adds the required auth scope (write_shipping) and the concrete HTTP verb/path and API version, which is exactly the kind of context annotations cannot supply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the action, followed by endpoint, scope and version. No filler, though the HTTP verb line partly restates the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive one-parameter call the description covers endpoint and auth scope, and annotations cover the destructive/idempotent semantics. It stops short of saying what collateral effects exist (e.g. carrier options attached to the carrier) or what happens when the ID does not exist.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with the single 'id' parameter documented as 'Carrier ID'. The description adds nothing about the identifier format (string vs numeric) or how to obtain it, so the schema does all the work and baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: 'Delete a shipping carrier', which is unambiguous against the surrounding carriers_list/get/create/update siblings. It is not explicit about the sibling it is not, but the verb alone disambiguates within this family.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Required scope: write_shipping' line is a genuine usage prerequisite an agent must satisfy before calling. Beyond that there is no when-to-use vs when-not guidance, no mention of irreversibility warnings or confirmation flow, and no pointer to carriers_get to verify the ID first.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_shipping_carriers_getShipping Carriers GetA
Read-onlyIdempotent

Get one shipping carrier. HTTP: GET /shipping_carriers/{id} Required scope: read_shipping API version: 2025-03

NameRequiredDescriptionDefault
idYesCarrier ID
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds real context beyond that: the required `read_shipping` scope (an auth prerequisite) and the pinned API version 2025-03, which tells the agent the response shape is version-specific.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines with the purpose front-loaded, followed by endpoint, scope, and version. No filler and nothing repeated from the schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-record read with complete annotations, a fully documented three-parameter schema, and no output schema, the description covers the essentials including auth scope. The only minor gap is not saying anything about error behavior for an invalid ID or what a carrier object contains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: `id`, `fields`, and `response_format` are all documented in the schema, including the markdown/json enum. The description contributes nothing further (e.g. that `id` must be a carrier ID already obtained from the list endpoint), so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Get one shipping carrier" names a specific verb and resource, and the word "one" implicitly separates it from the sibling list/update/delete carrier tools. It does not explicitly name those siblings or explain how the returned carrier relates to carrier options, so it stops short of full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by requiring an `id` and stating the `read_shipping` scope, from which an agent can infer this is a single-record read after resolving an ID. There is no explicit statement of when to prefer this over `tiendanube_shipping_carriers_list` or `tiendanube_shipping_carrier_options_list`, and no handling for a missing/unknown ID.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_shipping_carriers_listShipping Carriers ListA
Read-onlyIdempotent

List shipping carriers registered by the app. HTTP: GET /shipping_carriers Required scope: read_shipping API version: 2025-03 Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent and non-destructive, so the safety profile is covered. The description adds genuinely non-redundant context: the required OAuth scope 'read_shipping', the pinned API version 2025-03, and the pagination envelope returned. It stops short of mentioning rate limits or ordering of results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five short, front-loaded lines: purpose first, then endpoint, scope, version, and return shape. No sentence is redundant, and the structured labels (HTTP:, Required scope:, API version:) make scanning fast.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by spelling out the response envelope ({count, page, per_page, has_more, items[]}), and it discloses auth scope and API version. What remains absent is any indication of what fields a carrier item contains, which would matter when an agent decides on the 'fields' parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so page, per_page, fields and response_format are already documented with defaults and bounds. The description contributes nothing parameter-specific beyond naming the returned envelope fields, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List shipping carriers') and adds a meaningful scope qualifier ('registered by the app') that clarifies what is returned. It is trivially distinguishable from siblings like tiendanube_shipping_carriers_get, _create, _update and _delete by the list verb.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (read_shipping scope, paginated listing) but never says when to prefer this over tiendanube_shipping_carriers_get or how to page through results. An agent must infer the selection criteria from the tool names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_shipping_carriers_updateShipping Carriers UpdateB
Idempotent

Update a shipping carrier. HTTP: PUT /shipping_carriers/{id} Required scope: write_shipping API version: 2025-03

NameRequiredDescriptionDefault
idYesCarrier ID
nameNoCarrier name
typesNoComma-separated delivery types, e.g. 'ship,pickup'
activeNoWhether the carrier is active
callback_urlNoHTTPS endpoint Tiendanube calls to quote live rates at checkout
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=true and openWorldHint=true, so the safety/mutability profile is covered structurally. The description's genuine addition is the required scope 'write_shipping' and the API version, which are real prerequisites absent from the annotations. It does not disclose partial-update semantics (are omitted fields left unchanged or cleared) or what additional_fields does to the request body.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines with the operation and target front-loaded, then endpoint, scope and version. No filler, though roughly half the text is API plumbing that could be compressed into one line.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description would benefit from saying what the update returns or whether partial bodies are merged. For a 6-parameter mutation with a nested free-form additional_fields escape hatch, the definition is minimally adequate but leaves the agent guessing about update semantics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter including id, types, callback_url and additional_fields is already documented in the schema. The description adds no parameter-level meaning beyond that, which is acceptable given full coverage but earns only the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update a shipping carrier') and pins the exact endpoint PUT /shipping_carriers/{id}, which unambiguously separates it from the get/create/delete siblings. It stops short of saying what updating actually affects, but the operation is identifiable at a glance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus tiendanube_shipping_carriers_get or _create, and no statement of preconditions (must the carrier already exist, must it be inactive first). The only usage-adjacent information is the required scope, which is an authorization fact rather than a usage rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_store_getStore GetA
Read-onlyIdempotent

Get store metadata: name, description, domains, active languages, main_currency, country, plan_name, address and social links. Use it first to learn which languages (i18n keys) the store uses. HTTP: GET /store Required scope: any valid token API version: 2025-03

NameRequiredDescriptionDefault
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely useful context beyond annotations: the underlying endpoint (GET /store), the auth requirement ('required scope: any valid token'), and the pinned API version 2025-03.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with what is returned and why to call it, followed by compact operational metadata lines. No filler, though the HTTP path and API version lines are reference detail rather than task guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates by enumerating the returned metadata fields, plus scope and API version. It leaves out only minor details like response shape for domains/social links, which is acceptable for a trivial read.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% β€” both the 'fields' projection parameter and the 'response_format' enum are fully documented in the schema, including an example value. The description adds nothing about either parameter, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get store metadata') and enumerates exactly what comes back: name, domains, languages, currency, plan, address, social links. An agent can distinguish it from sibling reads like tiendanube_store_media_quotas_get without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete ordering recommendation: call it first to learn which languages/i18n keys the store uses, which implies it's a preamble for locale-aware work. It does not name an alternative or state when not to use it, but for a single store-level read there is little competing option.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_store_media_quotas_getStore Media Quotas GetA
Read-onlyIdempotent

Get current usage and limit of the store's media storage (unstable API). HTTP: GET /store/media/quotas Required scope: read_products API version: unstable

NameRequiredDescriptionDefault
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, openWorld. The description adds genuinely new context: the API is unstable, the required scope is read_products, and the underlying endpoint is GET /store/media/quotas. It does not describe the shape of the returned usage/limit values, but the safety profile is fully covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the purpose, then endpoint, scope, and version. Every line carries distinct information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-optional-param read with no output schema, the description tells the agent what is returned (usage and limit) and the access requirements. Slightly more detail on the response fields would make it complete, but nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both optional parameters (fields, response_format), so the schema carries the semantics. The description adds nothing about parameters, which is acceptable at this coverage level but not value-adding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Get current usage and limit of the store's media storage.' No sibling tool covers media quotas, so the agent can identify it unambiguously from the name and description alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied (check storage consumption against the limit) but never stated explicitly, and no when-not-to-use or alternative is named. The required scope and API version are useful operational context but not usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_transaction_events_createTransaction Events CreateB

Add a lifecycle event to an existing transaction. HTTP: POST /orders/{order_id}/transactions/{transaction_id}/events Required scope: write_payments API version: 2025-03

NameRequiredDescriptionDefault
eventYesEvent fields per the API reference
order_idYesOrder ID
transaction_idYesTransaction ID

TDQS

B3.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=false, destructive=false, idempotent=false, openWorld=true, so the write/isolation profile is covered. The description adds genuinely useful operational context beyond that: the required OAuth scope (write_payments), the API version, and the concrete HTTP route. It does not describe append-only semantics, duplicate-event behavior, or error modes, but the annotation baseline lowers the bar.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with a one-line statement of purpose, then compact metadata lines. Each line carries information (endpoint, scope, version) with no filler; the API version line is the least load-bearing but harmless.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation that takes an entirely free-form 'event' payload, the description gives no payload shape, no example, and no validation rules, and there is no output schema to compensate. It is complete about routing and permissions but materially incomplete about what must be sent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is nominally 100%, but the critical 'event' parameter is described only as 'Event fields per the API reference' with an unconstrained anyOf object/array and additionalProperties {}. The description adds nothing about what an event looks like, while order_id/transaction_id are already self-documenting. The single most important parameter is effectively undocumented in both places.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Add a lifecycle event to an existing transaction') and grounds it with the exact endpoint POST /orders/{order_id}/transactions/{transaction_id}/events. An agent can distinguish it from tiendanube_transactions_create and tiendanube_fulfillment_tracking_events_create, though it never explicitly names those neighbors.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The verb 'Add ... to an existing transaction' implies the precondition that the transaction must already exist, and the required scope write_payments signals the permission gate. But there is no explicit when-to-use vs. when-not guidance, and no mention of alternatives such as tiendanube_transactions_create.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_transactions_createTransactions CreateA

Record a financial transaction (authorization, capture, charge, refund, void) on an order. HTTP: POST /orders/{order_id}/transactions Required scope: write_payments API version: 2025-03

NameRequiredDescriptionDefault
order_idYesOrder ID
transactionYesTransaction fields per the API reference (type/status, amount, currency, payment method...)

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safety profile (readOnly=false, destructive=false, openWorld=true), and the description adds the auth requirement (write_payments) and API version, which is useful. It does not, however, warn about the non-idempotent nature of financial writes (idempotentHint=false) β€” a real duplicate-charge risk β€” nor describe response or failure behavior; refund/void operations being flagged non-destructive also goes unclarified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four compact lines, with the core action stated first, followed by endpoint, scope, and version. No filler; every line carries operative information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a non-idempotent mutation with no output schema, the definition omits what a successful response contains and how to handle duplicates or already-captured orders. The scope and endpoint lines cover setup, but an agent still lacks the behavioral detail needed to call this safely in edge cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 adds genuine value by enumerating the valid transaction types, which the schema only gestures at with 'type/status, amount, currency, payment method...'. It still doesn't document the exact field shape of the open transaction object, but the type enumeration materially narrows an ambiguous parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Uses a specific verb (Record) plus resource (financial transaction) and enumerates the transaction subtypes (authorization, capture, charge, refund, void), making the operation distinct from siblings like transactions_list/transactions_get. It does not explicitly distinguish itself from tiendanube_transaction_events_create, but the resource scope is clear enough for selection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides the endpoint, required scope (write_payments) and API version, which helps an agent know prerequisites. However, there is no explicit guidance on when to use this versus transaction_events_create or transactions_list, and no statement of preconditions on the order's state.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_transactions_getTransactions GetA
Read-onlyIdempotent

Get one transaction. HTTP: GET /orders/{order_id}/transactions/{id} Required scope: read_payments API version: 2025-03

NameRequiredDescriptionDefault
idYesTransaction ID
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
order_idYesOrder ID
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, open-world, so safety needs no repetition. The description adds genuinely non-redundant behavioral context: the required OAuth scope (read_payments) and the pinned API version 2025-03, both of which affect whether the call will succeed. It stops short of describing the response or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the operation and then the endpoint, scope, and version. Nothing is padded, though the raw HTTP line is partly redundant with the tool name for an agent that already understands the mapping.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple four-parameter read-by-id with full schema coverage and complete safety annotations, the description covers the operation, its addressing scheme, and the auth prerequisite. With no output schema, a hint about the returned transaction shape would have closed the last gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so id, order_id, fields, and response_format are all self-documenting and the baseline of 3 applies. The endpoint template does clarify that order_id and id are path parameters, but the description adds no semantics for 'fields' or 'response_format' beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get one transaction') and pins it to the exact endpoint GET /orders/{order_id}/transactions/{id}, so it is clearly the single-record reader as opposed to the list/create siblings. It does not name those siblings, but the singular scope makes the distinction obvious.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent infers it should call this when it has both an order_id and a transaction id and needs one record. There is no explicit statement of when to prefer this over tiendanube_transactions_list or what happens if the id is unknown.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_transactions_listTransactions ListA
Read-onlyIdempotent

List payment transactions of an order. HTTP: GET /orders/{order_id}/transactions Required scope: read_payments API version: 2025-03 Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
order_idYesOrder ID
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.8/5.0
Behavior4/5

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 clear. The description adds useful non-annotation context: required OAuth scope read_payments, API version 2025-03, and the return envelope shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, front-loaded with the core purpose, and structured with useful metadata in separate lines. Every element--purpose, endpoint, scope, API version, return shape--adds practical value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a five-parameter list tool with no output schema, the description supplies the return envelope, required scope, API version, and endpoint. It remains slightly incomplete on when to choose this over tiendanube_transactions_get and on pagination caveats beyond the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so order_id, page, per_page, fields, and response_format are already documented in the schema. The description adds little parameter-level meaning beyond restating the order-scoped path, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'List payment transactions of an order', and reinforces it with the HTTP path GET /orders/{order_id}/transactions. It implicitly distinguishes list from tiendanube_transactions_get, but does not explicitly name or contrast that sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'of an order' and the required order_id parameter, and the required scope read_payments gives permission context. However, there is no explicit when-to-use/when-not guidance and no named alternative such as tiendanube_transactions_get.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_variants_batch_replaceVariants Batch ReplaceA
DestructiveIdempotent

Replace the full set of variants of a product in one call (array of variant objects). Costs rate limit proportional to variants/languages/inventory_levels (weighted token bucket). HTTP: PUT /products/{product_id}/variants Required scope: write_products API version: 2025-03

NameRequiredDescriptionDefault
variantsYesComplete array of variant objects replacing the existing set
product_idYesProduct ID

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, and the description goes beyond them by disclosing the weighted-token-bucket rate limit cost model (scaling with variants/languages/inventory_levels), the required write_products scope, the HTTP method and the API version. It stops short of saying what happens to existing variants omitted from the array, which is the key destructive-behavior detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the operation, then cost model, then endpoint/scope/version on separate lines. Four short lines with little waste, though the HTTP method line is largely redundant for an agent that cannot use raw endpoints.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive batch replace with no output schema, the description should clarify what happens to existing variants not included in the array, how variants carrying IDs are treated (updated vs recreated), and what failure modes exist. Rate-limit and scope details are covered; the destructive semantics are only implied.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds the notion that the array is the complete replacement set and hints that cost scales with variant/language/inventory-level count, but the items schema is an empty additionalProperties object and the description supplies no field-level guidance for those variant objects.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with scope: 'Replace the full set of variants of a product in one call (array of variant objects).' The word 'full set' and 'replace' implicitly distinguish it from tiendanube_variants_batch_update and tiendanube_variants_update, though no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The set-replacement framing hints at when to choose this over per-variant update, but it never states the alternative explicitly or the condition that selects it (e.g., 'use batch_update to patch only listed variants'). No prerequisites or exclusions beyond the required scope mention.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_variants_batch_updateVariants Batch UpdateA
Idempotent

Partially update many existing variants of a product in one call (array of {id, ...fields}). Weighted token bucket applies. HTTP: PATCH /products/{product_id}/variants Required scope: write_products API version: 2025-03

NameRequiredDescriptionDefault
variantsYesVariants to update: [{id, ...fields}]
product_idYesProduct ID

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnlyHint=false, idempotentHint=true, destructiveHint=false, openWorldHint=true). The description adds genuinely useful context beyond that: required scope 'write_products', the underlying HTTP verb/path, the API version, and the 'weighted token bucket applies' rate-limit behavior β€” none of which are in annotations or schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action in the first clause, then adds a compact set of operational facts (rate limit, endpoint, scope, version) with zero filler. Slightly telegraphic but every line earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-param, no-output-schema mutation, the description supplies endpoint, scope, rate-limit behavior, and partial-update semantics β€” enough to call it correctly. It omits response shape and per-field error behavior, but with no output schema those are outside strict description duty.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (both params documented), so baseline is 3. The description adds meaning beyond the schema by clarifying that 'variants' is an array of {id, ...fields} and that updates are partial β€” i.e. only supplied fields change β€” which the bare schema object does not convey. No parameter enumeration, but the added semantics earn above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb, resource, and mode ('partially update many existing variants of a product in one call'), which implicitly distinguishes it from the sibling 'variants_batch_replace' (full replacement) and 'variants_update' (single). It never names those siblings, so the differentiation is inferred rather than spelled out.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The word 'partially' and 'many' imply the batch/partial-update use case, but the description never explicitly says when to pick this over tiendanube_variants_update, tiendanube_variants_batch_replace, or tiendanube_products_batch_stock_price. Usage context is left for the agent to infer 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.

tiendanube_variants_createVariants CreateB

Create a variant (max 1000 per product). HTTP: POST /products/{product_id}/variants Required scope: write_products API version: 2025-03

NameRequiredDescriptionDefault
mpnNoManufacturer part number
skuNoSKU
costNoUnit cost (decimal string)
depthNoDepth in cm
priceNoPrice as decimal string, e.g. '1999.90'
stockNoStock quantity; null = infinite
widthNoWidth in cm
genderNoGender (Google Shopping)
heightNoHeight in cm
valuesNoOne i18n value per product attribute, e.g. [{"es":"M"},{"es":"Rojo"}]
weightNoWeight in kg
barcodeNoBarcode (EAN/UPC)
image_idNoID of a product image to associate
age_groupNoAge group (Google Shopping)
product_idYesProduct ID
inventory_levelsNoPer-location stock for multi-location stores
stock_managementNotrue to track stock; false = infinite stock
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body
promotional_priceNoPromotional price (decimal string)

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds useful operational context the annotations don't: the 1000-variants-per-product ceiling and the required OAuth scope. It does not, however, warn that the non-idempotent behavior means repeated calls create duplicate variants, which is the main behavioral risk here.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the action and its most important limit. The HTTP verb/path and API-version lines are metadata rather than decision-relevant prose, but nothing is padded or redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 19 parameters, nested objects and no output schema, the description is thin: it does not indicate that the `values` array must align with the product's existing attributes, nor what the created variant object returns or which identifier to reuse. The cap and scope help, but an agent could still construct an invalid body without consulting the schema closely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% across 19 parameters, including the nested i18n `values` array and `inventory_levels`, so the schema carries the full burden. The description adds only that product_id travels in the URL path; it contributes no meaning beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Create a variant") scoped to a product, plus a hard cap of 1000 per product. It does not distinguish itself from nearby siblings such as tiendanube_variants_batch_replace or tiendanube_variants_update_stock, so an agent must infer that this is the single-variant creation path.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance and no exclusions. The description never says to prefer tiendanube_variants_batch_replace for multiple variants, nor that this requires a pre-existing product (product_id is required but the dependency is only implicit in the URL). The only qualifying context given is the required write_products scope.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_variants_deleteVariants DeleteA
DestructiveIdempotent

Delete a variant. The only variant of a product cannot be deleted. HTTP: DELETE /products/{product_id}/variants/{id} Required scope: write_products API version: 2025-03

NameRequiredDescriptionDefault
idYesVariant ID
product_idYesProduct ID

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the safety profile is covered structurally. The description adds genuinely new behavioral context: the business-rule constraint on last-variant deletion, the required OAuth scope (write_products), and the pinned API version. It does not state what happens to dependent data or the response shape, which keeps it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and the key constraint in the first two sentences; the trailing HTTP/scope/version lines are reference boilerplate but short and clearly separated. Nothing is wasted, though the metadata lines are not strictly essential to calling the tool correctly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter delete with no output schema, the definition covers the precondition, auth scope, and endpoint. The only gap is what the call returns (e.g. 204 empty body vs. a deleted variant payload), which matters slightly for a destructive operation but is minor given the annotation coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with both required parameters documented, so the schema carries the semantic load. The HTTP line echoes the same two identifiers in path position but adds no format, type-coercion, or ID-sourcing detail beyond the schema; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Delete a variant') and immediately differentiates from sibling mutation tools by naming the one case where deletion is impossible (the sole variant of a product). An agent can distinguish this from tiendanube_variants_update or tiendanube_products_delete without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear exclusion rule: the only variant of a product cannot be deleted, which prevents the most likely misuse. It does not name an alternative (e.g. 'use variants_update to change it instead' or 'delete the product instead'), so the when-to-use-otherwise guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_variants_getVariants GetA
Read-onlyIdempotent

Get one variant. HTTP: GET /products/{product_id}/variants/{id} Required scope: read_products API version: 2025-03

NameRequiredDescriptionDefault
idYesVariant ID
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
product_idYesProduct ID
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and openWorld, so the safety profile is covered. The description adds genuinely new context beyond annotations: the required OAuth scope 'read_products' and the API version '2025-03', which matter for auth and compatibility failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four tight lines, action front-loaded ahead of endpoint/scope/version metadata, with no filler. The template-style metadata lines are marginally redundant but each carries operational value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-record getter with full schema coverage and complete annotations, the description supplies the remaining pieces an agent needs – endpoint, scope, and API version. Only the absence of sibling routing guidance keeps it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter including 'fields' and 'response_format' is already documented in the schema. The description only surfaces the path parameters in the HTTP line and adds no new semantics, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get one variant') and pins the HTTP endpoint, so an agent can distinguish it from tiendanube_variants_list by the singular target. It never names the sibling explicitly, but the singular/plural split is inferable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The presence of required product_id and id plus the 'Get one' wording implies usage for fetching a single known variant, but there is no explicit when-to-use statement or reference to alternatives like tiendanube_variants_list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_variants_listVariants ListA
Read-onlyIdempotent

List variants of a product. HTTP: GET /products/{product_id}/variants Required scope: read_products API version: 2025-03 Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
since_idNoOnly return records with an ID greater than this value (cursor pagination)
product_idYesProduct ID
created_at_maxNoCreated at or before (ISO 8601)
created_at_minNoCreated at or after (ISO 8601, e.g. 2025-01-31T00:00:00-03:00)
updated_at_maxNoUpdated at or before (ISO 8601)
updated_at_minNoUpdated at or after (ISO 8601)
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive behavior, so the description's job is lighter. It adds genuinely useful context beyond annotations: the required 'read_products' scope, the pinned API version 2025-03, and the concrete response envelope with pagination fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four compact lines, each with a distinct purpose: intent, endpoint, authorization, return shape. Nothing is repeated and the essential purpose is first, so an agent can stop reading after line one if that is all it needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully documents the return envelope, and it covers auth scope and API version for an open-world REST-backed tool. The only minor gap is that it does not restate pagination defaults or the fields-trimming option, though the schema covers those.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents pagination, filtering, field selection, and response_format for all ten parameters. The description only surfaces product_id implicitly through the path and adds no meaning beyond schema wording, which is the baseline case.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List variants of a product'), which cleanly separates it from tiendanube_variants_get, _create, _update, and _batch_* siblings. It does not explicitly name the nearest look-alike (tiendanube_price_tables_variants_list), so an agent must infer the difference from the name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The listing intent is implied clearly enough that an agent will pick this over variants_get when it needs a collection. However, there is no explicit when-to-use/when-not guidance and no mention of the price-table variants sibling that also lists variants, leaving scope boundaries to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_variants_updateVariants UpdateB
Idempotent

Update one variant (price, SKU, weight, stock...). HTTP: PUT /products/{product_id}/variants/{id} Required scope: write_products API version: 2025-03

NameRequiredDescriptionDefault
idYesVariant ID
mpnNoManufacturer part number
skuNoSKU
costNoUnit cost (decimal string)
depthNoDepth in cm
priceNoPrice as decimal string, e.g. '1999.90'
stockNoStock quantity; null = infinite
widthNoWidth in cm
genderNoGender (Google Shopping)
heightNoHeight in cm
valuesNoOne i18n value per product attribute, e.g. [{"es":"M"},{"es":"Rojo"}]
weightNoWeight in kg
barcodeNoBarcode (EAN/UPC)
image_idNoID of a product image to associate
age_groupNoAge group (Google Shopping)
product_idYesProduct ID
inventory_levelsNoPer-location stock for multi-location stores
stock_managementNotrue to track stock; false = infinite stock
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body
promotional_priceNoPromotional price (decimal string)

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare mutation, idempotency, and non-destructiveness; the description adds genuinely useful operational context in the required scope (write_products) and pinned API version. However, the single most important behavioral fact for a 20-param update endpoint β€” whether omitted fields are preserved or reset, and how additional_fields/inventory_levels interact with top-level stock β€” is never stated, and no output schema compensates.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four compact lines with the action front-loaded and the endpoint, scope, and version stacked underneath β€” no filler. The only minor cost is that the parenthetical field list adds little over the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 20 parameters, nested objects, no output schema, and openWorldHint=true, the description is thin on what comes back and on partial-update semantics. The full schema coverage and the scope/version disclosure keep it adequate, but an agent still has to guess about request body merge behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and every parameter, including the nested values and inventory_levels objects, is documented inline with format hints (decimal strings, i18n objects, null = infinite). The description adds nothing beyond naming four example fields, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Update one variant") and enumerates representative mutable fields, so an agent knows exactly what it touches. "One variant" implicitly signals this is the single-record counterpart to the batch siblings, but no sibling is named explicitly, keeping it short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the word "one" β€” an agent can infer that bulk edits belong to tiendanube_variants_batch_update and stock-only edits to tiendanube_variants_update_stock, but neither alternative nor any exclusion is stated. No guidance on when this is preferable to the batch or stock-specific variants.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_variants_update_stockVariants Update StockA

Set or adjust stock. action 'replace' sets an exact value (value null = infinite stock); 'variation' adds/subtracts a delta. Omit id to apply to all variants of the product. HTTP: POST /products/{product_id}/variants/stock Required scope: write_products API version: 2025-03

NameRequiredDescriptionDefault
idNoVariant ID; omit to apply to every variant
valueYesInteger quantity (or delta for 'variation'); null with 'replace' = infinite stock
actionYesStock operation (replace | variation)
product_idYesProduct ID
location_idNoLocation ID for multi-location stores
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already state that this is a mutating, non-read-only operation with destructiveHint false. The description adds meaningful context beyond annotations: required write_products scope, the HTTP endpoint, API version, and important mutation semantics such as null value meaning infinite stock. It does not describe response shape or error behavior, but with annotations present the added context is substantial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded with the core purpose: 'Set or adjust stock.' The second sentence explains both action modes and the all-variants case, and the final lines give endpoint, scope, and API version without filler. Every sentence contributes operational value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a six-parameter mutation tool with full schema coverage and annotations, the description provides the key operational context: scope, endpoint, action semantics, and id omission behavior. It does not describe return values, but no output schema exists and the main invocation semantics are covered. Sibling routing is the only notable gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds useful meaning beyond the schema by explaining that 'replace' sets an exact value while 'variation' applies a delta, and by reiterating that omitting id applies to all variants. It does not explain location_id or additional_fields, but those are already documented in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Set or adjust stock' for product variants. It also clarifies that the operation is stock-specific and can target one variant or all variants of a product, which distinguishes it from general variant updates. An agent can identify this as the dedicated stock-adjustment tool without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the action modes: 'replace' sets an exact value and 'variation' adds/subtracts a delta, plus omitting id applies to all variants. However, it does not explicitly say when to use this tool versus siblings such as tiendanube_variants_update, tiendanube_variants_batch_update, or tiendanube_products_batch_stock_price. Usage is implied by the stock-specific framing rather than fully guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_webhooks_createWebhooks CreateB

Subscribe an HTTPS URL to a store event. HTTP: POST /webhooks Required scope: scope of the event's entity (none for app/* and GDPR events) API version: 2025-03

NameRequiredDescriptionDefault
urlYesHTTPS endpoint that will receive the events
eventYesEvent name (app/uninstalled | app/suspended | app/resumed | product/created | product/updated | product/deleted | category/created | category/updated | category/deleted | order/created | order/updated | order/paid | order/packed | order/fulfilled | order/cancelled | order/custom_fields_updated | order/edited | order/pending | order/voided | fulfillment/updated | customer/created | customer/updated | customer/deleted | store/redact | customers/redact | customers/data_request | location/created | location/updated | location/deleted | product_price_table/created | product_price_table/updated | product_price_table/deleted | product/custom_fields_updated | product_variant/custom_fields_updated | category/custom_fields_updated | customer/custom_fields_updated)
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=false, openWorld=true, idempotent=false, destructive=false. The description adds the HTTP verb/path and the scope requirement, which is real context, but it omits whether duplicate subscriptions are rejected, whether unreachable URLs are validated, and the outcome/return of the subscription.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the purpose, followed by HTTP path, scope requirement, and API version β€” no redundant prose. Slightly terse in that the most actionable caveats are absent rather than the text being bloated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the agent would benefit from knowing what a successful subscription returns (e.g., an id needed later for webhooks_update/_delete) and whether duplicate or invalid subscriptions fail. Prerequisites are covered, so the definition is workable but not whole.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so url, event, and additional_fields are already documented in the schema. The description adds only marginal meaning beyond that (the scope hint tied to the event entity), so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: "Subscribe an HTTPS URL to a store event," which clearly separates creation from the sibling read/mutate tools (tiendanube_webhooks_get, _list, _update, _delete). It doesn't explicitly name those siblings, but the create semantics are unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Supplies prerequisite context (required scope depends on the event's entity, none for app/* and GDPR events; API version 2025-03), which helps an agent decide it can call this tool. However, it never states when to prefer webhooks_update vs creating a new subscription, or what to do if a subscription for that URL/event already exists.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_webhooks_deleteWebhooks DeleteA
DestructiveIdempotent

Delete a webhook. HTTP: DELETE /webhooks/{id} Required scope: scope of the event's entity API version: 2025-03

NameRequiredDescriptionDefault
idYesWebhook ID

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint, so the safety profile is covered structurally. The description usefully adds the required OAuth scope ("scope of the event's entity") and API version, but says nothing about irreversibility or what a successful delete returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four tight lines, action first, then HTTP path, required scope, and API version. Every line carries operational information and nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter delete with rich annotations, the essentials (scope, endpoint, version) are present. It is still missing any note on irreversibility or the empty/204-style response, which matters most for a destructive operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter whose schema description coverage is 100%, so the schema fully documents 'id'. The description adds only the path template {id}, contributing no format, type, or lookup guidance beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence states a specific verb and resource ("Delete a webhook") that unambiguously distinguishes this from the webhooks_list/create/update/get siblings. It stops short of naming those siblings explicitly, but the operation is unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the verb 'Delete' and the presence of a required ID. There is no statement of when to prefer this over updating or recreating a webhook, nor any caution about verifying the ID before destruction; the only real guidance is the permission prerequisite.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_webhooks_getWebhooks GetA
Read-onlyIdempotent

Get one webhook. HTTP: GET /webhooks/{id} Required scope: scope of the event's entity API version: 2025-03

NameRequiredDescriptionDefault
idYesWebhook ID
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered. The description adds genuinely new behavioral context beyond that: the underlying HTTP call (GET /webhooks/{id}), the API version (2025-03), and the required OAuth scope, which is an auth prerequisite not present in 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines with zero filler: purpose first, then endpoint, scope, and API version. Every line carries distinct information and the most important sentence is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-resource read tool with no output schema, the description covers endpoint, auth scope, and version, which is sufficient to call it correctly. The minor gap is that it does not characterize the returned webhook object (URL, topics, status) despite there being no output schema to fall back on.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents id, fields, and response_format with examples and enum values. The description adds no parameter-level meaning beyond that, so the baseline of 3 applies β€” the schema does the heavy lifting here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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 one webhook"), and the word "one" distinguishes it from the sibling tiendanube_webhooks_list, which retrieves a collection. It is unambiguous what the tool returns conceptually, though it never names the list sibling explicitly as the alternative for enumeration.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description supplies a concrete prerequisite β€” "Required scope: scope of the event's entity" β€” which tells the agent about authorization requirements before calling. However, there is no explicit when-to-use versus alternatives guidance (e.g., use tiendanube_webhooks_list to enumerate), leaving selection semantics implicit in the "Get one" phrasing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_webhooks_listWebhooks ListA
Read-onlyIdempotent

List webhooks registered by the app. HTTP: GET /webhooks Required scope: scope of the event's entity (none for app/* and GDPR events) API version: 2025-03 Returns {count, page, per_page, total?, has_more, next_page?, items[]}.

NameRequiredDescriptionDefault
urlNoExact webhook URL
pageNoPage number (default 1). Orders: page * per_page must be <= 10000
eventNoEvent name
fieldsNoComma-separated list of fields to return, to reduce payload size (e.g. 'id,name,variants')
per_pageNoItems per page (default 30, max 200; max 50 for external invoices)
since_idNoOnly return records with an ID greater than this value (cursor pagination)
created_at_maxNoCreated at or before (ISO 8601)
created_at_minNoCreated at or after (ISO 8601, e.g. 2025-01-31T00:00:00-03:00)
updated_at_maxNoUpdated at or before (ISO 8601)
updated_at_minNoUpdated at or after (ISO 8601)
response_formatNoOutput format: 'json' (default, full data) or 'markdown' (human-readable)json

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry readOnly/idempotent/openWorld, but the description adds real behavioral context the annotations don't: the required auth scope ('scope of the event's entity, none for app/* and GDPR events') and the pinned API version 2025-03. It does not discuss rate limits or the consequence of the app-scoping constraint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four compact lines, front-loaded with the verb and resource, then HTTP method/path, scope, version and return shape. Every sentence carries information an agent would otherwise have to guess or fetch from docs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, but the description supplies the exact response envelope ({count, page, per_page, total?, has_more, next_page?, items[]}), plus scope and API version β€” everything needed to call this list endpoint correctly without further docs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds nothing about the 11 filter parameters (url, event, created_at_min/max, since_id) beyond what the schema already documents verbatim.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List webhooks registered by the app'), which contrasts implicitly with tiendanube_webhooks_get/create/update/delete siblings. It stops short of naming the sibling to use for a single webhook, so 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by 'List' and by the note that these are webhooks 'registered by the app'. There is no explicit when-to-use, when-not-to-use, or alternative named (e.g. 'use tiendanube_webhooks_get for a single webhook by id').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiendanube_webhooks_updateWebhooks UpdateA
Idempotent

Change a webhook's URL or event. HTTP: PUT /webhooks/{id} Required scope: scope of the event's entity API version: 2025-03

NameRequiredDescriptionDefault
idYesWebhook ID
urlNoHTTPS endpoint
eventNoEvent name (app/uninstalled | app/suspended | app/resumed | product/created | product/updated | product/deleted | category/created | category/updated | category/deleted | order/created | order/updated | order/paid | order/packed | order/fulfilled | order/cancelled | order/custom_fields_updated | order/edited | order/pending | order/voided | fulfillment/updated | customer/created | customer/updated | customer/deleted | store/redact | customers/redact | customers/data_request | location/created | location/updated | location/deleted | product_price_table/created | product_price_table/updated | product_price_table/deleted | product/custom_fields_updated | product_variant/custom_fields_updated | category/custom_fields_updated | customer/custom_fields_updated)
additional_fieldsNoExtra raw API body fields not covered above; merged into the request body

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so the agent knows this is a non-destructive idempotent write. The description adds useful context by stating the required scope and API version, but it does not explain partial-update behavior, what happens to fields not provided, or any rate limits. With annotations covering the safety profile, a 3 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action, then supplies endpoint, required scope, and API version in compact lines. Every sentence earns its place and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with full schema coverage and annotations covering safety/idempotency, the description provides the endpoint, required authorization scope, and API version. It omits details about partial update semantics and additional_fields merging, but those are documented in the schema. Overall complete enough for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents id, url, event, and additional_fields. The description mentions that URL or event can be changed, which aligns with the schema, but adds no format or semantic detail beyond it. The baseline score of 3 applies when the schema carries the parameter documentation burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Change a webhook's URL or event.' This clearly distinguishes the update operation from sibling tools like webhooks_create, webhooks_delete, webhooks_get, and webhooks_list. The HTTP method and endpoint reinforce the purpose without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'Change a webhook's URL or event' and the endpoint PUT /webhooks/{id}, which tells an agent this operates on an existing webhook. However, the description does not explicitly state when to use this versus webhooks_create or webhooks_delete, nor does it mention prerequisites beyond the required scope. Adequate but missing explicit routing guidance.

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.

  1. 191 tool updatesv1.0.0
    • First observedtiendanube_abandoned_checkouts_apply_coupon
    • First observedtiendanube_abandoned_checkouts_get
    • First observedtiendanube_abandoned_checkouts_list
    • First observedtiendanube_billing_charges_create
    • First observedtiendanube_billing_plans_create
    • First observedtiendanube_billing_plans_delete
    • First observedtiendanube_billing_plans_update
    • First observedtiendanube_billing_subscriptions_get
    • First observedtiendanube_billing_subscriptions_update
    • First observedtiendanube_blog_posts_list
    • First observedtiendanube_blogs_list
    • First observedtiendanube_business_rules_upsert
    • First observedtiendanube_carts_delete_coupon
    • First observedtiendanube_carts_delete_line_item
    • First observedtiendanube_carts_get
    • First observedtiendanube_categories_create
    • First observedtiendanube_categories_delete
    • First observedtiendanube_categories_get
    • First observedtiendanube_categories_list
    • First observedtiendanube_categories_update
    • First observedtiendanube_coupons_create
    • First observedtiendanube_coupons_delete
    • First observedtiendanube_coupons_get
    • First observedtiendanube_coupons_list
    • First observedtiendanube_coupons_update
    • First observedtiendanube_custom_field_capabilities_add
    • First observedtiendanube_custom_field_capabilities_list
    • First observedtiendanube_custom_field_capabilities_remove
    • First observedtiendanube_custom_field_defs_create
    • First observedtiendanube_custom_field_defs_delete
    • First observedtiendanube_custom_field_defs_get
    • First observedtiendanube_custom_field_defs_list
    • First observedtiendanube_custom_fields_create
    • First observedtiendanube_custom_fields_delete
    • First observedtiendanube_custom_fields_get
    • First observedtiendanube_custom_fields_get_by_entity_id
    • First observedtiendanube_custom_fields_list
    • First observedtiendanube_custom_fields_list_owners
    • First observedtiendanube_custom_fields_set_values
    • First observedtiendanube_custom_fields_update
    • First observedtiendanube_custom_object_entries_create
    • First observedtiendanube_custom_object_entries_delete
    • First observedtiendanube_custom_object_entries_get
    • First observedtiendanube_custom_object_entries_list
    • First observedtiendanube_custom_object_entries_update
    • First observedtiendanube_custom_objects_create
    • First observedtiendanube_custom_objects_delete
    • First observedtiendanube_custom_objects_get
    • First observedtiendanube_custom_objects_list
    • First observedtiendanube_custom_objects_update
    • First observedtiendanube_customers_create
    • First observedtiendanube_customers_delete
    • First observedtiendanube_customers_get
    • First observedtiendanube_customers_list
    • First observedtiendanube_customers_update
    • First observedtiendanube_discounts_callbacks_delete
    • First observedtiendanube_discounts_callbacks_upsert
    • First observedtiendanube_disputes_create
    • First observedtiendanube_disputes_get
    • First observedtiendanube_disputes_update
    • First observedtiendanube_draft_orders_confirm
    • First observedtiendanube_draft_orders_create
    • First observedtiendanube_draft_orders_delete
    • First observedtiendanube_draft_orders_get
    • First observedtiendanube_draft_orders_list
    • First observedtiendanube_draft_orders_update
    • First observedtiendanube_email_templates_get
    • First observedtiendanube_email_templates_list
    • First observedtiendanube_email_templates_update
    • First observedtiendanube_external_invoices_create
    • First observedtiendanube_external_invoices_delete
    • First observedtiendanube_external_invoices_get
    • First observedtiendanube_external_invoices_list
    • First observedtiendanube_external_invoices_update
    • First observedtiendanube_fulfillment_orders_delete
    • First observedtiendanube_fulfillment_orders_get
    • First observedtiendanube_fulfillment_orders_list
    • First observedtiendanube_fulfillment_orders_update
    • First observedtiendanube_fulfillment_tracking_events_create
    • First observedtiendanube_fulfillment_tracking_events_delete
    • First observedtiendanube_fulfillment_tracking_events_update
    • First observedtiendanube_kits_get
    • First observedtiendanube_locations_create
    • First observedtiendanube_locations_delete
    • First observedtiendanube_locations_get
    • First observedtiendanube_locations_inventory_levels_list
    • First observedtiendanube_locations_list
    • First observedtiendanube_locations_set_default
    • First observedtiendanube_locations_update
    • First observedtiendanube_locations_update_priorities
    • First observedtiendanube_metafields_create
    • First observedtiendanube_metafields_delete
    • First observedtiendanube_metafields_get
    • First observedtiendanube_metafields_list_by_resource
    • First observedtiendanube_metafields_update
    • First observedtiendanube_oauth_exchange_code
    • First observedtiendanube_order_fulfillments_create
    • First observedtiendanube_order_fulfillments_delete
    • First observedtiendanube_order_fulfillments_get
    • First observedtiendanube_order_fulfillments_list
    • First observedtiendanube_orders_cancel
    • First observedtiendanube_orders_close
    • First observedtiendanube_orders_create
    • First observedtiendanube_orders_get
    • First observedtiendanube_orders_history_editions_get
    • First observedtiendanube_orders_history_values_get
    • First observedtiendanube_orders_invoices_create
    • First observedtiendanube_orders_invoices_list
    • First observedtiendanube_orders_list
    • First observedtiendanube_orders_open
    • First observedtiendanube_orders_subscriptions_get
    • First observedtiendanube_orders_update
    • First observedtiendanube_pages_create
    • First observedtiendanube_pages_delete
    • First observedtiendanube_pages_get
    • First observedtiendanube_pages_list
    • First observedtiendanube_pages_update
    • First observedtiendanube_payment_options_list
    • First observedtiendanube_payment_provider_options_list
    • First observedtiendanube_payment_providers_create
    • First observedtiendanube_payment_providers_delete
    • First observedtiendanube_payment_providers_get
    • First observedtiendanube_payment_providers_list
    • First observedtiendanube_payment_providers_update
    • First observedtiendanube_price_tables_categories_add
    • First observedtiendanube_price_tables_categories_list
    • First observedtiendanube_price_tables_categories_remove
    • First observedtiendanube_price_tables_categories_update
    • First observedtiendanube_price_tables_create
    • First observedtiendanube_price_tables_customers_add
    • First observedtiendanube_price_tables_customers_list
    • First observedtiendanube_price_tables_customers_remove
    • First observedtiendanube_price_tables_delete
    • First observedtiendanube_price_tables_get
    • First observedtiendanube_price_tables_list
    • First observedtiendanube_price_tables_update
    • First observedtiendanube_price_tables_variants_add
    • First observedtiendanube_price_tables_variants_list
    • First observedtiendanube_price_tables_variants_remove
    • First observedtiendanube_price_tables_variants_update
    • First observedtiendanube_product_images_create
    • First observedtiendanube_product_images_delete
    • First observedtiendanube_product_images_get
    • First observedtiendanube_product_images_list
    • First observedtiendanube_product_images_update
    • First observedtiendanube_product_images_upload_unattached
    • First observedtiendanube_products_batch_stock_price
    • First observedtiendanube_products_create
    • First observedtiendanube_products_delete
    • First observedtiendanube_products_get
    • First observedtiendanube_products_get_by_sku
    • First observedtiendanube_products_list
    • First observedtiendanube_products_update
    • First observedtiendanube_promotions_create
    • First observedtiendanube_promotions_delete
    • First observedtiendanube_promotions_get
    • First observedtiendanube_promotions_list
    • First observedtiendanube_scripts_create
    • First observedtiendanube_scripts_delete
    • First observedtiendanube_scripts_get
    • First observedtiendanube_scripts_list
    • First observedtiendanube_scripts_update
    • First observedtiendanube_shipping_carrier_options_create
    • First observedtiendanube_shipping_carrier_options_delete
    • First observedtiendanube_shipping_carrier_options_get
    • First observedtiendanube_shipping_carrier_options_list
    • First observedtiendanube_shipping_carrier_options_update
    • First observedtiendanube_shipping_carriers_create
    • First observedtiendanube_shipping_carriers_delete
    • First observedtiendanube_shipping_carriers_get
    • First observedtiendanube_shipping_carriers_list
    • First observedtiendanube_shipping_carriers_update
    • First observedtiendanube_store_get
    • First observedtiendanube_store_media_quotas_get
    • First observedtiendanube_transaction_events_create
    • First observedtiendanube_transactions_create
    • First observedtiendanube_transactions_get
    • First observedtiendanube_transactions_list
    • First observedtiendanube_variants_batch_replace
    • First observedtiendanube_variants_batch_update
    • First observedtiendanube_variants_create
    • First observedtiendanube_variants_delete
    • First observedtiendanube_variants_get
    • First observedtiendanube_variants_list
    • First observedtiendanube_variants_update
    • First observedtiendanube_variants_update_stock
    • First observedtiendanube_webhooks_create
    • First observedtiendanube_webhooks_delete
    • First observedtiendanube_webhooks_get
    • First observedtiendanube_webhooks_list
    • First observedtiendanube_webhooks_update

TDQS

B3.2/5.0

Scored across 191 tools

Disambiguation3/5

Most tools map to a distinct resource+action, but the set has built-in ambiguity: legacy order fulfillments vs modern fulfillment_orders, custom_fields vs custom_field_defs (duplicate unstable/stable surfaces), and several overlapping stock/price update tools (products_batch_stock_price, variants_batch_update, variants_update_stock). Descriptions help, but an agent must carefully choose among near-duplicates, especially across 191 tools.

Naming Consistency4/5

Names generally follow tiendanube_<resource>_<verb> in snake_case (e.g., products_list, products_get, products_create), which is predictable. There are minor deviations and awkward singular/plural shifts such as product_images vs products, order_fulfillments vs fulfillment_orders, and custom_field_defs vs custom_fields, plus a few upsert/set verbs.

Tool Count1/5

191 tools is an extreme mismatch for any practical MCP surface. Even for a broad e-commerce API, this set exposes nearly every endpoint, including unstable and legacy variants, forcing an agent to navigate a huge, unwieldy tool catalog.

Completeness4/5

Coverage is very broad across products, variants, images, orders, draft orders, fulfillment, shipping, payments, customers, discounts, content, webhooks, metafields, custom objects and billing. Some gaps remain, such as full CRUD for blog posts and promotions (no promotion update), plus incomplete lifecycle surfaces for a few content/billing resources.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    MCP server for managing WooCommerce stores through AI assistants like Claude. Provides 101 tools covering products, orders, customers, coupons, shipping, taxes, webhooks, settings, reports, and more.
    100
    169 npm
    2
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    An open-source MCP server that wraps the Shopline Open API into 143 AI-callable tools for e-commerce data analysis, enabling AI agents to query orders, products, inventory, customer behavior, and promotions from Shopline stores through natural language.
    100
    62 PyPI
    20
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    MCP server that exposes all 111 endpoints of the Tienda Nube API as tools for Cursor (or other MCP clients) to code directly with the API.
    15
    -