Skip to main content
Glama

alibaba-seller-mcp

An MCP server for the Alibaba.com Global B2B open platform. It gives an MCP client (Claude Desktop, Claude Code, or any MCP host) tools to:

  • Authorize a seller via OAuth 2.0 (authorization-code flow, with token storage and automatic refresh).

  • Upload and modify products, assembling the request from local files.

  • Read images / videos / prices from local files — images and videos are validated locally and media is uploaded to the photo bank to obtain hosted URLs; prices come from a CSV or JSON file.

  • Generate social-media content with Claude (Anthropic), tailored per platform.

  • Track AI token usage with per-model USD cost estimates.

Project structure

alibaba-seller-mcp/
├── pyproject.toml               # packaging, dependencies, console scripts
├── .env.example                 # configuration template
├── README.md
├── src/alibaba_seller_mcp/
│   ├── __main__.py              # entry point: python -m alibaba_seller_mcp
│   ├── server.py                # MCP server — registers all tools + usage resource
│   ├── config.py                # env-driven config (gateway, API method names, keys)
│   ├── storage.py               # local JSON/JSONL persistence (tokens, usage, cache)
│   ├── authserver.py            # CLI OAuth helper (local-callback / paste / tunnel)
│   ├── text_format.py           # title normalizer (case + length + punctuation rules)
│   ├── brief.py                 # "brief → published draft" flow (facts in, AI enriches)
│   ├── models.py                # typed Pydantic tool-output models
│   ├── pathsafe.py              # filesystem allowlist (path confinement)
│   ├── alibaba/                 # open-platform client
│   │   ├── client.py            # signed REST client (HMAC-SHA256, GOP + TOP protocols)
│   │   ├── auth.py              # seller OAuth (authorize URL, code→token, auto-refresh)
│   │   ├── errors.py            # typed exceptions
│   │   ├── schema.py            # itemSchema parse + filled value-XML builder
│   │   ├── products.py          # schema-based publish/update, manifest, photo bank, icbuCatProp
│   │   ├── categories.py        # category system attributes (required + options)
│   │   ├── videos.py            # video ↔ product relation (+ id encrypt/resolve)
│   │   └── groups.py            # product groups
│   ├── ai/                      # Claude (Anthropic) generation
│   │   ├── product_detail.py    # AI structured detail + category-attribute selection
│   │   └── social.py            # social-media copy
│   ├── files/
│   │   └── readers.py           # local image / video / price-file ingestion + image checks
│   └── usage/
│       └── tracker.py           # token-usage accounting + USD cost estimates
├── products/
│   └── example/                 # ready-to-fill templates (copy, replace placeholders)
│       ├── brief.json           # recommended: minimal facts → product_publish_from_brief
│       ├── product.json         # full manifest (manual control) → product_publish
│       ├── prices.csv           # tiered-price example (for the full manifest)
│       └── README.md            # what to prepare + field-code reference
└── tests/                       # pytest suite

Related MCP server: MCP E-commerce Server

Requirements

  • Python 3.11+

  • An Alibaba.com open-platform app (App Key / App Secret) with the product APIs granted

  • An Anthropic API key (for social-content generation)

Install

python3.11 -m venv .venv && source .venv/bin/activate
pip install -e .

Configure

Copy .env.example to .env and fill it in (the server auto-loads .env from the project root or the current directory):

cp .env.example .env

Key variables (see .env.example for the full list):

Variable

Purpose

ALIBABA_APP_KEY / ALIBABA_APP_SECRET

App credentials from the console

ALIBABA_REDIRECT_URI

OAuth callback URL registered in the console

ALIBABA_METHOD_PRODUCT_CREATE / _UPDATE / ALIBABA_METHOD_PHOTO_UPLOAD

Granted API method names

ANTHROPIC_API_KEY

Claude access for social content

SOCIAL_MODEL

Claude model (default claude-opus-5)

Confirm the API method names. The exact method names/paths and product field schema are category-specific. Check your app console's API权限包 → 详情 pages and adjust the ALIBABA_METHOD_* variables if they differ from the defaults. Use the alibaba_raw_call tool to test a method quickly.

Run

python -m alibaba_seller_mcp

Register with an MCP client

Claude Code:

claude mcp add alibaba-seller -- /path/to/.venv/bin/python -m alibaba_seller_mcp

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "alibaba-seller": {
      "command": "/path/to/.venv/bin/python",
      "args": ["-m", "alibaba_seller_mcp"]
    }
  }
}

Tools

Tool

What it does

alibaba_get_authorize_url

Get the URL the seller opens to grant access

alibaba_complete_authorization

Exchange the OAuth code for a token and store it

alibaba_complete_authorization_from_url

Finish auth from a pasted callback URL (auto-extracts code)

alibaba_auth_status

Show authorization state / token expiry

alibaba_raw_call

Call any granted API by method name (escape hatch / testing)

read_local_media

Inspect a local image/video (type, size, dimensions)

read_price_file

Read a CSV/JSON price file into normalized rows

product_upload_image

Upload one local image to the photo bank → {file_id, url}

product_publish_from_brief

Publish from a minimal brief — Claude enriches title/detail/attributes

product_get_schema

Get a category's publish schema (fields, types, required, options)

category_get_attributes

Get a category's system attributes for icbuCatProp (required flags, options)

product_publish

Publish a product from a product.json manifest (schema.add)

product_update

Incrementally update a product from a manifest (schema.update)

generate_product_detail

AI-generate a structured product detail (title/highlights/modules/attributes)

video_query

List the seller's videos (needs current_page/page_size) → video_ids

video_relate_product

Associate a video with a product (target: main/detail; numeric ids auto-encrypted)

video_list_related

List product ids related to a video

product_group_get

Get a product group / list top-level groups (group_id=-1)

generate_social_content

Generate per-platform social posts with Claude

usage_stats

Report AI token usage + estimated USD cost

Resource: usage://summary — all-time usage grouped by model.

Authorizing a seller

The redirect_uri you send must byte-match the callback registered in the app console. There are two ways to complete the flow:

alibaba-seller-auth          # or: python -m alibaba_seller_mcp.authserver
  • If ALIBABA_REDIRECT_URI is a localhost URL (e.g. http://127.0.0.1:8721/callback, registered in the console), it starts a tiny server, opens the browser, and auto-captures the code — fully hands-off.

  • Otherwise (e.g. a test app whose callback is https://www.alibaba.com), it opens the browser and asks you to paste the redirected URL; it extracts the code for you. Force this with --paste. The callback page need not load correctly — the code is in the address bar regardless.

If the console only accepts a public https callback (no localhost), auto-capture still works through a tunnel: run a public https tunnel (cloudflared/ngrok) to 127.0.0.1:8721, register the tunnel URL as the callback, set ALIBABA_REDIRECT_URI to it, and start the helper with the local bind address:

alibaba-seller-auth --bind 127.0.0.1:8721   # or set ALIBABA_LOCAL_BIND=127.0.0.1:8721

Via MCP tools

  1. alibaba_get_authorize_url → open the URL, approve.

  2. Either paste the redirected URL into alibaba_complete_authorization_from_url, or pass just the code to alibaba_complete_authorization.

Typical flow

  1. Authorize the seller (see above) → token stored + auto-refreshed.

  2. product_create({...}, image_paths=[...], price_file="prices.csv").

  3. generate_social_content("My Product", ["linkedin","instagram"]).

  4. usage_stats(group_by="day") to see token spend.

Instead of hand-filling the full manifest, give a minimal brief — the facts only — and let Claude enrich the rest:

{
  "brief": "C01B Salt Blaster: handheld salt-firing insect killer, infrared laser aiming, ABS body, for home/garden mosquito & fly control",
  "brand": ["C01B", "ABS"],
  "category_id": 201335115,
  "images": { "main": [{ "file_id": "…", "url": "…" }, … 4–6], "detail": ["https://…", …] },
  "price": { "unit": "Set", "moq": 10, "tiers": [[10, 12.90], [500, 9.90]] },
  "facts": { "place_of_origin": "China", "material": "ABS" },
  "version": "premium", "group": "908868315"
}

product_publish_from_brief(brief_path="products/example/brief.json") then:

  • You provide (facts only): brief, brand, category, images, price/MOQ, and factual attributes (origin, material).

  • Claude enriches: title (title-cased, ≤128 chars), highlights, image-text detail modules, FAQs, custom parameters, and picks the descriptive category attributes (feature/use/season/style…) from the schema's allowed options.

  • The tool handles: schema fetch, option-code mapping, required-attribute detection, priceUnit/saleType/scPrice codes, image fileId, and multiComplex XML.

The result reports ai_filled (what was generated), missing_required (required attributes still unfilled), and warnings. Main images must be 4–6 (≤5 MB each,

640×640, aspect ratio 3:4–4:3, square/1000×1000 best); fewer than 4 raises a warning — Claude cannot generate real product photos, so add more.

Image guidance differs by role:

Main images (scImages)

Detail images (detailImage)

Count

4–6

≤ 30

Size

≤ 5 MB

≤ 3 MB

Dimensions

> 640×640, ratio 3:4–4:3 (square/1000×1000 best)

width ≥ 1200 px; height may be very long

Because detail images allow long/tall canvases, several sections can be stitched into one long image (keep each ≤ 3 MB) — this fits more content under the 30-image cap, at the cost of slower detail-page image loading for buyers, so balance long images vs. count. Images may be local file paths (uploaded to the photo bank automatically, one per call) or existing photo-bank refs. Local files are checked against the guidance above (warnings only).

The full product.json manifest below remains available for manual control.

Publishing a product (full manifest)

Product publishing on Alibaba.com Global B2B is schema-based: each category defines its own fields. The flow is schema.get → fill values → schema.add.

  1. Inspect the category schema to learn its field ids/options: product_get_schema(category_id=201335115).

  2. Describe the product in a manifest — a folder with product.json plus assets:

    products/salt-blaster/
      product.json
      images/main/01.jpg
      images/detail/01.jpg
      prices.csv
    {
      "category_id": 201335115,
      "language": "en_US",
      "photobank_group_id": "17590",
      "fields": {
        "productTitle": "C01B Salt Blaster Insect Killer ...",
        "saleType": "normal",
        "scPrice": "1",
        "priceUnit": "20"
      },
      "main_images": ["images/main/01.jpg"],
      "detail_images": ["images/detail/01.jpg"],
      "price_file": "prices.csv"
    }
  3. Publish: product_publish(manifest_path="products/salt-blaster/product.json", draft=True) (drafts are not listed live — use them to verify a manifest, then publish for real).

Images: scImages (main images) require the photo-bank fileId — the value is serialized as <value fileId="…">url</value>. Local images are uploaded via the photo bank's /sync (TOP) gateway (photobank.upload uses session + no-prefix signing; product_upload_image and the manifest's main_images/detail_images local paths use it automatically). To reuse images already in your photo bank instead of uploading, put them in the manifest as main_image_refs: [{"file_id": "…", "url": "…"}] and detail_image_refs: ["https://…", …]. List existing images with the alibaba.icbu.photobank.list API and groups with alibaba.icbu.photobank.group.list.

AI-generated structured detail (AI+结构化商详)

generate_product_detail(product_name, version, features, keywords, detail_image_count, save_to) produces the title, highlights, ordered image+text modules, attributes and FAQs with Claude. versionpremium (全能精装版) / lite (经济简装版) / general (通用排版) controls completeness. The title is normalized to meet Alibaba's publishing rules: ≤128 characters, only - / , & . punctuation (special characters like @ ! ! ? ? $ ^ { } ~ 、 are stripped), and title case (major words and 4+ letter words capitalized; short articles/conjunctions/prepositions lowercased unless first; brand/model/acronym tokens preserved — pass brands=["C01B", …]). The same length + punctuation rules are enforced on any manually-set productTitle at publish time. Save it with save_to="products/x/content/detail.json" and point the manifest at it via "content_file": "content/detail.json".

The generated content follows the standard product-detail structure, and publishing maps each part to its schema field:

Detail section

Content key

Schema field

Title

title

productTitle (Alibaba title case)

Product Highlights

highlights

textDesc

Scene / detail / dimensions / packaging modules

modules[] (tagged section, image_slot)

detailImage (gallery 200/300/350; captions on 300)

Custom parameters

attributes[]

customMoreProperty

Category attributes (required)

manifest product_attributes

icbuCatProp (auto-filled)

Company Introduction

company_intro

companyDesc

FAQs

faqs[]

companyFaqDesc

Description mode

detail_version

productDescType (ALIBABA_PRODUCT_DESC_TYPE, default 1=智能编辑)

Product video is associated separately via the video tools; logistics dimensions live in pkgMeasure/pkgWeight, packaging in boxPackaging, certifications in productCertificate.

Required category attributes (icbuCatProp, e.g. Place of Origin / Material / Feature) are auto-filled from a manifest product_attributes map — keyed by attribute name or id, with values given as display names or option codes:

"product_attributes": {
  "Place of Origin": "China",
  "Feature": ["Eco-Friendly", "Durable"],
  "Material": "ABS"
}

Which attributes are required and their allowed options come straight from schema.get (each attribute's requiredRule / options). Discover them with category_get_attributes or product_get_schema. The publish result's missing_required lists any required attribute still unfilled — a draft tolerates gaps, but a real (non-draft) publish needs them all.

At publish time, main_images/detail_images are uploaded to the photo bank (cached by content hash), their URLs are placed into scImages/detailImage, and price_file fills ladderPrice (when scPrice is "1") plus MOQ. Field ids and option codes are category-specific — always check product_get_schema first.

Price file formats

CSV (header row required):

sku,price,MOQ,currency
A-1,12.5,100,USD

JSON (list of objects or a single object):

[{ "sku": "A-1", "price": 12.5, "moq": 100, "currency": "USD" }]

Recognized aliases are normalized to sku, price, min_order_quantity, currency, quantity, min_price, max_price; unknown columns are kept under extra.

Signing

Requests are signed with HMAC-SHA256: parameters (system + business, excluding sign and file bytes) are sorted by name, concatenated as api_path + key1value1key2value2…, and signed with the App Secret (uppercase hex). tests/test_signing.py verifies this against the documented reference vector.

Development

pip install -e ".[dev]"
pytest

Tool safety & schemas

  • Annotations — every tool advertises MCP hints so clients can reason about it: read-only tools set readOnlyHint; writing tools set destructiveHint / idempotentHint (e.g. product_publish is non-idempotent, product_update and video_relate_product are idempotent); API/AI tools set openWorldHint.

  • Structured output — tools return typed Pydantic models, so each has an output schema with additionalProperties: false instead of an open object.

  • Filesystem allowlist — tools that take a local path (read_local_media, read_price_file, product manifests and their referenced assets, generate_product_detail(save_to=…)) resolve the path and confine it to ALIBABA_MCP_ALLOWED_DIRS (default: the current working directory). Paths outside the allowlist — including .. traversal — are rejected with a clear error.

Security

The .env and the state dir (~/.alibaba_seller_mcp, holding OAuth tokens and the usage log) are gitignored. Never commit real credentials. The filesystem allowlist above limits what an untrusted MCP client can read or write.

Available Tools

21 tools
alibaba_auth_statusB
Read-only

Show whether a seller is authorized and when the token expires.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_keyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
okNo
errorNo
expiredNo
accountsNo
authorizedNo
error_typeNo
expires_atNo
account_keyNo
has_refresh_tokenNo

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safe, local-read nature is known without the description. The description adds the useful behavioral fact that the payload covers both authorization state and token expiry, but says nothing about what happens with a missing/invalid account_key or token refresh behavior.

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

Conciseness5/5

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

A single tight sentence that front-loads the core purpose (authorized?) and adds the secondary detail (expiry) without filler. Nothing to trim.

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

Completeness3/5

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

An output schema exists, so return values need no explanation, and the read-only annotations cover the safety profile. However, for a tool whose only parameter is undocumented in both schema and description, the definition is not quite complete enough to call confidently without inspecting the schema.

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

Parameters2/5

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

Schema description coverage is 0% for the single account_key parameter, and the description never mentions it — not what it identifies, what format it takes, or what an empty default means. With a non-trivial parameter fully undocumented, the description fails to compensate for the schema gap.

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

Purpose4/5

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

The description states a specific check (authorization status) plus a concrete detail (token expiry), which cleanly identifies the tool's job. It doesn't explicitly contrast itself with siblings like alibaba_get_authorize_url or alibaba_complete_authorization, but the resource (auth status) is distinct enough to select it.

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

Usage Guidelines3/5

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

Usage is only implied: an agent infers it should call this to check whether a seller is connected or when the token lapses. There is no explicit statement of when to use this versus alibaba_get_authorize_url (to start auth) or alibaba_complete_authorization (to finish it), nor any prerequisite guidance.

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

alibaba_complete_authorizationA

Exchange an OAuth code (from the callback) for an access token and store it.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
okNo
errorNo
error_typeNo
expires_atNo
account_keyNo
has_refresh_tokenNo

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, openWorldHint=true and idempotentHint=false, so the mutation/network profile is covered. The description adds real value with 'store it', disclosing a persistent side effect, but says nothing about code expiry, failure modes, or what happens to an existing stored token.

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

Conciseness5/5

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

One sentence, front-loaded with the core action and its key side effect. Nothing extraneous.

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

Completeness4/5

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

An output schema exists, so return values need not be explained, and annotations cover the safety profile. The description adequately frames the flow (callback code in, stored token out), though it could name the alternative sibling to round out the picture.

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

Parameters4/5

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

Schema coverage is 0% and the single parameter has no schema description, so the description carries the burden. It compensates by explaining that `code` comes from the callback, giving the agent the origin and expected value of the parameter, though it omits format details.

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

Purpose4/5

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

States a specific verb and resource: exchange an OAuth code for an access token and store it. It is clear and action-specific, but does not differentiate itself from the close sibling alibaba_complete_authorization_from_url, which an agent would need to choose between.

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

Usage Guidelines3/5

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

The phrase 'from the callback' implies the usage context (after the OAuth redirect returns a code), which is useful implied guidance. However it never states when to prefer this over alibaba_complete_authorization_from_url or what prerequisites exist, leaving the alternative-route decision to inference.

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

alibaba_complete_authorization_from_urlA

Complete authorization from the full callback URL the seller landed on.

Handy when the callback is a page like https://www.alibaba.com — paste the whole redirected address (containing ?code=...) and this extracts the code and exchanges it for a token.

ParametersJSON Schema
NameRequiredDescriptionDefault
redirected_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
okNo
errorNo
error_typeNo
expires_atNo
account_keyNo
has_refresh_tokenNo

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, openWorldHint=true and idempotentHint=false, covering the safety/network profile. The description adds that it performs a code-to-token exchange, which is useful behavioral context, but says nothing about prerequisite steps (e.g. needing alibaba_get_authorize_url first) or failure handling.

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

Conciseness4/5

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

Two short sentences, front-loaded with the core action before the usage hint. Efficient, though the URL example is slightly verbose relative to the single parameter it illustrates.

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

Completeness4/5

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

An output schema exists, so return values need no explanation, and the single parameter is explained. What remains unstated is the surrounding OAuth flow context (e.g. that an authorize URL must be generated first), which would help for a multi-step auth tool.

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

Parameters4/5

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

Schema coverage is 0% and the schema gives only a bare string type, so the description carries the full burden. It does this well by explaining the parameter must be the whole redirected address containing `?code=...`, which clarifies format and intent beyond the empty schema.

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

Purpose5/5

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

States a specific verb+resource (complete authorization) and explains the mechanism: extracts the code from the redirected URL and exchanges it for a token. This distinguishes it clearly from the sibling alibaba_complete_authorization, which takes the code directly, and an agent can select between them without opening either schema.

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

Usage Guidelines4/5

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

"Handy when the callback is a page like https://www.alibaba.com" gives a concrete trigger condition for choosing this tool. It does not explicitly name the alternative (alibaba_complete_authorization) or state when NOT to use it, so it stops short of full routing guidance.

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

alibaba_get_authorize_urlA
Read-only

Get the OAuth URL the seller opens to grant this app access.

Send the returned URL to the seller. After they approve, the platform redirects to the app's configured callback with a ?code=...; pass that code to alibaba_complete_authorization.

ParametersJSON Schema
NameRequiredDescriptionDefault
stateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
okNo
errorNo
error_typeNo
authorize_urlNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnlyHint=true, openWorldHint=false), and the description adds real behavioral context beyond them: the URL is meant to be handed to a human seller, approval triggers a callback redirect carrying ?code, and that code must be forwarded. It does not mention URL expiry or scope requirements, so it is not fully exhaustive.

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

Conciseness5/5

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

Two tight sentences: the purpose first, then the hand-off flow. No filler, and the next-step dependency is front-loaded rather than buried.

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

Completeness4/5

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

An output schema exists, so the returned URL format need not be explained, and the description correctly covers the end-to-end auth hand-off. The one real hole is the unexplained `state` parameter; otherwise nothing needed to call this correctly is missing.

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

Parameters2/5

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

Schema description coverage is 0% and the description never mentions the single `state` parameter, so the agent gets no guidance on what to put there or that it is optional (defaults to empty). With a low-coverage schema the description is expected to compensate, and it does not.

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

Purpose5/5

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

States a specific verb and resource ('Get the OAuth URL') plus the actor and scope ('the seller opens to grant this app access'). It also implicitly separates itself from alibaba_complete_authorization by naming that tool as the downstream step.

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

Usage Guidelines4/5

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

Explains the operational flow clearly: send the URL to the seller, they approve, the platform redirects with a ?code, and that code goes to alibaba_complete_authorization. It names the alternative sibling and the condition for using it, though it never states when this tool should not be used (e.g. already-authorized cases).

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

alibaba_raw_callB
Destructive

Call any granted API by method name (e.g. alibaba.icbu.product.get).

Escape hatch for testing/verifying methods. It can invoke write APIs, so it is not read-only. Set authorized=False for system/public APIs that need no token.

ParametersJSON Schema
NameRequiredDescriptionDefault
methodYes
paramsNo
authorizedNo
account_keyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
okNo
errorNo
responseNo
error_typeNo

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true and openWorldHint=true, so the safety profile is covered. The description adds that it 'can invoke write APIs, so it is not read-only,' which is largely a restatement of the annotations, but adds the useful token/auth caveat for public APIs. No rate-limit, error, or side-effect detail beyond what annotations give.

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

Conciseness4/5

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

Three short, front-loaded sentences with no filler; the core 'call any granted API by method name' leads and details follow. Efficient and readable, though the dangling example fragment after the first sentence is slightly awkward.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and annotations cover the safety profile. For a 4-parameter escape-hatch tool the description is adequate on method and auth but leaves the payload and account_key semantics unaddressed.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must carry the parameter burden. It explains `method` (by example) and `authorized` ('Set authorized=False for system/public APIs that need no token'), but says nothing about `params` (the request payload) or `account_key`, leaving half the parameters undocumented.

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

Purpose4/5

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

The description states a specific verb+resource: 'Call any granted API by method name,' reinforced with a concrete dotted example (`alibaba.icbu.product.get`). The phrase 'Escape hatch for testing/verifying methods' distinguishes it from the higher-level sibling tools (product_publish, product_update, etc.), though it never names an alternative explicitly.

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

Usage Guidelines4/5

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

'Escape hatch for testing/verifying methods' gives clear context for when this tool is appropriate rather than the curated siblings. The authorized-flag note tells the agent when to pass `authorized=False`. There is no explicit when-not guidance or named sibling to prefer in normal flows.

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

category_get_attributesA
Read-only

Get a category's system-defined attributes (for icbuCatProp), including which are required. Public API — no authorization needed. Each attribute's attr_id maps to the publish schema field p-<attr_id>; car_model attributes need the hierarchical-attribute API for their next level.

ParametersJSON Schema
NameRequiredDescriptionDefault
category_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
okNo
countNo
errorNo
cat_idNo
requiredNo
attributesNo
error_typeNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, and the description usefully adds that no authorization is needed and how attr_id maps to publish schema fields. This is genuinely additive behavioral context rather than a restatement of the annotations, though it says nothing about rate limits or output shape.

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

Conciseness4/5

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

Two tight sentences with the core purpose front-loaded and the edge-case caveat trailing. Slightly dense with inline identifiers but every clause carries information.

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

Completeness5/5

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

An output schema exists, so return values need not be described; the description covers the remaining gaps an agent needs — auth requirement, the attr_id-to-publish-field mapping, and the car_model escalation path. Complete for a single-parameter read tool.

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

Parameters3/5

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

Schema coverage is 0% and there is one required parameter (category_id) whose format and provenance are never explained in either the schema or the description. The description explains attribute-level semantics (attr_id, car_model) rather than the input, so it only partially compensates.

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

Purpose4/5

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

States a specific verb and resource ('Get a category's system-defined attributes') and adds scope ('including which are required'). It distinguishes the output from the broader publish schema (icbuCatProp, p-<attr_id> mapping), though it never names a sibling tool that an agent could confuse it with.

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

Usage Guidelines3/5

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

Gives one conditional routing hint ('car_model attributes need the hierarchical-attribute API for their next level') and notes the API is public, but offers no explicit when-to-use-vs-alternatives guidance relative to siblings like product_get_schema.

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

generate_product_detailA

Generate a structured product detail with Claude (title, highlights, ordered image+text modules, attributes, keywords, FAQs).

The title is normalized to Alibaba title case; pass brands (e.g. ["C01B"]) to preserve casing. version ∈ premium (全能精装版) | lite (经济简装版) | general (通用排版). If save_to is given, the content is written there as JSON (confined to the server's allowed directories). Token usage is recorded (see usage_stats).

ParametersJSON Schema
NameRequiredDescriptionDefault
toneNoprofessional
brandsNo
save_toNo
versionNopremium
featuresNo
keywordsNo
languageNoEnglish
product_nameYes
target_marketNoglobal B2B buyers
detail_image_countNo
extra_instructionsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
okNo
errorNo
modelNo
usageNo
contentNo
raw_textNo
saved_toNo
error_typeNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, openWorldHint=true and idempotentHint=false, but the description adds real behavioral context beyond them: the title is auto-normalized to Alibaba title case, writes via `save_to` are confined to the server's allowed directories, and token usage is recorded (pointing at `usage_stats`). It stops short of describing failure modes or API/permission requirements for a non-idempotent, LLM-backed generation call.

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

Conciseness5/5

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

Three tight sentences: output shape front-loaded, then parameter semantics, then side effects. No filler, no restatement of the name, and the parenthetical details are load-bearing.

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

Completeness4/5

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

An output schema exists, so return values need not be described, and the description covers the generation contract, the file-write side effect with its sandbox constraint, and cost accounting. The main remaining gap is guidance on the many unlabeled input parameters (tone, language, detail_image_count), which an agent must infer.

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

Parameters3/5

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

Schema description coverage is 0% across 11 parameters, so the description carries the entire burden, yet it only explains three of them (brands, version, save_to). It does add non-obvious value the schema lacks — the version enum meanings (premium/lite/general) are absent from the schema, and the brand-casing rule is a real semantic detail — but tone, features, keywords, language, target_market, detail_image_count, and extra_instructions remain unexplained.

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

Purpose5/5

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

Specific verb ('Generate') + resource ('structured product detail') with an explicit enumeration of the produced artifact (title, highlights, image+text modules, attributes, keywords, FAQs). This sharply distinguishes it from siblings like generate_social_content and product_render_draft without needing schema inspection.

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

Usage Guidelines3/5

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

The description gives conditional hints for individual parameters (when to pass `brands`, what `save_to` does, what `version` accepts), but never states when to choose this tool over alternatives such as product_publish_from_brief or generate_social_content, nor any exclusions or prerequisites. Usage is implied by the output artifact rather than stated.

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

generate_social_contentC

Generate platform-tailored social posts for a product with Claude.

Token usage is recorded automatically (see usage_stats). platforms e.g. ["linkedin", "instagram", "x", "facebook", "tiktok", "pinterest"].

ParametersJSON Schema
NameRequiredDescriptionDefault
toneNoprofessional
featuresNo
keywordsNo
languageNoEnglish
variantsNo
platformsYes
product_nameYes
extra_instructionsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
okNo
errorNo
modelNo
postsNo
usageNo
raw_textNo
error_typeNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, openWorldHint=true and idempotentHint=false, so the agent knows output is generated, non-deterministic and externally sourced. The description adds genuinely useful context that token usage is recorded automatically and where to check it, which the annotations do not convey. It stops short of noting cost magnitude, rate limits, or latency for an LLM-backed call.

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

Conciseness4/5

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

Two short sentences, front-loaded with the purpose before the token-accounting note and the platform examples. Nothing is padded, though the trailing newline-wrapped example is slightly awkward.

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

Completeness2/5

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

An output schema exists, so return values need not be described. However, for an 8-parameter generation tool with zero schema coverage and no usage guidance, six parameters and the tool-selection decision are left entirely unexplained.

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

Parameters2/5

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

Schema description coverage is 0% across 8 parameters, so the description carries the full burden and largely fails it. It supplies useful example values for `platforms` (which has no enum), but tone, features, keywords, language, variants and extra_instructions are left completely undefined in both the schema and the description.

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

Purpose4/5

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

The description states a specific verb+resource: generating platform-tailored social posts for a product, and names the underlying generator (Claude). It is distinguishable from siblings like generate_product_detail, though it doesn't explicitly contrast with them.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus alternatives, no prerequisites, and no exclusions. The only routing hint is a pointer to usage_stats for token accounting, which is informational rather than usage guidance.

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

product_get_schemaA
Read-only

Get the publish schema for a category: fillable fields, types, required flags, and allowed options. Inspect this before publishing.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoen_US
account_keyNo
category_idYes
include_allNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
okNo
errorNo
fieldsNo
requiredNo
error_typeNo
field_countNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered structurally. The description adds the pre-publish inspection framing but says nothing about caching, freshness, or completeness of the schema, so it adds only modest context beyond annotations.

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

Conciseness5/5

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

Two tight sentences, zero filler, with the subject and the required action front-loaded before the workflow advice.

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

Completeness4/5

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

An output schema exists, so the return shape need not be described, and the read-only nature is covered by annotations. The remaining gap is the undocumented parameters in an otherwise complete pre-publish helper.

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

Parameters2/5

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

Schema description coverage is 0% for four parameters. The description only implies category_id ("for a category") and vaguely hints at include_all ("allowed options"), leaving language, account_key, and include_all's effect undocumented in both schema and prose.

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

Purpose4/5

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

The description names a specific verb and resource ("Get the publish schema for a category") and enumerates the returned content: fillable fields, types, required flags, allowed options. It does not explicitly differentiate itself from the nearby sibling category_get_attributes, so it stops short of a 5.

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

Usage Guidelines4/5

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

"Inspect this before publishing" gives a clear workflow trigger that ties the tool to product_publish. It offers no exclusions or named alternatives (e.g., category_get_attributes vs this), so it is context without disambiguation.

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

product_group_getA
Read-only

Get a product group's info (name, parents, child groups). Pass group_id=-1 (default) to list all top-level groups (returned under children).

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idNo-1
account_keyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
okNo
errorNo
childrenNo
group_idNo
parent_idNo
error_typeNo
group_nameNo
parent_id2No
children_id_listNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds useful behavior beyond the annotations: that the -1 sentinel switches from single-group lookup to top-level listing, and where results land (`children`). It says nothing about auth requirements, rate limits, or pagination, keeping it at a solid 3.

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

Conciseness4/5

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

Two compact sentences with no filler; the primary purpose leads and the group_id special case follows. Effectively sized for a two-parameter read tool.

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

Completeness4/5

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

An output schema exists, so return-value documentation is not required, and the description sensibly stops at naming the key fields. Combined with readOnly/openWorld annotations and the -1 behavior note, an agent has enough to call it correctly; only account_key's role is unaddressed.

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

Parameters3/5

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

Schema coverage is 0%, so the description must carry parameter meaning. It explains group_id semantics well (default -1 means list all top-level), but account_key is left entirely unexplained in both schema and description, so half the parameters remain opaque.

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

Purpose4/5

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

States a specific verb ('Get') and resource ('product group') and enumerates the returned fields (name, parents, child groups), so an agent knows exactly what it retrieves. It doesn't explicitly distinguish itself from the nearby category_get_attributes sibling, which is a minor gap given the largely unrelated sibling set.

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

Usage Guidelines3/5

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

The description does provide an actionable default behavior: passing group_id=-1 lists all top-level groups. That is real usage guidance, but it is scoped to one parameter value rather than stating when to reach for this tool versus alternatives, so guidance is implied rather than explicit.

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

product_publishA

Publish a product from a manifest file (product.json), creating a new product.

The manifest gives category_id, language, fields, and asset references (main_images/detail_images, price_file, video). Required category attributes (icbuCatProp) are auto-filled from the manifest's product_attributes (keyed by attribute name or id) using the schema's own options/required rules. Set draft=True to create a draft (not listed live) — recommended for verifying a manifest. missing_required in the result lists required attributes still unfilled (a real publish needs them). The manifest and its assets are confined to the server's allowed directories.

ParametersJSON Schema
NameRequiredDescriptionDefault
draftNo
account_keyNo
manifest_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
okNo
errorNo
responseNo
error_typeNo
product_idNo
biz_successNo
filled_fieldsNo
missing_requiredNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, openWorldHint=true, idempotentHint=false, but the description adds substantial non-obvious behavior: auto-fill of required category attributes from product_attributes, draft semantics ('not listed live'), and that the manifest and assets are confined to the server's allowed directories. It stops short of describing failure conditions or side effects on existing products.

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

Conciseness4/5

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

The core action is front-loaded in the opening sentence, followed by structured detail on the manifest, attribute auto-fill, draft mode, and result fields. Dense but each clause carries information; no filler.

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

Completeness4/5

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

An output schema exists, so return values need not be explained, and the description still notes missing_required in the result. It covers manifest structure, auto-fill rules, draft mode, and directory confinement. The only real gap is the unexplained account_key parameter.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry the load. It explains draft well and explains manifest_path's contents/constraints, but account_key is entirely undocumented and manifest_path's path syntax is left implicit. Partial compensation only.

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

Purpose4/5

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

The first sentence gives a clear verb+resource ('Publish a product from a manifest file ... creating a new product') and names the concrete artifact (product.json). This implicitly distinguishes it from product_publish_from_brief (brief vs manifest) and product_update, though no sibling is explicitly named.

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

Usage Guidelines3/5

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

It offers real guidance for one decision ('Set draft=True ... recommended for verifying a manifest') but never states when to choose this tool over product_publish_from_brief, product_render_draft, or product_update, nor prerequisites/alternatives. Usage is implied rather than framed.

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

product_publish_from_briefA

Publish a product from a minimal brief — the seller provides only facts; Claude enriches the rest.

Provide brief inline or a brief_path (JSON file, confined to allowed dirs). The brief needs: brief (short description), category_id, images (main 4–6 + detail), price ({unit, moq, tiers}), and facts (place_of_origin, material). Claude writes the title, highlights, detail modules, FAQs, custom parameters, and picks the descriptive category attributes from the schema's allowed options. Returns the draft product_id, missing_required, ai_filled (what was auto-generated), and warnings (e.g. fewer than 4 main images — AI cannot generate real product photos). Defaults to draft=True.

ParametersJSON Schema
NameRequiredDescriptionDefault
briefNo
draftNo
brief_pathNo
account_keyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
okNo
errorNo
responseNo
warningsNo
ai_filledNo
error_typeNo
product_idNo
biz_successNo
filled_fieldsNo
missing_requiredNo
needs_more_main_imagesNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare the write/open-world/non-idempotent profile, so the description only needs to add what they don't cover. It does add real value: `brief_path` is confined to allowed directories, draft defaults to true, and warnings can be raised when fewer than 4 main images exist because AI cannot generate real photos. The enumerated return fields are largely redundant with the output schema, keeping this short of a 5.

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

Conciseness4/5

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

Front-loaded with the purpose, then input modes, then brief contents, then outputs — a sensible information hierarchy with no filler sentences. It is dense for a single paragraph, but every clause contributes.

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

Completeness4/5

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

For a complex AI-enrichment tool the description covers input modes, required brief fields, defaults, and failure warnings, and an output schema exists to carry return details. The only notable gaps are the unexplained `account_key` and the absence of any note about authorization prerequisites or repeat-call behavior.

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

Parameters4/5

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

Schema description coverage is 0% and `brief` is an untyped object, so the description carries the full burden — and it does, spelling out the required brief keys (description, category_id, images, price with unit/moq/tiers, facts with place_of_origin/material). It also clarifies `brief_path` and the `draft` default. `account_key` is left unexplained, which prevents a top score.

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

Purpose5/5

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

States a specific verb and resource ('Publish a product') plus the defining scope ('from a minimal brief — the seller provides only facts; Claude enriches the rest'). This scope is exactly what separates it from the sibling product_publish, so an agent can route between them without opening either schema.

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

Usage Guidelines3/5

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

It explains how to supply input (inline `brief` or `brief_path`) and what the brief must contain, which is genuine usage context. However, it never says when to choose this tool over product_publish or product_render_draft, nor any precondition such as authorization or schema lookup. Usage is implied rather than stated.

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

product_render_draftB
Read-only

Read back a DRAFT product's saved fields (schema.render.draft). product_id is the plaintext numeric draft id. Useful to verify what a publish stored.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoen_US
product_idYes
account_keyNo
category_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
okNo
errorNo
fieldsNo
error_typeNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the useful detail that it returns the saved field set from the draft render surface, but says nothing about scope, freshness, or failure modes when no draft exists.

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

Conciseness4/5

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

Two tight sentences with the purpose front-loaded and zero filler; the parenthetical surface reference earns its place. Slightly denser than ideal but nothing is wasted.

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

Completeness3/5

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

An output schema exists, so return values need no explanation, and the read-only nature is annotation-covered. However, with 0% parameter description coverage and a required category_id left undocumented, the definition is not quite complete enough for reliable invocation.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the full burden, yet it only explains product_id (plaintext numeric draft id). The required category_id and the language/account_key parameters are left entirely undefined in both the schema and the description.

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

Purpose4/5

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

States a specific verb and resource: reads back a DRAFT product's saved fields, naming the underlying surface (schema.render.draft). That cleanly separates it from write siblings like product_publish and product_update, though it never explicitly contrasts with read siblings such as product_get_schema or product_group_get.

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

Usage Guidelines3/5

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

"Useful to verify what a publish stored" implies the post-publish verification context, which is real usage guidance. But it never says when NOT to use it or which sibling to prefer for other product reads, leaving the agent to infer routing.

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

product_updateB
Idempotent

Incrementally update an existing product (schema.update) from a manifest.

Only the fields present in the manifest are changed. Re-applying the same manifest yields the same state (idempotent). Paths are confined to the server's allowed directories.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYes
account_keyNo
manifest_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
okNo
errorNo
responseNo
error_typeNo
product_idNo
biz_successNo
filled_fieldsNo
missing_requiredNo

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true, readOnlyHint=false, and destructiveHint=false, so the safety profile is covered. The description adds genuinely new context: only manifest-present fields are changed (partial-update semantics) and paths are confined to allowed directories (a sandbox/security boundary). The idempotency sentence partly restates the annotation but the rest earns its place.

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

Conciseness4/5

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

Three short sentences, front-loaded with the core action and scope. Efficient, though the idempotency sentence duplicates an existing annotation hint.

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

Completeness3/5

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

An output schema exists, so return values need no explanation, and behavioral boundaries (partial update, path confinement) are addressed. However, with 3 parameters at 0% schema coverage, the definition is incomplete about what product_id and account_key mean or require.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must carry parameter meaning, yet it only gestures at manifest_path via 'manifest'. The roles of product_id and especially the optional account_key (default "") are left entirely unexplained.

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

Purpose4/5

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

Names a specific verb+resource (update a product) and clarifies scope with 'incrementally' and 'from a manifest', which distinguishes it from publish-style siblings like product_publish or product_publish_from_brief. No sibling is named explicitly, so it stops short of the top band.

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

Usage Guidelines2/5

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

The description says what it does but never states when to choose it over alternatives such as product_publish or product_render_draft, nor any prerequisites. No when/when-not routing is provided.

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

product_upload_imageA

Upload one local image to the photo bank; returns {file_id, url}. The path is confined to the server's allowed directories.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
group_idNo
account_keyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
okNo
urlNo
errorNo
cachedNo
file_idNo
error_typeNo

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare the write/openWorld/non-idempotent profile, and the description adds two genuinely new facts: the return payload {file_id, url} and the sandbox constraint that the path is confined to the server's allowed directories. That confinement note is real operational context an agent needs before calling.

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

Conciseness5/5

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

Two sentences, no filler, with the action and its scope front-loaded before the return and constraint details. Every clause earns its place.

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

Completeness3/5

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

The output schema covers return values so the description needn't, and the sandbox constraint closes the main safety gap. However, with three parameters at 0% schema coverage, the definition is not complete enough for an agent to confidently supply group_id or account_key.

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

Parameters2/5

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

Schema description coverage is 0% and the description only obliquely touches 'path' via the confinement sentence. The two optional parameters, group_id and account_key, are entirely unexplained in both schema and description, leaving the agent guessing how to scope the upload.

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

Purpose5/5

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

States a specific verb and resource ('Upload one local image to the photo bank') plus the return shape. No sibling tool performs image upload, so the definition is unambiguously distinguishable from the surrounding publish/query tools.

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

Usage Guidelines2/5

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

The description never says when to use this tool versus alternatives (e.g. read_local_media, product_publish flows) or what prerequisites it assumes. 'One local image' hints at single-file batching behavior but stops short of guidance.

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

read_local_mediaA
Read-only

Inspect a local image or video (type, size, and image dimensions).

The path is confined to the server's allowed directories.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
okNo
kindNo
pathNo
errorNo
widthNo
heightNo
filenameNo
error_typeNo
size_bytesNo
content_typeNo

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds genuinely new behavioral context: the path must resolve inside the server's allowed directories, which is not expressed in the annotations or schema. It stops short of describing failure behavior for disallowed paths or size limits.

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

Conciseness4/5

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

Two short sentences, front-loaded with the action and its returned fields, with the restriction second. Nothing is padded, though the second sentence could sit naturally alongside the parameter rather than in the body.

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

Completeness4/5

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

An output schema exists, so return-value detail is unnecessary, and the description covers the key operational constraint for a single-parameter read tool. Only the handling of disallowed or nonexistent paths remains unaddressed.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry the parameter burden with one required 'path'. It contributes only the confinement rule and no format, relative-vs-absolute, or extension expectations, so it partially compensates but leaves real ambiguity about accepted path syntax.

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

Purpose4/5

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

States a specific verb ('Inspect') and resource ('local image or video') and enumerates what it returns: type, size, and image dimensions. It is clearly distinguishable from read-family siblings like read_price_file and from the video_* tools, though it never names or contrasts them explicitly.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of alternatives such as video_query or video_list_related. The only contextual note is the path confinement, which is a constraint rather than usage guidance.

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

read_price_fileA
Read-only

Read prices from a local CSV or JSON file into normalized rows.

The path is confined to the server's allowed directories.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
okNo
rowsNo
countNo
errorNo
error_typeNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is known. The description usefully adds that the path is confined to the server's allowed directories and that input is normalized into rows, but says nothing about malformed files, missing files, encoding, or size limits.

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

Conciseness5/5

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

Two short sentences, front-loaded with the action and supported formats, with the constraint appended. No filler.

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

Completeness4/5

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

An output schema exists, so return values need not be documented, and annotations cover the read-only nature. Combined with the format and path-scope statements, the definition is nearly complete for a one-parameter read tool; only error/failure behavior is unaddressed.

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

Parameters3/5

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

Schema description coverage is 0% for the single 'path' parameter, so the description carries the burden. It adds one meaningful constraint (the path must fall inside the server's allowed directories) but does not clarify whether the path is absolute or relative, or how the CSV/JSON format is detected.

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

Purpose5/5

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

Specific verb (read) plus resource (prices) with the accepted inputs (CSV or JSON) and the output shape (normalized rows) all stated. It is clearly distinguishable from siblings such as read_local_media, which reads media rather than price files.

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

Usage Guidelines2/5

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

The description implies when it applies (you have a local price file) but never states when to prefer it, any prerequisites, or what alternatives exist if the data lives elsewhere. No exclusions or routing guidance are offered.

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

usage_statsA
Read-only

Report AI token usage and estimated USD cost (from the local usage log).

Filter by model/label/since_iso (ISO-8601). group_by ∈ day|model|label.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelNo
modelNo
group_byNoday
since_isoNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
okNo
errorNo
groupsNo
totalsNo
filtersNo
group_byNo
call_countNo
error_typeNo

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful context that the numbers come from a local usage log, but says nothing about log coverage, staleness, or cost-model assumptions. With annotations carrying the safety burden, this is adequate rather than rich.

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

Conciseness5/5

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

Two short sentences with zero filler; the purpose and scope come first and the parameter contract follows. Every clause carries information an agent needs.

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

Completeness4/5

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

An output schema exists, so return values need not be explained, and the description covers the data source, all filters, and the grouping dimension. The only gap is not stating the default group_by=day or what an unfiltered call returns, which matters for a zero-required-parameter tool.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must carry the load, and it does: it names all four parameters, marks model/label/since_iso as filters, flags ISO-8601 format, and supplies the group_by value set day|model|label that the schema does not declare as an enum. It omits defaults (group_by defaults to day) and empty-string semantics, so it falls short of full compensation.

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

Purpose5/5

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

States a specific verb (report) and resource (AI token usage and estimated USD cost), and pins the data source with 'from the local usage log'. No sibling tool overlaps with usage/cost reporting, so an agent can select it unambiguously.

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

Usage Guidelines3/5

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

Usage is implied by the reporting purpose and the filtering instructions, but the description never states when to reach for this tool versus other options or any exclusions (e.g. remote vs local accounting). It gives filtering mechanics rather than selection guidance.

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

video_queryA
Read-only

Query the seller's videos (to find video ids). Requires paging params, e.g. params={"current_page": "1", "page_size": "20"}; each item has a video_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo
account_keyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
okNo
rawNo
errorNo
error_typeNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds a genuine behavioral constraint (paging params are required) and the shape of each returned item (has a `video_id`), but says nothing about rate limits, filtering scope, or whether results are exhaustive.

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

Conciseness4/5

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

Three short sentences, no filler, with the core purpose front-loaded before the paging detail. The example is compact and directly actionable.

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

Completeness3/5

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

An output schema exists so return values need not be re-explained, and the tool is simple (2 params, no required fields). However, the description leaves open what 'query' actually filters on and never accounts for `account_key`, so it is only minimally sufficient for correct invocation.

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

Parameters4/5

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

Schema coverage is 0% and the schema only shows `params` as an opaque anyOf object, so the description carries the load: it names the concrete keys (current_page, page_size) and their example values, which is meaningfully more than the schema. The `account_key` parameter remains unexplained, keeping this short of a 5.

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

Purpose4/5

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

States a specific verb+resource ('Query the seller's videos') and adds the intent ('to find video ids'), which is more than a restatement of the name. It does not explicitly contrast with siblings like video_list_related or video_relate_product, so the differentiation is left implicit.

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

Usage Guidelines3/5

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

The description gives a concrete calling pattern ('Requires paging params, e.g. params={"current_page": "1", "page_size": "20"}'), which implies how to invoke it. It never states when this tool should be chosen over video_list_related or video_relate_product, so there is no real alternative-selection guidance.

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

video_relate_productA
Idempotent

Associate a video with a product. target: "main" (main-image video) or "detail" (detail video). Numeric ids are auto-converted to the encrypted ids the API needs. Re-relating the same pair is idempotent.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNomain
video_idYes
product_idYes
account_keyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
okNo
errorNo
successNo
msg_codeNo
msg_infoNo
video_idNo
error_typeNo
product_idNo

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare idempotentHint=true and destructiveHint=false, and the description's idempotency statement merely reinforces that. The genuinely new behavioral content is the auto-conversion of numeric ids into the encrypted form the API expects, which is not covered by any annotation and materially affects how callers pass ids.

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

Conciseness4/5

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

Three tight sentences, front-loaded with the core action and then the target semantics and id conversion. Minimal waste, though the idempotency clause partly duplicates the annotation.

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

Completeness4/5

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

An output schema exists, so return values need not be described, and annotations cover the safety profile. What remains is a simple associate operation, and the description covers the non-obvious pieces (target values, id conversion); only account_key's role is left unaddressed.

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

Parameters3/5

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

Schema description coverage is 0% and target has no enum in the schema, so the description's enumeration of 'main' (main-image video) and 'detail' (detail video) adds real semantic value. However, video_id, product_id, and especially account_key (default "") remain unexplained, so compensation for the coverage gap is only partial.

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

Purpose4/5

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

The description opens with a specific verb+resource ('Associate a video with a product'), which cleanly distinguishes it from the sibling read tools video_list_related and video_query. It never explicitly names those siblings or defines boundaries against them, so sibling differentiation is present only by implication.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no reference to alternatives such as video_list_related for verification. Usage is only inferable from the purpose statement itself.

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

Tool Schema Changelog

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

  1. 21 tool updatesv0.1.0
    • First observedalibaba_auth_status
    • First observedalibaba_complete_authorization
    • First observedalibaba_complete_authorization_from_url
    • First observedalibaba_get_authorize_url
    • First observedalibaba_raw_call
    • First observedcategory_get_attributes
    • First observedgenerate_product_detail
    • First observedgenerate_social_content
    • First observedproduct_get_schema
    • First observedproduct_group_get
    • First observedproduct_publish
    • First observedproduct_publish_from_brief
    • First observedproduct_render_draft
    • First observedproduct_update
    • First observedproduct_upload_image
    • First observedread_local_media
    • First observedread_price_file
    • First observedusage_stats
    • First observedvideo_list_related
    • First observedvideo_query
    • First observedvideo_relate_product

TDQS

B3.2/5.0

Scored across 21 tools

Disambiguation4/5

Most tools target distinct resources or actions, but there are overlapping pairs: alibaba_complete_authorization vs alibaba_complete_authorization_from_url, and product_publish vs product_publish_from_brief vs generate_product_detail. Descriptions clearly distinguish inputs and use cases, so misselection is unlikely but possible for an agent skimming.

Naming Consistency3/5

The set mixes naming conventions: namespace-prefixed (alibaba_*), resource-prefixed (video_*, product_*), verb-first (read_*, generate_*), and standalone usage_stats. Names remain readable, but there is no predictable verb_noun or resource_verb pattern throughout.

Tool Count3/5

At 21 tools the set is in the borderline-heavy range. The broad domain (auth, product publishing, video, AI generation, local utilities) justifies many tools, but several auth and publish variants could potentially be consolidated.

Completeness3/5

Core publishing, updating, draft inspection, schema lookup, media handling, and content generation are covered. However, there is no product delete, no live product get/list, and no order or inventory operations; alibaba_raw_call is an escape hatch rather than a proper complete surface.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers