Connector OAuth

Authorize MCP connections to a store or developer organization.

Connect an MCP client to one Tringify store or developer organization using OAuth authorization code flow with PKCE. The user chooses the target and approves access in their Tringify account. The Store MCP edits eligible orders and manages Markets, products, collections, categories, attributes, brands, vendors, tags, files, store languages, pages, policies, and blog posts, tags, categories, authors, comments, comment settings, blog index SEO, and menus. It also reads custom domains and email sender settings, edits records in DNS zones Tringify hosts, sets the customer reply-to address and checks suppressed recipients. Files include separate Media and Site Assets libraries and a direct-upload workflow. Store connections can also add a theme bundle to a storefront as a new, unpublished theme. The developer resource manages the organization's theme listings: upload a bundle, publish a version, and install it into a development store. App operations are not exposed yet.

Connect with Codex#

In the Codex app, open Settings > MCP servers > Add server. Name it Tringify, choose Streamable HTTP, and enter https://api.tringify.com/mcp/store. Save and restart when prompted, then select Authenticate. Sign in to Tringify, choose a store, review the requested access, and approve. Complete the browser flow on the same computer that started it.

If you use the Codex CLI, add the server with the command below. Follow its sign-in prompt; if authentication is still needed, run codex mcp login tringify. The app and CLI share MCP settings on the same host, so use either setup method.

bash
codex mcp add tringify --url https://api.tringify.com/mcp/store

Start a new conversation and ask Codex to list five tags in the connected store. This read needs store:products:read; the create, update, and delete workflow also needs store:products:write. Tringify hosts the MCP server. No API key or Tringify package is needed. See the connection guide and GitHub quickstart for setup, examples, and troubleshooting.

Resources and discovery#

Resource

Metadata

https://api.tringify.com/mcp/store

https://api.tringify.com/.well-known/oauth-protected-resource/mcp/store

https://api.tringify.com/mcp/developer

https://api.tringify.com/.well-known/oauth-protected-resource/mcp/developer

Discover the authorization server from resource metadata or the WWW-Authenticate header on an unauthenticated resource request. Its issuer is https://api.tringify.com/oauth/connectors; authorization-server metadata is available at https://api.tringify.com/.well-known/oauth-authorization-server/oauth/connectors. Send the exact resource URL, without a trailing slash, as resource in authorization and token requests. A token issued for one resource is rejected by the other.

Register a public client#

Use an HTTPS Client ID Metadata Document URL as client_id. The document must return JSON with the same client_id, a client_name, an exact redirect_uris list, and token_endpoint_auth_method: "none" or token_endpoint_auth_methods_supported containing none. The URL must be public HTTPS on port 443, with no query, fragment, or redirect. Tringify reads the document when authorization starts.

json
{"client_id":"https://tool.example/oauth/client.json","client_name":"Example tool","redirect_uris":["https://tool.example/oauth/callback"],"token_endpoint_auth_method":"none","grant_types":["authorization_code","refresh_token"],"response_types":["code"]}

Clients that use dynamic registration can POST the same metadata, without client_id, to /oauth/connectors/register. The JSON response supplies a generated client_id. No client secret is issued. Client names allow up to 100 characters; a client can register up to 10 callbacks. Callbacks must use HTTPS, except HTTP loopback callbacks for local clients. Callback URLs match exactly except for the port of HTTP callbacks on the literal loopback addresses 127.0.0.1 and [::1]. Native clients may choose an available port at sign-in; the scheme, host, path, query, and URL encoding must still match. The token exchange requires the exact callback used in that authorization request, including its port. Fragments and embedded credentials are rejected.

Request authorization#

text
GET https://api.tringify.com/oauth/connectors/authorize
 ?response_type=code
 &client_id=https%3A%2F%2Ftool.example%2Foauth%2Fclient.json
 &redirect_uri=https%3A%2F%2Ftool.example%2Foauth%2Fcallback
 &resource=https%3A%2F%2Fapi.tringify.com%2Fmcp%2Fstore
 &scope=connection%3Aread%20store%3Aproducts%3Aread%20store%3Aproducts%3Awrite
 &state=YOUR_RANDOM_STATE
 &code_challenge=YOUR_BASE64URL_SHA256_CHALLENGE
 &code_challenge_method=S256

Use a new random state and PKCE verifier for each attempt. The verifier must contain 43–128 unreserved characters. Compute code_challenge as unpadded base64url of the verifier's SHA-256 hash. Check the returned state and iss before exchanging code. A denial returns error=access_denied. The pending approval expires after 10 minutes; an issued authorization code expires after 5 minutes and can be exchanged once.

Exchange the code#

bash
curl 'https://api.tringify.com/oauth/connectors/token' \
 -H 'Content-Type: application/x-www-form-urlencoded' \
 --data-urlencode 'grant_type=authorization_code' \
 --data-urlencode 'client_id=https://tool.example/oauth/client.json' \
 --data-urlencode 'redirect_uri=https://tool.example/oauth/callback' \
 --data-urlencode 'resource=https://api.tringify.com/mcp/store' \
 --data-urlencode 'code=RETURNED_CODE' \
 --data-urlencode 'code_verifier=YOUR_ORIGINAL_VERIFIER'
json
{"access_token":"OPAQUE_ACCESS_TOKEN","token_type":"Bearer","expires_in":900,"refresh_token":"OPAQUE_REFRESH_TOKEN","scope":"connection:read store:products:read store:products:write"}

Store credentials securely and send access tokens only to their resource URL in Authorization: Bearer …. These credentials are not Store API tokens and are not accepted by ordinary Store Admin or Developer API endpoints. This public-client flow rejects client secrets and client assertions. It does not return an ID token.

Scopes and current authority#

connection:read permits the MCP connection and is the default if scope is omitted. On the Store resource, request store:products:read for list/get and store:products:write for create/update/delete. Request both for catalog reads and writes. Media reads require store:files:read; Media writes and upload operations require store:files:write. Site Assets use store:online_store.site_assets:read and store:online_store.site_assets:write instead. Pages and Policies require store:pages:read or store:pages:write. Blog posts, tags, categories, and authors require store:blog:read or store:blog:write. These permissions are independent of Products access. Translations additionally require store:settings.languages:read or store:settings.languages:write, alongside the resource permission. Product mutations affecting Gift Card products also require store:gift_cards:write where the API requires Gift Card write access. A context-only Store connection can read universal reference data and the four reference guides. Store catalog, file, language settings, and currency settings require their own permissions. Storefront theme tools require store:online_store.storefronts:read to list storefronts and themes and store:online_store.storefronts:write to upload and import a theme. On the developer resource, organization:themes:read lists theme listings and versions and organization:themes:write uploads bundles, publishes versions and installs them into development stores; get_connection_context needs only connection:read. organization:apps:read and organization:apps:write can be approved but no tool uses them yet. Scope names for store permissions use store:<permission>; developer organization permissions use organization:<permission>. Request only the scopes needed by available tools. Approval binds a connection to one user, client, resource, and selected target. The effective scope set cannot exceed either that approval or the user's current permissions. An owner approving a narrow scope still creates a narrow connection.

Each resource request checks current membership and permissions. Removing a member or disconnecting the tool invalidates its access. Rejoining does not restore the removed connection. Account, store, subscription, and organization restrictions still apply. An operation already authorized before a disconnect may finish; disconnecting does not reverse completed work.

Refresh and disconnect#

Access tokens last up to 15 minutes. Refresh tokens last up to 30 days, and the connection expires after 90 days even if refreshed. POST grant_type=refresh_token, client_id, refresh_token, and the original resource to the token endpoint. An optional scope can narrow access, never enlarge it. Save the new refresh token atomically and discard the previous one. Serialize refreshes for a connection: reusing a consumed refresh token revokes that connection, including its newly issued tokens. An uncertain refresh response requires a new authorization rather than replaying the old token. Approving an update to an existing connection starts a new connection lifetime when its authorization code is successfully exchanged.

bash
curl 'https://api.tringify.com/oauth/connectors/revoke' \
 -H 'Content-Type: application/x-www-form-urlencoded' \
 --data-urlencode 'client_id=YOUR_CLIENT_ID' \
 --data-urlencode 'token=ACCESS_OR_REFRESH_TOKEN'

Revoking either token disconnects its entire connection. An unknown token or a token from another client receives the same successful response without exposing its status. Users can also disconnect in Accounts > Connected tools; store and developer organization owners can disconnect their team's connections for their target. Other connections from the same client are unaffected.

Update a connection’s access#

Start a new OAuth authorization from the connected tool, requesting the access it needs. Keep the same registered client and resource. On the Tringify approval screen, select the same store or developer organization and choose the existing connection. Review the permissions marked as new and any access that will be removed, then select Update access. If more than one connection matches, select the connection you intend to update. Creating a separate connection remains an explicit choice.

Approval alone does not change the existing connection. The update takes effect when the client successfully exchanges the new authorization code with its PKCE verifier. The connection keeps its ID; its previous access and refresh tokens stop working, and the returned tokens carry the approved access allowed by the user's current permissions. Replace stored credentials atomically and refresh tool discovery. A rejected or abandoned authorization leaves the current connection unchanged.

A disconnected or expired connection cannot be updated. If the connection changes after the approval screen was loaded, start authorization again. Accounts > Connected Tools provides Update access guidance; authorization starts in the tool so that it can receive the replacement credentials. For Codex, use codex mcp login <server-name> with the existing server name. Token refresh never adds permissions.

Audit attribution#

Audited changes are attributed to the Tringify user who authorized the connection. In the store audit log, the source is API and the credential label is Connected tool: <client name>. A team member's connection records that member as the actor; it does not act as the store owner. File uploads keep the same user and tool attribution. Normal resource audit behavior applies; reading data does not create a mutation audit entry.

Call the MCP resource#

Use Streamable HTTP with JSON responses. The server is stateless and does not issue Mcp-Session-Id; GET and DELETE on the MCP resource return 405. Follow MCP initialization and version negotiation. Send Content-Type: application/json, an Accept header containing application/json and text/event-stream, the negotiated MCP-Protocol-Version, and the Bearer token on each POST.

json
{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}

The Store tool list reflects the connection's approved access and the user's current permissions. Discovery includes only tools allowed by the connection. Product read access exposes catalog reads; write access exposes their mutations. File tools appear for the permitted library access. Write permission does not imply read permission. A previously listed tool can become unavailable after permissions change. Calling a known tool without its required scope returns HTTP 403 with an insufficient_scope challenge. Obtain new consent for additional permissions; refreshing cannot add them. Newly released tools within an already-approved permission can appear after the client refreshes discovery. Existing Products read/write approvals therefore cover the new Brand, Vendor, and Attribute tools; file access requires its own approval.

Product tag tools#

Tool

Scope

Arguments

list_tags

store:products:read

Optional search, limit, cursor, sort_by, sort_direction. Defaults: 50, name ascending. Sort by name, product_count, created_at, or updated_at; direction asc or desc.

get_tag

store:products:read

Required positive integer id.

create_tag

store:products:write

Required name; optional slug. Omitted or empty slug is generated using the store's default language.

update_tag

store:products:write

Required id and at least one of name or slug. Only supplied fields change; an empty name or slug is rejected.

delete_tag

store:products:write

Required id; optional confirmed and confirmation_token for a confirmed follow-up.

All five tools act on the store chosen during OAuth approval. There is no store ID argument. Unknown arguments, invalid types, and non-positive IDs are rejected. Tag names, slugs, duplicates, and store limits follow the Tags API contract. Creating a tag does not assign it to products. Bulk actions and tag translations are not exposed as MCP tools in this release.

json
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"list_tags","arguments":{"search":"summer","limit":20,"sort_by":"name","sort_direction":"asc"}}}

List returns one page with tags, total, limit, sort_by, sort_direction, has_next, has_previous, and cursors when available. Pass an exact returned next_cursor or previous_cursor for another page. Reset the cursor when search or sorting changes. Dates use ISO timestamps. Results appear in both structuredContent and JSON text content with success, data, and any success code/message.

json
{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"create_tag","arguments":{"name":"Summer Sale"}}}

For deletion, first call delete_tag with only id. An unused tag is deleted immediately. If product assignments or collection rules are affected, the tool returns isError: true and a CONFIRMATION_REQUIRED error containing impact warnings and a confirmation token. Present that impact to the user. After approval, call again with the same id, confirmed: true, and the exact confirmation_token. Do not automatically confirm. A confirmed deletion removes those tag references while retaining the products. The normal tag audit entries and webhook events also apply to MCP writes.

Validation and domain failures are tool results with isError: true and a public error containing code, message, and any details or public params. Preserve these fields, especially confirmation details. A timeout can leave a write's outcome unknown: inspect the affected record before issuing another write. Requests are bounded by the gateway body limit and the same resource limits as the API. Binary uploads go directly to their signed upload URL. MCP writes are not automatically retried.

Brand and vendor tools#

Tools

Arguments

list_brands, list_vendors

Optional search, cursor, limit, sort_by, sort_direction. Sort by name, product_count, created_at, or updated_at; defaults to name ascending and the service's page size.

get_brand, get_vendor

Required positive integer id.

create_brand, create_vendor

Required name. Optional slug, description, seo_title, seo_description, image_id, template_handle.

update_brand, update_vendor

Required id and at least one editable field. Accepts the create fields plus optional create_redirect.

delete_brand, delete_vendor

Required id; optional confirmed and confirmation_token after reviewing a confirmation-required result.

List/get requires store:products:read; create/update/delete requires store:products:write. Names, slugs, descriptions, SEO, template assignments, uniqueness and store limits follow the corresponding Brands and Vendors contracts. Omitted update fields remain unchanged. Null is rejected. Empty description or SEO strings clear those fields after their translations are removed; empty image_id clears the image. On create, an omitted or empty slug is generated from the name. A slug change creates a redirect unless create_redirect is false.

Binding a non-empty image_id requires store:files:read in addition to product write access. Use an existing Media image ID; Site Assets and external URLs are not accepted as catalog image references. Clearing or omitting the image does not require file read access. Deletion uses the same impact-confirmation flow as Tags and keeps the related products. Lists return brands or vendors with totals and cursor metadata; get/create/update return the resource.

json
{"name":"update_brand","arguments":{"id":7,"description":"","slug":"new-brand-slug","create_redirect":true}}

Attribute tools#

Tool

Arguments

list_attributes

Optional search, cursor, limit, sub_type, in_use, summary, sort_by, sort_direction. Sort by name, created_at, or updated_at. summary: true avoids returning full option arrays.

get_attribute

Required positive integer id. Returns options, subtype, usage and the current revision.

create_attribute

Required name, sub_type (standard, swatch or image), and non-empty options. Optional slug, description, sort_order.

update_attribute

Required id, unchanged sub_type, exact expected_revision, and complete non-empty options. Optional name, slug, description, sort_order.

delete_attribute

Required positive integer id. Deletion is blocked while products or storefront filters use it.

Attribute list/get requires product read; mutations require product write. Each option accepts label, value, color, file_id, and sort_order; label is required. A missing or blank value is generated from its label. Swatches require color, and image options require a Media image. Update options also accept id: keep existing IDs and include every option to retain. An omitted or zero ID creates an option; leaving an existing option out requests its removal. The service blocks removal of options in use. Parent fields omitted from the update stay unchanged.

Read the attribute immediately before editing. Send its exact revision as expected_revision; a stale revision fails without overwriting the newer attribute. Do not invent a revision or blindly repeat a rejected update. Subtype is immutable, and slug edits are blocked while products or storefront filters use the attribute. New option image references require Files read access; retaining the same image on the same existing option does not. The Attributes reference describes option validation and limits. Creating an attribute does not create variants.

File tools and libraries#

Every file tool requires library: "media" or library: "site_assets". File IDs are UUID strings. The selected library controls the required permission and the files the operation may access; choosing another library does not widen a grant. File get/update/delete also enforce the library of the stored record. Files cannot be moved between libraries through these tools.

Tool

Arguments and access

list_files

Read access. Optional search, cursor, positive limit, and media_type (image, video, document, 3d).

get_file

Read access. Required id; returns metadata, URLs, revision and preview state.

update_file

Write access. Required id and original_filename and/or alt_text. Omitted fields remain unchanged; empty alt text clears it. Does not replace file bytes.

delete_file

Write access. Required id; optional confirmation fields after reviewing the impact. Required references can block deletion.

get_file_limits

Read access. Returns supported formats, upload sizes, batch and metadata limits.

get_storage_quota

Read access. Returns the shared store storage allowance and usage for both libraries.

create_file_uploads

Write access. Required non-empty items; each item has original_filename, mime_type, positive size_bytes, and optional alt_text.

finalize_file_uploads

Write access. Required non-empty intent_ids from the upload preparation.

get_file_upload_status

Write access. Required non-empty intent_ids; reads the status of uploads belonging to the store and authorizing user.

Use get_file_limits and get_storage_quota before uploading. create_file_uploads returns data.intents, with each intent's intent_id, filename, status, signed url, required headers, and expires_in. PUT the original bytes directly to that URL using those headers; do not send base64 file contents in tool arguments. Then call finalize_file_uploads with the same library and intent IDs. Check get_file_upload_status while processing. A ready result includes the validated file; a failure includes its error. Preparing or uploading bytes alone does not make the file ready to attach. Signed upload URLs are temporary credentials and must not be published.

The upload flow keeps the existing file-content validation, quota checks, library rules and automatic preview processing. File tools do not provide image editing, byte replacement, preview retry, bulk deletion, translations, or metafield operations. A file deletion can return CONFIRMATION_REQUIRED; show the complete impact before confirming, and never override a required-reference block. See Files for the library contract.

json
{"name":"create_file_uploads","arguments":{"library":"media","items":[{"original_filename":"logo.png","mime_type":"image/png","size_bytes":12345,"alt_text":"Store logo"}]}}

Store API operations#

These tools cover the documented Store API operations for Products, Collections, Categories, Attributes, Languages, Currencies, Markets, Domains, Email, Pages, Policies, Blog Posts, Blog Tags, Blog Categories, and Blog Authors that accept merchant credentials: resource management, variants, quantity pricing, supported bulk actions, collection rules and product lists, ordering, metafields, and translations. Product purchase-requirement endpoints require an installed app identity and are not exposed through a user connection. They cannot be enabled by selecting additional user permissions.

Tool arguments use the documented API field names, with path and query parameters alongside JSON body fields. The variant path parameter is named variant_id. Do not provide an Authorization header, store ID, user ID, or app identity. The attribute list also accepts summary: true to omit full option arrays. Optional idempotency_key is available on content translation writes. File tools use library: media|site_assets in place of the API file type, and media_type for its media query filter. All listed operations follow the corresponding Store API validation and mutation behavior. Omitted fields, explicit nulls, validation, confirmations and partial bulk results follow the corresponding API operation. Check the returned success and failure lists for bulk changes.

Variant creation and core edits happen through the parent product's create or update tool, using variants, new_variants, and removed_variant_ids as documented. There is no standalone create-variant tool. Use list_catalog_metafield_definitions to discover accessible definitions before writing values by namespace and key. Metafields follow the connected user's merchant access; the connection has no installed app identity.

Language tools use store:settings.languages:read or store:settings.languages:write; Products access is not required. list_available_languages lists supported locale codes and list_languages returns the enabled set, default language and current plan limit. Supported-language discovery is universal reference data; list_available_languages requires a valid Store connection, without Languages settings access. set_languages replaces the complete enabled set when locales is supplied; omit it to leave the set unchanged. Always retain the default language. Adding a language does not publish it on an individual storefront or translate content automatically. Storefront assignments remain a separate Online Store action.

Removing a language, changing the default, and resetting translations can permanently remove translation data. Present the backend impact and obtain approval before resending the same operation with confirmed: true and its confirmation_token. A storefront-assigned language cannot be removed until its assignments are removed. delete_language_translations resets one enabled non-default language without disabling it. The same plan limits, validation, audit records, and language webhook events as the Languages API apply.

Menus require store:menus:read or store:menus:write, independently of Pages and Blog. Menu reads include full trees, lazy item pages, and whole-menu item search. A save requires the revision returned by a read and exactly one of a complete items tree or ordered ops; a stale save returns MENU_SAVE_CONFLICT. Preserve existing item IDs to retain translations. Deleting a menu removes every item; deleting an item removes its descendants. Menu item titles have individual and batch translation tools, with additional Languages access. Pages include list, search, create, update, delete, bulk deletion, translations, metafields, and definition discovery. Policy records are a fixed set: use the policy type for get/update and the policy UUID for translations. There are no create or delete policy tools. Use list_page_metafield_definitions or list_blog_metafield_definitions for accessible content definitions; Products permissions are not needed for those discovery tools.

Blog Posts include scheduling fields, single and bulk changes, categories/tags assignment and removal, translations, and metafields. Removing an author used by posts requires reassign_to_author_id; use the existing author workflow rather than deleting or orphaning those posts. Blog Authors have no translation endpoints. Attaching a post featured image or author avatar also requires Files read access. Blog Comments support listing, status counts, single and bulk moderation, and permanent deletion. Comment settings expose comment mode and moderation. Blog index SEO includes source and translated fields; assigning its social image also requires Site Assets read access.

Content translation tools are available for products, variant titles, collections, categories, attributes, attribute options, tags, brands, vendors, pages, policies, blog posts, blog tags, blog categories, and supported product, variant, category, collection, brand, vendor, page, blog post, and blog category metafields. Product, collection, category, attribute, attribute-option, tag, brand, vendor, page, policy, blog post, blog tag, and blog category translations also have batch tools. Variant titles and metafield translations use their individual tools. Files do not currently expose translation tools through MCP. AI translation jobs and CSV translation imports or exports are not included.

Currency configuration reads require store:settings.currencies:read; writes require store:settings.currencies:write. These are independent of Products and Languages access. The base currency remains immutable; plan restrictions, decimal rates, omitted-field preservation, automatic-rate rules and cleanup confirmations follow the Currencies API. Show returned impact before confirming currency data removal; historical commerce and financial records are preserved.

Domain and DNS reads require store:settings.domains:read; DNS record changes require store:settings.domains:write. Records Tringify keeps for the storefront connection and email sending stay locked, and adding or removing domains stays in Store Admin. See Domains & DNS. Email settings reads require store:settings.email:read; setting the customer reply-to address requires store:settings.email:write, and a new address takes effect once its inbox confirms the link Tringify sends. See Email.

Markets operations#

Markets reads require store:markets:read; writes require store:markets:write. These permissions are independent of Products and store Currencies access. Request both for workflows that read and write. Existing connections add them through an approved access update, then refresh tool discovery. All 107 documented Markets JSON operations are exposed: core markets, countries and currency assignments; tax classes/zones/rates/price rules; discounts and settings; shipping; duties; COD; connected payment-provider availability/discounts; checkout limits, fees and ordering.

Market path IDs are named market_id, tax_class_id, tax_zone_id, tax_rate_id, discount_id, currency_id, binding_id, rule_id, method_id, zone_id and fee_id as applicable. Tool input schemas distinguish numeric values, decimal strings, amount maps and nullable fields. Read the current market, assigned currencies, limits and complete specialist definition before editing. Market PATCH preserves omitted fields; specialist PUT operations follow their documented replacement behavior. A tax-rate batch containing creates must not be retried automatically. CSV tax imports/exports and their jobs are available in Store Admin and mobile.

The Markets Markdown resource at https://dev-docs.tringify.com/store-api/markets/markets explains country/currency dependencies, exact amounts, tax/duty setup, shipping modes, COD restrictions, discounts and checkout, confirmation and bulk behavior. It is public integration guidance and contains no store data. Use tool discovery for current input fields. Markets tools use the same native Store API validation, ownership, audit and webhook behavior.

Reference guides#

Order editing#

Use get_order and get_order_edit_options to read the current version, editable fields and line quantity floors. Read access is store:orders:read; preview, shipping quotes and applying require store:orders:write. Neither scope grants the other. An existing connection must approve additional access before these tools become available.

Build the draft with order_version, item changes and optional updates for contact, addresses, shipping or the manual order discount. Existing item prices and manual line discounts use set_price and set_discount. These operations do not reassign the customer account or change the order currency. Fulfillment or item refunds lock prices, discounts and delivery details. Existing promotion identities remain recorded; this flow does not add coupon codes.

Use list_order_edit_shipping_options for configured delivery methods, then preview_order_edit. Review totals, before/after fields, refund choices and affected fulfillment apps. Pass the matching preview_token and a stable idempotency_key to apply_order_edit. For a timeout, retry only the identical request with the same key. For a stale version or quote, read and preview again before applying. list_order_edits returns saved history. The Store API reference documents the complete order edit contract.

The Store MCP exposes four read-only Markdown resources: https://dev-docs.tringify.com/store-api/reference, https://dev-docs.tringify.com/store-api/reference/phone-numbers, https://dev-docs.tringify.com/store-api/reference/addresses, and https://dev-docs.tringify.com/store-api/markets/markets. Clients can list and read them with the existing Store connection. They explain lookup data, accepted phone formats, exact country/subdivision values, postal validation and resource-specific address requirements. Country tables are obtained with the lookup tools; they are not duplicated in the guides. Reference resources are bounded to 32 KiB each.

Universal reference tools expose countries, subdivisions, supported languages and currencies, timezones, phone-code metadata, number-format defaults, address formats and the Store API scope catalog. They do not expose a store's enabled language or currency configuration and do not change access. The scope catalog lists requestable API scopes, not the connection's approved permissions. Prefer a country-specific address lookup for a form; complete reference catalogs have no pagination.

Order editing operations#

MCP tool

Store API operation

Required access

get_order

GET /api/2025-01/orders/{id}

store:orders:read

list_order_edits

GET /api/2025-01/orders/{id}/edits

store:orders:read

get_order_edit_options

GET /api/2025-01/orders/{id}/edit-options

store:orders:read

list_order_edit_shipping_options

POST /api/2025-01/orders/{id}/edit-shipping-options

store:orders:write

preview_order_edit

POST /api/2025-01/orders/{id}/edits/preview

store:orders:write

apply_order_edit

POST /api/2025-01/orders/{id}/edits

store:orders:write

Market operations#

MCP tool

Store API operation

Required access

get_market_limits

GET /api/2025-01/markets/limits

store:markets:read

get_assigned_market_countries

GET /api/2025-01/markets/assigned-countries

store:markets:read

list_markets

GET /api/2025-01/markets

store:markets:read

create_market

POST /api/2025-01/markets

store:markets:write

get_market

GET /api/2025-01/markets/{marketId}

store:markets:read

update_market

PATCH /api/2025-01/markets/{marketId}

store:markets:write

delete_market

DELETE /api/2025-01/markets/{marketId}

store:markets:write

list_market_currencies

GET /api/2025-01/markets/{marketId}/currencies

store:markets:read

add_market_currency

POST /api/2025-01/markets/{marketId}/currencies

store:markets:write

bulk_add_market_currencies

POST /api/2025-01/markets/{marketId}/currencies/bulk

store:markets:write

bulk_remove_market_currencies

POST /api/2025-01/markets/{marketId}/currencies/bulk-delete

store:markets:write

remove_market_currency

DELETE /api/2025-01/markets/{marketId}/currencies/{currencyId}

store:markets:write

list_market_country_currencies

GET /api/2025-01/markets/{marketId}/country-currencies

store:markets:read

get_market_country_currency_limits

GET /api/2025-01/markets/{marketId}/country-currencies/limits

store:markets:read

set_market_country_currencies

PUT /api/2025-01/markets/{marketId}/country-currencies

store:markets:write

bulk_assign_market_country_currencies

POST /api/2025-01/markets/{marketId}/country-currencies/bulk-assign

store:markets:write

assign_all_market_country_currencies

POST /api/2025-01/markets/{marketId}/country-currencies/auto-assign

store:markets:write

list_market_payment_providers

GET /api/2025-01/markets/{marketId}/payment-providers

store:markets:read

update_market_payment_provider

PUT /api/2025-01/markets/{marketId}/payment-providers/{bindingId}

store:markets:write

list_market_payment_adjustments

GET /api/2025-01/markets/{marketId}/payment-adjustments

store:markets:read

list_market_provider_payment_adjustments

GET /api/2025-01/markets/{marketId}/payment-providers/{bindingId}/adjustments

store:markets:read

create_market_payment_adjustment

POST /api/2025-01/markets/{marketId}/payment-providers/{bindingId}/adjustments

store:markets:write

update_market_payment_adjustment

PUT /api/2025-01/markets/{marketId}/payment-providers/{bindingId}/adjustments/{ruleId}

store:markets:write

delete_market_payment_adjustment

DELETE /api/2025-01/markets/{marketId}/payment-providers/{bindingId}/adjustments/{ruleId}

store:markets:write

Market tax class operations#

MCP tool

Store API operation

Required access

get_market_tax_class_limits

GET /api/2025-01/markets/tax-classes/limits

store:markets:read

list_market_tax_classes

GET /api/2025-01/markets/{marketId}/tax-classes

store:markets:read

create_market_tax_class

POST /api/2025-01/markets/{marketId}/tax-classes

store:markets:write

get_market_tax_class

GET /api/2025-01/markets/{marketId}/tax-classes/{taxClassId}

store:markets:read

update_market_tax_class

PUT /api/2025-01/markets/{marketId}/tax-classes/{taxClassId}

store:markets:write

bulk_delete_market_tax_classes

POST /api/2025-01/markets/{marketId}/tax-classes/bulk-delete

store:markets:write

delete_market_tax_class

DELETE /api/2025-01/markets/{marketId}/tax-classes/{taxClassId}

store:markets:write

Market tax zone operations#

MCP tool

Store API operation

Required access

get_market_tax_zone_limits

GET /api/2025-01/markets/tax-zones/limits

store:markets:read

list_market_tax_available_countries

GET /api/2025-01/markets/{marketId}/tax-zones/available-countries

store:markets:read

list_market_tax_zones

GET /api/2025-01/markets/{marketId}/tax-zones

store:markets:read

create_market_tax_zone

POST /api/2025-01/markets/{marketId}/tax-zones

store:markets:write

get_market_tax_zone

GET /api/2025-01/markets/{marketId}/tax-zones/{taxZoneId}

store:markets:read

update_market_tax_zone

PUT /api/2025-01/markets/{marketId}/tax-zones/{taxZoneId}

store:markets:write

delete_market_tax_zone

DELETE /api/2025-01/markets/{marketId}/tax-zones/{taxZoneId}

store:markets:write

Market tax rate operations#

MCP tool

Store API operation

Required access

get_market_tax_rate_limits

GET /api/2025-01/markets/{marketId}/tax-rates/limits

store:markets:read

search_market_tax_rates

GET /api/2025-01/markets/{marketId}/tax-rates/search

store:markets:read

get_market_tax_rate_coverage_gaps

GET /api/2025-01/markets/{marketId}/tax-rates/coverage-gaps

store:markets:read

create_market_tax_rate

POST /api/2025-01/markets/{marketId}/tax-rates

store:markets:write

save_market_tax_rate

PUT /api/2025-01/markets/{marketId}/tax-rates

store:markets:write

get_market_tax_rate

GET /api/2025-01/markets/{marketId}/tax-rates/{taxRateId}

store:markets:read

update_market_tax_rate

PUT /api/2025-01/markets/{marketId}/tax-rates/{taxRateId}

store:markets:write

delete_market_tax_rate

DELETE /api/2025-01/markets/{marketId}/tax-rates/{taxRateId}

store:markets:write

Market price-based tax operations#

MCP tool

Store API operation

Required access

get_market_tax_price_rule_eligibility

GET /api/2025-01/markets/{marketId}/tax-price-rules/eligibility

store:markets:read

list_market_tax_price_rules

GET /api/2025-01/markets/{marketId}/tax-price-rules

store:markets:read

get_market_tax_price_rule

GET /api/2025-01/markets/{marketId}/tax-price-rules/{ruleId}

store:markets:read

create_market_tax_price_rule

POST /api/2025-01/markets/{marketId}/tax-price-rules

store:markets:write

update_market_tax_price_rule

PUT /api/2025-01/markets/{marketId}/tax-price-rules/{ruleId}

store:markets:write

delete_market_tax_price_rule

DELETE /api/2025-01/markets/{marketId}/tax-price-rules/{ruleId}

store:markets:write

Market discount operations#

MCP tool

Store API operation

Required access

get_market_discount_limits

GET /api/2025-01/markets/{marketId}/discounts/limits

store:markets:read

list_market_discounts

GET /api/2025-01/markets/{marketId}/discounts

store:markets:read

create_market_discount

POST /api/2025-01/markets/{marketId}/discounts

store:markets:write

get_market_discount

GET /api/2025-01/markets/{marketId}/discounts/{discountId}

store:markets:read

update_market_discount

PUT /api/2025-01/markets/{marketId}/discounts/{discountId}

store:markets:write

bulk_market_discount

POST /api/2025-01/markets/{marketId}/discounts/bulk

store:markets:write

delete_market_discount

DELETE /api/2025-01/markets/{marketId}/discounts/{discountId}

store:markets:write

enable_market_discount

POST /api/2025-01/markets/{marketId}/discounts/{discountId}/enable

store:markets:write

disable_market_discount

POST /api/2025-01/markets/{marketId}/discounts/{discountId}/disable

store:markets:write

get_market_discount_settings

GET /api/2025-01/markets/{marketId}/discount-settings

store:markets:read

set_market_discount_settings

PUT /api/2025-01/markets/{marketId}/discount-settings

store:markets:write

Market shipping operations#

MCP tool

Store API operation

Required access

get_market_shipping_settings

GET /api/2025-01/markets/{marketId}/shipping-settings

store:markets:read

update_market_shipping_settings

PUT /api/2025-01/markets/{marketId}/shipping-settings

store:markets:write

get_market_shipping_zone_limits

GET /api/2025-01/markets/{marketId}/shipping-zones/limits

store:markets:read

list_market_shipping_available_countries

GET /api/2025-01/markets/{marketId}/shipping-zones/available-countries

store:markets:read

list_market_shipping_zones

GET /api/2025-01/markets/{marketId}/shipping-zones

store:markets:read

create_market_shipping_zone

POST /api/2025-01/markets/{marketId}/shipping-zones

store:markets:write

get_market_shipping_zone

GET /api/2025-01/markets/{marketId}/shipping-zones/{zoneId}

store:markets:read

update_market_shipping_zone

PUT /api/2025-01/markets/{marketId}/shipping-zones/{zoneId}

store:markets:write

delete_market_shipping_zone

DELETE /api/2025-01/markets/{marketId}/shipping-zones/{zoneId}

store:markets:write

get_market_shipping_method_limits

GET /api/2025-01/markets/{marketId}/shipping-zones/{zoneId}/methods/limits

store:markets:read

list_market_shipping_methods

GET /api/2025-01/markets/{marketId}/shipping-zones/{zoneId}/methods

store:markets:read

create_market_shipping_method

POST /api/2025-01/markets/{marketId}/shipping-zones/{zoneId}/methods

store:markets:write

get_market_shipping_method

GET /api/2025-01/markets/{marketId}/shipping-zones/{zoneId}/methods/{methodId}

store:markets:read

update_market_shipping_method

PUT /api/2025-01/markets/{marketId}/shipping-zones/{zoneId}/methods/{methodId}

store:markets:write

delete_market_shipping_method

DELETE /api/2025-01/markets/{marketId}/shipping-zones/{zoneId}/methods/{methodId}

store:markets:write

Market duty operations#

MCP tool

Store API operation

Required access

get_market_duty_country_rule_limits

GET /api/2025-01/markets/{marketId}/duty-country-rules/limits

store:markets:read

list_market_duty_available_countries

GET /api/2025-01/markets/{marketId}/duty-country-rules/available-countries

store:markets:read

list_market_duty_country_rules

GET /api/2025-01/markets/{marketId}/duty-country-rules

store:markets:read

create_market_duty_country_rule

POST /api/2025-01/markets/{marketId}/duty-country-rules

store:markets:write

get_market_duty_rule_by_country

GET /api/2025-01/markets/{marketId}/duty-country-rules/by-country/{countryCode}

store:markets:read

get_market_duty_country_rule

GET /api/2025-01/markets/{marketId}/duty-country-rules/{ruleId}

store:markets:read

update_market_duty_country_rule

PUT /api/2025-01/markets/{marketId}/duty-country-rules/{ruleId}

store:markets:write

delete_market_duty_country_rule

DELETE /api/2025-01/markets/{marketId}/duty-country-rules/{ruleId}

store:markets:write

Market COD operations#

MCP tool

Store API operation

Required access

get_market_cod_settings

GET /api/2025-01/markets/{marketId}/cod-settings

store:markets:read

update_market_cod_settings

PUT /api/2025-01/markets/{marketId}/cod-settings

store:markets:write

get_market_cod_zone_limits

GET /api/2025-01/markets/{marketId}/cod-zones/limits

store:markets:read

list_market_cod_zones

GET /api/2025-01/markets/{marketId}/cod-zones

store:markets:read

create_market_cod_zone

POST /api/2025-01/markets/{marketId}/cod-zones

store:markets:write

get_market_cod_zone

GET /api/2025-01/markets/{marketId}/cod-zones/{zoneId}

store:markets:read

update_market_cod_zone

PUT /api/2025-01/markets/{marketId}/cod-zones/{zoneId}

store:markets:write

delete_market_cod_zone

DELETE /api/2025-01/markets/{marketId}/cod-zones/{zoneId}

store:markets:write

list_market_cod_rules

GET /api/2025-01/markets/{marketId}/cod-rules

store:markets:read

create_market_cod_rule

POST /api/2025-01/markets/{marketId}/cod-rules

store:markets:write

update_market_cod_rule

PUT /api/2025-01/markets/{marketId}/cod-rules/{ruleId}

store:markets:write

delete_market_cod_rule

DELETE /api/2025-01/markets/{marketId}/cod-rules/{ruleId}

store:markets:write

Market checkout operations#

MCP tool

Store API operation

Required access

get_market_checkout_settings_limits

GET /api/2025-01/markets/{marketId}/checkout-settings/limits

store:markets:read

get_market_checkout_settings

GET /api/2025-01/markets/{marketId}/checkout-settings

store:markets:read

update_market_checkout_settings

PUT /api/2025-01/markets/{marketId}/checkout-settings

store:markets:write

list_market_checkout_fees

GET /api/2025-01/markets/{marketId}/checkout-fees

store:markets:read

get_market_checkout_fee

GET /api/2025-01/markets/{marketId}/checkout-fees/{feeId}

store:markets:read

create_market_checkout_fee

POST /api/2025-01/markets/{marketId}/checkout-fees

store:markets:write

update_market_checkout_fee

PUT /api/2025-01/markets/{marketId}/checkout-fees/{feeId}

store:markets:write

delete_market_checkout_fee

DELETE /api/2025-01/markets/{marketId}/checkout-fees/{feeId}

store:markets:write

reorder_market_checkout_fees

POST /api/2025-01/markets/{marketId}/checkout-fees/reorder

store:markets:write

Product operations#

MCP tool

Store API operation

Required access

get_product_limits

GET /api/2025-01/products/limits

store:products:read

list_products

GET /api/2025-01/products

store:products:read

get_product

GET /api/2025-01/products/{id}

store:products:read

get_product_quantity_pricing

GET /api/2025-01/products/{id}/quantity-pricing

store:products:read

list_product_variants

GET /api/2025-01/products/{id}/variants

store:products:read

get_product_variant

GET /api/2025-01/products/{id}/variants/{variantId}

store:products:read

create_product

POST /api/2025-01/products

store:products:write

update_product

PUT /api/2025-01/products/{id}

store:products:write

duplicate_product

POST /api/2025-01/products/{id}/duplicate

store:products:write

delete_product

DELETE /api/2025-01/products/{id}

store:products:write

list_product_metafields

GET /api/2025-01/products/{id}/metafields

store:products:read

set_product_metafield

PUT /api/2025-01/products/{id}/metafields

store:products:write

get_product_metafield_translation

GET /api/2025-01/products/{id}/metafields/{namespace}/{key}/translations/{locale}

store:products:read, store:settings.languages:read

set_product_metafield_translation

PUT /api/2025-01/products/{id}/metafields/{namespace}/{key}/translations/{locale}

store:products:write, store:settings.languages:write

list_product_variant_metafields

GET /api/2025-01/products/{id}/variants/{variantId}/metafields

store:products:read

set_product_variant_metafield

PUT /api/2025-01/products/{id}/variants/{variantId}/metafields

store:products:write

get_product_variant_metafield_translation

GET /api/2025-01/products/{id}/variants/{variantId}/metafields/{namespace}/{key}/translations/{locale}

store:products:read, store:settings.languages:read

set_product_variant_metafield_translation

PUT /api/2025-01/products/{id}/variants/{variantId}/metafields/{namespace}/{key}/translations/{locale}

store:products:write, store:settings.languages:write

bulk_update_product_status

POST /api/2025-01/products/bulk-status

store:products:write

bulk_update_product_tags

POST /api/2025-01/products/bulk-tags

store:products:write

bulk_update_product_categories

POST /api/2025-01/products/bulk-categories

store:products:write

bulk_update_product_channels

POST /api/2025-01/products/bulk-channels

store:products:write

bulk_set_product_vendor

POST /api/2025-01/products/bulk-vendor

store:products:write

bulk_set_product_brand

POST /api/2025-01/products/bulk-brand

store:products:write

bulk_delete_products

POST /api/2025-01/products/bulk-delete

store:products:write

get_product_translation

GET /api/2025-01/products/{id}/translations/{locale}

store:products:read, store:settings.languages:read

set_product_translation

PUT /api/2025-01/products/{id}/translations/{locale}

store:products:write, store:settings.languages:write

get_product_translations

GET /api/2025-01/products/translations/{locale}

store:products:read, store:settings.languages:read

set_product_translations

PUT /api/2025-01/products/translations/{locale}

store:products:write, store:settings.languages:write

get_product_variant_translation

GET /api/2025-01/products/{id}/variants/{variantId}/translations/{locale}

store:products:read, store:settings.languages:read

set_product_variant_translation

PUT /api/2025-01/products/{id}/variants/{variantId}/translations/{locale}

store:products:write, store:settings.languages:write

Collection operations#

MCP tool

Store API operation

Required access

get_collection_limits

GET /api/2025-01/collections/limits

store:products:read

list_collections

GET /api/2025-01/collections

store:products:read

search_collections

GET /api/2025-01/collections/search

store:products:read

get_collection

GET /api/2025-01/collections/{id}

store:products:read

list_collection_metafields

GET /api/2025-01/collections/{id}/metafields

store:products:read

set_collection_metafield

PUT /api/2025-01/collections/{id}/metafields

store:products:write

get_collection_metafield_translation

GET /api/2025-01/collections/{id}/metafields/{namespace}/{key}/translations/{locale}

store:products:read, store:settings.languages:read

set_collection_metafield_translation

PUT /api/2025-01/collections/{id}/metafields/{namespace}/{key}/translations/{locale}

store:products:write, store:settings.languages:write

create_collection

POST /api/2025-01/collections

store:products:write

update_collection

PUT /api/2025-01/collections/{id}

store:products:write

delete_collection

DELETE /api/2025-01/collections/{id}

store:products:write

bulk_delete_collections

POST /api/2025-01/collections/bulk-delete

store:products:write

bulk_update_collection_status

POST /api/2025-01/collections/bulk-activate

store:products:write

list_collection_products

GET /api/2025-01/collections/{id}/products

store:products:read

list_collection_product_details

GET /api/2025-01/collections/{id}/products/details

store:products:read

list_collection_rules

GET /api/2025-01/collections/{id}/rules

store:products:read

add_collection_rule

POST /api/2025-01/collections/{id}/rules

store:products:write

update_collection_rule

PUT /api/2025-01/collections/{id}/rules/{rule_id}

store:products:write

delete_collection_rule

DELETE /api/2025-01/collections/{id}/rules/{rule_id}

store:products:write

get_collection_translation

GET /api/2025-01/collections/{id}/translations/{locale}

store:products:read, store:settings.languages:read

set_collection_translation

PUT /api/2025-01/collections/{id}/translations/{locale}

store:products:write, store:settings.languages:write

get_collection_translations

GET /api/2025-01/collections/translations/{locale}

store:products:read, store:settings.languages:read

set_collection_translations

PUT /api/2025-01/collections/translations/{locale}

store:products:write, store:settings.languages:write

Category operations#

MCP tool

Store API operation

Required access

get_category_limits

GET /api/2025-01/categories/limits

store:products:read

list_categories

GET /api/2025-01/categories

store:products:read

search_categories

GET /api/2025-01/categories/search

store:products:read

get_category

GET /api/2025-01/categories/{id}

store:products:read

list_category_metafields

GET /api/2025-01/categories/{id}/metafields

store:products:read

set_category_metafield

PUT /api/2025-01/categories/{id}/metafields

store:products:write

get_category_metafield_translation

GET /api/2025-01/categories/{id}/metafields/{namespace}/{key}/translations/{locale}

store:products:read, store:settings.languages:read

set_category_metafield_translation

PUT /api/2025-01/categories/{id}/metafields/{namespace}/{key}/translations/{locale}

store:products:write, store:settings.languages:write

create_category

POST /api/2025-01/categories

store:products:write

bulk_create_categories

POST /api/2025-01/categories/bulk-create

store:products:write

update_category

PUT /api/2025-01/categories/{id}

store:products:write

delete_category

DELETE /api/2025-01/categories/{id}

store:products:write

bulk_delete_categories

POST /api/2025-01/categories/bulk-delete

store:products:write

get_category_translation

GET /api/2025-01/categories/{id}/translations/{locale}

store:products:read, store:settings.languages:read

set_category_translation

PUT /api/2025-01/categories/{id}/translations/{locale}

store:products:write, store:settings.languages:write

get_category_translations

GET /api/2025-01/categories/translations/{locale}

store:products:read, store:settings.languages:read

set_category_translations

PUT /api/2025-01/categories/translations/{locale}

store:products:write, store:settings.languages:write

Attribute operations#

MCP tool

Store API operation

Required access

get_attribute_limits

GET /api/2025-01/attributes/limits

store:products:read

list_attributes

GET /api/2025-01/attributes

store:products:read

search_attributes

GET /api/2025-01/attributes/search

store:products:read

get_attribute

GET /api/2025-01/attributes/{id}

store:products:read

create_attribute

POST /api/2025-01/attributes

store:products:write

update_attribute

PUT /api/2025-01/attributes/{id}

store:products:write

delete_attribute

DELETE /api/2025-01/attributes/{id}

store:products:write

bulk_delete_attributes

POST /api/2025-01/attributes/bulk-delete

store:products:write

reorder_attributes

POST /api/2025-01/attributes/reorder

store:products:write

reorder_attribute_options

POST /api/2025-01/attributes/{id}/options/reorder

store:products:write

get_attribute_translation

GET /api/2025-01/attributes/{id}/translations/{locale}

store:products:read, store:settings.languages:read

set_attribute_translation

PUT /api/2025-01/attributes/{id}/translations/{locale}

store:products:write, store:settings.languages:write

get_attribute_translations

GET /api/2025-01/attributes/translations/{locale}

store:products:read, store:settings.languages:read

set_attribute_translations

PUT /api/2025-01/attributes/translations/{locale}

store:products:write, store:settings.languages:write

Attribute option translations#

MCP tool

Store API operation

Required access

get_attribute_option_translation

GET /api/2025-01/attribute-options/{id}/translations/{locale}

store:products:read, store:settings.languages:read

set_attribute_option_translation

PUT /api/2025-01/attribute-options/{id}/translations/{locale}

store:products:write, store:settings.languages:write

get_attribute_option_translations

GET /api/2025-01/attribute-options/translations/{locale}

store:products:read, store:settings.languages:read

set_attribute_option_translations

PUT /api/2025-01/attribute-options/translations/{locale}

store:products:write, store:settings.languages:write

Metafield definition discovery#

MCP tool

Store API operation

Required access

list_catalog_metafield_definitions

GET /api/2025-01/metafield-definitions

store:products:read

Language operations#

MCP tool

Store API operation

Required access

list_languages

GET /api/2025-01/languages

store:settings.languages:read

set_languages

PUT /api/2025-01/languages

store:settings.languages:write

set_default_language

PUT /api/2025-01/languages/default

store:settings.languages:write

delete_language_translations

DELETE /api/2025-01/languages/{locale}/translations

store:settings.languages:write

list_available_languages

GET /api/2025-01/reference/languages

Valid Store connection; no resource scope

Currency operations#

MCP tool

Store API operation

Required access

list_currencies

GET /api/2025-01/currencies

store:settings.currencies:read

list_enabled_currencies

GET /api/2025-01/currencies/enabled

store:settings.currencies:read

get_base_currency

GET /api/2025-01/currencies/base

store:settings.currencies:read

list_exchange_rates

GET /api/2025-01/currencies/exchange-rates

store:settings.currencies:read

get_exchange_rate

GET /api/2025-01/currencies/exchange-rates/{code}

store:settings.currencies:read

get_currency

GET /api/2025-01/currencies/{id}

store:settings.currencies:read

create_currency

POST /api/2025-01/currencies

store:settings.currencies:write

update_currency

PUT /api/2025-01/currencies/{id}

store:settings.currencies:write

delete_currency

DELETE /api/2025-01/currencies/{id}

store:settings.currencies:write

bulk_remove_currency_data

POST /api/2025-01/currencies/bulk-remove-data

store:settings.currencies:write

remove_currency_data

POST /api/2025-01/currencies/{id}/remove-data

store:settings.currencies:write

set_currency_rounding

PUT /api/2025-01/currencies/{id}/rounding

store:settings.currencies:write

set_multi_currency

PUT /api/2025-01/currencies/multi-currency

store:settings.currencies:write

set_auto_exchange_rates

PUT /api/2025-01/currencies/auto-rates

store:settings.currencies:write

Domain operations#

MCP tool

Store API operation

Required access

list_domains

GET /api/2025-01/domains

store:settings.domains:read

get_domain

GET /api/2025-01/domains/{domainId}

store:settings.domains:read

DNS zone operations#

MCP tool

Store API operation

Required access

list_dns_zones

GET /api/2025-01/dns-zones

store:settings.domains:read

get_dns_zone

GET /api/2025-01/dns-zones/{zoneId}

store:settings.domains:read

DNS record operations#

MCP tool

Store API operation

Required access

create_dns_record

POST /api/2025-01/dns-zones/{zoneId}/records

store:settings.domains:write

update_dns_record

PUT /api/2025-01/dns-zones/{zoneId}/records/{recordId}

store:settings.domains:write

delete_dns_record

DELETE /api/2025-01/dns-zones/{zoneId}/records/{recordId}

store:settings.domains:write

Email settings operations#

MCP tool

Store API operation

Required access

list_email_senders

GET /api/2025-01/email/senders

store:settings.email:read

list_email_domains

GET /api/2025-01/email/domains

store:settings.email:read

get_email_reply_to

GET /api/2025-01/email/reply-to

store:settings.email:read

update_email_reply_to

PUT /api/2025-01/email/reply-to

store:settings.email:write

get_email_suppression

GET /api/2025-01/email/suppressions

store:settings.email:read

Reference data lookups#

MCP tool

Store API operation

Required access

list_store_api_scopes

GET /api/2025-01/scopes

Valid Store connection; no resource scope

list_countries

GET /api/2025-01/reference/countries

Valid Store connection; no resource scope

list_subdivisions

GET /api/2025-01/reference/subdivisions/{countryCode}

Valid Store connection; no resource scope

list_timezones

GET /api/2025-01/reference/timezones

Valid Store connection; no resource scope

list_available_currencies

GET /api/2025-01/reference/currencies

Valid Store connection; no resource scope

list_phone_country_codes

GET /api/2025-01/reference/phone-codes

Valid Store connection; no resource scope

get_number_format_defaults

GET /api/2025-01/reference/number-format-defaults/{countryCode}

Valid Store connection; no resource scope

list_address_formats

GET /api/2025-01/reference/address-format

Valid Store connection; no resource scope

get_address_format

GET /api/2025-01/reference/address-format/{countryCode}

Valid Store connection; no resource scope

Tag operations#

MCP tool

Store API operation

Required access

list_tags

GET /api/2025-01/tags

store:products:read

get_tag

GET /api/2025-01/tags/{id}

store:products:read

create_tag

POST /api/2025-01/tags

store:products:write

update_tag

PUT /api/2025-01/tags/{id}

store:products:write

delete_tag

DELETE /api/2025-01/tags/{id}

store:products:write

get_tag_translation

GET /api/2025-01/tags/{id}/translations/{locale}

store:products:read, store:settings.languages:read

set_tag_translation

PUT /api/2025-01/tags/{id}/translations/{locale}

store:products:write, store:settings.languages:write

get_tag_translations

GET /api/2025-01/tags/translations/{locale}

store:products:read, store:settings.languages:read

set_tag_translations

PUT /api/2025-01/tags/translations/{locale}

store:products:write, store:settings.languages:write

Brand operations#

MCP tool

Store API operation

Required access

list_brands

GET /api/2025-01/brands

store:products:read

get_brand

GET /api/2025-01/brands/{id}

store:products:read

get_brand_metafield_translation

GET /api/2025-01/brands/{id}/metafields/{namespace}/{key}/translations/{locale}

store:products:read, store:settings.languages:read

set_brand_metafield_translation

PUT /api/2025-01/brands/{id}/metafields/{namespace}/{key}/translations/{locale}

store:products:write, store:settings.languages:write

create_brand

POST /api/2025-01/brands

store:products:write

update_brand

PUT /api/2025-01/brands/{id}

store:products:write

delete_brand

DELETE /api/2025-01/brands/{id}

store:products:write

get_brand_translation

GET /api/2025-01/brands/{id}/translations/{locale}

store:products:read, store:settings.languages:read

set_brand_translation

PUT /api/2025-01/brands/{id}/translations/{locale}

store:products:write, store:settings.languages:write

get_brand_translations

GET /api/2025-01/brands/translations/{locale}

store:products:read, store:settings.languages:read

set_brand_translations

PUT /api/2025-01/brands/translations/{locale}

store:products:write, store:settings.languages:write

Vendor operations#

MCP tool

Store API operation

Required access

list_vendors

GET /api/2025-01/vendors

store:products:read

get_vendor

GET /api/2025-01/vendors/{id}

store:products:read

get_vendor_metafield_translation

GET /api/2025-01/vendors/{id}/metafields/{namespace}/{key}/translations/{locale}

store:products:read, store:settings.languages:read

set_vendor_metafield_translation

PUT /api/2025-01/vendors/{id}/metafields/{namespace}/{key}/translations/{locale}

store:products:write, store:settings.languages:write

create_vendor

POST /api/2025-01/vendors

store:products:write

update_vendor

PUT /api/2025-01/vendors/{id}

store:products:write

delete_vendor

DELETE /api/2025-01/vendors/{id}

store:products:write

get_vendor_translation

GET /api/2025-01/vendors/{id}/translations/{locale}

store:products:read, store:settings.languages:read

set_vendor_translation

PUT /api/2025-01/vendors/{id}/translations/{locale}

store:products:write, store:settings.languages:write

get_vendor_translations

GET /api/2025-01/vendors/translations/{locale}

store:products:read, store:settings.languages:read

set_vendor_translations

PUT /api/2025-01/vendors/translations/{locale}

store:products:write, store:settings.languages:write

File operations#

MCP tool

Store API operation

Required access

get_file_limits

GET /api/2025-01/files/limits

store:files:read (Media) or store:online_store.site_assets:read (Site Assets)

get_storage_quota

GET /api/2025-01/files/quota

store:files:read (Media) or store:online_store.site_assets:read (Site Assets)

list_files

GET /api/2025-01/files

store:files:read (Media) or store:online_store.site_assets:read (Site Assets)

create_file_uploads

POST /api/2025-01/files/upload-intents

store:files:write (Media) or store:online_store.site_assets:write (Site Assets)

finalize_file_uploads

POST /api/2025-01/files/upload-intents/finalize

store:files:write (Media) or store:online_store.site_assets:write (Site Assets)

get_file_upload_status

POST /api/2025-01/files/upload-intents/status

store:files:write (Media) or store:online_store.site_assets:write (Site Assets)

get_file

GET /api/2025-01/files/{id}

store:files:read (Media) or store:online_store.site_assets:read (Site Assets)

update_file

PUT /api/2025-01/files/{id}

store:files:write (Media) or store:online_store.site_assets:write (Site Assets)

delete_file

DELETE /api/2025-01/files/{id}

store:files:write (Media) or store:online_store.site_assets:write (Site Assets)

Page operations#

MCP tool

Store API operation

Required access

get_page_limits

GET /api/2025-01/pages/limits

store:pages:read

list_pages

GET /api/2025-01/pages

store:pages:read

search_pages

GET /api/2025-01/pages/search

store:pages:read

get_page

GET /api/2025-01/pages/{id}

store:pages:read

list_page_metafields

GET /api/2025-01/pages/{id}/metafields

store:pages:read

set_page_metafield

PUT /api/2025-01/pages/{id}/metafields

store:pages:write

get_page_metafield_translation

GET /api/2025-01/pages/{id}/metafields/{namespace}/{key}/translations/{locale}

store:pages:read, store:settings.languages:read

set_page_metafield_translation

PUT /api/2025-01/pages/{id}/metafields/{namespace}/{key}/translations/{locale}

store:pages:write, store:settings.languages:write

create_page

POST /api/2025-01/pages

store:pages:write

update_page

PUT /api/2025-01/pages/{id}

store:pages:write

delete_page

DELETE /api/2025-01/pages/{id}

store:pages:write

bulk_delete_pages

POST /api/2025-01/pages/bulk-delete

store:pages:write

get_page_translation

GET /api/2025-01/pages/{id}/translations/{locale}

store:pages:read, store:settings.languages:read

set_page_translation

PUT /api/2025-01/pages/{id}/translations/{locale}

store:pages:write, store:settings.languages:write

get_page_translations

GET /api/2025-01/pages/translations/{locale}

store:pages:read, store:settings.languages:read

set_page_translations

PUT /api/2025-01/pages/translations/{locale}

store:pages:write, store:settings.languages:write

list_page_metafield_definitions

GET /api/2025-01/metafield-definitions

store:pages:read

Policy operations#

MCP tool

Store API operation

Required access

get_policy_limits

GET /api/2025-01/policies/limits

store:pages:read

list_policies

GET /api/2025-01/policies

store:pages:read

get_policy

GET /api/2025-01/policies/{type}

store:pages:read

update_policy

PUT /api/2025-01/policies/{type}

store:pages:write

get_policy_translation

GET /api/2025-01/policies/{id}/translations/{locale}

store:pages:read, store:settings.languages:read

set_policy_translation

PUT /api/2025-01/policies/{id}/translations/{locale}

store:pages:write, store:settings.languages:write

get_policy_translations

GET /api/2025-01/policies/translations/{locale}

store:pages:read, store:settings.languages:read

set_policy_translations

PUT /api/2025-01/policies/translations/{locale}

store:pages:write, store:settings.languages:write

Blog post operations#

MCP tool

Store API operation

Required access

get_blog_post_limits

GET /api/2025-01/blog/posts/limits

store:blog:read

list_blog_posts

GET /api/2025-01/blog/posts

store:blog:read

search_blog_posts

GET /api/2025-01/blog/posts/search

store:blog:read

get_blog_post

GET /api/2025-01/blog/posts/{id}

store:blog:read

list_blog_post_metafields

GET /api/2025-01/blog/posts/{id}/metafields

store:blog:read

set_blog_post_metafield

PUT /api/2025-01/blog/posts/{id}/metafields

store:blog:write

get_blog_post_metafield_translation

GET /api/2025-01/blog/posts/{id}/metafields/{namespace}/{key}/translations/{locale}

store:blog:read, store:settings.languages:read

set_blog_post_metafield_translation

PUT /api/2025-01/blog/posts/{id}/metafields/{namespace}/{key}/translations/{locale}

store:blog:write, store:settings.languages:write

create_blog_post

POST /api/2025-01/blog/posts

store:blog:write

update_blog_post

PUT /api/2025-01/blog/posts/{id}

store:blog:write

delete_blog_post

DELETE /api/2025-01/blog/posts/{id}

store:blog:write

bulk_delete_blog_posts

POST /api/2025-01/blog/posts/bulk-delete

store:blog:write

bulk_update_blog_post_status

POST /api/2025-01/blog/posts/bulk-update-status

store:blog:write

bulk_assign_blog_post_categories

POST /api/2025-01/blog/posts/bulk-assign-categories

store:blog:write

bulk_assign_blog_post_tags

POST /api/2025-01/blog/posts/bulk-assign-tags

store:blog:write

bulk_remove_blog_post_categories

POST /api/2025-01/blog/posts/bulk-remove-categories

store:blog:write

bulk_remove_blog_post_tags

POST /api/2025-01/blog/posts/bulk-remove-tags

store:blog:write

get_blog_post_translation

GET /api/2025-01/blog/posts/{id}/translations/{locale}

store:blog:read, store:settings.languages:read

set_blog_post_translation

PUT /api/2025-01/blog/posts/{id}/translations/{locale}

store:blog:write, store:settings.languages:write

get_blog_post_translations

GET /api/2025-01/blog/posts/translations/{locale}

store:blog:read, store:settings.languages:read

set_blog_post_translations

PUT /api/2025-01/blog/posts/translations/{locale}

store:blog:write, store:settings.languages:write

Blog tag operations#

MCP tool

Store API operation

Required access

get_blog_tag_limits

GET /api/2025-01/blog/tags/limits

store:blog:read

list_blog_tags

GET /api/2025-01/blog/tags

store:blog:read

get_blog_tag

GET /api/2025-01/blog/tags/{id}

store:blog:read

create_blog_tag

POST /api/2025-01/blog/tags

store:blog:write

update_blog_tag

PUT /api/2025-01/blog/tags/{id}

store:blog:write

delete_blog_tag

DELETE /api/2025-01/blog/tags/{id}

store:blog:write

bulk_delete_blog_tags

POST /api/2025-01/blog/tags/bulk-delete

store:blog:write

get_blog_tag_translation

GET /api/2025-01/blog/tags/{id}/translations/{locale}

store:blog:read, store:settings.languages:read

set_blog_tag_translation

PUT /api/2025-01/blog/tags/{id}/translations/{locale}

store:blog:write, store:settings.languages:write

get_blog_tag_translations

GET /api/2025-01/blog/tags/translations/{locale}

store:blog:read, store:settings.languages:read

set_blog_tag_translations

PUT /api/2025-01/blog/tags/translations/{locale}

store:blog:write, store:settings.languages:write

Blog category operations#

MCP tool

Store API operation

Required access

get_blog_category_limits

GET /api/2025-01/blog/categories/limits

store:blog:read

list_blog_categories

GET /api/2025-01/blog/categories

store:blog:read

get_blog_category

GET /api/2025-01/blog/categories/{id}

store:blog:read

list_blog_category_metafields

GET /api/2025-01/blog/categories/{id}/metafields

store:blog:read

set_blog_category_metafield

PUT /api/2025-01/blog/categories/{id}/metafields

store:blog:write

get_blog_category_metafield_translation

GET /api/2025-01/blog/categories/{id}/metafields/{namespace}/{key}/translations/{locale}

store:blog:read, store:settings.languages:read

set_blog_category_metafield_translation

PUT /api/2025-01/blog/categories/{id}/metafields/{namespace}/{key}/translations/{locale}

store:blog:write, store:settings.languages:write

create_blog_category

POST /api/2025-01/blog/categories

store:blog:write

update_blog_category

PUT /api/2025-01/blog/categories/{id}

store:blog:write

delete_blog_category

DELETE /api/2025-01/blog/categories/{id}

store:blog:write

bulk_delete_blog_categories

POST /api/2025-01/blog/categories/bulk-delete

store:blog:write

get_blog_category_translation

GET /api/2025-01/blog/categories/{id}/translations/{locale}

store:blog:read, store:settings.languages:read

set_blog_category_translation

PUT /api/2025-01/blog/categories/{id}/translations/{locale}

store:blog:write, store:settings.languages:write

get_blog_category_translations

GET /api/2025-01/blog/categories/translations/{locale}

store:blog:read, store:settings.languages:read

set_blog_category_translations

PUT /api/2025-01/blog/categories/translations/{locale}

store:blog:write, store:settings.languages:write

Blog author operations#

MCP tool

Store API operation

Required access

get_blog_author_limits

GET /api/2025-01/blog/authors/limits

store:blog:read

list_blog_authors

GET /api/2025-01/blog/authors

store:blog:read

search_blog_authors

GET /api/2025-01/blog/authors/search

store:blog:read

get_blog_author

GET /api/2025-01/blog/authors/{id}

store:blog:read

create_blog_author

POST /api/2025-01/blog/authors

store:blog:write

update_blog_author

PUT /api/2025-01/blog/authors/{id}

store:blog:write

delete_blog_author

DELETE /api/2025-01/blog/authors/{id}

store:blog:write

bulk_delete_blog_authors

POST /api/2025-01/blog/authors/bulk-delete

store:blog:write

Blog metafield definition discovery#

MCP tool

Store API operation

Required access

list_blog_metafield_definitions

GET /api/2025-01/metafield-definitions

store:blog:read

Blog comment moderation#

MCP tool

Store API operation

Required access

get_blog_comment_limits

GET /api/2025-01/blog/comments/limits

store:blog:read

list_blog_comments

GET /api/2025-01/blog/comments

store:blog:read

get_blog_comment_counts

GET /api/2025-01/blog/comments/counts

store:blog:read

get_blog_comment

GET /api/2025-01/blog/comments/{id}

store:blog:read

update_blog_comment

PUT /api/2025-01/blog/comments/{id}

store:blog:write

bulk_update_blog_comment_status

POST /api/2025-01/blog/comments/bulk-update-status

store:blog:write

delete_blog_comment

DELETE /api/2025-01/blog/comments/{id}

store:blog:write

bulk_delete_blog_comments

POST /api/2025-01/blog/comments/bulk-delete

store:blog:write

Blog comment settings#

MCP tool

Store API operation

Required access

get_blog_settings

GET /api/2025-01/blog/settings

store:blog:read

update_blog_settings

PUT /api/2025-01/blog/settings

store:blog:write

Blog index SEO#

MCP tool

Store API operation

Required access

get_blog_list_seo

GET /api/2025-01/blog/list-seo

store:blog:read

update_blog_list_seo

PUT /api/2025-01/blog/list-seo

store:blog:write

get_blog_list_seo_translation

GET /api/2025-01/blog/list-seo/translations/{locale}

store:blog:read, store:settings.languages:read

set_blog_list_seo_translation

PUT /api/2025-01/blog/list-seo/translations/{locale}

store:blog:write, store:settings.languages:write

MCP tool

Store API operation

Required access

get_menu_limits

GET /api/2025-01/menus/limits

store:menus:read

list_menus

GET /api/2025-01/menus

store:menus:read

get_menu

GET /api/2025-01/menus/{menuId}

store:menus:read

list_menu_items

GET /api/2025-01/menus/{menuId}/items

store:menus:read

search_menu_items

GET /api/2025-01/menus/{menuId}/items/search

store:menus:read

create_menu

POST /api/2025-01/menus

store:menus:write

update_menu

PUT /api/2025-01/menus/{menuId}

store:menus:write

save_menu

PUT /api/2025-01/menus/{menuId}/save

store:menus:write

create_menu_item

POST /api/2025-01/menus/{menuId}/items

store:menus:write

update_menu_item

PUT /api/2025-01/menus/{menuId}/items/{itemId}

store:menus:write

delete_menu_item

DELETE /api/2025-01/menus/{menuId}/items/{itemId}

store:menus:write

delete_menu

DELETE /api/2025-01/menus/{menuId}

store:menus:write

get_menu_item_translation

GET /api/2025-01/menus/items/{itemId}/translations/{locale}

store:menus:read, store:settings.languages:read

set_menu_item_translation

PUT /api/2025-01/menus/items/{itemId}/translations/{locale}

store:menus:write, store:settings.languages:write

get_menu_item_translations

GET /api/2025-01/menus/items/translations/{locale}

store:menus:read, store:settings.languages:read

set_menu_item_translations

PUT /api/2025-01/menus/items/translations/{locale}

store:menus:write, store:settings.languages:write

Brands, Vendors, and Tags expose their core record operations plus individual and batch translations; Brands and Vendors also expose metafield translations. Files expose the listed library and direct-upload operations. This page does not imply that every endpoint for those resources has an MCP equivalent. Normal resource webhook events still apply to MCP mutations; these tools do not manage webhook subscriptions.

Developer connection context#

On /mcp/developer, the read-only get_connection_context tool accepts an empty arguments object. It returns connection_id, client_id, client_name, client_origin, user_id, target (kind, id, name), resource, current scopes, and connection_expires_at. It contains no token or unrelated store/organization data.

Developer theme tools#

Tool

Scope

Arguments

list_theme_listings

organization:themes:read

None. Returns the organization's theme listings with status and latest versions.

list_theme_versions

organization:themes:read

Required listing_id; optional cursor.

create_theme_upload

organization:themes:write

Required original_filename (a .zip) and size_bytes. Returns intent_id, a signed url and the headers to send with the bytes.

finalize_theme_upload

organization:themes:write

Required intent_id, after the bytes are uploaded.

get_theme_upload_status

organization:themes:write

Required intent_id. A ready upload carries artifact.upload_id; a rejected one carries the validation error.

publish_theme_version

organization:themes:write

Required listing_id, upload_id and version (for example 1.2.0); optional changelog and is_breaking.

install_theme_version

organization:themes:write

Required listing_id, version_id and store_id. Installs the version into one of the organization's development stores as an unpublished theme.

Developer tools act on the organization chosen during approval; there is no organization argument, and IDs are UUIDs. The listing must already exist: create listings, set pricing and submit for review in the Developer Portal. A published version cannot change. Each successful upload, publish or install is recorded in the organization's activity log with the user and Connected tool: <client name>. The same tokens also work on the Developer API theme routes (below).

Storefront theme tools#

Tool

Scope

Arguments

list_storefronts

store:online_store.storefronts:read

None. Returns the store's storefronts; is_primary marks the primary one.

list_storefront_themes

store:online_store.storefronts:read

Required storefront_id.

create_theme_import_upload

store:online_store.storefronts:write

Required storefront_id, original_filename (a .zip) and size_bytes. Returns intent_id, a signed url and headers.

finalize_theme_import_upload

store:online_store.storefronts:write

Required storefront_id and intent_id.

get_theme_import_upload_status

store:online_store.storefronts:write

Required storefront_id and intent_id. A ready upload carries artifact.upload_id.

import_theme

store:online_store.storefronts:write

Required storefront_id and upload_id. Adds the bundle as a new, unpublished theme.

Importing never changes the live theme; preview and publish the imported theme in Store Admin. These tools cannot activate, edit or delete themes. PUT the bundle bytes directly to the signed URL with the returned headers; never send file contents as tool arguments.

Developer API with a connector token#

A developer organization token (resource https://api.tringify.com/mcp/developer) is also accepted as Authorization: Bearer on these Developer API routes at https://api-dev.tringify.com/api/v1: GET /org/themes, GET /org/themes/{listingId}, GET /org/themes/{listingId}/versions, POST /org/themes/upload, POST /org/themes/upload/finalize, POST /org/themes/upload/status, POST /org/themes/{listingId}/versions and POST /org/themes/{listingId}/versions/{versionId}/install. Reads need organization:themes:read; the others need organization:themes:write. Every other Developer API route rejects connector tokens. Store tokens are rejected. Send no cookies with a bearer request; X-Organization-ID, if sent, must be the connected organization.

The Tringify CLI uses these routes and the storefront theme tools. Its client ID is the metadata document at https://api.tringify.com/oauth/connectors/clients/tringify-cli, with a loopback callback on 127.0.0.1.

Errors and limits#

Response

Action

invalid_request / invalid_client / invalid_scope

Correct the request, client registration, resource, or requested access.

invalid_grant

Start a new authorization if the code or refresh token is expired, consumed, revoked, or bound to another client/resource.

MCP 401 with resource metadata

Reconnect or refresh an eligible credential.

MCP 403 insufficient_scope

Request and obtain the required scope.

429 with Retry-After

Respect the delay before making another request.

503 temporarily_unavailable

The authorization service could not complete the request. Do not treat this as consent or a confirmed token exchange.

An account can have up to 100 active connections. Revoke unused connections before creating more. Client metadata documents are limited to 16 KiB, client IDs to 2,048 characters, and requested scope lists to 256 unique scopes. Tokens and codes are opaque; do not parse them or write them to logs.