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 M8ven Score

πŸ‡ͺπŸ‡Έ 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 198 tools covering 39 API resources: products, variants, stock, orders, customers, coupons, shipping, payments, webhooks and more, plus guided workflows such as building combos with images.

Works with Claude Code, Claude Desktop, OpenAI Codex, Gemini CLI, Cursor, Google Antigravity, VS Code (Copilot), OpenCode, Windsurf, Cline and any client that speaks MCP over stdio or HTTP. An AI agent can install and configure it by itself, even if you have never touched an API key.

AI agents, read this first. If you were asked to install this server, do the whole setup yourself following guides/AGENT_INSTALL.md; do not hand steps back to the user. If it is already connected, use its tools for every store task and never a browser or the admin panel: start with the tiendanube_start_here tool.

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


Quick start (about 5 minutes)

The easiest way: let your AI agent do everything. Open your AI agent (Claude Code, Codex, Gemini CLI, Cursor, Antigravity, ...) 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 asks your permission once to handle your keys, guides you click by click to create the app (ticking every permission), saves the keys, configures your AI app, verifies the connection and tells you when to restart it. You do not edit any file. Credentials background: guides/GETTING_CREDENTIALS.md.

Then ask something:

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


Related MCP server: MCP Shopline

Manual install

Requirement: Node.js 18+. Everything runs straight from GitHub; no global install needed.

# 1. save your keys once (Brazil / Nuvemshop: add --region nuvemshop)
npx -y github:fedeclavero/tiendanube-mcp configure --store-id 123456 --token YOUR_ACCESS_TOKEN
# 2. register it in every supported AI app found on this computer
npx -y github:fedeclavero/tiendanube-mcp install --client all
# 3. check everything; it prints exactly what to fix if something is wrong
npx -y github:fedeclavero/tiendanube-mcp doctor

Then fully close and reopen your AI app. With a partner app (OAuth) instead of a token: npx -y github:fedeclavero/tiendanube-mcp login --client-id APP_ID --client-secret SECRET.

--client

App

Notes

claude-code

Claude Code

uses claude mcp add --scope user

claude-desktop

Claude Desktop

codex

OpenAI Codex (CLI / IDE / app)

~/.codex/config.toml

gemini-cli

Gemini CLI

cursor, windsurf

Cursor, Windsurf

vscode

VS Code (GitHub Copilot agent mode)

opencode

OpenCode

antigravity

Google Antigravity

config path from Google's codelab; stdio fields follow the common format

cline

Cline (VS Code)

path inferred from the extension layout

generic

any other stdio client

prints a snippet to paste

all configures every app it finds; separate several with commas. clients lists what is detected. The command merges without touching your other servers, keeps a timestamped backup and is safe to repeat. The keys live in ~/.config/tiendanube-mcp/credentials.json (Windows: %APPDATA%\tiendanube-mcp\), private to your user, so client configs contain no secrets.

Generic stdio config for any other MCP client:

{ "mcpServers": { "tiendanube": { "command": "npx", "args": ["-y", "github:fedeclavero/tiendanube-mcp"] } } }

ChatGPT connectors only accept a remote HTTPS server (no local programs): see "Clients that cannot run a local program" in guides/AGENT_INSTALL.md. Codex does run local servers, use --client codex.

First run is slower (npm downloads and builds the project, ~30 s). The configure command above already warms it up.

Environment variables (optional)

The saved credentials file is enough. Environment variables override it when set.

Variable

Required

Description

TIENDANUBE_STORE_ID

Numeric store ID (the user_id returned by OAuth)

TIENDANUBE_ACCESS_TOKEN

Store access token

TIENDANUBE_USER_AGENT

AppName (contact@domain.com); a sensible default is used

TIENDANUBE_READ_ONLY

true β†’ registers only the read tools (83). Default: read and write

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)

MCP_AUTH_TOKEN

HTTP mode only: required secret (a random one is generated and printed if unset)

TIENDANUBE_MCP_HOME

Folder for the credentials file (default ~/.config/tiendanube-mcp)


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

"Build two combos with products I already sell, with a nice image each"

tiendanube_create_combo (+ your own image tool β†’ image_files)

"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)

Guide & workflows

8

tiendanube_start_here, tiendanube_find_tool, tiendanube_get_recipe, tiendanube_doctor, tiendanube_api_request, tiendanube_create_combo, tiendanube_product_image_add_from_file, OAuth code exchange

Full list with routes and required scopes: guides/TOOLS.md. Also ships documentation resources (tiendanube://docs/*, tiendanube://guide/*).

Omnipotence and Plug & Play (Full Permissions)

  • Full permissions by design (Omnipotence) β€” The core philosophy of this MCP is to give the AI total power to operate your store without artificial roadblocks or missing-permission errors. During setup, ALL permissions must be requested and granted (complete read and write across the board): products, variants, inventory, orders, customers, coupons, promotions, shipping, content, and webhooks.

  • 100% Autonomous Plug & Play setup β€” The merchant simply provides their access credentials (Store ID and Access Token / App Secret). If the user does not know how to obtain them, the AI agent guides them click by click; and if the user cannot or does not understand how to do it, the AI agent itself takes the initiative using browser automation tools (agent-browser, Playwright, or browser navigation) to enter the Tiendanube admin/developer portal, create the application, and actively tick every single required read and write permission checkbox. The merchant only logs in if prompted, and the connection is ready instantly.

  • Honest annotations and safety guardrails β€” Each tool declares if it is destructive so well-designed AI clients ask for confirmation before massive changes or deletes, without hampering general autonomous execution.

  • Self-diagnosing β€” If an existing app was created with partial scopes, the doctor command lists exactly what is missing to achieve full operational power.

  • Your data stays yours β€” Credentials live in a private user-level file on your machine (~/.config/tiendanube-mcp/credentials.json, 600 permissions) and are sent exclusively to Tiendanube's official API. No telemetry, no third-party servers.

  • Rate-limit aware β€” Follows leaky-bucket headers and handles 429 retries transparently.

  • (Technical note: if someone explicitly requires look-only access, configure --read-only is available, but complete read and write access is the recommended and default standard).

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; it handles the keys and the configuration for you. Credentials: guides/GETTING_CREDENTIALS.md.

Can the AI delete my products by mistake? The tools can delete, and they are flagged destructive so well-behaved clients ask for confirmation; the agent rules also tell the AI to announce bulk changes first. If you prefer, switch to read-only with configure --read-only. 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? Tick all of them when you create the app, so you never have to redo it (scopes only apply to new tokens). 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 and always requires a token (MCP_AUTH_TOKEN). It exists for clients that cannot run local programs, such as ChatGPT connectors, through an HTTPS tunnel.

Develop

git clone https://github.com/fedeclavero/tiendanube-mcp.git
cd tiendanube-mcp && npm install     # also builds
npm test                              # offline tests: mocked API, installer in temp dirs
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

Inputs: id (required), coupon_id (required), additional_fields.

tiendanube_abandoned_checkouts_getAbandoned Checkouts GetA
Read-onlyIdempotent

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

Inputs: id (required), fields, response_format.

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[]}.

Inputs: page, fields, per_page, since_id, +5 more.

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

Inputs: charge (required), service_id (required).

tiendanube_billing_plans_createBilling Plans CreateB

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

Inputs: plan (required).

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

Inputs: plan_id (required).

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

Inputs: plan (required), plan_id (required).

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

Inputs: service_id (required), fields, response_format.

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

Inputs: service_id (required), subscription (required).

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[]}.

Inputs: blog_id (required), page, fields, per_page, +1 more.

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[]}.

Inputs: page, fields, per_page, response_format.

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

Inputs: rules (required), domain (required).

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

Inputs: id (required), coupon_id (required).

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

Inputs: id (required), line_item_id (required).

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

Inputs: id (required), fields, response_format.

tiendanube_categories_createCategories CreateA

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

Inputs: name (required), handle, parent, seo_title, +4 more.

tiendanube_categories_deleteCategories DeleteB
DestructiveIdempotent

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

Inputs: id (required).

tiendanube_categories_getCategories GetA
Read-onlyIdempotent

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

Inputs: id (required), fields, response_format.

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[]}.

Inputs: page, fields, handle, language, +8 more.

tiendanube_categories_updateCategories UpdateA
Idempotent

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

Inputs: id (required), name, handle, parent, +5 more.

tiendanube_coupons_createCoupons CreateB

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

Inputs: code (required), type (required), valid, value, +11 more.

tiendanube_coupons_deleteCoupons DeleteA
DestructiveIdempotent

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

Inputs: id (required).

tiendanube_coupons_getCoupons GetB
Read-onlyIdempotent

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

Inputs: id (required), fields, response_format.

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[]}.

Inputs: code, page, type, valid, +14 more.

tiendanube_coupons_updateCoupons UpdateA
Idempotent

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

Inputs: id (required), code, type, valid, +12 more.

tiendanube_customers_createCustomers CreateB

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

Inputs: name (required), email (required), note, extra, +6 more.

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

Inputs: id (required).

tiendanube_customers_getCustomers GetA
Read-onlyIdempotent

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

Inputs: id (required), fields, response_format.

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[]}.

Inputs: q, page, email, fields, +9 more.

tiendanube_customers_updateCustomers UpdateB
Idempotent

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

Inputs: id (required), name, note, email, +7 more.

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

Inputs: slug (required), entity (required), namespace (required), capability (required).

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

Inputs: slug (required), entity (required), namespace (required), response_format.

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

Inputs: slug (required), entity (required), namespace (required), capability.

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

Inputs: entity (required), definition (required).

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

Inputs: slug (required), entity (required), namespace (required).

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

Inputs: slug (required), entity (required), namespace (required), fields, +1 more.

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[]}.

Inputs: entity (required), page, fields, per_page, +1 more.

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

Inputs: name (required), entity (required), value_type (required), values, +3 more.

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

Inputs: entity (required), custom_field_id (required).

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

Inputs: entity (required), custom_field_id (required), fields, response_format.

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

Inputs: entity (required), entity_id (required), fields, response_format.

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[]}.

Inputs: entity (required), page, fields, per_page, +1 more.

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[]}.

Inputs: entity (required), custom_field_id (required), page, fields, +2 more.

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

Inputs: entity (required), values (required), entity_id (required).

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

Inputs: entity (required), custom_field_id (required), name, values, +3 more.

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

Inputs: slug (required), entry (required), namespace (required).

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

Inputs: slug (required), entrySlug (required), namespace (required).

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

Inputs: slug (required), entrySlug (required), namespace (required), fields, +1 more.

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[]}.

Inputs: slug (required), namespace (required), page, fields, +2 more.

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

Inputs: slug (required), entry (required), entrySlug (required), namespace (required).

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

Inputs: definition (required).

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

Inputs: slug (required), namespace (required).

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

Inputs: slug (required), namespace (required), fields, response_format.

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[]}.

Inputs: page, fields, per_page, response_format.

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

Inputs: slug (required), namespace (required), definition (required).

tiendanube_discounts_callbacks_deleteDiscounts Callbacks DeleteA
DestructiveIdempotent

Remove the registered discount callback. HTTP: DELETE /discounts/callbacks Required scope: write_discounts API version: 2025-03

Inputs: no named parameters.

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

Inputs: callback (required).

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

Inputs: dispute (required), order_id (required), transaction_id (required), api_version.

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

Inputs: order_id (required), dispute_id (required), transaction_id (required), fields, +2 more.

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

Inputs: dispute (required), order_id (required), dispute_id (required), transaction_id (required), +1 more.

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

Inputs: id (required).

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

Inputs: discount, products, shipping, contact_name, +4 more.

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

Inputs: id (required).

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

Inputs: id (required), fields, response_format.

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[]}.

Inputs: page, fields, per_page, response_format.

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

Inputs: id (required), discount, products, shipping, +5 more.

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

Inputs: templateID (required), fields, response_format.

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[]}.

Inputs: page, fields, per_page, response_format.

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

Inputs: templateID (required), subject, template_html, additional_fields.

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

Inputs: key (required), order_id (required), xml, number, +3 more.

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

Inputs: key (required), order_id (required).

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

Inputs: key (required), order_id (required), fields, response_format.

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[]}.

Inputs: order_id (required), page, fields, per_page, +1 more.

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

Inputs: key (required), order_id (required), xml, number, +3 more.

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

Inputs: id (required), order_id (required).

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

Inputs: id (required), order_id (required), fields, response_format.

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[]}.

Inputs: order_id (required), page, fields, per_page, +1 more.

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

Inputs: id (required), order_id (required), status, tracking_info, +2 more.

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

Inputs: id (required), event (required), order_id (required).

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

Inputs: id (required), event_id (required), order_id (required).

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

Inputs: id (required), event (required), event_id (required), order_id (required).

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

Inputs: id (required), fields, response_format.

tiendanube_locations_createLocations CreateA

Create a location. HTTP: POST /locations Required scope: write_locations API version: 2025-03

Inputs: name (required), address, allows_pickup, additional_fields.

tiendanube_locations_deleteLocations DeleteA
DestructiveIdempotent

Delete a location. HTTP: DELETE /locations/{id} Required scope: write_locations API version: 2025-03

Inputs: id (required).

tiendanube_locations_getLocations GetA
Read-onlyIdempotent

Get one location. HTTP: GET /locations/{id} Required scope: read_locations API version: 2025-03

Inputs: id (required), fields, response_format.

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[]}.

Inputs: id (required), page, fields, per_page, +1 more.

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[]}.

Inputs: page, fields, per_page, response_format.

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

Inputs: id (required).

tiendanube_locations_updateLocations UpdateB
Idempotent

Update a location. HTTP: PUT /locations/{id} Required scope: write_locations API version: 2025-03

Inputs: id (required), name, address, allows_pickup, +1 more.

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

Inputs: priorities (required).

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

Inputs: key (required), value (required), owner_id (required), namespace (required), +3 more.

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

Inputs: id (required).

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

Inputs: id (required), fields, response_format.

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[]}.

Inputs: owner_resource (required), key, page, value, +5 more.

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

Inputs: id (required), value, description, additional_fields.

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).

Inputs: code (required), region, client_id, client_secret.

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

Inputs: order_id (required), fulfillment (required).

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

Inputs: id (required), order_id (required).

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

Inputs: id (required), order_id (required), fields, response_format.

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[]}.

Inputs: order_id (required), page, fields, per_page, +1 more.

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

Inputs: id (required), email, reason, restock, +1 more.

tiendanube_orders_closeOrders CloseA

Close (archive) an open order. HTTP: POST /orders/{id}/close Required scope: write_orders API version: 2025-03

Inputs: id (required).

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

Inputs: products (required), note, status, gateway, +17 more.

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)

Inputs: id (required), fields, aggregates, response_format.

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

Inputs: id (required), fields, response_format.

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

Inputs: id (required), fields, response_format.

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

Inputs: id (required), invoice (required).

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[]}.

Inputs: id (required), page, fields, per_page, +1 more.

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[]}.

Inputs: q, page, fields, status, +15 more.

tiendanube_orders_openOrders OpenA

Re-open a closed order. HTTP: POST /orders/{id}/open Required scope: write_orders API version: 2025-03

Inputs: id (required).

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

Inputs: id (required), fields, response_format.

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

Inputs: id (required), status, owner_note, gateway_link, +1 more.

tiendanube_pages_createPages CreateB

Create a page. HTTP: POST /pages Required scope: write_content API version: 2025-03

Inputs: i18n (required), publish, additional_fields.

tiendanube_pages_deletePages DeleteB
DestructiveIdempotent

Delete a page. HTTP: DELETE /pages/{pageID} Required scope: write_content API version: 2025-03

Inputs: pageID (required).

tiendanube_pages_getPages GetA
Read-onlyIdempotent

Get one page. HTTP: GET /pages/{pageID} Required scope: read_content API version: 2025-03

Inputs: pageID (required), fields, response_format.

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[]}.

Inputs: page, fields, per_page, response_format.

tiendanube_pages_updatePages UpdateB
Idempotent

Update a page. HTTP: PUT /pages/{pageID} Required scope: write_content API version: 2025-03

Inputs: pageID (required), i18n, publish, additional_fields.

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[]}.

Inputs: page, fields, per_page, response_format.

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[]}.

Inputs: page, fields, per_page, response_format.

tiendanube_payment_providers_createPayment Providers CreateA

Register a payment provider. HTTP: POST /payment_providers Required scope: write_payments API version: 2025-03

Inputs: name (required), enabled, features, logo_urls, +8 more.

tiendanube_payment_providers_deletePayment Providers DeleteA
DestructiveIdempotent

Delete a payment provider. HTTP: DELETE /payment_providers/{id} Required scope: write_payments API version: 2025-03

Inputs: id (required).

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

Inputs: id (required), fields, response_format.

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[]}.

Inputs: page, fields, per_page, response_format.

tiendanube_payment_providers_updatePayment Providers UpdateA
Idempotent

Update a payment provider. HTTP: PUT /payment_providers/{id} Required scope: write_payments API version: 2025-03

Inputs: id (required), name, enabled, features, +9 more.

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

Inputs: payload (required), table_id (required).

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[]}.

Inputs: table_id (required), page, fields, per_page, +1 more.

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

Inputs: table_id (required), payload.

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

Inputs: payload (required), table_id (required).

tiendanube_price_tables_createPrice Tables CreateB

Create a price table. HTTP: POST /products/price-tables Required scope: write_products API version: 2025-03

Inputs: name (required), description, additional_fields.

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

Inputs: payload (required), table_id (required).

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[]}.

Inputs: table_id (required), page, fields, per_page, +1 more.

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

Inputs: table_id (required), payload.

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

Inputs: id (required).

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

Inputs: id (required), fields, response_format.

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[]}.

Inputs: page, fields, per_page, response_format.

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

Inputs: id (required), name, description, additional_fields.

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

Inputs: payload (required), table_id (required).

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[]}.

Inputs: table_id (required), page, fields, per_page, +1 more.

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

Inputs: table_id (required), payload.

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

Inputs: payload (required), table_id (required).

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

Inputs: product_id (required), alt, src, filename, +3 more.

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

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

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

Inputs: id (required), product_id (required), fields, response_format.

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[]}.

Inputs: product_id (required), src, page, fields, +4 more.

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

Inputs: id (required), product_id (required), alt, src, +2 more.

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

Inputs: src, filename, attachment, additional_fields.

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

Inputs: items (required).

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

Inputs: name (required), tags, brand, handle, +12 more.

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

Inputs: id (required).

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

Inputs: id (required), fields, response_format.

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

Inputs: sku (required), fields, response_format.

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[]}.

Inputs: q, ids, page, fields, +19 more.

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

Inputs: id (required), name, tags, brand, +13 more.

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

Inputs: promotion (required).

tiendanube_promotions_deletePromotions DeleteB
DestructiveIdempotent

Delete a promotion. HTTP: DELETE /promotions/{id} Required scope: write_discounts API version: 2025-03

Inputs: id (required).

tiendanube_promotions_getPromotions GetA
Read-onlyIdempotent

Get one promotion. HTTP: GET /promotions/{id} Required scope: read_discounts API version: 2025-03

Inputs: id (required), fields, response_format.

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[]}.

Inputs: page, fields, per_page, response_format.

tiendanube_scripts_createScripts CreateA

Associate a Partner Portal script with the store. HTTP: POST /scripts Required scope: write_scripts API version: 2025-03

Inputs: script_id (required), query_params, additional_fields.

tiendanube_scripts_deleteScripts DeleteA
DestructiveIdempotent

Remove a script from the store. HTTP: DELETE /scripts/{id} Required scope: write_scripts API version: 2025-03

Inputs: id (required).

tiendanube_scripts_getScripts GetA
Read-onlyIdempotent

Get a script association. HTTP: GET /scripts/{id} Required scope: none (any valid token) API version: 2025-03

Inputs: id (required), fields, response_format.

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[]}.

Inputs: page, fields, per_page, response_format.

tiendanube_scripts_updateScripts UpdateB
Idempotent

Update a store's script association/parameters. HTTP: PUT /scripts/{id} Required scope: write_scripts API version: 2025-03

Inputs: id (required), script_id, query_params, additional_fields.

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

Inputs: option (required), carrier_id (required).

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

Inputs: option_id (required), carrier_id (required).

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

Inputs: option_id (required), carrier_id (required), fields, response_format.

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[]}.

Inputs: carrier_id (required), page, fields, per_page, +1 more.

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

Inputs: option (required), option_id (required), carrier_id (required).

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

Inputs: name (required), callback_url (required), types, active, +1 more.

tiendanube_shipping_carriers_deleteShipping Carriers DeleteA
DestructiveIdempotent

Delete a shipping carrier. HTTP: DELETE /shipping_carriers/{id} Required scope: write_shipping API version: 2025-03

Inputs: id (required).

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

Inputs: id (required), fields, response_format.

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[]}.

Inputs: page, fields, per_page, response_format.

tiendanube_shipping_carriers_updateShipping Carriers UpdateB
Idempotent

Update a shipping carrier. HTTP: PUT /shipping_carriers/{id} Required scope: write_shipping API version: 2025-03

Inputs: id (required), name, types, active, +2 more.

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

Inputs: fields, response_format.

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

Inputs: fields, response_format.

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

Inputs: event (required), order_id (required), transaction_id (required).

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

Inputs: order_id (required), transaction (required).

tiendanube_transactions_getTransactions GetA
Read-onlyIdempotent

Get one transaction. HTTP: GET /orders/{order_id}/transactions/{id} Required scope: read_payments API version: 2025-03

Inputs: id (required), order_id (required), fields, response_format.

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[]}.

Inputs: order_id (required), page, fields, per_page, +1 more.

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

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

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

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

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

Inputs: product_id (required), mpn, sku, cost, +15 more.

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

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

tiendanube_variants_getVariants GetA
Read-onlyIdempotent

Get one variant. HTTP: GET /products/{product_id}/variants/{id} Required scope: read_products API version: 2025-03

Inputs: id (required), product_id (required), fields, response_format.

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[]}.

Inputs: product_id (required), page, fields, per_page, +6 more.

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

Inputs: id (required), product_id (required), mpn, sku, +16 more.

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

Inputs: value (required), action (required), product_id (required), id, +2 more.

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

Inputs: url (required), event (required), additional_fields.

tiendanube_webhooks_deleteWebhooks DeleteA
DestructiveIdempotent

Delete a webhook. HTTP: DELETE /webhooks/{id} Required scope: scope of the event's entity API version: 2025-03

Inputs: id (required).

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

Inputs: id (required), fields, response_format.

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[]}.

Inputs: url, page, event, fields, +7 more.

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

Inputs: id (required), url, event, additional_fields.

Tool Schema Changelog

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

Loading tool schema changelog…

    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 recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      D
      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
      112 npm
      2
      MIT
    • A
      license
      A
      quality
      D
      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
      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
      -