Skip to main content
Glama

MCP Shopline

PyPI version Python versions License: MIT GitHub stars GitHub issues GitHub last commit MCP

繁體中文

An open-source MCP (Model Context Protocol) server that wraps the Shopline Open API into 143 AI-callable tools (75 read + 68 write) for e-commerce data analysis.

Built for Claude Code, Claude Cowork, and any MCP-compatible AI client. Enables AI agents to query orders, products, inventory, customer behavior, and promotions from Shopline stores through natural language.

What This Does

  • 143 ready-to-use tools covering orders, products, inventory, customers, promotions, categories, subscriptions, conversations, reviews, and more

  • MCP server (stdio JSON-RPC 2.0) — plug into Claude Code and start asking questions immediately

  • Zero external dependencies beyond Python 3.9+ standard library and requests

  • Built-in pagination, retry, and rate limiting — tools handle all API complexity internally

  • Designed for AI agents — structured JSON output with natural language-friendly parameters (dates as YYYY-MM-DD, not timestamps)

Related MCP server: cob-shopify-mcp

API Reference

This project is built on the Shopline Open API v1.

You need a valid Shopline API access token from a Shopline merchant account. Refer to the Shopline API authentication guide for how to obtain one.


Quick Start

Install

pip install mcp-shopline

Or use uvx (no install needed):

uvx --from mcp-shopline mcp-shopline

Set your API token:

export SHOPLINE_API_TOKEN=your_token_here

Use with Claude Code

Add the server via the Claude CLI:

claude mcp add --transport stdio shopline -- mcp-shopline

Or with the environment variable inline:

claude mcp add --transport stdio shopline -e SHOPLINE_API_TOKEN=your_token_here -- mcp-shopline

If you clone the repo locally, the .mcp.json config will be auto-detected by Claude Code and all 143 tools become available immediately.

Use with Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "shopline": {
      "command": "mcp-shopline",
      "env": {
        "SHOPLINE_API_TOKEN": "your_token_here"
      }
    }
  }
}

Or with uvx:

{
  "mcpServers": {
    "shopline": {
      "command": "uvx",
      "args": ["--from", "mcp-shopline", "mcp-shopline"],
      "env": {
        "SHOPLINE_API_TOKEN": "your_token_here"
      }
    }
  }
}

Important: Write Tools

This server includes tools that create, update, and delete data in your Shopline store. Your API token's permission scope controls which operations are available.

  • Review your token permissions in Shopline merchant admin

  • Restrict to only the scopes you need

  • Write tools are clearly marked with [WRITE] prefix in their descriptions

  • Write tests require SHOPLINE_TEST_WRITES=1 to run


Tools (143)

Read Tools (75)

Orders (12)

Tool

Description

query_orders

Query orders by date, status, channel, store

get_sales_summary

Revenue, AOV, item price, payment/delivery breakdown

get_top_products

Product sales ranking by quantity or revenue

get_sales_trend

Daily/weekly/monthly sales trend data

get_channel_comparison

Compare performance across stores/channels

get_order_detail

Full order detail with line items

get_refund_summary

Return order statistics and refund amounts

get_archived_orders

Query archived/closed orders

get_order_labels

List labels attached to orders

get_order_tags

List tags attached to orders

get_order_action_logs

Retrieve action/audit logs for an order

get_order_transactions

Payment transaction records for an order

Products & Inventory (9)

Tool

Description

get_product_list

Search products by keyword, brand

get_product_variants

SKU variants with size x color matrix

get_inventory_overview

Total inventory summary by brand

get_low_stock_alerts

Low stock / out-of-stock SKU alerts

get_warehouses

List all warehouses and store locations

get_stock_by_warehouse

Per-warehouse stock distribution matrix

get_locked_inventory

View inventory locked by pending orders

list_purchase_orders

List purchase/replenishment orders

get_purchase_order_detail

Full detail of a single purchase order

Analytics (11)

Tool

Description

get_rfm_analysis

Customer RFM segmentation

get_repurchase_analysis

Repurchase rate and cycle analysis

get_customer_geo_analysis

Customer geographic distribution

get_inventory_turnover

Stock turnover rate and days

get_category_sales

Sales breakdown by product category

get_promotion_analysis

Promotion campaign effectiveness

get_refund_by_store

Return order breakdown by store/channel

get_stock_transfer_suggestions

Auto-generate inter-warehouse transfer recommendations

get_promotion_roi

Cross-reference promotion periods with sales trend to calculate lift and ROI

get_customer_lifecycle

Compare RFM segments across two periods to track customer migration

get_slow_movers

Identify products with high inventory but low sales for clearance planning

Customers (9)

Tool

Description

list_customers

Search and list customer profiles

get_customer_profile

Full profile for a single customer

list_customer_groups

List customer segmentation groups

get_customer_group_members

Members within a customer group

list_store_credits

Store credit balances and history

list_membership_tiers

Membership tier definitions

get_customer_tier_history

Tier upgrade/downgrade history for a customer

list_member_point_rules

Point earning and redemption rules

list_custom_fields

Custom field definitions for customer profiles

Categories & Promotions (14)

Tool

Description

get_category_tree

Full category hierarchy tree

get_category_detail

Detail for a single category

list_promotions

List all promotion campaigns

get_promotion_detail

Full detail for a single promotion

search_promotions

Search promotions by keyword or status

list_flash_price_campaigns

List flash sale / limited-time price campaigns

get_flash_price_campaign_detail

Detail for a single flash price campaign

list_affiliate_campaigns

List affiliate marketing campaigns

get_affiliate_campaign_detail

Detail for a single affiliate campaign

get_affiliate_campaign_usage

Usage and performance stats for an affiliate campaign

list_gifts

List gift-with-purchase promotions

list_addon_products

List add-on product promotions

list_product_subscriptions

List product subscription plans

get_product_subscription_detail

Detail for a single subscription plan

Order Extended (8)

Tool

Description

list_return_orders

List return/refund orders

get_return_order_detail

Full detail for a single return order

get_order_delivery

Delivery tracking and logistics info for an order

list_conversations

List customer service conversations

get_conversation_messages

Messages within a conversation thread

list_product_reviews

List product reviews

get_product_review_detail

Full detail for a single product review

Store Settings (12)

Tool

Description

list_merchants

List merchant accounts

get_merchant_detail

Detail for a single merchant

list_payments

List configured payment methods

list_delivery_options

List configured delivery options

get_delivery_option_detail

Detail for a single delivery option

get_delivery_time_slots

Available delivery time slots

list_channels

List sales channels (online, POS, etc.)

get_channel_detail

Detail for a single channel

get_app_settings

App-level configuration settings

list_taxes

List tax configurations

get_staff_permissions

Staff account permission settings

get_token_info

Info and scope of the current API token

list_agents

List customer service agent accounts


Write Tools (68)

Write tools are marked with [WRITE] in their descriptions. They require appropriate token permissions and SHOPLINE_TEST_WRITES=1 to run in tests.

Domain

Tools

Order Operations

8 tools — update status, add notes, assign labels/tags, cancel, fulfill

Customer Operations

6 tools — create/update customer, adjust store credits, update group membership

Product Operations

15 tools — create/update/delete products, manage variants, update stock

Promotion/Coupon/Campaign Operations

12 tools — create/update/delete promotions, coupons, flash sales, affiliate campaigns

Category Operations

3 tools — create, update, delete categories

Return Order Operations

2 tools — approve/reject return orders

Conversation Operations

2 tools — reply to conversations, update conversation status

Review Operations

6 tools — reply to reviews, approve/reject/hide reviews

Gift/Addon Operations

7 tools — create/update/delete gift and add-on promotions

Purchase Order Operations

2 tools — create and receive purchase orders

Media/Metafield Operations

2 tools — upload media, set metafields

Delivery/Merchant Operations

3 tools — update delivery info, manage merchant settings


API Endpoint Coverage

Based on Shopline Open API v1:

Endpoint

Status

Notes

Orders

200

Full access (read + write)

Products

200

Full access (read + write)

Warehouses

200

Full access

Categories

200

Full access (read + write)

Return Orders

200

Full access (read + write)

Promotions

200

Full access (read + write)

Product Stocks

200

Per-warehouse breakdown

Customers

200

Full access (read + write)

Channels

200

Full access

Conversations

200

Customer service threads (read + write)

Reviews

200

Product reviews (read + write)

Subscriptions

200

Product subscription plans

Affiliate Campaigns

200

Affiliate marketing (read + write)

Flash Price Campaigns

200

Flash sales (read + write)

Purchase Orders

200

Replenishment orders (read + write)

Gifts & Add-ons

200

Gift-with-purchase promotions (read + write)

Store Settings

200

Payments, delivery, taxes, staff permissions

Note: Endpoint availability depends on your Shopline API token permissions. The status above reflects full-permission access. Restrict your token to only the scopes you need.


Project Structure

mcp-shopline/
├── mcp_server.py              # MCP Server (stdio JSON-RPC 2.0)
├── .mcp.json                  # Claude Code MCP auto-discovery config
├── .env.example               # Environment variable template
├── config/
│   └── settings.py            # API config (token from env, endpoints)
├── tools/
│   ├── base_tool.py           # Shared HTTP client (retry, pagination)
│   ├── order_tools.py         # Order read tools (12)
│   ├── product_tools.py       # Product/inventory read tools (9)
│   ├── analytics_tools.py     # Analytics read tools (11)
│   ├── customer_tools.py      # Customer read tools (9)
│   ├── category_tools.py      # Category & promotion read tools (14)
│   ├── extended_tools.py      # Order extended read tools (8)
│   ├── settings_tools.py      # Store settings read tools (12)
│   ├── writes/
│   │   ├── order_writes.py    # Order write tools (8)
│   │   ├── customer_writes.py # Customer write tools (6)
│   │   ├── product_writes.py  # Product write tools (15)
│   │   ├── promotion_writes.py # Promotion/coupon write tools (12)
│   │   ├── category_writes.py # Category write tools (3)
│   │   ├── return_writes.py   # Return order write tools (2)
│   │   ├── conversation_writes.py # Conversation write tools (2)
│   │   ├── review_writes.py   # Review write tools (6)
│   │   ├── gift_writes.py     # Gift/addon write tools (7)
│   │   ├── purchase_writes.py # Purchase order write tools (2)
│   │   ├── media_writes.py    # Media/metafield write tools (2)
│   │   └── delivery_writes.py # Delivery/merchant write tools (3)
│   └── tool_registry.py       # Unified tool registry
├── tests/
│   └── test_all_tools.py      # E2E tests for all 143 tools
└── scripts/
    ├── auth/
    │   ├── test_connection.py     # API connection validator
    │   └── inspect_data_structure.py  # API response structure explorer
    └── audit/
        └── scope_check.py     # Token scope and permission auditor

API Constraints

These are Shopline Open API limitations handled internally by the tools:

  • Pagination: page + per_page (max 50), 0.2s delay between pages for rate limiting

  • Search limit: 10,000 results max; fetch_all_pages_by_date_segments() splits large queries by date range

  • Order status: online orders use confirmed, POS uses completed — tools include both by default

  • Channel identification: created_from = "shop" (online) / "pos" (retail); store name from order.channel.created_by_channel_name

  • Currency: all monetary values in TWD (New Taiwan Dollar), returned as float via money_to_float()


Development

Setup from Source

git clone https://github.com/asgard-ai-platform/mcp-shopline.git
cd mcp-shopline
pip install -e .

Run Tests

# Read tools (no side effects)
python tests/test_all_tools.py

# Include write tools (creates/updates/deletes data)
SHOPLINE_TEST_WRITES=1 python tests/test_all_tools.py

python scripts/auth/test_connection.py

Adding a New Tool

  1. Define a schema dict (Claude API tool_use format with name, description, input_schema)

  2. Implement the function using api_get / fetch_all_pages from base_tool.py

  3. Append {"schema": ..., "function": ...} to the module's tool list

  4. Auto-registered via tool_registry.py and mcp_server.py — no extra wiring needed


Known Test Gaps

The following tools are implemented and registered but have not been fully E2E tested due to test-store data or token-scope limitations. They compile correctly, import successfully, and follow all project conventions — they just need real data or broader token permissions to verify end-to-end.

Requires store data (create via Shopline admin)

Tool

What's needed

get_flash_price_campaign_detail

A flash price campaign (create in Shopline admin > Marketing > Flash Sale)

get_affiliate_campaign_usage

An affiliate campaign that has been used in at least one order

get_product_subscription_detail

A product with subscription enabled (configure in admin > Products)

get_return_order_detail

A completed return order (create via admin > Orders > Returns)

get_order_delivery

An order with shipment executed (delivery has its own ID after shipment)

get_customer_group_members

At least one customer group (create via admin > Customers > Groups)

get_customer_tier_history

A customer with membership tier changes (requires tier rules configured)

get_delivery_time_slots

A delivery option with time slots configured

Requires token permissions

Tool

Required scope

list_conversations / get_conversation_messages

Conversations read permission

list_channels / get_channel_detail

Channels read permission (commonly returns 403/422; channel info is also available via order.channel.created_by_channel_name)

Write tools

All 68 write tools have been verified at the import/registration level. Full E2E write tests require SHOPLINE_TEST_WRITES=1 and a dedicated test store to avoid modifying production data. See tests/test_writes/ for gated test scripts.

Roadmap

  • get_refund_by_store — return order breakdown by store/channel

  • get_stock_transfer_suggestions — auto-generate inter-warehouse transfer recommendations based on sales velocity and stock levels

  • get_category_tree — standalone category structure viewer

  • get_promotion_roi — cross-reference promotion periods with sales trend data to calculate lift and ROI

  • get_customer_lifecycle — compare RFM segments across two periods to track customer migration (upgrade/churn)

  • get_slow_movers — identify products with high inventory but low sales for clearance planning

  • Customers API tools (member profiles, demographics, membership tiers)

  • Support for multiple Shopline stores (multi-token)

  • Add webhook support for real-time order notifications


Usage Examples

"What were my sales this month?"

You: 這個月的銷售摘要是什麼?

AI calls:

get_sales_summary(
  start_date = "2026-04-01",
  end_date = "2026-04-09",
  channel = "all"
)

Result: 本月營業額 NT$1,234,567,共 456 筆訂單,客單價 NT$2,707,線上佔 62%、門市佔 38%。


"Which products are selling best?"

You: 上個月最暢銷的前 5 名商品是什麼?

AI calls:

get_top_products(
  start_date = "2026-03-01",
  end_date = "2026-03-31",
  top_n = 5,
  sort_by = "revenue"
)

Result: 第一名「經典帆布休閒鞋 Classic Canvas」營收 NT$892,000(268 雙),第二名「輕量機能防風外套」營收 NT$654,000...


"Tell me about this customer"

You: 幫我查一下客戶「陳大明」的完整資訊

AI calls:

list_customers(search_keyword = "陳大明")
→ get_customer_profile(customer_id = "5f3a8b2c...")

Result: 陳大明,VIP 會員,累計消費 NT$56,330,近 30 天消費 5 次,會員點數餘額 2,800 點,儲值金餘額 NT$500。


"Any products running low on stock?"

You: 哪些商品快缺貨了?

AI calls:

get_low_stock_alerts(threshold = 5)

Result: 共 3,098 個 SKU 低於門檻,其中 2,847 個已完全缺貨。最嚴重的是「經典帆布休閒鞋 Classic Canvas」深藍色 M 號(庫存 0)。


"Compare online vs. retail performance"

You: 比較一下線上和門市這個月的業績

AI calls:

get_channel_comparison(
  start_date = "2026-04-01",
  end_date = "2026-04-09"
)

Result: 線上官網營收 NT$780,000(佔 63%),信義旗艦店 NT$220,000(佔 18%),中山概念店 NT$120,000(佔 10%)...


"Who are my best customers vs. churning ones?"

You: 分析一下客戶 RFM 分群

AI calls:

get_rfm_analysis(
  start_date = "2026-01-01",
  end_date = "2026-04-09"
)

Result: 共 1,618 位客戶。最佳客戶 70 人(HHH),近期新客 433 人(HLL),流失高消費客戶 188 人(LLH)需要挽回。


"Create a new customer" (Write tool)

You: 幫我建立一個新客戶,姓名王小明,email wang@test.com

AI calls:

create_customer(
  name = "王小明",
  email = "wang@test.com"
)

Result: [WRITE] 客戶王小明建立成功,ID: 69d77d57...


Contributing

Contributions are welcome! Please open an issue or submit a pull request.

When adding new tools, follow the existing pattern in tools/ and ensure the tool passes the E2E test suite.

License

MIT

Available Tools

143 tools
add_product_imagesA

[WRITE] 為商品新增圖片。

【用途】 上傳圖片 URL 至商品相簿,圖片會被加入到現有圖片之後。 適用於新增商品展示圖、情境圖等。

【呼叫的 Shopline API】

  • POST /v1/products/{product_id}/images

【回傳結構】 dict 含 success: bool, resource_id: str, message: str, images: list。

【副作用】

  • 圖片加入商品相簿,前台立即可見

  • 圖片 URL 必須為公開可存取的連結,Shopline 將下載並儲存

  • 圖片數量上限取決於 Shopline 商店方案設定

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYes商品內部 ID
image_urlsYes圖片 URL 列表(公開可存取的圖片連結)

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are present, so the description carries the full burden. It discloses key side effects: images become immediately visible, URLs must be publicly accessible, and quantity limits depend on plan. It also lists the API endpoint and return structure. Missing permission or failure details, but the provided transparency is solid.

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

Conciseness5/5

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

The description is well-structured with clear sections (purpose, API, return, side effects). Each sentence provides useful information without redundancy, and the purpose is front-loaded with a [WRITE] marker.

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

Completeness5/5

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

For a simple 2-parameter write tool with no output schema, the description provides a complete picture: what it does, how it works, what the API call is, what the response looks like, and side effects. No critical gaps.

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

Parameters3/5

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

Schema description coverage is 100% for both parameters, so the schema already explains the inputs. The description adds little beyond the schema, mainly repeating that URLs must be public, which is also in the schema. Baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool adds images to a product by uploading image URLs, with the specific detail that images are appended to the existing album. This distinguishes it from siblings like delete_product_images and update_product.

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

Usage Guidelines4/5

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

It provides explicit context for use ('適用於新增商品展示圖、情境圖等' – suitable for product display and context images). However, it does not mention when not to use this tool or alternative tools like upload_media, so it lacks exclusions/alternatives.

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

adjust_customer_member_pointsA

[WRITE] 調整客戶會員點數。

【用途】 增加或扣除客戶會員點數,常用於手動補點、活動贈點、客訴補償等場景。

【呼叫的 Shopline API】

  • PUT /v1/customers/{customer_id}/member-points

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 客戶點數餘額立即變動

  • 異動紀錄會寫入客戶的點數歷史(可透過 get_customer_profile 查看)

  • 扣除後如點數不足,API 可能回傳錯誤

ParametersJSON Schema
NameRequiredDescriptionDefault
customer_idYes客戶內部 ID
pointsYes調整點數(正數=增加,負數=扣除)
noteNo調整備註/原因

TDQS

A4.3/5.0
Behavior5/5

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

Despite no annotations, the description discloses key behavioral traits: immediate balance change, transaction history recording, and potential error on insufficient points. This exceeds expectations and provides sufficient transparency.

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

Conciseness4/5

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

The description is well-structured with sections for purpose, API call, return structure, and side effects. It is concise but includes some extraneous details (e.g., the exact API endpoint) that may not be necessary for an AI agent.

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

Completeness4/5

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

Given the simple parameter set (3 parameters, no nested objects, no output schema), the description covers purpose, behavior, side effects, and return structure adequately. It is complete for the tool's complexity.

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

Parameters3/5

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

The input schema has 100% coverage with clear descriptions for each parameter. The description adds no additional parameter semantics beyond what the schema provides, so baseline score applies.

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

Purpose5/5

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

The description clearly states the tool's action ('adjust customer member points') and explicitly mentions it can add or deduct points, with specific use cases like manual compensation or activity rewards. It is distinct from sibling tools, as no other tool focuses on adjusting member points.

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

Usage Guidelines4/5

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

The description provides clear use cases (manual points addition, activity rewards, complaint compensation) via a dedicated section. It implies when to use the tool, though it does not explicitly state when not to use it. However, given the distinct function, this is adequate.

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

bulk_assign_categoriesA

[WRITE] 批次將多個商品指派至指定分類。

【用途】 一次將多個商品加入一或多個分類,適用於新季商品上架分類、重新整理分類結構等場景。 比逐一更新商品分類更有效率。

【呼叫的 Shopline API】

  • POST /v1/products/bulk-assign-categories

【回傳結構】 dict 含 success: bool, resource_id: str, message: str, product_count: int, category_count: int。

【副作用】

  • 商品與分類的關聯立即生效,前台分類頁面同步更新

  • 此操作為新增關聯(非覆蓋),商品原有的分類不會被移除

  • 若商品或分類 ID 不存在,API 可能略過或回傳錯誤

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idsYes商品 ID 列表
category_idsYes要指派的分類 ID 列表

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavioral traits: write operation ([WRITE]), immediate effect, additive nature (non-overwriting), and error handling for non-existent IDs. This goes beyond minimal expectations.

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

Conciseness5/5

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

The description is well-structured with clear sections (purpose, API, return, side effects). Each section is concise and information-dense, front-loading the purpose.

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?

Despite no output schema or annotations, the description provides return structure, side effects, error behavior, and usage context, making it highly complete for a 2-parameter tool.

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

Parameters3/5

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

Schema description coverage is 100%, with both product_ids and category_ids described. The description does not add significant extra parameter semantics beyond what the schema already provides, so baseline 3 is appropriate.

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

Purpose5/5

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

Description clearly states the tool's function: '批次將多個商品指派至指定分類' (batch assign multiple products to specified categories), and elaborates with use cases. It is a specific verb+resource that distinguishes itself from sibling read-only tools and other write tools.

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?

States appropriate scenarios ('新季商品上架分類', '重新整理分類結構') and notes efficiency advantage over updating one-by-one. However, it does not explicitly name alternative tools or provide exclusion criteria.

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

bulk_create_product_reviewsA

[WRITE] 批次建立多筆商品評論。

【用途】 一次性批次建立多筆商品評論,適用於大量匯入歷史評論或促銷活動後的評論補登。

【呼叫的 Shopline API】

  • POST /v1/product_review_comments/bulk

【回傳結構】 dict 含 success: bool, resource_id: str, message: str, result: dict。

【副作用】

  • 批次在商品評論列表中新增多筆評論

  • 依商店設定,評論可能立即公開或待審核

  • 影響相關商品的平均評分顯示

  • 部分評論若格式錯誤,整批可能失敗或僅失敗該筆(視 API 實作而定)

ParametersJSON Schema
NameRequiredDescriptionDefault
reviewsYes評論資料列表,每筆格式同 create_product_review,例如 [{"product_id": "P001", "rating": 5, "content": "讚!"}]

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations, the description carries the full burden. It discloses important side effects: reviews may be public or pending, affects average ratings, and partial failures possible. It also describes the return structure, offering strong transparency.

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

Conciseness5/5

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

The description is well-structured with clear sections (purpose, usage, API, return, side effects). Every sentence provides actionable information, and the front-loaded purpose makes it quickly scannable.

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

Completeness4/5

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

The description covers purpose, usage, API, output, and side effects, which is sufficient for a bulk write operation. It lacks details on batch limits or item validation specifics, but references create_product_review for format and warns about API-dependent failure behavior, keeping it reasonably complete.

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

Parameters3/5

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

The schema already describes the 'reviews' parameter with a full example and notes that each item format matches create_product_review. The description adds no additional parameter-level meaning beyond the schema, so baseline 3 is appropriate.

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

Purpose5/5

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

The description explicitly states it batch creates multiple product reviews, provides the API endpoint, and distinguishes itself from siblings like create_product_review (single) and bulk_update/delete.

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

Usage Guidelines4/5

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

The description gives a clear use case: bulk importing historical reviews or backfilling after promotions. It does not explicitly mention alternatives or when not to use, but the context is strong enough for an agent to select this tool for batch operations.

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

bulk_delete_product_reviewsA

[WRITE] 批次刪除多筆商品評論。

【用途】 一次性永久刪除多筆評論,適用於批次清除測試資料或大量違規評論。

【呼叫的 Shopline API】

  • DELETE /v1/product_review_comments

【回傳結構】 dict 含 success: bool, resource_id: str, message: str, deleted_count: int。

【副作用】

  • 永久刪除多筆評論記錄,不可復原

  • 相關商品的評論總數與平均評分將同步更新

  • 部分 id 若不存在,整批可能失敗或僅失敗該筆(視 API 實作而定)

ParametersJSON Schema
NameRequiredDescriptionDefault
comment_idsYes要刪除的評論 ID 列表,例如 ["C001", "C002", "C003"]

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly states that deletions are permanent and irreversible, that product review counts and average ratings will be updated, and that partial failures may occur depending on API implementation. This is highly transparent for a destructive operation.

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

Conciseness5/5

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

The description is well-structured with labeled sections: purpose, API call, return structure, and side effects. It is concise, with every sentence providing meaningful information. No fluff or redundancy.

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

Completeness5/5

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

For a simple one-parameter bulk delete tool with no annotations and no output schema, the description is complete. It covers purpose, API endpoint, return structure, and side effects, giving the agent all necessary context to invoke the tool correctly. Sibling tools are not referenced but not needed for completeness.

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?

The input schema has 100% coverage for the single parameter comment_ids, including an example. The description does not add extra semantic detail beyond the schema, which is acceptable since the schema already provides sufficient meaning. The baseline of 3 applies.

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

Purpose5/5

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

The description clearly states the tool's function: batch deleting multiple product reviews ('批次刪除多筆商品評論'). It specifies the action (delete), resource (product reviews), and scope (batch/multiple), distinguishing it from the single-delete sibling tool. The use case for batch clearing test data or violating reviews adds specificity.

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

Usage Guidelines4/5

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

The description provides clear usage context by stating suitable scenarios (batch clearing test data or large numbers of violating reviews). However, it does not explicitly mention alternatives like delete_product_review for single deletions or when NOT to use this tool, leaving some implicit guidance.

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

bulk_execute_shipmentA

[WRITE] 批次執行多訂單出貨。

【用途】 一次性將多筆訂單標記為已出貨,提升倉庫作業效率,適用於每日批量出貨場景。

【呼叫的 Shopline API】

  • POST /v1/orders/shipment/bulk

【回傳結構】 dict 含 success: bool, resource_id: str, message: str, order_ids: list。

【副作用】

  • 所有指定訂單的出貨狀態批次更新為已出貨

  • 部分訂單若無法出貨,API 可能整批失敗或回傳各別結果(取決於 Shopline 實作)

  • 可能觸發多封客戶出貨通知

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idsYes訂單 ID 列表,批次出貨

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description carries full disclosure. It lists side effects (batch status update, potential partial failures, multiple shipment notifications) and the return structure, going well beyond the schema. This is comprehensive for a mutation tool.

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

Conciseness5/5

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

The description is well-organized with labeled sections (purpose, API, return, side effects) and each sentence adds value. It is appropriately sized without redundancy.

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

Completeness5/5

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

Given the simple schema, absence of annotations, and lack of output schema, the description provides all essential context: what it does, when to use, side effects, and return format. It equips an agent to correctly invoke and interpret the result.

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?

The input schema already fully documents the only parameter (order_ids as array of strings) with 100% coverage. The description adds no additional syntax or format details, so the baseline 3 applies.

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

Purpose5/5

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

The description clearly states the tool batches multiple order shipments, using the explicit [WRITE] marker and a dedicated purpose section. It distinguishes from the sibling execute_order_shipment by focusing on batch processing.

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

Usage Guidelines4/5

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

The description provides usage context ('daily batch shipment scenarios') but does not explicitly contrast with alternatives like execute_order_shipment or state when not to use. It is clear enough for an agent to infer batch use, but lacks explicit exclusions.

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

bulk_update_product_reviewsA

[WRITE] 批次更新多筆商品評論。

【用途】 一次性批次審核或修改多筆評論狀態,適用於管理員批次公開或隱藏評論。

【呼叫的 Shopline API】

  • PATCH /v1/product_review_comments

【回傳結構】 dict 含 success: bool, resource_id: str, message: str, result: dict。

【副作用】

  • 批次更新多筆評論,變更立即生效

  • 若有評論狀態變更,相關商品的平均評分可能同步更新

  • 部分評論若 id 不存在,整批可能失敗或僅失敗該筆(視 API 實作而定)

ParametersJSON Schema
NameRequiredDescriptionDefault
updatesYes批次更新資料列表,每筆須含 id 欄位,例如 [{"id": "C001", "status": "published"}, {"id": "C002", "status": "hidden"}]

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and does well by disclosing side effects: changes are immediate, product average ratings may sync, and partial failure behavior depends on API implementation. It also states the return structure. However, it does not mention authentication requirements or rate limits, which would make it more complete.

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

Conciseness5/5

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

The description is well-structured with clear sections: purpose, API call, return structure, and side effects. It is concise, every sentence adds value, and the key purpose is front-loaded in the first line.

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?

The description is complete for a single-parameter batch update tool: it provides the API endpoint, a high-level return structure (since no output schema exists), and important side effects including partial failure. The schema covers the parameter, so the combined information is sufficient for an agent to select and invoke the tool correctly.

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

Parameters3/5

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

The only parameter 'updates' is fully described in the schema (100% coverage) with an example and the requirement that each item contain an id field. The tool description adds no additional parameter syntax or field details beyond the schema, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool does a batch update of multiple product reviews, with a specific purpose of admin batch publishing or hiding comments. The verb '批次更新' (batch update) and resource '商品評論' (product reviews) are explicit, and it distinguishes from siblings like update_product_review (single) and bulk_create/delete_reviews.

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

Usage Guidelines4/5

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

The description identifies a clear use case: '適用於管理員批次公開或隱藏評論' (suitable for administrators to batch publish or hide comments). It provides context for when to use the tool, but does not explicitly mention alternatives or when not to use it, such as using update_product_review for single updates.

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

bulk_update_quantitiesA

[WRITE] 批次更新多個 SKU 的庫存數量。

【用途】 一次更新多個商品或變體的庫存,適用於盤點後大批調整、進貨入庫等場景。 比逐一呼叫 update_product_quantity / update_variation_quantity 更有效率。

【呼叫的 Shopline API】

  • PUT /v1/products/bulk-update-quantities

【回傳結構】 dict 含 success: bool, resource_id: str, message: str, updated_count: int。

【副作用】

  • 所有 SKU 的庫存數量立即更新,影響前台可購買數量

  • 若某 SKU 不存在,API 可能略過或回傳錯誤(取決於 Shopline 實作)

  • 建議先確認 SKU 正確後再執行批次操作

ParametersJSON Schema
NameRequiredDescriptionDefault
updatesYes庫存更新列表,每筆為 {sku: str, quantity: int},以 SKU 識別商品/變體

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations provided, the description carries full behavioral disclosure. It lists side effects (immediate update affecting frontend purchasable quantities), error behavior (possible skip or error for missing SKUs), and a precaution (verify SKUs before running). This is comprehensive for a write operation.

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

Conciseness4/5

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

The description is well-structured with a one-line summary followed by sections for usage, API endpoint, response structure, and side effects. It is compact and every section adds value, though it includes some details (like the exact endpoint) that are not strictly necessary.

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

Completeness5/5

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

Given the tool's complexity (bulk array update), lack of annotations, and lack of output schema, the description covers all essential aspects: purpose, when to use, API endpoint, response shape, side effects, and error caveats. It leaves no major gaps for the agent to invoke it correctly.

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

Parameters3/5

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

The input schema fully describes the 'updates' parameter, including its structure as {sku: str, quantity: int}. The description adds no new parameter-level detail beyond what the schema already provides, so baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states it batch updates inventory quantities for multiple SKUs using a specific verb and resource. It distinguishes itself from sibling tools by explicitly naming update_product_quantity and update_variation_quantity as alternatives, making its scope obvious.

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

Usage Guidelines4/5

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

The description gives explicit use cases (inventory adjustments after stocktaking, purchase inbound) and compares efficiency to calling single-update tools. However, it does not explicitly state when not to use it, such as for single SKU updates or if validation is required.

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

cancel_orderA

[WRITE] 取消訂單。

【用途】 取消指定訂單,適用於客戶要求取消、庫存不足或付款問題等場景。

【呼叫的 Shopline API】

  • POST /v1/orders/{order_id}/cancel

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 訂單狀態變更為已取消,操作不可逆

  • 若訂單已出貨,可能無法取消(取決於 Shopline 規則)

  • 已付款訂單取消後需另行退款

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYes訂單 ID
reasonNo取消原因(選填)

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description fully discloses behavioral traits: it marks the operation as irreversible, notes that cancellation may fail if the order is already shipped, and states that refunds are handled separately for paid orders. It also includes the return structure (dict with success, resource_id, message), which goes beyond basic safety info.

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

Conciseness5/5

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

The description is well-structured into concise sections (purpose, API, return structure, side effects) with no fluff. Every section adds value, and the key info is front-loaded with the [WRITE] tag and purpose.

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

Completeness5/5

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

For a write operation with no output schema, the description is complete: it explains the API endpoint, return structure, side effects, and conditions affecting cancelability. The parameter schema covers the arguments, so the agent has everything needed to invoke the tool correctly.

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

Parameters3/5

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

The input schema already provides 100% coverage with descriptions for both parameters (order_id and reason). The tool description adds no additional parameter-specific guidance, so the schema carries the burden. Baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool cancels a specified order (取消指定訂單) and lists specific use cases (customer request, stock shortage, payment issues). This distinguishes it from sibling tools like update_order or update_order_status, which handle other order modifications.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool by listing scenarios such as customer cancellation requests and stock issues. However, it does not explicitly contrast with alternatives or state exclusions (e.g., when not to use), relying mostly on implied usage from the purpose.

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

claim_couponA

[WRITE] 客戶領取優惠券。

【用途】 代表客戶領取(claim)一張優惠券,將優惠券綁定至該客戶帳號。 適合兌換碼場景或 API 整合的會員領券流程。

【呼叫的 Shopline API】

  • POST /v1/coupons/claim

【回傳結構】 dict 含 success: bool, resource_id: str, message: str, result: dict。

【副作用】

  • 優惠券與指定客戶綁定,消費者帳號中可看到此優惠券

  • 若優惠券已達領取上限或已過期,API 會回傳錯誤

  • 同一張優惠券通常每位客戶只能領取一次(依設定而異)

ParametersJSON Schema
NameRequiredDescriptionDefault
coupon_dataYes優惠券領取資料,通常包含 coupon_code 與客戶識別資訊

TDQS

A4.3/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It explicitly labels the operation as [WRITE], lists side effects (coupon binding, visibility in customer account, error on limit/expiry, one-per-customer rule), and describes the return structure. This is exceptionally transparent and goes beyond what annotations would typically provide.

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

Conciseness5/5

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

The description is well-structured with clear sections ([WRITE], 用途, API, 回傳結構, 副作用). Every section provides relevant information without any padding. The opening [WRITE] immediately signals the destructive/write nature, and the content is concise yet comprehensive.

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?

The description is complete for a tool of this complexity. It covers purpose, the underlying API endpoint, return structure, and side effects/error conditions. There is no output schema, but the description explicitly lists the return keys. Combined with the schema's coverage of coupon_data, it leaves no major gaps for an agent to correctly invoke the 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?

The input schema already provides a description for coupon_data ('優惠券領取資料,通常包含 coupon_code 與客戶識別資訊') and the schema coverage is 100%, so the baseline is 3. The tool description adds only a brief hint about '兌換碼場景' that aligns with the schema, but it does not add new parameter details. Therefore, it does not exceed the baseline.

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

Purpose4/5

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

The description clearly states the tool's purpose: to claim a coupon on behalf of a customer and bind it to their account. It uses a specific verb ('claim') and resource ('coupon'), and even mentions suitable scenarios ('兌換碼場景'). However, it does not explicitly differentiate from sibling tools like send_coupon or redeem_coupon, so it loses the point for sibling differentiation.

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

Usage Guidelines4/5

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

The description provides clear context for when to use this tool: '適合兌換碼場景或 API 整合的會員領券流程' (suitable for redemption code scenarios or API-integrated member coupon claiming). It does not, however, mention when not to use it or explicitly point to alternatives among siblings, which would be needed for a 5.

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

create_addon_productA

[WRITE] 建立新加購商品。

【用途】 在 Shopline 商店中建立一個新的加購商品(Addon Product),可於結帳時讓顧客選購。

【呼叫的 Shopline API】

  • POST /v1/addon_products

【回傳結構】 dict 含 success: bool, resource_id: str, message: str, addon_product: dict。

【副作用】

  • 在商店加購商品列表中新增一筆記錄

  • 建立後需於促銷或商品設定中啟用才會顯示給顧客

ParametersJSON Schema
NameRequiredDescriptionDefault
addon_dataYes加購商品資料,例如 {name, sku, price, quantity, ...}

TDQS

A3.9/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden. It explicitly discloses side effects in 【副作用】 (adds a record to the addon product list, requires activation to be visible) and describes the return structure. This goes beyond a bare description, though it omits permission or error details.

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?

Description is well-structured with labeled sections: [WRITE], purpose, API, return structure, side effects. Each section adds useful information, and the content is front-loaded with the write indicator and purpose. Slightly longer than strictly necessary but justified by the added context.

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

Completeness4/5

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

For a create tool with a flexible object parameter and no output schema, the description provides the return structure, side effects, and activation prerequisite. It could be improved by listing required subfields of addon_data, but the schema's example and additionalProperties mitigate this gap.

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

Parameters3/5

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

Schema coverage is 100% with description '加購商品資料,例如 {name, sku, price, quantity, ...}', which sufficiently explains the single parameter. The tool description does not add parameter details beyond the schema, so baseline 3 is appropriate.

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

Purpose5/5

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

Description clearly states it creates a new addon product in Shopline: '建立新加購商品' and '在 Shopline 商店中建立一個新的加購商品(Addon Product)'. The verb '建立' (create) and resource '加購商品' are explicit, and it distinguishes from sibling list/update tools by focusing on the create operation.

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

Usage Guidelines3/5

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

The description provides purpose context (e.g., for customers to purchase at checkout) and implies usage via '建立後需於促銷或商品設定中啟用才會顯示給顧客', but it does not explicitly mention when to use this tool versus list_addon_products or update_addon_product, nor any exclusions.

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

create_affiliate_campaignA

[WRITE] 建立聯盟行銷活動。

【用途】 建立聯盟行銷(Affiliate)活動,設定推薦獎勵規則,讓推廣夥伴(聯盟會員) 透過分享連結或代碼帶來訂單並獲得佣金。

【呼叫的 Shopline API】

  • POST /v1/affiliate_campaigns

【回傳結構】 dict 含 success: bool, resource_id: str, message: str, campaign: dict。

【副作用】

  • 活動建立後,可將活動連結或代碼分發給聯盟夥伴

  • 活動啟用後,透過聯盟連結產生的訂單將自動計算佣金

  • 請確認佣金規則與結算方式設定正確,避免財務損失

ParametersJSON Schema
NameRequiredDescriptionDefault
campaign_dataYes聯盟行銷活動資料(參考 Shopline affiliate_campaign 物件結構)

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses important behavioral traits: it is a write operation (marked [WRITE]), calls POST /v1/affiliate_campaigns, returns a dict with success/resource_id/message/campaign, and lists side effects including automatic commission calculation and a warning about financial loss. This is substantial transparency for a mutation tool, though it doesn't mention permissions or reversibility.

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

Conciseness4/5

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

The description is well-structured with clear sections (目的, API, 回傳結構, 副作用) and is front-loaded with the [WRITE] tag and purpose. Each section adds value, though it is slightly verbose. The organization aids readability without being bloated.

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

Completeness4/5

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

For a create tool with one complex nested parameter and no output schema, the description provides a complete picture: API endpoint, return structure, side effects, and a financial warning. The only gap is detailed parameter structure, but that is referenced in the schema. Sibling tools are all related CRUD operations, so the context is fully covered.

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?

The sole parameter campaign_data is described in the schema as '聯盟行銷活動資料(參考 Shopline affiliate_campaign 物件結構)', which already provides good coverage. The tool description adds high-level context that the data includes reward rules, but does not elaborate on the object structure. Since schema coverage is 100%, a baseline of 3 is appropriate, with moderate added value.

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

Purpose5/5

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

The description clearly states the tool creates an affiliate campaign (建立聯盟行銷活動) with specific details about setting referral reward rules and commission tracking. The verb 'create' and resource 'affiliate campaign' are explicit, and it distinguishes from sibling tools like update/delete/list by focusing on creation.

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

Usage Guidelines3/5

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

The description implies usage: use this when you need to create a new affiliate campaign. However, it does not explicitly contrast with sibling tools (e.g., 'use update_affiliate_campaign to modify an existing campaign') or state when not to use. The context is clear from the purpose but lacks explicit alternative guidance.

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

create_categoryA

[WRITE] 建立新商品分類。

【用途】 在 Shopline 商店中建立新的商品分類,可指定父分類以建立層級結構。

【呼叫的 Shopline API】

  • POST /v1/categories

【回傳結構】 dict 含 success: bool, resource_id: str, message: str, category: dict。

【副作用】

  • 在商店分類列表中新增一筆分類記錄

  • 若 parent_id 不存在,API 可能回傳錯誤

ParametersJSON Schema
NameRequiredDescriptionDefault
category_dataYes分類資料,例如 {"name": "夏季新品", "parent_id": null}

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and discloses important behaviors: it uses the [WRITE] marker, cites the POST /v1/categories API, details the return structure (dict with success, resource_id, message, category), and lists side effects including the addition of a category record and potential error if parent_id doesn't exist. This goes beyond minimal disclosure, though it omits auth requirements and reversibility.

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

Conciseness5/5

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

The description is compact and well-structured into sections (purpose, API, response, side effects), with every sentence contributing directly to understanding the tool. There is no redundant verbiage or unnecessary repetition.

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

Completeness4/5

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

For a simple create operation with one parameter, the description covers purpose, API, return structure, and side effects, and highlights the main error condition. It is nearly complete, though it could mention required permissions or other common error scenarios like duplicate names.

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

Parameters3/5

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

Schema coverage is 100% and the schema description already includes the example for category_data, so the tool description adds no extra parameter semantics. The side-effect note about parent_id is useful but not focused on parameter meaning, resulting in a baseline score.

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

Purpose5/5

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

The description clearly states the tool creates a new product category in Shopline ('建立新商品分類') and specifies it can assign a parent category for hierarchy. This unambiguous verb+resource phrasing distinguishes it from siblings like update_category and delete_category.

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

Usage Guidelines4/5

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

It provides clear usage context by stating the purpose is to create a new category and optionally set a parent. While it does not explicitly mention alternatives or exclusions, the context is sufficient for a straightforward create operation; it also warns about parent_id errors, which helps avoid misuse.

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

create_customerA

[WRITE] 建立新客戶。

【用途】 在 Shopline 商店中建立新的客戶記錄。適合客服手動建檔或批次匯入場景。

【呼叫的 Shopline API】

  • POST /v1/customers

【回傳結構】 dict 含 success: bool, resource_id: str, message: str, customer: dict。

【副作用】

  • 在商店客戶列表中新增一筆客戶

  • 如果 email 或 phone 已存在,可能會失敗(Shopline 可能不允許重複)

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes客戶姓名
emailNoEmail
phoneNo電話
genderNo性別 (male/female/other)
birthdayNo生日 YYYY-MM-DD
tagsNo標籤列表

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that it adds a customer to the store's customer list and that duplicate email or phone may cause failure, plus includes return structure and API endpoint. This is strong behavioral disclosure for a create operation, though it omits authentication requirements.

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

Conciseness5/5

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

The description is well-structured with headers and bullet-like sections, covering purpose, API, return structure, and side effects without excessive wordiness. Each section adds useful context and the format is easy to scan.

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

Completeness5/5

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

Given no output schema or annotations, the description compensates with return structure, side effects, and API endpoint. It is complete for a simple create tool, covering the essential operational aspects an agent needs to know.

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

Parameters4/5

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

The input schema already has 100% parameter descriptions, so the baseline is 3. The description adds value by noting that duplicate email or phone may cause failures, which informs how those parameters should be considered, though it doesn't provide format details beyond the schema.

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

Purpose5/5

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

The description clearly states it creates a new customer record in Shopline, using the specific verb '建立' (create) and resource '客戶' (customer). It distinguishes from sibling tools like update_customer and delete_customer by explicitly targeting new customer creation.

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

Usage Guidelines4/5

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

The description specifies suitable scenarios (manual customer service entry or batch import) and clearly implies it is for new records. It does not explicitly contrast with update_customer for existing customers, but the context is clear enough for an agent to select it.

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

create_flash_price_campaignA

[WRITE] 建立快閃價格活動。

【用途】 建立限時特價活動(Flash Sale),在指定時段內將商品調整為特定價格。 適合節慶特賣、清倉、限時搶購等場景。

【呼叫的 Shopline API】

  • POST /v1/flash_price_campaigns

【回傳結構】 dict 含 success: bool, resource_id: str, message: str, campaign: dict。

【副作用】

  • 活動建立後,依設定的開始時間自動啟用特價

  • 活動期間,符合條件的商品會顯示特價,影響商店前台的價格呈現

  • 若活動時段與其他促銷重疊,需確認優先規則

ParametersJSON Schema
NameRequiredDescriptionDefault
campaign_dataYes快閃價格活動資料(參考 Shopline flash_price_campaign 物件結構)

TDQS

A4.4/5.0
Behavior5/5

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

No annotations are provided, so the description carries full burden. It discloses key side effects: automatic activation at start time, storefront price impact, and overlap priority confirmation. It also marks the tool as [WRITE], indicates the exact API endpoint, and describes the return structure. This is thorough and genuinely helpful.

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?

Well-structured with clear sections: purpose, API call, return structure, and side effects. The [WRITE] marker front-loads the mutation behavior. Every sentence serves a purpose; no filler or redundancy.

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

Completeness4/5

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

The description covers purpose, usage scenarios, API endpoint, return structure, and side effects. It lacks detailed campaign_data field specifications, but given the external reference to the Shopline object and the presence of side-effect disclosures, it is sufficiently complete for an agent to invoke the tool effectively.

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?

The schema has one parameter (campaign_data) described as '參考 Shopline flash_price_campaign 物件結構' (refer to Shopline object structure), which is vague. The description adds context that the data involves time periods and product prices, but does not detail the parameter structure. With schema coverage at 100% but low specificity, the description adds marginal value, consistent with a baseline score of 3.

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?

Description explicitly states the verb and resource: '建立限時特價活動(Flash Sale)' (create flash price campaign). It clearly distinguishes itself from sibling tools like list_flash_price_campaigns, get_flash_price_campaign_detail, update_flash_price_campaign, and delete_flash_price_campaign by being the creation variant.

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?

Provides clear usage context: '適合節慶特賣、清倉、限時搶購等場景' (suitable for holiday sales, clearance, limited-time flash purchases). It does not explicitly exclude alternatives like create_promotion, but gives enough context to know when this tool is appropriate.

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

create_giftA

[WRITE] 建立新贈品。

【用途】 在 Shopline 商店中建立一個新的贈品記錄,可搭配促銷活動使用。

【呼叫的 Shopline API】

  • POST /v1/gifts

【回傳結構】 dict 含 success: bool, resource_id: str, message: str, gift: dict。

【副作用】

  • 在商店贈品列表中新增一筆記錄

  • 贈品建立後可透過促銷規則設定觸發條件

ParametersJSON Schema
NameRequiredDescriptionDefault
gift_dataYes贈品資料,例如 {name, sku, quantity, ...}

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It transparently lists side effects (adds a gift record, can be configured via promotion rules) and marks the operation as [WRITE]. It also specifies the Shopline API endpoint. It does not discuss permissions or reversibility, but the main behavioral traits are covered.

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

Conciseness5/5

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

The description is well-structured with headers, a purpose statement, API reference, return structure, and side effects. It is efficient and front-loaded with the primary purpose. Each section adds value and there is no filler.

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

Completeness4/5

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

The tool has one open-ended parameter and no output schema, but the description compensates by providing the return structure (dict with success, resource_id, message, gift) and explicitly naming the API endpoint. It also lists side effects. It does not cover error scenarios or auth, but for a simple create operation it is reasonably complete.

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

Parameters3/5

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

The schema covers 100% of the parameter (gift_data) with a description and example, so the baseline is 3. The description does not add any additional parameter details beyond restating that gift_data is the data object. It neither clarifies required fields nor enumerates possible structures beyond the schema's '例如' example.

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

Purpose5/5

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

The description clearly states it creates a new gift record in Shopline ('建立新贈品'), uses a specific verb (建立) and resource (贈品), and distinguishes it from sibling tools like update_gift or list_gifts. It also mentions the promotion integration context, which adds clarity.

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

Usage Guidelines4/5

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

The description explains that the tool is used to create a gift for promotions and notes that after creation it can be used with promotion rules. It does not explicitly state when not to use it, but the create operation is clearly differentiated from read/update siblings. The context is clear, though exclusions are not spelled out.

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

create_metafieldA

[WRITE] 建立商家應用元欄位(App Metafield)。

【用途】 為商家建立自定義的元欄位,用於儲存應用程式所需的額外商家設定或資料。

【呼叫的 Shopline API】

  • POST /merchants/current/app-metafields

【回傳結構】 dict 含 success: bool, resource_id: str, message: str, metafield: dict。

【副作用】

  • 在商家的應用元欄位中新增一筆記錄

  • 相同 namespace + key 組合若已存在,可能會失敗或覆蓋(取決於 Shopline 實作)

ParametersJSON Schema
NameRequiredDescriptionDefault
metafield_dataYes元欄位資料,例如:{"namespace": "my_app", "key": "custom_key", "value": "custom_value", "value_type": "string"}

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses the side effect of creating a new record and explicitly warns that an existing namespace+key combination may cause failure or overwrite. It also includes the API endpoint and return structure, adding meaningful behavioral context beyond the bare create action.

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

Conciseness5/5

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

The description is well-structured with clear sections: [WRITE], purpose, API endpoint, return structure, and side effects. Every section provides necessary information without redundancy, and the write indicator is front-loaded.

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

Completeness5/5

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

For a single-parameter create tool with no output schema, the description covers all essential aspects: purpose, API call, return format, and side effects/risks. It is fully self-contained and does not rely on annotations.

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

Parameters4/5

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

The schema already provides 100% description coverage for the single parameter with an example. The description adds value by explaining the uniqueness constraint on namespace+key, which is crucial for understanding how metafield_data is used. This goes beyond the schema's example.

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?

Description begins with '[WRITE]' and clearly states '建立商家應用元欄位(App Metafield)' (create merchant app metafield), with a specific verb and resource. It also explains the purpose: storing app-specific merchant settings or data, which distinguishes it from sibling read-only tools.

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

Usage Guidelines4/5

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

The 【用途】 section gives clear context for when to use the tool: to store additional merchant settings/data needed by the app. No explicit alternatives or when-not-to-use guidance, but no sibling tool shares the same write purpose, so the context is sufficient.

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

create_orderA

[WRITE] 建立新訂單。

【用途】 在 Shopline 商店中手動建立新訂單,適用於電話訂購、客服補單、線下訂單轉入等場景。 order_data 需包含 Shopline 建立訂單 API 所需的完整欄位。

【呼叫的 Shopline API】

  • POST /v1/orders

【回傳結構】 dict 含 success: bool, resource_id: str, message: str, order: dict。

【副作用】

  • 在商店訂單列表中新增一筆訂單

  • 可能觸發庫存扣減(取決於訂單內容與商店設定)

  • 可能觸發客戶訂單確認通知(取決於商店設定)

  • 建立後訂單立即生效,需確認資料正確再執行

ParametersJSON Schema
NameRequiredDescriptionDefault
order_dataYes完整訂單資料,依 Shopline API 規格傳入所有必要欄位

TDQS

A4.5/5.0
Behavior5/5

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

There are no annotations, so the description carries the full burden. It thoroughly discloses the API endpoint (POST /v1/orders), side effects (inventory deduction, customer notification, immediate effect), and return structure. It also warns that the order becomes active immediately, emphasizing the need to verify data before execution.

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

Conciseness5/5

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

The description is well-structured with labeled sections (用途, API, 回傳結構, 副作用) and bullet points. It front-loads the purpose and each section provides non-redundant, necessary information, making the length justified and easily scannable.

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?

Despite lacking annotations and output schema, the description provides a complete picture: purpose, API endpoint, return structure, side effects, and parameter requirements. For a single-parameter write tool, this covers all critical aspects needed for correct invocation.

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

Parameters3/5

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

The schema already describes order_data as requiring complete order data, and the description reinforces this by stating it must contain all required fields per the Shopline API spec. Since there is only one parameter with 100% schema coverage, the description adds minimal additional meaning but does not need to compensate.

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

Purpose5/5

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

The description immediately states '[WRITE] 建立新訂單' (create new order), clearly defining the action and resource. It further specifies practical use cases such as phone orders, customer service order supplements, and offline order transfers, which distinguishes it from order modification or query tools like update_order or get_order_detail.

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

Usage Guidelines4/5

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

The description explicitly lists when to use the tool (phone orders, CS order supplements, offline transfers) and states the prerequisite that order_data must contain complete fields required by the Shopline API. However, it does not mention when not to use it or explicitly name alternative tools such as update_order, making it clear but not exhaustive.

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

create_productA

[WRITE] 建立新商品。

【用途】 在 Shopline 商店中建立一筆新的商品記錄。product_data 為完整的商品 body, 應依 Shopline Open API 規格組裝(含名稱、描述、售價、SKU 等)。

【呼叫的 Shopline API】

  • POST /v1/products

【回傳結構】 dict 含 success: bool, resource_id: str, message: str, product: dict。

【副作用】

  • 商品立即在商店後台可見

  • 若 SKU 或 barcode 重複,API 可能回傳錯誤

  • 新商品預設狀態取決於 product_data 內的 status 欄位

ParametersJSON Schema
NameRequiredDescriptionDefault
product_dataYes完整商品建立資料,依 Shopline API 規格傳入(含 title、description、price 等欄位)

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description carries the full transparency burden. It discloses the write nature ([WRITE]), side effects (immediate visibility, duplicate SKU/barcode errors), and the return structure, offering substantial behavioral insight beyond the structured schema.

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

Conciseness5/5

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

The description is well-structured with clear sections (purpose, API call, return structure, side effects) and is front-loaded with the core action. Each sentence adds value, and the format is easy to scan.

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?

The description fully addresses the tool's complexity by including the API endpoint, return structure, and side effects, including duplicate error behavior. Since no output schema exists, the explicit return structure is especially valuable for an AI agent.

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?

The schema description already covers the single parameter with 100% coverage, explaining it should be a complete product body per the Shopline API spec. The tool description adds emphasis on completeness and mentions SKU, but this largely overlaps with the schema and does not provide significant additional meaning.

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

Purpose5/5

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

The description explicitly states the tool creates a new product record in Shopline, using the verb '建立' (create) and the resource '商品' (product). It further distinguishes from sibling tools like update_product and delete_product by specifying the POST /v1/products endpoint and emphasizing creation of a new record.

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

Usage Guidelines4/5

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

The description clearly indicates when to use this tool: to create a new product. It also provides practical guidance on assembling product_data according to the Shopline Open API spec. While it does not explicitly mention alternatives, the context is clear and no exclusions are necessary.

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

create_product_reviewA

[WRITE] 建立單筆商品評論。

【用途】 為指定商品建立一筆顧客評論,適用於客服代為補登評論或匯入歷史評論資料。

【呼叫的 Shopline API】

  • POST /v1/product_review_comments

【回傳結構】 dict 含 success: bool, resource_id: str, message: str, review: dict。

【副作用】

  • 在商品評論列表中新增一筆評論,依商店設定可能立即公開或待審核

  • 影響商品的平均評分顯示

ParametersJSON Schema
NameRequiredDescriptionDefault
review_dataYes評論資料,例如 {"product_id": "P001", "rating": 5, "content": "品質很好!", "reviewer_name": "王小明"}

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and discloses side effects: it adds a review to the list, may be immediately public or pending review based on store settings, and affects average rating. It also specifies the return structure. This is strong behavioral transparency, though it omits details like permission requirements or rate limits.

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

Conciseness5/5

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

The description is well-structured with clear sections (purpose, API, return structure, side effects) and is appropriately concise. Every section earns its place, and the [WRITE] tag front-loads the key action. It avoids unnecessary fluff.

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

Completeness4/5

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

The description is complete for a write operation with one param and no output schema, as it provides return structure and side effects. However, it could elaborate on validation rules or required fields within review_data, though the schema example helps. Overall, it provides enough context for an agent to invoke it correctly.

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

Parameters3/5

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

The schema description covers 100% of the single parameter 'review_data', including an example with product_id, rating, content, and reviewer_name. The tool description itself does not add further parameter details, so it meets the baseline but does not exceed it. The example in the schema is the primary semantic source.

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

Purpose5/5

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

The description clearly states the tool's function with a specific verb ('建立' - create) and resource ('單筆商品評論' - single product review), distinguishing it from sibling tools like bulk_create_product_reviews and update_product_review. The [WRITE] tag and API endpoint further reinforce the purpose.

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

Usage Guidelines4/5

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

The description provides a clear usage context: '適用於客服代為補登評論或匯入歷史評論資料' (for customer service to add reviews on behalf or import historical review data). It does not explicitly mention alternatives or exclusions, but the singular nature and sibling tools imply when to use it. The guidance is sufficient but could be more explicit about bulk scenarios.

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

create_product_variationA

[WRITE] 為商品新增變體。

【用途】 在現有商品下建立新的規格變體(如顏色、尺寸等)。variation_data 應依 Shopline Open API 規格組裝,含 SKU、價格、庫存等欄位。

【呼叫的 Shopline API】

  • POST /v1/products/{product_id}/variations

【回傳結構】 dict 含 success: bool, resource_id: str, message: str, variation: dict。

【副作用】

  • 變體立即加入商品,前台可供選擇

  • 若 SKU 重複,API 可能回傳錯誤

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYes商品內部 ID
variation_dataYes變體資料(含 SKU、價格、庫存、規格選項等)

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses key side effects: the variation is immediately added and available in the storefront, and duplicate SKUs may cause API errors. It also names the exact Shopline API endpoint and return structure, providing strong behavioral context.

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

Conciseness5/5

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

The description is well-structured with labeled sections (用途, 呼叫的 API, 回傳結構, 副作用) and front-loaded [WRITE] indicator. Every sentence adds useful information with no redundancy.

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

Completeness5/5

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

Given the tool has no output schema, the description compensates by detailing the return dict structure. It covers purpose, API endpoint, parameter shape, side effects, and an error condition, making it complete for an agent to invoke correctly.

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

Parameters4/5

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

While the schema already describes all parameters (100% coverage), the description adds meaning by specifying that variation_data must follow Shopline Open API spec and includes SKU, price, inventory, and spec options. This goes beyond the generic schema description.

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

Purpose5/5

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

The description states a specific verb and resource: '為商品新增變體' (add variation to product). It clearly distinguishes from sibling tools like update_product_variation and delete_product_variation by focusing on creation of a new variation under an existing product.

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

Usage Guidelines4/5

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

The description explains usage in existing products for adding new spec variants (e.g., color, size), and implies this is for creation rather than update/delete. It does not explicitly name alternatives, but the context is clear enough for correct selection among sibling tools.

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

create_promotionA

[WRITE] 建立新促銷活動。

【用途】 在 Shopline 商店中建立新的促銷活動,例如折扣碼、買一送一、滿額折扣等。

【呼叫的 Shopline API】

  • POST /v1/promotions

【回傳結構】 dict 含 success: bool, resource_id: str, message: str, promotion: dict。

【副作用】

  • 在商店促銷列表中新增一筆促銷活動,活動狀態依 promotion_data 設定而定

  • 若活動設定為立即啟用,消費者即可使用該促銷

  • 促銷規則設定後如需修改,請使用 update_promotion

ParametersJSON Schema
NameRequiredDescriptionDefault
promotion_dataYes促銷活動資料(參考 Shopline promotion 物件結構)

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations provided, the description carries the full transparency burden. It explicitly discloses side effects: adds a promotion to the store list, activation status depends on promotion_data, and immediate activation may make the promotion live to consumers. It also notes the shutdown for modifications via update_promotion and specifies the return structure (dict with success, resource_id, message, promotion).

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

Conciseness5/5

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

The description is well-structured with labeled sections: purpose, API endpoint, return structure, and side effects. Every section adds value and the content is front-loaded with a clear '[WRITE]' tag. It is compact yet covers all essential facets.

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 mutating tool with no output schema, the description supplies return structure and side effects, filling key contextual gaps. It also provides concrete examples of what can be created. Minor omission: it doesn't detail required fields or constraints of promotion_data, but that is delegated to the Shopline object structure reference.

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?

The schema covers 100% of the single parameter (promotion_data) with a description that references the Shopline promotion object structure. The tool description does not add further parameter-level detail, but it offers context by listing promotion types in the purpose section. Baseline 3 is appropriate since the schema already handles parameter semantics.

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

Purpose5/5

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

The description opens with '[WRITE] 建立新促銷活動' (create new promotion), using a specific verb and resource. It further clarifies by enumerating promotion types (discount codes, buy-one-get-one, amount discounts) and distinguishes from siblings like update_promotion and delete_promotion.

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

Usage Guidelines4/5

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

The description states the tool's purpose and adds an explicit alternative: '促銷規則設定後如需修改,請使用 update_promotion' (if you need to modify promotion rules, use update_promotion). While not a full when/when-not matrix, this gives clear guidance for a primary alternative use case.

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

create_purchase_orderA

[WRITE] 建立新採購單。

【用途】 在 Shopline POS 系統中建立一筆新的採購單,用於記錄向供應商進貨的資訊。

【呼叫的 Shopline API】

  • POST /v1/pos/purchase_orders

【回傳結構】 dict 含 success: bool, resource_id: str, message: str, purchase_order: dict。

【副作用】

  • 在 POS 採購單列表中新增一筆記錄

  • 採購單建立後可進行後續入庫確認操作

ParametersJSON Schema
NameRequiredDescriptionDefault
purchase_order_dataYes採購單資料,例如 {supplier_id, items: [{sku, quantity, cost}, ...], ...}

TDQS

A4/5.0
Behavior4/5

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

The description begins with '[WRITE]' flagging it as a write operation and lists side effects: adding a record to the POS purchase order list and enabling subsequent stock-in confirmation. It also discloses the return structure, providing behavioral context beyond what a basic create would offer. Since no annotations are provided, the description carries the transparency burden and does so reasonably.

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

Conciseness5/5

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

The description is well-structured with clear sections (purpose, API, return structure, side effects) and no redundant content. Each section adds value, and the most important information is front-loaded with the action tag and purpose.

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

Completeness4/5

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

The description includes purpose, API endpoint, return structure, and side effects, which covers the essential aspects of a create operation. It does not document prerequisites, failure behavior, or detailed parameter constraints, but given the simple schema and presence of an output shape description, it is reasonably complete.

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

Parameters3/5

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

The input schema already provides 100% coverage of the single parameter, including an example object ({supplier_id, items: [{sku, quantity, cost}, ...]}), so the description adds minimal parameter-specific information. The description's mention of recording supplier purchase information aligns with the schema but does not deepen parameter understanding beyond the baseline.

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

Purpose5/5

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

The description clearly states the tool's function: '建立新採購單' (create a new purchase order) and describes its purpose as recording supplier purchase information in Shopline POS. It also specifies the exact Shopline API endpoint (POST /v1/pos/purchase_orders), distinguishing it from other order tools.

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

Usage Guidelines3/5

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

The description provides context that this tool is for '記錄向供應商進貨的資訊' (recording supplier purchase information), implying its use for purchase order creation. However, it does not explicitly mention when to use it over alternatives or any exclusions, leaving usage guidance implicit.

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

create_return_orderA

[WRITE] 建立退貨/退款申請單。

【用途】 針對指定訂單建立退貨或退款申請,適用於客服處理退換貨流程。

【呼叫的 Shopline API】

  • POST /v1/return_orders

【回傳結構】 dict 含 success: bool, resource_id: str, message: str, return_order: dict。

【副作用】

  • 在系統中建立退貨/退款申請記錄,狀態為待審核

  • 觸發退貨流程,可能影響庫存預留與財務帳務(視 Shopline 退貨處理設定)

  • 若訂單不符退貨條件(如已超過退貨期限),API 可能回傳錯誤

ParametersJSON Schema
NameRequiredDescriptionDefault
return_order_dataYes退貨單資料,例如 {"order_id": "ORD123", "reason": "商品瑕疵", "items": [{"line_item_id": "LI001", "quantity": 1}]}

TDQS

A4.5/5.0
Behavior5/5

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

Since no annotations are provided, the description carries the full burden. It discloses multiple side effects: creates a pending-review record, triggers return process affecting inventory/finances, and may error if order conditions aren't met. This is exemplary transparency for a write tool.

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

Conciseness5/5

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

The description is well-structured with sections for purpose, API, return structure, and side effects. Every section adds value and there is no redundant filler, making it both concise and informative.

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

Completeness5/5

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

With no output schema and no annotations, the description compensates by detailing the POST endpoint, response dict fields, side effects, and potential error conditions. This is sufficient for an agent to understand the tool's behavior and invoke it correctly.

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

Parameters3/5

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

Schema coverage is 100% and the schema already provides a detailed example and description for return_order_data. The tool description adds no extra parameter semantics beyond referencing the order target generally, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states it creates a return/refund request for a specified order ('建立退貨/退款申請單'), with a clear verb and resource. It distinguishes from siblings like list_return_orders and update_return_order by focusing on the creation action.

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

Usage Guidelines4/5

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

The description provides clear usage context: '適用於客服處理退換貨流程' (suitable for customer service return/exchange processing). It does not explicitly mention alternatives or when not to use, but the context is clear enough for selection.

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

delete_affiliate_campaignA

[WRITE] 刪除聯盟行銷活動。

【用途】 永久刪除指定的聯盟行銷活動。用於清除已結束、取消或錯誤建立的活動。

【呼叫的 Shopline API】

  • DELETE /v1/affiliate_campaigns/{campaign_id}

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 永久刪除該活動,不可復原

  • 刪除後聯盟夥伴的推廣連結或代碼將失效,無法再追蹤新訂單

  • 已累積的佣金紀錄與歷史訂單資料不受影響(依 Shopline 實作而定)

ParametersJSON Schema
NameRequiredDescriptionDefault
campaign_idYes聯盟行銷活動 ID

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure and does so thoroughly. It explicitly states that deletion is permanent and irreversible, that affiliate links/codes become invalid, that new orders cannot be tracked, and that commission records/history are unaffected (with an implementation caveat). This goes beyond minimal disclosure and fully informs the agent of consequences.

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

Conciseness5/5

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

The description is well-structured with clear sections ([WRITE], purpose, API, return structure, side effects). Every sentence provides necessary information for a destructive operation—purpose, API endpoint, return format, and side effects—without redundancy or padding.

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?

Despite having only one parameter and no output schema, the description fully contextualizes the operation: it specifies the exact API call, the return structure, and the irreversible side effects. This is complete for an agent to select and invoke the tool correctly, including understanding downstream impacts.

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?

The input schema already describes the only parameter (campaign_id) with its meaning ('聯盟行銷活動 ID'), achieving 100% schema coverage. The description adds no additional parameter semantics beyond restating that the campaign is specified, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb ('delete') and resource ('affiliate marketing campaign'), and explicitly says '永久刪除指定的聯盟行銷活動' (permanently delete the specified affiliate campaign). It clearly distinguishes itself from sibling tools like create/update/list/get by focusing on deletion.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool: '用於清除已結束、取消或錯誤建立的活動' (for clearing ended, cancelled, or mistakenly created campaigns). However, it does not explicitly mention alternatives or exclusions (e.g., use update to pause instead of delete), so it falls short of a 5.

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

delete_categoryA

[WRITE] 刪除商品分類。

【用途】 從 Shopline 商店中永久刪除指定分類。適合清除已停用或錯誤建立的分類。

【呼叫的 Shopline API】

  • DELETE /v1/categories/{category_id}

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 永久刪除分類記錄,不可復原

  • 原本屬於此分類的商品將解除分類關聯,商品本身不會被刪除

  • 若有子分類,子分類的父分類關聯可能一併受影響(視 Shopline 實作而定)

ParametersJSON Schema
NameRequiredDescriptionDefault
category_idYes分類 ID

TDQS

A4.5/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full burden. It explicitly discloses irreversibility, permanent deletion, that products are unaffected but their category association is removed, and potential impact on subcategories. It also names the exact API endpoint and return structure, giving the agent a complete picture of the operation's 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?

The description is well-structured with labeled sections (用途, API, 回傳結構, 副作用) and is front-loaded with the core purpose. Every section provides valuable information with no filler or redundancy, making it efficiently sized for the tool's complexity.

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?

The description is complete for a destructive one-parameter tool. It includes the return structure explicitly since no output schema exists, covers all side effects, and provides sufficient context for safe invocation. It lacks only auth/rate-limit details, which are not essential here.

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

Parameters3/5

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

Schema coverage is 100% with the parameter clearly described as '分類 ID'. The description adds the API path 'DELETE /v1/categories/{category_id}', which confirms category_id is a path parameter, but it does not add significant semantics about the parameter beyond what the schema already provides. Baseline 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb and resource: '永久刪除指定分類' (permanently delete specified category) from Shopline. It clearly distinguishes this from sibling tools like create_category, update_category, and get_category_detail by focusing on deletion. The additional note about suitability for clearing deactivated or mistake-created categories further clarifies the intended use.

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

Usage Guidelines4/5

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

The description provides a clear use case: '適合清除已停用或錯誤建立的分類' (suitable for clearing deactivated or mistakenly created categories). However, it does not explicitly mention when not to use it or suggest alternatives (e.g., update_category for reversible changes), so it falls short of a 5.

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

delete_customerA

[WRITE] 刪除客戶。

【用途】 從 Shopline 商店中刪除客戶記錄。通常用於清除測試資料或 GDPR 合規需求。

【呼叫的 Shopline API】

  • DELETE /v1/customers/{customer_id}

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 永久刪除客戶記錄,不可復原

  • 客戶相關的訂單紀錄可能仍保留(取決於 Shopline 實作)

ParametersJSON Schema
NameRequiredDescriptionDefault
customer_idYes客戶內部 ID

TDQS

A4.5/5.0
Behavior5/5

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

由於無 annotations,描述承擔全部責任。它清楚揭露「永久刪除客戶記錄,不可復原」以及「客戶相關的訂單紀錄可能仍保留」等重要副作用,並標註 [WRITE] 屬寫入操作。此資訊足以讓 agent 了解風險。

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?

描述以分段(用途、API、回傳、副作用)呈現,每個句子都有實質資訊,無冗詞,長度適中。

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?

此工具為單一參數的刪除操作,複雜度不高。描述包含用途、API 路徑、回傳結構與副作用,在無輸出 schema 下仍能提供完整指引。

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

Parameters3/5

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

輸入 schema 已完整描述 customer_id(客戶內部 ID),覆蓋率 100%。描述本身未對參數增加額外語意,因此依據基準分數給 3 分。

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?

描述開頭明確標示「[WRITE] 刪除客戶」並說明用途為「從 Shopline 商店中刪除客戶記錄」,同時提供典型情境(測試資料、GDPR)。此描述以特定動詞+資源+範圍,且與其他客戶工具(list_customers、update_customer)清楚區隔。

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?

說明「通常用於清除測試資料或 GDPR 合規需求」提供明確使用情境。但未提及何時不應使用或與替代工具的比較(例如 update_customer),因此無排除條款。

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

delete_flash_price_campaignA

[WRITE] 刪除快閃價格活動。

【用途】 永久刪除指定的快閃價格活動。用於清除已結束、取消或錯誤建立的活動。

【呼叫的 Shopline API】

  • DELETE /v1/flash_price_campaigns/{campaign_id}

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 永久刪除該活動,不可復原

  • 若活動正在進行中,刪除後商品立即恢復原價

  • 歷史訂單中已套用的特價不受影響

ParametersJSON Schema
NameRequiredDescriptionDefault
campaign_idYes快閃價格活動 ID

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and does so thoroughly. It discloses permanent deletion irreversibility, immediate price reversion for ongoing campaigns, and that historical orders are unaffected.

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

Conciseness5/5

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

The description is well-structured with separate sections for purpose, API call, return structure, and side effects. It is front-loaded with the [WRITE] marker and every line provides necessary information without redundancy.

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

Completeness5/5

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

For a simple one-parameter delete operation with no output schema, the description is complete. It documents the API endpoint, return format, and all relevant side effects, giving the agent everything needed to select and invoke the tool correctly.

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

Parameters3/5

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

The single parameter campaign_id is already fully described in the schema with 100% coverage, including a Chinese description. The description adds no additional parameter-level meaning beyond implying the targeted campaign.

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

Purpose5/5

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

The description states a specific verb — permanently deleting a designated flash price campaign — and clearly identifies the resource and scope. It also specifies use cases (cleaning up ended, cancelled, or erroneously created campaigns), distinguishing it from sibling delete/update operations.

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

Usage Guidelines4/5

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

The description gives explicit use cases ('用於清除已結束、取消或錯誤建立的活動') and notes the operation is permanent. However, it does not explicitly mention alternatives like update_flash_price_campaign for modifying an existing campaign, so it stops short of full when-not guidance.

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

delete_productA

[WRITE] 刪除商品。

【用途】 從 Shopline 商店中永久刪除商品記錄。通常用於清除下架商品或測試資料。

【呼叫的 Shopline API】

  • DELETE /v1/products/{product_id}

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 永久刪除商品,不可復原

  • 商品相關的訂單行項目記錄可能仍保留(取決於 Shopline 實作)

  • 刪除後前台立即下架

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYes商品內部 ID

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly lists side effects: permanent deletion without recovery, possible retention of order line items, and immediate removal from the storefront. It also indicates the operation is a write via '[WRITE]' and names the exact API call, providing adequate transparency for a delete operation.

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

Conciseness4/5

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

The description is well-structured with labeled sections (用途, API, 回傳結構, 副作用) and is reasonably concise. It avoids unnecessary fluff, though the inclusion of the API endpoint could be seen as slightly redundant given the schema, but it still adds value by clarifying the underlying call.

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

Completeness4/5

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

For a simple delete tool with one parameter and no output schema, the description is quite complete. It covers the purpose, typical use case, API endpoint, return structure, and side effects. The only missing piece is permission/authorization requirements, but that is not critical for a single-resource delete operation.

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

Parameters3/5

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

The input schema already provides 100% coverage with a description for the single parameter product_id ('商品內部 ID'). The tool description adds no additional meaning beyond what the schema provides, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool deletes a product permanently from Shopline, using the specific verb '刪除' (delete) and the resource '商品' (product). It distinguishes itself from siblings like delete_product_variation and update_product by explicitly mentioning permanent deletion of the product record and the API endpoint DELETE /v1/products/{product_id}.

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

Usage Guidelines4/5

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

The description provides clear context for when to use this tool: '通常用於清除下架商品或測試資料' (usually for removing discontinued products or test data). While it does not explicitly mention alternatives or when not to use it, the typical use case is stated, which is enough to guide an AI agent.

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

delete_product_imagesA

[WRITE] 刪除商品圖片。

【用途】 從商品相簿中刪除指定圖片。適用於移除過時圖片或錯誤上傳的圖片。

【呼叫的 Shopline API】

  • DELETE /v1/products/{product_id}/images

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 永久刪除指定圖片,不可復原

  • 若被刪除的圖片為商品主圖,商品主圖將自動替換為相簿中下一張圖片

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYes商品內部 ID
image_idsYes要刪除的圖片 ID 列表

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description fully discloses critical behavioral traits: images are permanently deleted and cannot be recovered, and if the main image is deleted it is automatically replaced. It also specifies the API endpoint and return structure, giving the agent full transparency about consequences.

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

Conciseness5/5

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

The description is well-structured with clear sections: purpose, API endpoint, return structure, and side effects. Every sentence adds valuable information without redundancy, and the main purpose is front-loaded.

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

Completeness5/5

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

For a simple delete operation with two parameters and no output schema, the description covers all necessary context: what it does, when to use it, the API call, the response format, and side effects. This makes it complete enough for an agent to correctly select and invoke the 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?

The input schema already provides full descriptions for both parameters (image_ids and product_id) with 100% coverage. The description does not add significant extra meaning beyond what the schema states, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states 'Delete product images' with a specific verb and resource, and further elaborates that it removes specified images from the product album. This distinguishes it from the sibling tool 'add_product_images' and other product update tools, making its purpose unambiguous.

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

Usage Guidelines4/5

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

It provides a clear usage context: 'Suitable for removing outdated images or incorrectly uploaded images.' While it does not explicitly mention alternatives or when not to use, this context helps an agent decide when to invoke it, and the presence of sibling tools like 'add_product_images' implies the contrast.

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

delete_product_reviewA

[WRITE] 刪除單筆商品評論。

【用途】 從 Shopline 商店中永久刪除指定評論,適用於移除違規、惡意或測試用評論。

【呼叫的 Shopline API】

  • DELETE /v1/product_review_comments/{comment_id}

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 永久刪除評論記錄,不可復原

  • 商品的評論總數與平均評分將同步更新

ParametersJSON Schema
NameRequiredDescriptionDefault
comment_idYes評論 ID

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description takes full responsibility for behavioral disclosure. It explicitly warns that the review is permanently deleted and cannot be restored, and that the product's review count and average rating will be updated. It also documents the return structure and the exact HTTP method and path, giving comprehensive insight into the operation's effects.

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

Conciseness5/5

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

The description is well-organized into labeled sections (purpose, API call, return structure, side effects). Every sentence is informative and earns its place. It is concise yet thorough, with no redundant filler.

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

Completeness5/5

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

For a simple single-parameter delete operation, the description is highly complete. It covers the purpose, the exact API call, the return structure, and side effects. Since there is no output schema, the description provides return format details, ensuring the agent knows what to expect. The absence of annotations is fully compensated by the description's rich behavioral information.

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?

The schema already provides complete coverage for the single parameter (comment_id) with a description ('評論 ID'). The tool description does not add significant meaning beyond what the schema provides; it only mentions comment_id in the API URL context, which does not enhance parameter understanding. Baseline 3 is appropriate given 100% schema coverage.

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

Purpose5/5

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

The description starts with '[WRITE] 刪除單筆商品評論' clearly stating the action (delete) and resource (single product review), which distinguishes it from sibling tools like bulk_delete_product_reviews, update_product_review, and create_product_review. The specific API endpoint is also provided, reinforcing the tool's exact operation.

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

Usage Guidelines4/5

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

It provides clear usage context by stating the tool is suitable for removing violating, malicious, or test reviews. While it doesn't explicitly mention when not to use it or name alternatives like bulk_delete_product_reviews, the 'single' qualifier and purpose cover the main usage scenario adequately.

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

delete_product_variationA

[WRITE] 刪除商品變體。

【用途】 從商品中永久刪除指定的規格變體。適用於停售特定規格或清理錯誤變體。

【呼叫的 Shopline API】

  • DELETE /v1/products/{product_id}/variations/{variation_id}

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 永久刪除變體,不可復原

  • 若該變體為商品唯一變體,刪除後商品可能無法購買

  • 刪除後前台立即移除該規格選項

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYes商品內部 ID
variation_idYes變體內部 ID

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description fully discloses behavioral traits: it explicitly says '永久刪除' (permanent deletion) and '不可復原' (irreversible), warns that deleting the only variation may make the product unpurchasable, and states that the frontend removes the spec option immediately. This is exceptional transparency for a destructive operation.

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

Conciseness5/5

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

The description is well-structured with clear sections for purpose, API endpoint, return structure, and side effects. Every sentence adds value, and the information is front-loaded with the core action immediately. There is no redundant content.

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?

Despite having no output schema, the description explicitly states the return structure (dict with success, resource_id, message), the API endpoint, and all relevant side effects. It is complete for a destructive mutation tool of this complexity.

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

Parameters3/5

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

The input schema already provides 100% coverage with descriptions for both parameters (product_id as '商品內部 ID' and variation_id as '變體內部 ID'). The description adds no additional parameter-level semantics beyond the schema, so the baseline of 3 applies.

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

Purpose5/5

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

The description opens with '[WRITE] 刪除商品變體' which clearly states the action (delete) and resource (product variation), and then elaborates the purpose: permanently deleting specific variations for discontinuing specs or cleaning up errors. This distinguishes it from sibling tools like delete_product or update_product_variation.

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

Usage Guidelines4/5

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

The description states when to use: '適用於停售特定規格或清理錯誤變體' (applicable for discontinuing specific specs or cleaning erroneous variations). It also warns about the unique-variation case where deletion may make the product unpurchasable. It does not explicitly mention alternatives, but the when-to-use context is clear.

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

delete_promotionA

[WRITE] 刪除促銷活動。

【用途】 永久刪除指定的促銷活動。通常用於清除過期、測試或錯誤建立的活動。

【呼叫的 Shopline API】

  • DELETE /v1/promotions/{promotion_id}

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 永久刪除該促銷活動,不可復原

  • 刪除後消費者無法再使用與該活動相關的折扣碼或優惠

  • 已套用該促銷的歷史訂單不受影響

ParametersJSON Schema
NameRequiredDescriptionDefault
promotion_idYes促銷活動 ID

TDQS

A4.4/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full burden. It explicitly discloses side effects: permanent deletion, irreversibility, consumers losing access to discount codes, and historical orders unaffected. This is strong behavioral transparency for a destructive mutation.

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

Conciseness5/5

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

The description is well-structured with sections for purpose, API, return structure, and side effects. It is front-loaded with the core purpose and contains no redundant 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?

The tool is simple with one parameter and no output schema, but the description compensates by specifying the return structure (dict with success, resource_id, message) and side effects. It could mention authentication or error behavior, but overall it's sufficient for the tool's complexity.

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

Parameters3/5

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

The input schema already describes promotion_id with 100% coverage. The description adds little beyond referencing the API endpoint with {promotion_id}, so it adds minimal semantic value beyond the schema.

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

Purpose5/5

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

The description clearly states this tool permanently deletes a promotion ('永久刪除指定的促銷活動'), using a specific verb and resource. It distinguishes from sibling tools like list_promotions and update_promotion by emphasizing the destructive, permanent nature.

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

Usage Guidelines4/5

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

It provides context for when to use it: '通常用於清除過期、測試或錯誤建立的活動' (usually for removing expired, test, or erroneous promotions). It does not explicitly list alternatives or when-not-to-use, but the context is clear enough.

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

delete_purchase_ordersA

[WRITE] 批次刪除採購單。

【用途】 一次刪除一或多筆 POS 採購單記錄,適合清除測試資料或作廢錯誤採購單。

【呼叫的 Shopline API】

  • DELETE /v1/pos/purchase_orders

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 永久刪除指定的採購單記錄,不可復原

  • 若採購單已執行入庫操作,刪除可能受限(取決於 Shopline 實作)

ParametersJSON Schema
NameRequiredDescriptionDefault
purchase_order_idsYes要刪除的採購單 ID 列表(可批次刪除多筆)

TDQS

A4.5/5.0
Behavior5/5

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

No annotations are provided, so the description carries full burden. It clearly discloses that the operation permanently deletes records irreversibly, notes a potential restriction if the purchase order has been stocked in, and specifies the exact API and return structure.

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

Conciseness5/5

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

The description is concise and well-organized into sections: purpose, API, return structure, and side effects. Each section provides essential information without unnecessary fluff.

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

Completeness5/5

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

For a one-parameter delete tool, the description covers purpose, usage context, API endpoint, return structure, and side effects. The lack of an output schema is mitigated by explicitly documenting the return structure.

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?

The single parameter purchase_order_ids is fully described in the schema with 100% coverage. The description adds no additional parameter semantics beyond confirming batch deletion, so the schema does the heavy lifting.

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

Purpose5/5

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

The description clearly states it batch deletes purchase orders, with specific verb and resource. It distinguishes itself from sibling tools like create_purchase_order, list_purchase_orders, and get_purchase_order_detail by being the delete operation.

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

Usage Guidelines4/5

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

The description provides clear context for when to use: clearing test data or voiding erroneous purchase orders. It doesn't explicitly name alternatives or exclusions, but the given usage scenarios are sufficient for most cases.

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

execute_order_shipmentA

[WRITE] 執行訂單出貨。

【用途】 將指定訂單標記為已出貨,觸發 Shopline 出貨流程,適用於倉庫確認出貨後的狀態更新。

【呼叫的 Shopline API】

  • POST /v1/orders/{order_id}/shipment

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 訂單出貨狀態更新為已出貨

  • 可能觸發客戶出貨通知(取決於商店設定)

  • 訂單需處於可出貨狀態,否則 API 會回傳錯誤

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYes訂單 ID

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description carries full behavioral disclosure. It lists side effects: order shipment status updates to shipped, may trigger customer notifications, and the order must be shippable or the API returns an error. This is thorough for a write operation.

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

Conciseness5/5

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

The description is well-structured with clear sections for purpose, API, return structure, and side effects. Every sentence provides useful information with no redundancy. It is appropriately sized for the tool's complexity.

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?

The tool is simple with one parameter, but the description covers all necessary aspects: purpose, API endpoint, return structure (dict with success, resource_id, message), and side effects. Even without an output schema, the return format is explicitly described, making the description complete for an agent to invoke and interpret results.

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

Parameters3/5

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

The schema has 100% coverage for the single parameter order_id, with description '訂單 ID'. The tool description does not add additional meaning beyond this, such as format or how to obtain the ID. However, since the parameter is simple and fully documented, a baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's function: '執行訂單出貨' marks an order as shipped and triggers the Shopline shipment flow. It also specifies the exact API endpoint (POST /v1/orders/{order_id}/shipment), making the operation unambiguous. This distinguishes it from siblings like update_order_status or bulk_execute_shipment.

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

Usage Guidelines4/5

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

The description specifies the intended usage context: '適用於倉庫確認出貨後的狀態更新' (for status updates after warehouse confirms shipment). It also mentions the prerequisite that the order must be in a shippable state. However, it does not explicitly contrast with alternatives like bulk_execute_shipment or update_order_status.

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

get_affiliate_campaign_detailA

取得單一聯盟行銷活動的完整詳情。

【用途】 查詢特定聯盟行銷活動的佣金規則、適用範圍與推廣連結等完整資訊。 適合在已知 campaign_id 的情況下取得所有欄位。

【呼叫的 Shopline API】

  • GET /v1/affiliate_campaigns/{campaign_id}

【回傳結構】 dict 包含 id, title, status, commission_type, commission_value, tracking_code, start_at, end_at, created_at, updated_at 等完整欄位。

ParametersJSON Schema
NameRequiredDescriptionDefault
campaign_idYes聯盟行銷活動 ID(由 list_affiliate_campaigns 回傳的 id 欄位)

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses that this is a read-only GET request to a specific API endpoint and details the returned fields (id, title, status, commission_type, etc.). This is sufficient for a simple retrieval tool, though it does not mention error conditions or auth requirements.

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

Conciseness5/5

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

The description is well-structured with clear sections (Purpose, Usage, API Call, Return Structure). It is concise, with no filler, and each sentence adds value: purpose, when to use, what endpoint to call, and what the response contains.

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

Completeness5/5

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

For a simple get-by-id tool with one parameter and no output schema, the description is fully complete. It provides the API endpoint, usage context, and the full return structure, which is all an agent needs to select and invoke this tool correctly.

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

Parameters3/5

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

The input schema already provides 100% coverage for the single parameter, including the note that campaign_id comes from list_affiliate_campaigns. The description adds little beyond restating the usage context ('已知 campaign_id'), so the schema does the heavy lifting, matching the baseline of 3.

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

Purpose5/5

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

The description uses a specific verb '取得' with a clear resource '單一聯盟行銷活動的完整詳情' (get full details of a single affiliate campaign). It distinguishes itself from sibling tools like list_affiliate_campaigns (which lists campaigns) and get_affiliate_campaign_usage (which likely returns usage data).

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

Usage Guidelines4/5

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

The description explicitly states it is suitable when the campaign_id is already known and you need all fields, and it even references that the ID comes from list_affiliate_campaigns. This provides clear context for when to use this tool, though it does not explicitly list exclusions or alternatives.

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

get_affiliate_campaign_usageA

取得聯盟行銷活動的訂單使用統計。

【用途】 分析特定聯盟行銷活動帶來的訂單數與銷售額,評估推廣效果。 回傳訂單使用紀錄,可計算總訂單數、總銷售額、佣金金額等。

【呼叫的 Shopline API】

  • GET /v1/affiliate_campaigns/{campaign_id}/order_usage

【回傳結構】 dict 含 campaign_id, total_orders, total_revenue (TWD), items[]。 每筆訂單包含 order_id, order_number, revenue, commission, created_at。

ParametersJSON Schema
NameRequiredDescriptionDefault
campaign_idYes聯盟行銷活動 ID(由 list_affiliate_campaigns 回傳的 id 欄位)

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses the API endpoint (GET /v1/affiliate_campaigns/{campaign_id}/order_usage), indicates read-only behavior via 'GET' and '回傳' (returns), and details the return structure including total_orders, total_revenue, and order-level fields. This gives the agent a clear picture of what to expect without hiding side effects.

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

Conciseness5/5

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

The description is well-organized into labeled sections (用途, API, 回傳結構), each with concise, purposeful content. It avoids redundancy and provides all necessary information in a compact form.

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

Completeness5/5

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

For a simple one-parameter read-only tool with no output schema, the description provides comprehensive context: purpose, API endpoint, and detailed return structure. It covers what the agent needs to know to invoke the tool correctly and interpret the result, with no major gaps.

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

Parameters4/5

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

Schema coverage is 100% and the schema description already explains campaign_id. The tool description adds value by specifying the source of the ID (from list_affiliate_campaigns) and by referencing campaign_id in the return structure, reinforcing how it is used. This goes beyond the schema's descriptive text.

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

Purpose5/5

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

The description opens with a specific verb and resource: '取得聯盟行銷活動的訂單使用統計' (get campaign order usage stats), and explains the purpose: analyzing order count and revenue to evaluate promotion effectiveness. This clearly distinguishes it from sibling tools like get_affiliate_campaign_detail (campaign settings) and list_affiliate_campaigns (listing campaigns).

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

Usage Guidelines4/5

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

The description provides clear context: use this tool when you need to analyze a specific affiliate campaign's order usage, count orders, revenue, and commissions, to assess promotional performance. It does not explicitly mention when not to use it or name alternatives, but the use case is well-defined.

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

get_app_settingsA

取得商店應用程式設定。

【用途】 查詢商店層級的應用程式設定,包含功能開關、主題設定等。 適合確認商店目前的功能啟用狀態。

注意:此端點已被 Shopline 標記為 deprecated(已棄用), 但仍可使用,涵蓋以求完整性。建議優先使用其他設定端點 取得最新商店資訊。

【呼叫的 Shopline API】

  • GET /v1/settings/app

【回傳結構】 dict 含 settings,包含各應用程式層級設定欄位。 實際欄位依商店設定而定。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses the endpoint is deprecated but still functional, and describes the return structure as a dict containing settings. However, it doesn't mention auth requirements, error behavior, or rate limits, and only indirectly implies read-only via '查詢'.

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

Conciseness4/5

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

The description is well-structured with sections for purpose, deprecation note, API endpoint, and return structure. It's slightly verbose but each section adds value and the main purpose is front-loaded.

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

Completeness5/5

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

For a zero-parameter, read-only settings tool with no output schema, the description adequately covers purpose, usage context, deprecation status, API endpoint, and return structure. It's complete enough for an agent to invoke correctly.

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

Parameters4/5

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

The input schema has zero parameters, so baseline is 4. The description adds context about the return structure but doesn't discuss parameters, which is fine since there are none. No additional parameter semantics needed.

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

Purpose5/5

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

The description clearly states the tool retrieves store-level application settings (取得商店應用程式設定), specifying it queries feature switches and theme settings. The verb '查詢' and resource 'app settings' are unambiguous, and it stands apart from sibling analytics/order tools.

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

Usage Guidelines4/5

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

It states the tool is suitable for confirming current feature enablement status and includes a deprecation warning recommending other settings endpoints for latest info. However, it doesn't name specific alternative endpoints, only generically referencing other settings endpoints.

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

get_archived_ordersA

【用途】查詢已封存(archived)的歷史訂單列表,適合調閱長期歸檔的舊訂單資料。

【呼叫的 Shopline API】

  • GET /v1/orders/archived

【回傳結構】 { "total_found": int, # 符合條件的總筆數 "returned": int, # 實際回傳筆數 "orders": [ # 精簡訂單列表 { "id": str, "order_number": str, "status": str, "channel": str, # "POS" 或 "線上" "store_name": str, "total": float, "subtotal": float, "discount": float, "payment_type": str, "payment_status": str, "delivery_type": str, "delivery_status": str, "customer_name": str, "items_count": int, "created_at": str, } ] }

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYes起始日期 YYYY-MM-DD
end_dateYes結束日期 YYYY-MM-DD
max_resultsNo最多回傳筆數

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden. It discloses the API endpoint, return structure, and fields, indicating a read-only query operation. It does not mention rate limits or permissions, but the return structure and purpose are well-covered.

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

Conciseness4/5

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

The description is well-structured with sections for purpose, API call, and return structure. It is somewhat long due to the included output schema, but that adds value. Every part is useful, though it could be slightly more concise without losing clarity.

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

Completeness5/5

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

Given the complexity (3 parameters, no output schema), the description fully compensates by detailing the return structure, fields, and types. It also includes the API endpoint, making it complete for agent understanding.

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

Parameters3/5

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

Schema coverage is 100%, with descriptions already provided for start_date, end_date, and max_results. The description adds no additional meaning beyond what the schema offers, so it meets the baseline.

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

Purpose5/5

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

The description explicitly states it queries archived/historical order lists, distinguishing it from siblings like 'query_orders' which likely handles active orders. The verb '查詢' and resource '已封存(archived)的歷史訂單列表' are specific and clear.

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

Usage Guidelines4/5

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

The description clearly indicates the tool is for accessing long-term archived orders, implying it is not for current orders. It does not explicitly state when not to use or name alternatives, but the context of siblings and the term 'archived' provide clear guidance.

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

get_category_detailA

取得單一商品分類的完整詳情。

【用途】 查詢特定分類的名稱、描述、父分類等完整資訊。 適合在已知分類 ID 的情況下取得詳細欄位。

【呼叫的 Shopline API】

  • GET /v1/categories/{category_id}

【回傳結構】 dict 包含 id, name, parent_id, description, position, created_at, updated_at。

ParametersJSON Schema
NameRequiredDescriptionDefault
category_idYes分類 ID(由 get_category_tree 回傳的 id 欄位)

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It mentions the GET API endpoint, implying it's a read-only operation with no side effects. However, it does not explicitly state idempotency or permissions, which would enhance transparency.

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

Conciseness5/5

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

The description is well-structured with clear sections (用途, API, 回傳結構). It is concise with no unnecessary information, every sentence adds value.

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

Completeness4/5

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

The description provides the return structure (dict with fields), which is helpful since there is no output schema. It covers the essential information for using the tool. Could mention error scenarios or required permissions, but overall complete.

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

Parameters3/5

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

The single parameter 'category_id' has a description in the input schema that already explains it comes from get_category_tree. The tool description does not add further semantic value beyond what is already in the schema. With 100% schema coverage, baseline is 3.

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

Purpose5/5

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

The description clearly states it retrieves full details of a single product category, specifying fields like name, description, parent category. It distinguishes itself from sibling tools like get_category_tree (which lists categories) and update_category.

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

Usage Guidelines4/5

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

The '用途' section explains when to use: when needing detailed info for a known category ID. It implies that if the ID is unknown, one should first use get_category_tree. It doesn't explicitly state alternatives or when not to use, but the guidance is clear.

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

get_category_salesA

依商品分類(Category)彙總銷售數據:各分類的營業額、銷量、商品數。需交叉 Categories API + Products + Orders。

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYes起始日期 YYYY-MM-DD
end_dateYes結束日期 YYYY-MM-DD
channelNo通路篩選all

TDQS

A3.6/5.0
Behavior3/5

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

No annotations exist, so the description must carry the burden. It reveals that the tool requires multiple API calls (cross-referencing), hinting at potential latency, but lacks details on authentication, rate limits, or handling of missing data.

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

Conciseness4/5

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

The description is a single sentence that efficiently conveys the purpose and a key constraint (cross-referencing). It is not verbose, but could be slightly more structured.

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

Completeness3/5

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

No output schema exists. The description mentions the returned fields (revenue, sales volume, item count) but lacks details on formatting, pagination, or error handling. Adequate but not comprehensive for a tool with medium complexity.

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

Parameters3/5

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

Schema coverage is 100% with clear parameter descriptions. The tool description adds no additional meaning beyond what the schema provides, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool summarizes sales data by product category, specifying revenue, sales volume, and item count. It also notes the need to cross-reference multiple APIs, distinguishing it from sibling tools that handle individual aspects like orders or categories.

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

Usage Guidelines3/5

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

The description implies the tool is for category-level sales aggregation and mentions cross-referencing overhead, but does not explicitly state when to use it over alternatives like get_sales_summary or get_top_products, nor does it provide exclusion criteria.

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

get_category_treeA

取得所有商品分類並組成樹狀結構。

【用途】 瀏覽商店的完整分類層級,了解分類架構與父子關係。 可用於確認分類 ID、名稱,再搭配 get_category_detail 取得個別分類詳情, 或搭配商品工具按分類篩選商品。

【呼叫的 Shopline API】

  • GET /v1/categories

【回傳結構】 dict 含 total, tree[](樹狀), flat[](扁平列表)。 每個節點包含 id, name, parent_id, children[](僅在 tree 中)。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations provided, the description carries the transparency burden and compensates well by disclosing the return structure (dict with total, tree[], flat[] and node fields) and the underlying API endpoint (GET /v1/categories). It does not mention edge cases like inactive categories, but for a read-only list tool this is sufficient.

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

Conciseness5/5

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

The description uses clear section headers (用途, API, 回傳結構) and stays concise. Each sentence contributes meaningful information without redundancy, making it easy for an agent to parse.

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

Completeness5/5

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

For a parameterless read-only tool, the description provides complete context: purpose, usage scenarios, related tools, the REST API call, and the full response structure. No output schema exists, so the description appropriately covers return values.

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

Parameters4/5

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

The input schema has zero parameters, so there are no parameter semantics to explain. A baseline score of 4 is appropriate since the description needs no parameter documentation.

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

Purpose5/5

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

The description opens with a specific verb phrase '取得所有商品分類並組成樹狀結構' (get all product categories and build a tree), clearly distinguishing it from sibling get_category_detail. It also states the resource (categories) and the result format, making the tool's purpose unambiguous.

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

Usage Guidelines5/5

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

The 【用途】 section explicitly states when to use the tool (browsing the full category hierarchy) and names companion tools: get_category_detail for individual details and product tools for filtering by category. This provides clear contextual guidance and alternatives.

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

get_channel_comparisonB

比較各門市/通路的同期業績:營業額、訂單數、客單價等。支援線上 vs 門市,或門市之間的比較。

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYes起始日期 YYYY-MM-DD
end_dateYes結束日期 YYYY-MM-DD

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description bears full responsibility for behavioral disclosure. It only states that the tool compares performance but gives no insight into whether it is read-only, destructive, or has limits. The agent cannot infer safety or side effects from this description.

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

Conciseness5/5

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

The description is extremely concise with two sentences. The first sentence captures the core action and metrics; the second adds supported comparison types. No extraneous words. Information is front-loaded and efficiently presented.

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?

While the description lists example metrics, it does not explain the output structure (e.g., whether it returns a table, percentages, or raw numbers). Given the lack of an output schema and annotations, the description should provide more context on the expected results to ensure correct tool invocation.

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

Parameters3/5

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

Schema description coverage is 100% for both parameters (start_date and end_date). The description adds no additional meaning beyond what the schema already provides; it merely re-emphasizes the date range concept. Baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's purpose: comparing performance metrics (revenue, orders, average order value) across channels/stores over the same period. It also specifies supported comparisons (online vs. store, between stores), which distinguishes it from siblings like get_channel_detail or get_sales_summary.

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

Usage Guidelines3/5

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

The description implies usage for comparative analysis but does not explicitly state when to use this tool over alternatives, nor does it provide exclusions or prerequisites. The context of sibling tools offers some guidance, but the description itself lacks explicit usage directives.

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

get_channel_detailA

取得指定銷售渠道的詳細資訊。

【用途】 查詢單一銷售渠道的完整設定,包含渠道類型、狀態、 連結設定等。適合確認特定渠道的詳細配置。

注意:此端點在部分 token 權限下可能回傳 403 或 422。

【呼叫的 Shopline API】

  • GET /v1/channels/{channel_id}

【回傳結構】 dict 含渠道詳細欄位:id, name, channel_type, enabled, created_at, updated_at 等。

ParametersJSON Schema
NameRequiredDescriptionDefault
channel_idYes

TDQS

A3.7/5.0
Behavior4/5

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

Discloses potential error responses (403/422) and implies read-only via API endpoint method (GET). With no annotations, additional details like rate limits or data limits would improve completeness.

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?

Structured with clear sections (intro, usage, note, API, return). Concise without unnecessary repetition, though some sections could be slightly tighter.

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?

Provides return structure with example fields and API endpoint. For a simple single-parameter get tool with no output schema, it covers essential context. Missing details like whether the channel ID is required (already in schema) and potential error handling beyond 403/422.

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

Parameters3/5

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

With 0% schema coverage, description implicitly defines channel_id through context (path and mention of 'specified sales channel'), but does not explicitly state its type, format, or required status beyond schema.

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

Purpose4/5

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

The description clearly states it retrieves detailed information of a specific sales channel, listing included fields like type, status, and link settings. However, it does not explicitly differentiate from sibling tools like list_channels or get_channel_comparison.

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

Usage Guidelines3/5

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

Provides usage context ('suitable for confirming configuration') and a note about potential 403/422 errors under certain token permissions. Lacks explicit guidance on when not to use or alternatives.

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

get_conversation_messagesA

取得指定對話的完整訊息記錄。

【用途】 查閱特定客服對話的所有聊天訊息,適用於了解客戶問題脈絡、審核客服回應品質, 或追蹤訂單相關諮詢的處理進度。對話 ID 從 list_conversations 取得。

【呼叫的 Shopline API】

  • GET /v1/conversations/{conversation_id}/messages

【回傳結構】 dict 含 conversation_id, total_found, returned, messages[]。 每個 message 包含 id, sender_type(發送者類型:customer/staff), content(訊息內容), message_type, created_at。

ParametersJSON Schema
NameRequiredDescriptionDefault
conversation_idYes對話 ID(由 list_conversations 回傳的 id 欄位)
max_resultsNo最多回傳訊息筆數

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the full burden. It discloses the underlying API endpoint and return structure, which is helpful. However, it does not mention authentication requirements, rate limits, pagination behavior, or how max_results interacts with the response. For a read operation, destructive aspects are not relevant, but missing operational details prevent a higher score.

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

Conciseness5/5

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

The description is well-structured with clear sections (purpose, API call, return structure) and front-loads the main function in the opening sentence. It is concise without superfluous content; each section provides essential information for using the tool effectively.

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

Completeness4/5

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

Given the tool's simplicity (2 parameters, no output schema) and lack of annotations, the description does a good job by providing the return structure in detail, including message fields. However, it omits details on pagination and how max_results works, which is a notable gap for a tool that returns message lists. Overall, it is fairly complete but not exhaustive.

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

Parameters3/5

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

Schema description coverage is 100% for both parameters, with conversation_id and max_results already well-described in the schema. The description adds little beyond reiterating that conversation_id comes from list_conversations, and it does not elaborate on max_results behavior such as pagination or limits. Per the baseline for high schema coverage, a score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's function: '取得指定對話的完整訊息記錄' (get complete message records for a specified conversation). It is explicitly distinguished from sibling list_conversations, which lists conversations rather than messages, and the purpose section provides concrete use cases.

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

Usage Guidelines4/5

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

The description includes a dedicated purpose section with specific use cases (understanding customer context, reviewing response quality, tracking order progress) and explicitly states that conversation_id is obtained from list_conversations. However, it does not mention when NOT to use this tool or provide alternative tools for the same task, so it lacks explicit exclusions.

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

get_customer_geo_analysisA

根據訂單的收件地址分析客戶地區分佈(縣市層級)。

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYes分析區間起始 YYYY-MM-DD
end_dateYes分析區間結束 YYYY-MM-DD
channelNo通路篩選all

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It adds useful context that the analysis is based on order shipping addresses at the city/county level, but it does not disclose output format, aggregation method, or read-only nature. This is minimal but adequate for a simple analytics tool.

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

Conciseness5/5

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

The description is a single concise sentence that immediately states the tool's purpose and key scope. There is no redundancy or irrelevant detail.

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

Completeness4/5

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

Given the simple structure (3 parameters, no nested objects) and clear purpose, the description is mostly complete. However, without an output schema, it could more explicitly state what the returned distribution contains (e.g., order counts, customer counts, percentages). The term 'distribution' implies a breakdown, which is sufficient for this minimal 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?

The schema fully describes all three parameters (start_date, end_date, channel) with descriptions and enum values, so the description doesn't need to add parameter-specific detail. It still sets context by explaining the analysis is based on shipping addresses, but adds no syntax or format information beyond the schema.

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

Purpose5/5

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

The description clearly specifies the action ('analyze'), the subject ('customer regional distribution'), the data source ('order shipping address'), and the granularity ('city/county level'). This distinguishes it from sibling tools like get_rfm_analysis, making the tool's purpose immediately clear.

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

Usage Guidelines3/5

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

The description implies when to use the tool (when geographic customer distribution by shipping address is needed) but provides no explicit guidance on alternatives or exclusions. It doesn't mention, for example, that it only covers orders with valid shipping addresses.

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

get_customer_group_membersA

取得指定客戶群組中的所有客戶 ID 列表。

【用途】 查詢特定群組包含哪些客戶。回傳客戶 ID 列表,可搭配 get_customer_profile 取得個別客戶詳情。

【呼叫的 Shopline API】

  • GET /v1/customer-groups/{group_id}/customers

【回傳結構】 dict 含 group_id, total_members, customer_ids[]。

ParametersJSON Schema
NameRequiredDescriptionDefault
group_idYes客戶群組 ID(由 list_customer_groups 回傳)

TDQS

A4/5.0
Behavior3/5

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

No annotations exist, so the description carries the burden. It describes the HTTP GET call and return structure, implying a read-only operation. However, it does not explicitly state side effects, permissions, or rate limits, which are common for such calls.

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

Conciseness5/5

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

The description is concise and well-structured with clear sections for purpose, API endpoint, and return format. No unnecessary words; every sentence adds value.

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

Completeness4/5

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

For a simple list tool with one parameter and no output schema, the description provides sufficient information: API path, return structure, and a usage hint. It could mention pagination if the list may be large, but it is not a critical gap.

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

Parameters3/5

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

Schema coverage is 100% (only one parameter with a clear description). The tool description adds no new parameter details beyond what the schema already provides, so it meets the baseline but does not exceed it.

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

Purpose5/5

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

The description clearly states the tool retrieves a list of customer IDs in a given group (verb 'get', resource 'customer group members'), and it explicitly differentiates from sibling tools like list_customer_groups and get_customer_profile by suggesting chaining.

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

Usage Guidelines4/5

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

The '用途' section explains the use case: querying which customers belong to a specific group. It also recommends combining with get_customer_profile. However, it does not provide explicit when-not-to-use scenarios or compare with other customer-listing tools.

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

get_customer_lifecycleA

比較兩個時間區間的 RFM 分群遷移,分析客戶生命週期變化。

【用途】分別計算兩個時段的客戶 RFM 分群,然後比較客戶在兩期之間的分群遷移, 找出升級(segment 改善)、流失(segment 退步)、新增、消失的客戶, 產出分群遷移矩陣,協助制定客戶經營策略。 【呼叫的 Shopline API】

  • GET /v1/orders/search(兩個時段各查詢一次) 【回傳結構】dict 含 period1、period2、segment_migration、upgrade_count、churn_count、new_count、lost_count。

ParametersJSON Schema
NameRequiredDescriptionDefault
period1_startYes第一期起始日期 YYYY-MM-DD
period1_endYes第一期結束日期 YYYY-MM-DD
period2_startYes第二期起始日期 YYYY-MM-DD
period2_endYes第二期結束日期 YYYY-MM-DD
r_daysNoRecency 門檻天數(最近消費 ≤ 此值為高 R)
f_thresholdNoFrequency 門檻(消費 ≥ 此值為高 F)
m_thresholdNoMonetary 門檻金額(累計 ≥ 此值為高 M)

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It transparently states that it calls GET /v1/orders/search twice (once per period) and describes the return structure (period1, period2, segment_migration, etc.). This provides useful behavioral context, though it does not mention potential performance or rate-limit implications.

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

Conciseness5/5

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

The description is compact and well-structured with clear sections (用途, API call, return structure). Each sentence contributes meaningful information without redundancy, and the core purpose is front-loaded.

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

Completeness4/5

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

For a moderately complex analysis tool with no output schema, the description supplies essential context: purpose, API invoked, and return structure. It covers the key aspects an agent would need to invoke it correctly, though it leaves out details about the migration matrix format. Overall, it is sufficiently complete.

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

Parameters3/5

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

The input schema already provides descriptions for all seven parameters (e.g., r_days, f_threshold, m_threshold, and date ranges), so the schema description coverage is 100%. The tool description adds no additional parameter-specific meaning, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's purpose: '比較兩個時間區間的 RFM 分群遷移' (compare RFM segment migration between two time periods). It specifies the exact actions (calculate segments, compare migration, identify upgrades/churn/new/lost customers) and outputs a migration matrix, distinguishing it from sibling tools like get_rfm_analysis.

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

Usage Guidelines4/5

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

The description provides clear context via the 用途 section, explaining that it supports customer lifecycle analysis and strategy formulation. However, it does not explicitly name alternative tools or state when not to use it, so it lacks the highest-level guidance.

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

get_customer_profileA

取得單一客戶的完整輪廓(基本資料 + 儲值金紀錄 + 會員點數 + 會員等級變動 + 優惠券)。

【用途】 回答「這位客戶是誰、消費狀況、會員狀態」等完整客戶概況問題。適合客服 場景或個別會員分析。若要批次分析客戶行為請改用 get_rfm_analysis。

【呼叫的 Shopline API】

  • GET /v1/customers/{customer_id}

  • GET /v1/customers/{customer_id}/store-credit-history

  • GET /v1/customers/{customer_id}/member-points

  • GET /v1/customers/{customer_id}/membership-tier-history

  • GET /v1/customers/{customer_id}/promotions

【回傳結構】 dict 包含 profile / store_credits / member_points / tier_history / promotions 五大區塊。 金額皆為 float (TWD)。

ParametersJSON Schema
NameRequiredDescriptionDefault
customer_idYes客戶內部 ID(由 list_customers 回傳的 id 欄位)

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, but the description discloses that the tool calls five Shopline APIs internally and returns a dict with specific data sections. It mentions amounts are floats in TWD. While it doesn't discuss rate limits or performance, the behavior is well-described for a read-only operation.

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

Conciseness5/5

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

The description is concise and well-structured with sections for purpose, usage, API calls, and return structure. It front-loads the key information and every sentence adds value.

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

Completeness5/5

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

Given there is no output schema, the description adequately explains the return structure (dict with five sections). It also lists the internal APIs called. The tool is read-only, and the description provides complete context for an AI agent to use it correctly.

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

Parameters3/5

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

There is only one parameter (customer_id) with a description in the schema that explains it's the internal ID from list_customers. The tool description does not add additional semantics beyond the schema. With 100% schema coverage, baseline is 3.

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

Purpose5/5

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

The description clearly states the tool retrieves a single customer's complete profile including basic info and multiple data sections. It uses specific verbs ('取得') and lists the five sections. It distinguishes from the sibling get_rfm_analysis for batch analysis.

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

Usage Guidelines5/5

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

The description explicitly provides usage context: answering questions about a customer's profile for customer service or individual analysis. It also directs to get_rfm_analysis for batch analysis, giving a clear when-to-use and when-not-to.

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

get_customer_tier_historyA

取得指定客戶的會員等級變動歷程。

【用途】 追蹤客戶會員等級升降紀錄,了解是升等還是降級、原因為何。 搭配 list_membership_tiers 對照等級名稱。

【呼叫的 Shopline API】

  • GET /v1/customers/{customer_id}/membership-tier-history

【回傳結構】 dict 含 customer_id, total_changes, history[]。 每筆含 from_tier, to_tier, reason, created_at。

ParametersJSON Schema
NameRequiredDescriptionDefault
customer_idYes客戶內部 ID

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses the API endpoint (GET) and the return structure (dict with customer_id, total_changes, history[]), which is meaningful behavioral context. It could mention error handling or permissions, but for a simple read operation it is adequate.

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

Conciseness5/5

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

The description is well-organized into a one-line summary, purpose, API call, and return structure. Each section is brief and informative with no redundancy, making it easy to parse.

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

Completeness5/5

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

With only one parameter and no output schema, the description compensates by clearly documenting the return structure and referencing a companion tool (list_membership_tiers) for tier name mapping. This makes it practically complete for an agent to invoke correctly.

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

Parameters3/5

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

The schema already provides 100% coverage for customer_id ('客戶內部 ID'). The description adds no additional constraints or format details beyond the schema, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool retrieves a customer's membership tier change history, with the purpose of tracking upgrades/downgrades and reasons. This distinguishes it from sibling tools like list_membership_tiers, which lists tiers rather than history.

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

Usage Guidelines4/5

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

The description explicitly advises using list_membership_tiers to map tier names, providing practical usage context. It does not mention when not to use the tool, but the purpose is clear enough for a simple read-only lookup.

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

get_delivery_option_detailA

取得指定配送方式的詳細資訊。

【用途】 查詢單一配送方式的完整設定,包含費率規則、地區限制、 重量限制等。適合確認特定配送方式的詳細條件。

【呼叫的 Shopline API】

  • GET /v1/delivery_options/{delivery_option_id}

【回傳結構】 dict 含配送方式詳細欄位:id, name, delivery_type, enabled, price, weight_limit, regions, created_at 等。

ParametersJSON Schema
NameRequiredDescriptionDefault
delivery_option_idYes

TDQS

A4/5.0
Behavior4/5

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

No annotations are provided, so the description must disclose behavioral traits. It indicates a read operation via the API method (GET) and describes the return structure (a dict with fields like id, name, etc.). It does not mention side effects or contradictions.

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

Conciseness5/5

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

The description is well-structured with clear sections (用途, API, 回傳結構) and provides all necessary information in a concise, front-loaded manner without superfluous content.

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

Completeness3/5

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

While the description includes the API endpoint and return fields, it lacks parameter details and does not fully compensate for the missing output schema. Given the tool's simplicity, it is marginally adequate but has gaps.

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

Parameters2/5

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

The single parameter delivery_option_id has no description in the input schema (schema_description_coverage = 0%). The tool description does not explain its purpose, format, or how to obtain it, leaving the agent without guidance beyond the name.

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

Purpose5/5

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

The description clearly states the verb (取得) and resource (指定配送方式的詳細資訊), distinguishing it from sibling list_delivery_options. It specifies that it retrieves detailed settings for a single delivery method.

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

Usage Guidelines4/5

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

The '用途' section explains when to use this tool: to query a single delivery method's complete settings and confirm specific conditions. It mentions the API endpoint but does not explicitly state when not to use it or list alternative tools.

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

get_delivery_time_slotsA

取得指定配送方式的可用時段清單。

【用途】 查詢特定配送方式的預約時段設定,例如到府配送的時間選項。 適合確認預約配送時段或分析客戶配送時段偏好。

【呼叫的 Shopline API】

  • GET /v1/delivery_options/{delivery_option_id}/time_slots

【回傳結構】 dict 含 delivery_option_id, total, time_slots[]。 每個 time_slot 包含 id, day, start_time, end_time, enabled 等。

ParametersJSON Schema
NameRequiredDescriptionDefault
delivery_option_idYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations provided, so the description should disclose side effects. It describes the API call and return structure, implying a read operation, but does not explicitly state read-only or mention auth requirements. Adds value with endpoint and return format.

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

Conciseness4/5

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

The description is structured with sections and is concise. It front-loads the main purpose. However, the parameter section is missing, slightly reducing efficiency.

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

Completeness4/5

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

For a simple 1-parameter tool with no output schema, the description provides the API endpoint, return structure, and usage examples. It covers the essential aspects, though it lacks error handling or pagination details.

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

Parameters2/5

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

Schema coverage is 0%, and the description only indirectly refers to the parameter as '指定配送方式' (specified delivery method). It does not explain how to obtain the delivery_option_id or any constraints, offering minimal additional meaning.

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

Purpose5/5

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

The description clearly states the tool retrieves available time slots for a specified delivery method. It provides usage examples and differentiates from siblings like get_delivery_option_detail by focusing on time slots.

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 context for using the tool (confirming slots, analyzing preferences) but does not explicitly mention when not to use it or suggest alternative tools. It lacks exclusion criteria.

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

get_flash_price_campaign_detailA

取得單一快閃價格活動的完整詳情。

【用途】 查詢特定快閃特賣活動的折扣規則、適用商品與時間設定等完整資訊。 適合在已知 campaign_id 的情況下取得所有欄位。

【呼叫的 Shopline API】

  • GET /v1/flash_price_campaigns/{campaign_id}

【回傳結構】 dict 包含 id, title, status, discount_type, discount_value, products, start_at, end_at, created_at, updated_at 等完整欄位。

ParametersJSON Schema
NameRequiredDescriptionDefault
campaign_idYes快閃價格活動 ID(由 list_flash_price_campaigns 回傳的 id 欄位)

TDQS

A4.2/5.0
Behavior4/5

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

Since no annotations are provided, the description carries the full burden. It discloses the underlying API call GET /v1/flash_price_campaigns/{campaign_id}, which implies a read-only operation, and outlines the return structure with specific fields. It does not detail auth requirements or error behavior, but for a simple detail getter, the description adequately communicates its 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?

The description is concise and well-structured, with a one-line summary followed by focused sections for purpose, API endpoint, and return structure. Every section adds value, and the text is front-loaded with the core purpose, making it easy to scan.

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 tool with one parameter and no output schema, the description covers the essential aspects: what it does, the exact API call, and the return fields list. It does not discuss possible errors or authentication, but these are less critical for a straightforward read operation. The description is adequately complete for an agent to select and invoke the tool correctly.

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

Parameters3/5

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

Schema description coverage is 100% for the single parameter campaign_id, which already explains that it is the ID returned by list_flash_price_campaigns. The description only references 'known campaign_id' without adding further semantic detail beyond what the schema provides, so it meets the baseline of 3.

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

Purpose5/5

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

The description immediately states '取得單一快閃價格活動的完整詳情' (get complete details of a single flash price campaign), with a clear verb (get), resource (flash price campaign), and scope (single, full details). It further elaborates on querying discount rules, products, and time settings, and its distinction from the sibling list_flash_price_campaigns is evident through '單一' and '已知 campaign_id'.

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

Usage Guidelines4/5

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

The description provides clear usage context: '適合在已知 campaign_id 的情況下取得所有欄位' (suitable when campaign_id is known to get all fields). This tells the agent when to use the tool. However, it does not explicitly mention alternatives or exclusions (e.g., 'use list_flash_price_campaigns first'), though this is implied by the parameter description in the schema.

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

get_inventory_overviewA

取得全商品庫存總覽:總庫存數量、庫存品項數、缺貨品項數等。從商品 variations 的 quantity 欄位計算。

ParametersJSON Schema
NameRequiredDescriptionDefault
brandNo品牌篩選

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description partly carries the transparency burden. It discloses that the metrics are calculated from the 'quantity' field of product variations, which adds behavioral context. However, it does not mention whether the operation is read-only, how missing/invalid variation data is handled, or any performance implications. The description is not misleading but could be more transparent.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the main purpose, and directly states the key metrics and calculation source. Every sentence earns its place, with no redundant filler. This is highly concise and well-structured.

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

Completeness4/5

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

The tool is simple (one optional parameter, no output schema), and the description lists the expected output metrics. It does not describe the exact response structure or field types, but for an overview tool with minimal inputs, this is acceptable. The brand filter is documented in the schema, so the description remains reasonably complete.

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

Parameters3/5

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

Schema coverage is 100% for the single parameter 'brand', which has a description '品牌篩選' (brand filter). The tool description does not elaborate on this parameter, but the schema already provides basic meaning. Since the schema carries the parameter documentation burden, a baseline score of 3 is appropriate; the description adds no extra value beyond the schema.

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

Purpose5/5

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

The description clearly states the tool's function: getting an inventory overview with specific metrics (total quantity, item count, out-of-stock count). It uses a specific verb ('取得') and resource ('全商品庫存總覽'), and the calculation source is identified. This distinguishes it from sibling inventory tools like get_stock_by_warehouse and get_low_stock_alerts.

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

Usage Guidelines3/5

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

The description implies use for a high-level inventory summary but does not explicitly state when to use this tool versus alternatives. No when-not-to-use conditions or alternative tool names are provided. The overall purpose is clear, so usage is somewhat inferred, but explicit guidance is lacking.

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

get_inventory_turnoverA

計算庫存周轉指標:周轉天數、周轉率。需要商品庫存 + 銷售數據。

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYes分析區間起始 YYYY-MM-DD
end_dateYes分析區間結束 YYYY-MM-DD

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral transparency burden. It discloses the data requirements and the calculated metrics, but does not explicitly state read-only behavior, potential errors, or return format. Since it is a calculation tool, the read-only nature is implied.

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

Conciseness5/5

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

The description is a single sentence that conveys purpose, outputs, and prerequisites without any filler. It is front-loaded with the key action and every clause earns its place.

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

Completeness4/5

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

Given no output schema, the description does mention the return metrics (turnover days and rate) and prerequisites, which is adequate for a simple calculation tool. It lacks explicit details on response structure but is sufficient given the tool's low complexity.

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

Parameters3/5

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

Both parameters have complete descriptions in the schema (100% coverage), so the description adds no additional parameter-level information. The baseline of 3 applies because the schema already documents the parameters.

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

Purpose5/5

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

The description clearly states a specific verb ('calculate') and resource ('inventory turnover metrics'), and specifies the exact outputs (turnover days, turnover rate). This distinguishes it from sibling inventory tools like get_inventory_overview or get_slow_movers.

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 notes the data prerequisite (product inventory + sales data), implying when it is appropriate to use, but it does not explicitly contrast with alternatives or state when not to use it. Sibling tools like get_sales_summary or get_inventory_overview exist but are not mentioned.

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

get_locked_inventoryA

【用途】 取得目前被鎖定(預留)的庫存商品清單,協助分析哪些 SKU 有待出貨的預留數量。

【呼叫的 Shopline API】

  • GET /v1/products/locked-inventory

【回傳結構】

  • total: 鎖定庫存的 SKU 總筆數

  • items: 每筆含 product_title、sku、locked_quantity

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description provides basic behavioral context by specifying the API endpoint and return structure. However, it does not explicitly confirm that the operation is read-only, mention authentication needs, or describe any side effects. It covers the essential but not comprehensive behavioral details.

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

Conciseness5/5

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

The description uses clear sections (【用途】, 【呼叫的 Shopline API】, 【回傳結構】) that front-load the purpose and structure. Every sentence is informative and necessary, with no wasted words.

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

Completeness4/5

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

Given no output schema, the description adequately describes the return structure (total and items with fields). It covers the API endpoint and purpose. However, it omits potential details like pagination or limits, but given the tool's simplicity (zero parameters), it is largely complete.

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

Parameters4/5

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

The input schema has no parameters (100% coverage), and the description adds no parameter information because there is none to add. According to guidelines, zero parameters baseline is 4. The description compensates by clarifying what the tool returns, adding value beyond the schema.

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

Purpose5/5

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

The description explicitly states the tool retrieves a list of locked/reserved inventory items, using specific verbs and resource ('取得...庫存商品清單'). It clearly distinguishes from sibling inventory tools like get_inventory_overview or get_low_stock_alerts.

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

Usage Guidelines3/5

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

The description implies usage for analyzing SKUs with reserved quantities but does not explicitly state when to use or not use this tool versus alternatives like get_stock_by_warehouse or get_inventory_overview. No exclusions or comparisons are provided.

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

get_low_stock_alertsA

取得低庫存或缺貨的 SKU 清單,可自訂庫存門檻值。

ParametersJSON Schema
NameRequiredDescriptionDefault
thresholdNo庫存低於此值即警示

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only states the function without disclosing behaviors such as read-only nature, auth requirements, rate limits, or potential side effects. This minimal disclosure is insufficient.

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, clear sentence with no superfluous words or structure.

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

Completeness4/5

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

For a simple list-retrieval tool with one optional parameter and no output schema, the description is largely sufficient. However, it could briefly mention return type or pagination for completeness.

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?

The schema coverage is 100% with a description for the threshold parameter. The description adds the same meaning (customizable threshold) without exceeding the schema. Thus baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool retrieves a list of SKUs with low or out-of-stock status and allows a customizable inventory threshold. The verb 'get' and resource 'low stock SKUs' are specific, and it differentiates from siblings like get_stock_by_warehouse or get_inventory_overview.

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

Usage Guidelines3/5

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

The description implies usage for low stock alerts with a custom threshold, but does not explicitly state when to use this tool versus alternatives or provide when-not-to-use guidance.

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

get_merchant_detailA

取得指定商家的詳細資訊。

【用途】 查詢單一商家的完整設定資訊,包含聯絡資訊、幣別、語系等。 適合確認特定商家設定或做資料核對。

【呼叫的 Shopline API】

  • GET /v1/merchants/{merchant_id}

【回傳結構】 dict 含商家詳細欄位:id, name, handle, currency, locale, country, email, phone, address, created_at 等。

ParametersJSON Schema
NameRequiredDescriptionDefault
merchant_idYes

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool uses a GET endpoint and returns a dictionary with specific fields, but does not mention auth requirements, rate limits, or idempotency. It provides basic behavioral traits but lacks completeness.

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

Conciseness5/5

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

The description is well-structured with clear sections (用途, API, 回傳結構). It is concise, containing only necessary information without redundancy.

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

Completeness4/5

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

Given the tool's simplicity (1 parameter, no annotations, no output schema), the description covers purpose, API endpoint, and return fields. It could mention read-only semantics, but overall it is sufficiently complete for an agent to use correctly.

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

Parameters3/5

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

With 0% schema description coverage, the description adds minimal value for the parameter. It refers to 'specified merchant' but does not elaborate on the format, source, or constraints of merchant_id, relying on the parameter's obvious nature.

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

Purpose5/5

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

The description clearly states that the tool retrieves detailed information for a specified merchant, listing specific fields. It distinguishes itself from sibling tools like list_merchants by focusing on a single merchant's full settings.

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

Usage Guidelines4/5

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

The description explains when to use the tool: to query a single merchant's complete settings for confirmation or data verification. It implies the use case but does not explicitly state when not to use or provide alternative tool names.

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

get_order_action_logsA

【用途】取得指定訂單的所有操作歷程紀錄,包含狀態變更、人員操作、時間戳記等,適合稽核追蹤。

【呼叫的 Shopline API】

  • GET /v1/orders/{order_id}/action-logs

【回傳結構】 { "order_id": str, # 查詢的訂單 ID "total": int, # 歷程總筆數 "logs": [ # 操作歷程列表 { "action": str, # 操作類型(如 status_changed, payment_updated) "operator": str, # 操作人員 "created_at": str, # 操作時間 ... # 其他欄位依 API 回應而定 } ] }

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYes訂單內部 ID(由 query_orders 回傳的 id 欄位,非 order_number)

TDQS

A3.8/5.0
Behavior3/5

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

No annotations were provided, so the description carries the full burden. It implies a read operation (GET API, retrieving history) but does not explicitly state side effects, rate limits, pagination, or error conditions. The return structure is given, but behavioral guarantees are lacking.

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

Conciseness4/5

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

The description is well-structured with clear sections (purpose, API, return structure). It is front-loaded and efficient, though the inclusion of a full JSON example adds length but aids understanding. Every sentence contributes meaning.

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

Completeness4/5

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

For a simple read-only tool with one parameter and no output schema, the description covers purpose, parameter source, and return format adequately. It lacks error handling or edge cases, but these are acceptable for this complexity level.

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

Parameters5/5

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

The schema covers 100% of parameters, and the description adds crucial context: the order_id is the internal ID from query_orders, not the order_number. This prevents misuse and clarifies data source, adding significant value beyond the schema.

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

Purpose5/5

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

The description clearly states the tool retrieves all operation history for a specified order, including status changes, personnel, timestamps, and is suitable for audit trails. This specific verb-resource combination distinguishes it from siblings like get_order_detail or get_order_transactions.

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 explicit guidance on when to use this tool versus alternatives. While the description mentions suitability for audit trails, it does not exclude other uses or compare with other order-related tools. Missing context like prerequisites (e.g., order must exist) or when not to use.

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

get_order_deliveryA

取得單一配送單的完整資訊,包含物流狀態、追蹤編號及收件地址。

【用途】 查詢特定出貨單的配送狀態與物流詳情,適用於追蹤包裹、確認收件資料, 或協助客服處理配送相關問題。配送單 ID 通常來自 get_order_detail 回傳的 出貨資訊(shipments / deliveries 欄位)。

【呼叫的 Shopline API】

  • GET /v1/order_deliveries/{delivery_id}

【回傳結構】 dict 包含:

  • id:配送單 ID

  • status:配送狀態(如 pending, shipped, delivered)

  • tracking_number:物流追蹤編號

  • tracking_url:物流追蹤連結

  • carrier:物流商名稱

  • shipping_address:收件地址(含姓名、電話、地址欄位)

  • line_items[]:出貨品項(商品名稱、數量)

  • created_at, updated_at

ParametersJSON Schema
NameRequiredDescriptionDefault
delivery_idYes配送單 ID(通常由訂單明細中的 delivery_id 欄位取得)

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses the HTTP GET endpoint, the return structure in detail, and the key fields. It does not mention error handling, permissions, or rate limits, but for a read-only retrieval tool, the disclosed information is substantive and exceeds a minimal description.

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

Conciseness5/5

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

The description is well-structured and front-loaded, starting with the primary purpose before breaking into clearly labeled sections (用途, API, 回傳結構). Every sentence provides necessary information, and the formatting makes it easy to scan. No redundancy or fluff.

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

Completeness5/5

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

Given the tool's simplicity (one required parameter, no output schema), the description is comprehensive. It explains what the tool does, when to use it, how to get the required ID, the underlying API call, and the complete return structure. This covers all essential context an agent would need 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?

The schema already provides a description for delivery_id, but the tool description adds meaning by noting the ID comes from get_order_detail's shipments/deliveries fields, reinforcing the source and providing field-level context that is not explicitly in the schema. With high schema coverage, this additional context justifies a score above baseline.

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

Purpose5/5

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

The description clearly states the tool retrieves complete information for a single delivery order, including logistics status, tracking number, and recipient address. It distinguishes itself from siblings by referencing get_order_detail as the source of the delivery ID, making its specific resource and action clear.

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

Usage Guidelines4/5

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

The '用途' section explicitly states use cases (tracking packages, confirming recipient info, customer service) and explains that the delivery ID typically comes from get_order_detail's shipments/deliveries fields. However, it does not explicitly state when not to use it or name alternatives beyond the implied get_order_detail, so it falls short of a 5.

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

get_order_detailB

取得單筆訂單的完整資訊,包含商品明細、付款、物流、折扣等。

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYes訂單內部 ID(由 query_orders 回傳的 id 欄位,非 order_number)

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool is a read operation, but does not disclose any potential side effects, permission requirements, rate limits, or details about the response format beyond listing a few content categories.

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

Conciseness5/5

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

The description is a single, concise sentence that immediately conveys the tool's purpose and scope. It is front-loaded with the main action and resource, followed by specific content examples, with no unnecessary words.

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 tool has no output schema and no annotations, so the description must cover return expectations. It lists several content areas (product, payment, logistics, discounts) but is not exhaustive about the complete response. Given the presence of many sibling order-related tools, a bit more context on coverage would improve completeness, but the description is acceptable for a basic get-detail tool.

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

Parameters3/5

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

Schema description coverage is 100%, as the single parameter order_id is well-described with its source (query_orders) and clarification that it is not order_number. The tool description adds no additional parameter semantics, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states it retrieves complete information for a single order, listing product details, payment, logistics, and discounts. This distinguishes it from list-oriented tools like query_orders, though it doesn't explicitly differentiate from more specific order detail tools such as get_order_delivery or get_order_transactions.

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 explicit guidance is provided on when to use this tool versus alternatives. While the mention of 'complete information' implies a general-purpose use, there are no clear when-to-use or when-not-to-use instructions, and no alternative tools are named.

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

get_order_labelsA

【用途】取得指定訂單的配送標籤資訊,可用於列印物流面單或查詢寄件單號。

【呼叫的 Shopline API】

  • GET /v1/orders/{order_id}/labels

【回傳結構】 API 原始回應,通常包含: { "labels": [ { "tracking_number": str, # 物流追蹤號碼 "carrier": str, # 物流商名稱 "label_url": str, # 標籤列印 URL ... } ] }

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYes訂單內部 ID(由 query_orders 回傳的 id 欄位,非 order_number)

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool calls a GET API and provides the expected response structure with fields like tracking_number and label_url, indicating it is read-only. It does not mention prerequisites or error conditions, but the API call and response are well-documented.

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

Conciseness5/5

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

The description is well-structured with clear sections (用途, 呼叫的 API, 回傳結構) and is concise. Every sentence adds value, and the key information is front-loaded.

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

Completeness4/5

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

The description covers the purpose, API call, and output format with a sample response. For a simple read tool with one parameter and no output schema, it is fairly complete. It could mention prerequisites like order existence, but the provided information is sufficient for basic usage.

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?

The description does not add any information about the order_id parameter beyond what the input schema already provides. However, schema coverage is 100% and the schema description clearly explains that the ID is from query_orders and not the order_number, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb (取得/Get), the resource (配送標籤資訊/shipping label info for a specific order), and the purpose (列印物流面單或查詢寄件單號). It distinguishes this tool from other order-related tools like get_order_detail or get_order_delivery, as it specifically deals with labels.

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

Usage Guidelines4/5

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

The description implies usage for printing labels or tracking shipments, which gives context. However, it does not explicitly state when not to use this tool or mention alternatives compared to sibling tools. The specific purpose is clear but lacks explicit usage guidance for an agent.

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

get_order_tagsA

【用途】取得指定訂單上附加的所有標籤,可用於分類管理或篩選特殊訂單。

【呼叫的 Shopline API】

  • GET /v1/orders/{order_id}/tags

【回傳結構】 { "order_id": str, # 查詢的訂單 ID "tags": list, # 標籤列表(字串陣列) }

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYes訂單內部 ID(由 query_orders 回傳的 id 欄位,非 order_number)

TDQS

A3.6/5.0
Behavior3/5

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

The description discloses the HTTP method (GET) and the return structure, implying a read-only operation. However, with no annotations provided, the description carries the full burden for behavioral transparency. It does not explicitly state the operation has no side effects, nor does it mention prerequisites, permissions, or error behavior. It adds some context but leaves notable gaps.

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

Conciseness5/5

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

The description is well-structured into three clear sections: purpose, API call, and return structure. It is concise, front-loaded with the purpose, and every sentence serves a clear function. There is no redundant fluff, making it an exemplar of efficient description.

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

Completeness4/5

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

For a simple one-parameter read tool with no output schema, the description is nearly complete: it covers the purpose, the exact API endpoint, and the return structure. It compensates well for the missing output schema. However, it does not address potential error conditions or explicitly distinguish from the similar tool 'get_order_labels', so it is not fully complete.

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

Parameters3/5

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

The input schema provides 100% coverage for the single parameter 'order_id' with a detailed description (internal ID from query_orders, not order_number). The description's return structure includes 'order_id' but does not add additional parameter semantics beyond what the schema already provides, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the purpose: '取得指定訂單上附加的所有標籤' (get all tags attached to a specified order), with a specific verb and resource. It also mentions use cases for classification and filtering. However, it does not explicitly differentiate from the similar sibling tool 'get_order_labels', so it lacks explicit sibling differentiation.

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

Usage Guidelines3/5

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

The description gives a usage context ('可用於分類管理或篩選特殊訂單'), but it does not specify when to use this tool versus alternatives, nor does it mention exclusions. There is no comparison with sibling tools like 'get_order_labels' or 'update_order_tags', leaving the guidance 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.

get_order_transactionsA

【用途】取得指定訂單的所有付款交易紀錄,包含付款金額、交易狀態、付款方式等,適合對帳與財務核查。

【呼叫的 Shopline API】

  • GET /v1/orders/{order_id}/transactions

【回傳結構】 { "order_id": str, # 查詢的訂單 ID "total": int, # 交易筆數 "transactions": [ # 交易列表 { "id": str, # 交易 ID "kind": str, # 交易類型(sale, refund, void 等) "status": str, # 交易狀態 "amount": float, # 交易金額(TWD) "gateway": str, # 付款閘道 "created_at": str, # 交易時間 ... # 其他欄位依 API 回應而定 } ] }

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYes訂單內部 ID(由 query_orders 回傳的 id 欄位,非 order_number)

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description must disclose behavior; it includes the HTTP GET endpoint and a detailed return structure, which implies a read-only operation. It does not explicitly state permissions, error cases, or side effects, so transparency is only partial.

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

Conciseness5/5

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

The description is well-structured with clear sections (purpose, API, return structure) and no redundant text. The JSON example is succinct and informative, earning a high score.

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

Completeness4/5

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

The tool has only one parameter and no output schema, but the description compensates with a return structure outline and a usage context. It lacks mention of error handling or pagination, but for a simple read-only GET tool, it is sufficiently complete.

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

Parameters3/5

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

The sole parameter order_id is already fully described in the schema (internal ID from query_orders, not order_number), and the description itself adds no additional parameter semantics. Per the baseline for high schema coverage, a score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states that the tool retrieves all payment transaction records for a specified order, enumerating key fields (payment amount, status, method). This differentiates it from sibling tools like get_order_detail or get_refund_summary, which focus on different aspects.

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

Usage Guidelines4/5

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

The description explicitly mentions that it is suitable for reconciliation and financial audits, providing clear context for when to use it. It does not, however, name alternative tools or specify when not to use it, which keeps it from a perfect score.

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

get_product_listB

取得商品列表,含 SKU 變體、價格、品牌、庫存數量等資訊。

【呼叫的 Shopline API】

  • GET /v1/products

  • GET /v1/products/search

ParametersJSON Schema
NameRequiredDescriptionDefault
keywordNo商品名稱關鍵字搜尋
brandNo品牌篩選
max_resultsNo最多回傳筆數

TDQS

B3.3/5.0
Behavior3/5

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

The description reveals it calls two API endpoints (GET /v1/products and GET /v1/products/search), which provides some transparency about backend operations. However, since no annotations are present, it should have disclosed additional behavioral traits such as read-only status, pagination, or rate limits. It partially compensates but is insufficient.

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

Conciseness5/5

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

The description is exceptionally concise, with only two lines of text plus a list of API endpoints. It is front-loaded with the main purpose and follows a clear, structured format. No superfluous information is included.

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

Completeness3/5

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

While the description covers the basic purpose and data returned, it lacks details on pagination, sorting, default behavior, or the output format. Given the absence of an output schema and annotations, more completeness would be expected for a list tool with three parameters.

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

Parameters3/5

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

All three parameters (keyword, brand, max_results) are fully described in the input schema (100% coverage). The description does not add any additional meaning or usage context for the parameters beyond what the schema already provides, so a baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states that the tool retrieves a product list including SKU variants, price, brand, inventory, etc., and mentions the underlying APIs. However, it does not differentiate it from sibling tools like list_addon_products or get_product_variants, which may have overlapping functionality.

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 lacks any guidance on when to use this tool versus alternatives. It does not specify prerequisites, context, or conditions for use, leaving the agent without direction for tool selection.

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

get_product_review_detailA

取得單一商品評價的完整內容,包含圖片與店家回覆。

【用途】 查閱特定評價的詳細資料:完整評論文字、評分、附圖、顧客資訊及店家回覆。 適用於客服處理評價問題、追蹤店家回應進度,或人工審核評價內容。

【呼叫的 Shopline API】

  • GET /v1/product_review_comments/{comment_id}

【回傳結構】 dict 包含:

  • id:評價 ID

  • product_id / product_name:商品資訊

  • rating:評分(通常 1–5)

  • content:完整評論文字

  • images[]:附圖 URL 列表

  • reviewer_name:評價者姓名

  • status:評價審核狀態(如 published, pending)

  • reply:店家回覆內容(若有)

  • created_at, updated_at

ParametersJSON Schema
NameRequiredDescriptionDefault
comment_idYes評價 ID(由 list_product_reviews 回傳的 id 欄位)

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It transparently lists the associated Shopline API (GET /v1/product_review_comments/{comment_id}) and details the return structure, implying a read-only operation without mutation. However, it does not mention authentication requirements, rate limits, or error behavior, leaving a moderate gap in transparency.

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

Conciseness5/5

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

The description is well-structured with clear sections (用途, 呼叫的 Shopline API, 回傳結構) and a one-sentence summary upfront. It is concise yet packed with necessary information—purpose, use cases, API endpoint, and return fields—without any redundant content. Every sentence earns its place.

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

Completeness5/5

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

For a low-complexity tool with one parameter, no annotations, and no output schema, this description is remarkably complete. It explains what the tool does, when to use it, which API it calls, and exactly what the returned dictionary contains. This is sufficient for an agent to select and correctly invoke the tool with minimal ambiguity.

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

Parameters3/5

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

The input schema already describes comment_id as 評價 ID, achieving 100% parameter coverage. The description adds a small but useful note that the ID comes from the id field returned by list_product_reviews, which helps agents trace the data provenance. This extra context slightly elevates the description beyond the schema baseline, but not substantially.

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

Purpose5/5

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

The description opens with a clear, specific statement: 取得單一商品評價的完整內容,包含圖片與店家回覆 (Get full content of a single product review, including images and merchant reply). This precisely identifies the resource (single product review detail) and the action (get), distinguishing it from sibling tools like list_product_reviews, update_product_review, and delete_product_review.

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

Usage Guidelines4/5

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

The description includes a dedicated section listing suitable use cases: 客服處理評價問題、追蹤店家回應進度,或人工審核評價內容 (customer service handling review issues, tracking merchant response progress, or manually auditing review content). This provides clear usage context, but it does not explicitly mention alternatives or exclusion criteria, which keeps it a notch below a perfect score.

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

get_product_subscription_detailA

取得單一商品訂閱的完整詳情。

【用途】 查詢特定訂閱紀錄的完整資訊,包含客戶、商品、付款方式、配送設定與 訂閱週期等所有欄位。適合客服場景或個別訂閱狀態確認。

【呼叫的 Shopline API】

  • GET /v1/product_subscriptions/{subscription_id}

【回傳結構】 dict 包含 id, customer_id, product_id, variant_id, status, frequency, frequency_unit, price (TWD), shipping_address, payment_method, next_billing_at, created_at, updated_at 等完整欄位。

ParametersJSON Schema
NameRequiredDescriptionDefault
subscription_idYes商品訂閱 ID(由 list_product_subscriptions 回傳的 id 欄位)

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses the underlying API call (GET /v1/product_subscriptions/{subscription_id}) and the return structure, which implies read-only behavior. The word '查詢' (query) also signals a non-mutating operation. However, it does not mention error handling or authorization, leaving some gaps, but for a simple GET tool this is acceptable.

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

Conciseness5/5

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

The description is well-structured with clear sections for purpose, API call, and return structure. Each section is concise and relevant, with no redundant wording. The first line clearly states the core function, making it easy for an agent to quickly grasp the tool's purpose.

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

Completeness5/5

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

For a simple tool with one parameter and no output schema, the description is remarkably complete. It explains the purpose, usage context, underlying API, and return fields. This is sufficient for an agent to invoke the tool correctly and understand the output. No critical information appears to be missing.

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

Parameters3/5

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

The input schema already provides 100% coverage for subscription_id, including a helpful note that it comes from list_product_subscriptions. The description does not add further parameter semantics beyond what the schema states. Since schema coverage is high, a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's function: '取得單一商品訂閱的完整詳情' (get complete details of a single product subscription). It specifies the verb, resource, and scope (single vs. list), effectively distinguishing it from sibling tools like list_product_subscriptions. The mention of included fields further clarifies its purpose.

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

Usage Guidelines4/5

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

The description provides explicit usage context: '適合客服場景或個別訂閱狀態確認' (suitable for customer service scenarios or individual subscription status confirmation). It clearly implies this is for individual lookups but does not explicitly mention alternatives or when not to use it. Since sibling list_product_subscriptions exists, a direct comparison would have earned a 5.

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

get_product_variantsA

取得特定商品的所有 SKU 變體明細,含尺寸×顏色的庫存矩陣。

【呼叫的 Shopline API】

  • GET /v1/products/{product_id}

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYes商品 ID

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description bears full responsibility. It mentions the API endpoint and that it retrieves data, but does not disclose safety, side effects, error handling, or other behavioral traits. The description is adequate but lacks explicit read-only or mutation clarity.

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

Conciseness5/5

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

The description is extremely concise—two sentences that cover the tool's purpose and the underlying API endpoint. Every word contributes value, and there is no redundant or extraneous information.

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

Completeness4/5

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

Despite the absence of an output schema, the description is fairly complete by specifying that variants include a size×color inventory matrix. For a simple read tool with one parameter, this provides sufficient context for an AI agent to understand what data to expect.

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

Parameters3/5

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

Schema coverage is 100% with only one parameter (product_id) described as '商品 ID'. The description does not add additional meaning beyond the schema, so the baseline score of 3 is appropriate per guidelines.

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

Purpose5/5

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

The description clearly states the tool retrieves all SKU variant details for a specific product, including a size×color inventory matrix. This distinguishes it from sibling tools like get_product_list or get_inventory_overview, which serve different purposes.

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

Usage Guidelines3/5

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

The description implies usage when needing variant-level details for a product, but it does not explicitly state when to use this tool over alternatives, nor does it provide exclusions or prerequisites. Guidance is purely implicit.

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

get_promotion_analysisA

分析促銷活動效果:各活動的使用次數、折扣類型、狀態分佈。可搭配銷售數據評估促銷 ROI。

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNo活動狀態篩選all
discount_typeNo折扣類型篩選(amount/percentage/free_shipping/addon)

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden for behavioral disclosure. It describes the analysis outputs (usage counts, discount type, status distribution) which implies a read-only aggregation behavior. However, it does not explicitly state safety, response format, pagination, or any side effects. Given the absence of annotations, this is a partial but not complete disclosure.

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

Conciseness5/5

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

The description is two concise sentences, front-loaded with the primary purpose and specific output details. Every sentence adds value, and there is no superfluous text. It is well-structured for quick scanning.

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

Completeness4/5

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

For a simple analysis tool with two optional filters and no output schema, the description communicates the key outputs (usage count, discount type, status distribution) and suggests a use case (ROI evaluation with sales data). It lacks explicit return format or pagination details, but given the tool's simplicity, it is fairly complete. The mention of ROI could be clearer, given the sibling tool get_promotion_roi exists.

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

Parameters3/5

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

Schema coverage is 100%: both 'status' and 'discount_type' have descriptions in the schema. The description mentions discount type and status as part of the analysis output but does not add extra meaning to the parameter semantics beyond what the schema already provides. Baseline 3 is appropriate as the schema carries the load.

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

Purpose4/5

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

The description clearly states the tool analyzes promotion effectiveness, listing specific outputs: usage count, discount type, status distribution. It uses the specific verb '分析' (analyze) and resource '促銷活動' (promotions), and the scope is differentiated from sibling tools like list_promotions by focusing on aggregated analysis rather than listing or detail. However, it does not explicitly name sibling tools or contrast itself, so it loses a point.

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

Usage Guidelines3/5

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

The description provides some usage context: '可搭配銷售數據評估促銷 ROI' indicates it can be used with sales data to evaluate ROI, implying a complementary role. However, it does not explicitly state when to prefer this tool over alternatives like get_promotion_roi or list_promotions, nor does it mention any exclusions. The 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.

get_promotion_detailA

取得單一促銷活動的完整詳情。

【用途】 查詢特定促銷活動的折扣規則、適用商品、使用限制等完整資訊。 適合在已知 promotion_id 的情況下取得所有欄位。

【呼叫的 Shopline API】

  • GET /v1/promotions/{promotion_id}

【回傳結構】 dict 包含 id, title, status, discount_type, discount_value, target_type, conditions, start_at, end_at, created_at, updated_at 等完整欄位。

ParametersJSON Schema
NameRequiredDescriptionDefault
promotion_idYes促銷活動 ID(由 list_promotions 或 search_promotions 回傳的 id 欄位)

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the exact API endpoint (GET /v1/promotions/{promotion_id}) and the return structure (a dict with specific fields), which are useful behavioral traits. It does not mention error handling or permissions, but the tool is a simple read-only lookup and the description provides sufficient transparency beyond minimal requirements.

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

Conciseness5/5

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

The description is well-structured with clear sections (用途, API, 回傳結構), front-loaded with a one-sentence summary, and every section provides valuable information. It is concise without unnecessary verbosity, and the use of bullets and labels improves scannability.

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

Completeness5/5

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

For a simple get-by-ID tool with one parameter and no output schema, the description is complete: it explains the purpose, when to use, the underlying API, and the return structure. It does not need to explain return values further since it lists the key fields. The level of detail is appropriate for the tool's complexity.

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

Parameters3/5

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

The schema already covers the single parameter with a clear description (promotion_id from list_promotions or search_promotions). The tool description adds no additional semantic details about the parameter itself beyond reaffirming the 'known promotion_id' usage context. With 100% schema coverage, baseline is 3.

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

Purpose5/5

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

The description clearly states the tool's purpose: to retrieve the complete details of a single promotion, including discount rules, applicable products, and usage restrictions. It specifies the resource (a single promotion by ID) and differentiates itself from listing/searching siblings by emphasizing 'single' and 'known promotion_id'.

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

Usage Guidelines4/5

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

The description explicitly states when to use: when the promotion_id is known, to get all fields. It does not explicitly mention when not to use or name alternatives, but the schema's parameter description (promotion_id from list_promotions or search_promotions) provides related context. This meets 'clear context, no exclusions' rather than full 'when/when-not/alternatives'.

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

get_promotion_roiA

交叉比對促銷活動與銷售數據,計算各活動的 ROI。

【用途】取得指定時間區間內活躍的促銷活動,並比對訂單中的 promotion_items, 統計每個活動帶來的訂單數、營業額、折扣金額,計算平均每單折扣與折扣占比。 【呼叫的 Shopline API】

  • GET /v1/promotions(促銷活動列表)

  • GET /v1/orders/search(訂單查詢) 【回傳結構】dict 含 period、total_promotions、promotions(各活動 ROI 明細)。

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYes起始日期 YYYY-MM-DD
end_dateYes結束日期 YYYY-MM-DD

TDQS

A3.9/5.0
Behavior3/5

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

The description reveals that the tool calls two internal APIs (GET /v1/promotions and GET /v1/orders/search) and returns a dict. However, it does not disclose potential side effects (none expected), rate limits, or performance implications. Without annotations, more explicit safety guarantees would be beneficial.

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

Conciseness4/5

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

The description is well-structured with labeled sections (用途, 呼叫的 API, 回傳結構) and is concise at around 100 characters. Every sentence adds value, though minor redundancy exists (e.g., repeating 'promotion_items').

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

Completeness4/5

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

Given the tool's complexity (composite operation with two APIs) and no output schema, the description provides a clear return structure and explains the business logic. It lacks details on edge cases (e.g., no promotions or orders) and prerequisites, but overall covers the essential aspects.

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?

The input schema already provides clear descriptions for both parameters (start_date and end_date with YYYY-MM-DD format). The description adds context that these define the time range for active promotions, but this does not significantly enhance understanding beyond the schema, leading to a baseline score.

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

Purpose5/5

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

The description clearly states the tool's purpose: cross-referencing promotion and sales data to calculate ROI for each promotion. It specifies inputs (date range), outputs (orders count, revenue, discount, ROI), and the return structure, distinguishing it from siblings like list_promotions or get_promotion_detail.

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

Usage Guidelines4/5

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

The description indicates when to use the tool (to get ROI for promotions in a date range) and implies its aggregation nature. It does not explicitly state when not to use it or name alternatives, but the context is clear enough for an agent to infer correct usage.

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

get_purchase_order_detailA

【用途】 取得單一 POS 採購單的完整明細,含採購品項、數量、金額等資訊。

【呼叫的 Shopline API】

  • GET /v1/pos/purchase_orders/{purchase_order_id}

【回傳結構】

  • id、status、created_at、total

  • items: 每筆含 product_title、sku、quantity、unit_cost

ParametersJSON Schema
NameRequiredDescriptionDefault
purchase_order_idYes採購單 ID

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden. It discloses the underlying API method (GET) and endpoint, which implies a read-only operation, and lists the return structure (id, status, created_at, total, items with key fields). This provides meaningful behavioral context beyond the schema, though it stops short of detailing auth requirements or error cases.

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

Conciseness5/5

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

Description is succinct, organized into labeled sections (purpose, API, return structure), and front-loaded with the main purpose. Every sentence contributes value with no redundancy.

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

Completeness5/5

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

For a straightforward get-detail tool with one parameter and no output schema, the description covers purpose, underlying API, and return structure. This is complete enough for an agent to know what the tool does and what it returns.

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

Parameters3/5

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

Schema coverage is 100% (single parameter with description '採購單 ID'). The description does not add extra detail about the parameter beyond its presence in the endpoint path. Baseline 3 applies because the schema already documents the parameter adequately.

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?

Description states '取得單一 POS 採購單的完整明細' (get complete details of a single POS purchase order) with specific content like items, quantity, and amount. The verb+resource is clear and distinguishes this from sibling list_purchase_orders which lists orders.

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

Usage Guidelines3/5

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

Usage is implied by the purpose: use when you need details of a single purchase order. However, no explicit when/when-not guidance is given, and the alternative list_purchase_orders is not mentioned. For a simple get-by-id tool, this is adequate but lacks differentiation.

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

get_refund_by_storeA

依門市/通路分析退貨退款分佈。

【用途】取得指定時間區間內的退貨單,並依關聯訂單的門市/通路分群, 計算各門市的退貨筆數、退款金額、最常被退貨的商品,協助評估各通路退貨狀況。 【呼叫的 Shopline API】

  • GET /v1/return_orders(退貨單列表)

  • GET /v1/orders/{order_id}(取得關聯訂單的通路資訊) 【回傳結構】dict 含 period、total_return_orders、stores(各門市退貨統計)。

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYes起始日期 YYYY-MM-DD
end_dateYes結束日期 YYYY-MM-DD

TDQS

A3.9/5.0
Behavior4/5

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

Although no annotations are provided, the description details the underlying API calls (GET /v1/return_orders and GET /v1/orders/{order_id}) and the return structure, offering good insight into behavior. It does not mention permissions or rate limits, but the level of detail is sufficient.

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

Conciseness4/5

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

The description is well-structured with sections for purpose, usage, API calls, and return structure. It is slightly verbose but clear and front-loaded with key information.

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

Completeness4/5

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

Given no output schema, the description provides a clear return structure (period, total_return_orders, stores with statistics). It covers the essential information, though details on pagination or limits are missing.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for both parameters. The description adds no extra meaning beyond the schema; it only repeats that dates are in YYYY-MM-DD format. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's purpose: analyzing return/refund distribution by store/channel. It specifies the action (get refunds by store), the resource (returns per store), and distinguishes from siblings like 'get_refund_summary' by focusing on store-level analysis.

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 context on when to use (for store-level return analysis within a date range) but lacks explicit guidance on when not to use or alternatives. Given the large sibling list, more differentiation would be helpful.

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

get_refund_summaryA

取得指定時間區間的退貨退款統計:退款金額、退貨筆數、退貨率、退貨商品明細。支援計算淨營收。

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYes起始日期 YYYY-MM-DD
end_dateYes結束日期 YYYY-MM-DD

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the burden of disclosing behavior. It implies a read-only report by stating it returns statistics, but does not explicitly confirm non-destructive nature or mention any side effects. The information is adequate but could be more explicit.

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

Conciseness5/5

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

The description is concise (two sentences) and front-loaded with the primary purpose. Every sentence adds value, with no extraneous text.

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

Completeness4/5

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

Given the absence of an output schema, the description lists the returned metrics (refund amount, number of returns, return rate, product details, net revenue). It could be more specific about the structure (aggregated vs. per-day), but overall sufficiently complete for a summary 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 covers 100% of parameters with descriptions for start_date and end_date. The tool description adds context that these define the time range for the statistics, enhancing understanding beyond the schema alone.

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

Purpose5/5

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

The description clearly states it retrieves refund/return statistics for a specified date range, listing specific metrics (refund amount, number of returns, return rate, product details, net revenue). This distinguishes it from siblings like get_refund_by_store which likely filter by store.

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 explicit guidance on when to use this tool versus alternatives. While the context signals and sibling list suggest other refund/report tools, the description does not specify when this is appropriate or when other tools should be used.

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

get_repurchase_analysisA

分析客戶回購率與回購週期。計算新客 vs 舊客比例、回購率、平均回購天數。

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYes分析區間起始 YYYY-MM-DD
end_dateYes分析區間結束 YYYY-MM-DD

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It is transparent about the computed metrics, but does not explicitly state that it is a read-only operation, nor describe the output format or aggregation level. This does not contradict annotations (none exist), but it leaves some ambiguity about the nature of the analysis.

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

Conciseness5/5

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

The description is extremely concise: two short sentences that front-load the core function and list key metrics. Every word earns its place, with no filler or repetition.

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

Completeness4/5

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

Given the simple two-parameter input and the explicit enumeration of output metrics in the description, the tool's behavior is mostly covered. The lack of an output schema is mitigated by listing exactly what is calculated. However, it does not describe the return format or edge cases (e.g., empty date ranges), which prevents a perfect score.

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?

The schema provides 100% coverage with descriptions for both parameters (start_date and end_date). The description adds no additional parameter context beyond what the schema already contains. Baseline 3 is appropriate since the schema handles parameter semantics adequately.

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

Purpose5/5

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

The description states a clear purpose: '分析客戶回購率與回購週期' (analyze customer repurchase rate and repurchase cycle), and lists specific metrics (新客 vs 舊客比例, 回購率, 平均回購天數). This clearly distinguishes it from sibling tools like get_rfm_analysis or get_customer_lifecycle, which focus on different customer analytics dimensions.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention exclusions, prerequisites, or contrast with overlapping analysis tools such as get_rfm_analysis or get_customer_lifecycle. The only implied usage is for repurchase analysis, but explicit guidance is missing.

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

get_return_order_detailA

取得單一退貨單的完整明細,包含所有退貨品項。

【用途】 查閱特定退貨申請的完整資訊:退貨原因、每件退貨商品(商品名稱、數量、退款 金額)、物流狀態及客戶聯絡資料。適合客服處理個案或審核退貨申請時使用。

【呼叫的 Shopline API】

  • GET /v1/return_orders/{return_order_id}

【回傳結構】 dict 包含退貨單基本資訊(id, status, reason, order_id, created_at)、 金額摘要(total, refund_amount,皆為 TWD float)及 line_items[]。 每個 line_item 包含 product_name, variant_title, quantity, price。

ParametersJSON Schema
NameRequiredDescriptionDefault
return_order_idYes退貨單 ID(由 list_return_orders 回傳的 id 欄位)

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description discloses the underlying GET /v1/return_orders/{return_order_id} call and the read-only '查閱' intent, avoiding destructive ambiguity. It also details the return structure, though it omits auth/error behavior and lists fields that don't fully cover the stated logistics/customer-contact contents.

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

Conciseness4/5

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

The description uses clear sections (用途, API, 回傳結構) and leads with the primary purpose. There is slight redundancy between '完整明細' and '完整資訊' and between the stated contents and the return-structure list, so it is not fully polished.

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

Completeness4/5

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

For a single-parameter read-only GET with no output schema, the description supplies the endpoint, purpose, parameter source, and return field structure. It could be more complete by aligning the promised logistics/customer-contact fields with the return structure and noting error behavior, but it is sufficient for basic invocation.

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

Parameters3/5

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

The schema description coverage is 100% for return_order_id, with the schema already explaining it as the id from list_return_orders. The description adds no additional parameter syntax or constraints beyond the schema, so the baseline 3 applies.

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

Purpose5/5

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

The description opens with '取得單一退貨單的完整明細' clearly identifying a single-return-order detail retrieval. It specifies the contents (return reason, items, logistics, customer contact) and is distinct from sibling list_return_orders and get_order_detail by focusing on one return order.

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

Usage Guidelines4/5

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

The dedicated 用途 section states this is for customer-service case handling or return review, providing clear context. It does not explicitly name alternatives or when not to use the tool, but the scope is readily inferred from the sibling names and description.

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

get_rfm_analysisC

根據訂單資料進行 RFM(Recency/Frequency/Monetary)分群分析。注意:僅能分析有下單紀錄的客戶(Customers API 為 403)。

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYes分析區間起始 YYYY-MM-DD
end_dateYes分析區間結束 YYYY-MM-DD
r_days_thresholdNoRecency 門檻天數(最近消費 ≤ 此值為高 R)
f_thresholdNoFrequency 門檻(消費 ≥ 此值為高 F)
m_thresholdNoMonetary 門檻金額(累計 ≥ 此值為高 M)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does disclose a useful limitation—only customers with order records can be analyzed (Customers API returns 403)—but it does not describe the output format, how thresholds affect segmentation, or the exact data scope, leaving significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, consisting of two short sentences: one stating the purpose and one adding a warning. Every word earns its place, and the purpose is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an analytical tool with no annotations and no output schema, the description is incomplete. It clarifies the data source (orders) and a limitation, but does not explain what the RFM output contains, how thresholds are used, or how customers without orders are handled beyond the 403 note. Significant context is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage with descriptions for all five parameters, including thresholds and date range. The description adds no extra parameter semantics beyond the schema, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool performs RFM (Recency/Frequency/Monetary) segmentation analysis based on order data, which is a specific verb and resource. However, it does not explicitly distinguish itself from sibling analytical tools such as get_repurchase_analysis or get_customer_lifecycle, so it lacks sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternative analytics tools. The only note is a limitation (only customers with order records can be analyzed), which is a constraint rather than a selection criterion or when-to-use instruction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_sales_summaryA

取得指定時間區間的銷售摘要:營業額、訂單數、客單價、件單價、折扣總額等核心指標。支援依通路/門市篩選。

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYes起始日期 YYYY-MM-DD
end_dateYes結束日期 YYYY-MM-DD
statusNo訂單狀態completed
channelNo通路篩選all
store_nameNo門市名稱篩選

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full burden. It states the tool is a retrieval operation but does not disclose return format, pagination, rate limits, or permissions. For a read-only tool, this is insufficient.

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 that concisely state purpose and filtering capability. No redundant information; every clause adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose and filtering but lacks details on return structure, ordering, or limitations. For a summary tool, it is adequate but not comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds context about metrics included (revenue, order count, etc.) but does not elaborate on parameter formats or constraints beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves sales summary for a specified time period, listing core metrics (revenue, order count, etc.) and noting filtering by channel/store. It distinguishes from sibling tools like get_category_sales or get_channel_comparison.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for basic sales summary but does not explicitly state when to use this versus alternatives like get_sales_trend or get_channel_comparison. No exclusions or prerequisites are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_sales_trendB

取得銷售趨勢數據,支援每日/每週/每月粒度,可用於繪製趨勢圖。

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYes起始日期 YYYY-MM-DD
end_dateYes結束日期 YYYY-MM-DD
granularityNo時間粒度daily
channelNo通路篩選all

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. Description lacks any behavioral details such as data limits, performance, or prerequisites beyond basic functionality.

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?

Single sentence that is concise and front-loaded with key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema and description does not explain return format or data structure, leaving agent uninformed about what to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, description adds no additional meaning beyond schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it retrieves sales trend data with daily/weekly/monthly granularity for charting. Differentiates from sibling tools like get_sales_summary.

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?

Implied usage for trend visualization, but no explicit guidance on when to use versus alternatives or when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_slow_moversA

找出庫存高但銷量低的滯銷商品。

【用途】交叉比對商品庫存與銷售數據,計算每個商品的日均銷量與可售天數(days_of_supply), 標記 days_of_supply 超過門檻或零銷售的商品為滯銷品,協助清倉決策。 【呼叫的 Shopline API】

  • GET /v1/products(商品列表含庫存)

  • GET /v1/orders/search(銷售數據) 【回傳結構】dict 含 period、period_days、total_products、slow_movers(滯銷商品列表)。

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYes分析區間起始 YYYY-MM-DD
end_dateYes分析區間結束 YYYY-MM-DD
days_thresholdNo可售天數門檻,超過此值視為滯銷

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description bears the full burden. It transparently lists the calculation logic, the underlying Shopline API endpoints (GET /v1/products and GET /v1/orders/search), and the return structure. This reveals that the tool aggregates data and is read-only in nature (GET calls), though it does not explicitly state side-effect-free 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?

The description is well-structured with header sections for purpose, API calls, and return structure. It is concise and front-loaded; each section provides essential information without unnecessary fluff. The mild redundancy between the opening line and the 用途 section is negligible.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema, and the description adequately describes the return structure (period, period_days, total_products, slow_movers). It also covers the data sources and calculation method, giving an agent sufficient context to invoke the tool. However, it does not describe edge cases or error conditions, which would elevate it further.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the description adds no further meaning beyond the schema. The tool description mentions the use of start/end dates and the threshold concept, but the schema already explains each parameter's role and the default value. No additional parameter context is provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: identifying slow-moving products with high inventory and low sales. It explains the specific metric (days_of_supply) and the threshold/zero-sales criteria, which distinguishes it from sibling inventory analysis tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear business context ('協助清倉決策' – assists clearance decisions), but doesn't explicitly mention when to use this instead of alternatives like get_inventory_turnover. No exclusions or alternative tool references are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_staff_permissionsA

取得指定員工的權限設定。

【用途】 查詢特定員工帳號在商店後台的存取權限範圍, 例如可操作的功能模組及操作層級。適合確認員工 權限配置或排查存取問題。

【呼叫的 Shopline API】

  • GET /v1/staffs/{staff_id}/permissions

【回傳結構】 dict 含 staff_id, permissions[]。 每個 permission 包含 resource, actions 等, 描述該員工可操作的資源與動作。

ParametersJSON Schema
NameRequiredDescriptionDefault
staff_idYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must cover behavioral traits. It discloses the return structure (dict with staff_id, permissions) and references the API call, but does not address authorization requirements, rate limits, or side effects. For a read tool, this is adequate but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with sections for purpose, API call, and return structure. It is concise yet informative, front-loading the main purpose. Every section adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, no output schema), the description provides a reasonable overview. However, it lacks details about the permissions structure (e.g., possible actions) that would be useful for an agent, especially without an output 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?

The only parameter staff_id has no description in the schema (0% coverage), and the tool description does not add any additional meaning, format, or constraints beyond its name. Since schema coverage is low, the description should compensate but fails to do so.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states '取得指定員工的權限設定' (get specified staff's permission settings) and explains it queries backend access permissions for functional modules and operation levels. This clearly distinguishes it from sibling get_* tools by specifying the exact resource (staff permissions).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions '適合確認員工權限配置或排查存取問題' (suitable for confirming permission configuration or troubleshooting access issues), providing clear usage context. Although it doesn't explicitly exclude alternatives, the purpose is well-defined.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_stock_by_warehouseB

取得商品在各倉庫/門市的庫存分佈矩陣。可查詢單一商品或全部商品的各倉庫庫存。

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idNo商品 ID(不填則查詢全部商品,但較慢)
warehouse_idNo倉庫 ID 篩選(僅看特定倉庫)

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears the full burden. It notes that querying all products is slower, which is a useful behavioral hint. However, it omits details like data freshness, authentication requirements, or the structure of the 'matrix'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, covering purpose and a key performance consideration. It is efficient and front-loaded with the core function.

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 tool has no output schema, so the description should explain return values. Calling it a 'distribution matrix' is vague. With only two optional parameters, the description is adequate but leaves room for confusion among many sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters are fully documented in the input schema with descriptions. The description adds a performance note about all-product queries but does not significantly enhance understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves inventory distribution by product and warehouse, mentioning single or all products. However, it does not explicitly differentiate from sibling tools like get_inventory_overview, which also deal with inventory data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as get_inventory_overview or get_locked_inventory. Users must infer from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_stock_transfer_suggestionsA

自動產生跨倉庫庫存調撥建議。

【用途】逐商品查詢各倉庫庫存,若同商品在不同倉庫之間的庫存差距過大 (差值 >= min_stock_diff),則建議從庫存多的倉庫調撥到庫存少的倉庫。 僅分析前 30 個商品以避免 API 速率限制。 【呼叫的 Shopline API】

  • GET /v1/products(商品列表)

  • GET /v1/products/{product_id}/stocks(各倉庫庫存)

  • GET /v1/warehouses(倉庫名稱對照) 【回傳結構】dict 含 products_analyzed、suggestions_count、suggestions 列表。

ParametersJSON Schema
NameRequiredDescriptionDefault
min_stock_diffNo倉庫間庫存差距門檻,差距 >= 此值才建議調撥

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It lists the exact Shopline APIs called (all GETs, implying read-only), explains the underlying algorithm, discloses the 30-product limit to avoid rate limiting, and describes the return structure. It does not mention permissions or error scenarios, but for a read-only analytical tool this is reasonably transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with labeled sections for purpose, API calls, and return structure. Each section provides useful information without excessive verbosity. The only slight redundancy is that the parameter logic appears in both the purpose and the schema, but this is acceptable.

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 tool of moderate complexity (multi-API calls, algorithm, rate-limit caveat), the description is quite complete. It explains input (optional threshold), output fields, and underlying data sources. With no output schema, the return structure is explicitly described. Missing details like error handling or explicit permission requirements are minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents min_stock_diff with 100% coverage, including its default and meaning. The description adds value by embedding the parameter in the algorithmic logic ('差值 >= min_stock_diff') and clarifying its role in triggering suggestions, which reinforces the schema's description and provides behavioral context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb '自動產生' (auto-generate) and the resource '跨倉庫庫存調撥建議' (cross-warehouse stock transfer suggestions). It explains the specific logic (threshold-based transfer suggestions) and distinguishes itself from sibling tools like get_stock_by_warehouse or get_inventory_overview by focusing on actionable suggestions rather than raw stock views.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly outlines the use case: to generate transfer recommendations based on inter-warehouse stock differences. It does not explicitly name alternatives or exclusions, but the purpose is self-evident and the tool's unique value proposition is clear. The note about analyzing only the first 30 products also provides context for when this might be insufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_token_infoA

取得目前 API Token 的資訊與授權範圍。

【用途】 查詢此 API Token 的詳細資訊,包含所屬商家、 授權的 scope(權限範圍)以及有效期限等。 適合排查 API 存取問題、確認 token 是否擁有 所需的操作權限。

【呼叫的 Shopline API】

  • GET /v1/token/info

【回傳結構】 dict 含 token_info,包含 merchant_id, scopes[], expires_at, created_at 等欄位。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses the API endpoint (GET /v1/token/info) and the return structure, and uses '查詢' to imply a read-only operation. However, it doesn't explicitly state there are no side effects or mention any auth requirements for the call itself.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear headings (用途, 呼叫的 Shopline API, 回傳結構). It is concise yet informative, with every section adding value and no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only tool, the description covers the purpose, use case, underlying API endpoint, and return structure fields. Since there is no output schema, this description adequately compensates.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so the baseline is 4. No additional parameter semantics are needed, and the description appropriately focuses on the return structure.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verbs '取得/查詢' and clearly states it retrieves the current API token's information including merchant, scopes, and expiry. This is unique among siblings, all of which focus on other domains, making it easy to distinguish.

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?

Explicitly describes use cases: troubleshooting API access issues and verifying token permissions. This gives clear context for when to use the tool, though it does not mention alternatives or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_top_productsB

取得指定時間區間的商品銷售排行榜(依銷量或營業額排序),或滯銷商品清單。

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYes起始日期 YYYY-MM-DD
end_dateYes結束日期 YYYY-MM-DD
top_nNo顯示前 N 名
sort_byNo排序依據revenue
channelNo通路篩選all

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description must disclose behavioral traits. It does not discuss pagination, what 'slow movers' means exactly, authorization requirements, or the impact of parameters on results. The description adds no behavioral context beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence covering two modes (ranking and slow movers), which is concise. However, the dual purpose might cause slight ambiguity. It front-loads the main function.

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?

With 5 parameters, no output schema, and no annotations, the description lacks critical details such as output format, pagination, definition of 'slow movers', and how channel filtering affects results. It does not fully equip an agent to use the tool correctly without additional inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with parameter descriptions that are clear (e.g., date format, enum values, default). The description adds interpretive context like '依銷量或營業額排序' (sorted by volume or revenue) but does not explain the slow-mover mode parameter (possibly implied by negative top_n?). Minimal value added beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves a product sales ranking for a specified time period, sorted by quantity or revenue, or a list of slow-moving products. It uses a specific verb ('取得') and resource ('商品銷售排行榜'), distinguishing it from sibling tools like get_sales_summary or get_product_list, though it overlaps with get_slow_movers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as get_slow_movers or get_category_sales. There is no mention of prerequisites, limitations, or context for selecting between sorting options or slow-mover mode.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_warehousesA

取得所有倉庫/門市據點列表。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states that a list is returned, with no mention of data source, ordering, pagination, or edge cases. This is minimal and lacks depth beyond the obvious.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that delivers the full purpose without any extraneous words. It is front-loaded and easy to parse, making it highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter list with no output schema, the description is essentially complete. It clearly identifies the action and resource. It could add minor details like return format or potential limitations, but given the simplicity, the description suffices.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the schema covers them vacuously at 100%. The description adds no parameter-specific semantics, but none are needed. Baseline 4 is appropriate for a parameterless tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves all warehouse/store location lists with the specific verb '取得' and resource '所有倉庫/門市據點'. It is unambiguous and distinguishes itself from sibling tools, none of which list warehouses directly.

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 not explicitly state when to use this tool versus alternatives, but the use case is implied: when you need a list of all warehouses/store locations. No exclusionary or alternative guidance is provided, making it adequate but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_addon_productsA

取得加購商品列表,支援依關鍵字搜尋。

【用途】 瀏覽或搜尋商店所有加購商品(Addon Products)設定,了解加購商品名稱、 價格與庫存狀況。若提供搜尋關鍵字則呼叫搜尋端點,否則列出所有加購商品。 適合分析加購策略與商品搭配情況。

【呼叫的 Shopline API】

  • GET /v1/addon_products(無搜尋條件時)

  • GET /v1/addon_products/search(有搜尋條件時)

【回傳結構】 dict 含 total_found, returned, items[]。 每筆包含 id, name, sku, price (TWD), quantity, status, created_at。

ParametersJSON Schema
NameRequiredDescriptionDefault
search_keywordNo搜尋關鍵字(加購商品名稱)
max_resultsNo最多回傳筆數

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It transparently discloses the conditional selection of API endpoints based on search_keyword, and describes the return structure including fields and currency (TWD). It does not explicitly state read-only safety, but the verb '取得' implies a non-mutating operation. It also does not cover rate limits or authentication, but for a simple list tool this is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with distinct sections for purpose, API calls, and return structure. The opening line serves as a concise summary, and each section adds relevant detail. There is a slight redundancy between the opening line and the purpose section, but it does not detract from overall clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that there is no output schema, the description compensates by outlining the return structure (dict with total_found, returned, items[]) and the item fields. It also explains the two API endpoints and the search behavior. Missing details such as maximum limit enforcement or error handling are not critical for a straightforward listing tool, making this sufficiently complete.

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?

Although the input schema already describes both parameters (100% coverage), the description adds meaningful behavior beyond the schema by stating that providing a search keyword triggers the search endpoint, otherwise the list endpoint is used. It also clarifies that search_keyword refers to the addon product name. This extra context elevates the parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: '取得加購商品列表' (get addon products list) and supports keyword search. It specifies the resource (Addon Products) and distinguishes it from sibling create/update/addon tools by being a read/list operation. The conditional endpoint behavior further clarifies its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit context for when to use the tool: '瀏覽或搜尋商店所有加購商品' and '適合分析加購策略與商品搭配情況'. It also explains the conditional behavior between list and search endpoints. However, it does not explicitly mention when not to use it or name alternative tools, just missing the exclusionary guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_affiliate_campaignsA

取得聯盟行銷活動列表。

【用途】 瀏覽商店所有聯盟行銷(Affiliate)活動,了解活動名稱、狀態與推廣條件。 可取得 campaign_id 後進一步呼叫 get_affiliate_campaign_detail 或 get_affiliate_campaign_usage 查詢詳細資訊與訂單使用統計。

【呼叫的 Shopline API】

  • GET /v1/affiliate_campaigns

【回傳結構】 dict 含 total_found, returned, items[]。 每筆包含 id, title, status, commission_type, commission_value, created_at。

ParametersJSON Schema
NameRequiredDescriptionDefault
max_resultsNo最多回傳筆數

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the HTTP GET API endpoint, the return structure (dict with total_found, returned, items[]), and key fields in each item. This indicates a read-only operation and sets expectations for the response. It doesn't mention rate limits or side effects, but for a simple list operation this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear section headers (【用途】【呼叫的 Shopline API】【回傳結構】). It is concise, front-loaded with the purpose, and each sentence earns its place. No fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with one parameter and no output schema, the description is fairly complete: it explains the API call, response structure, item fields, and next-step usage. It doesn't explicitly mention pagination behavior beyond the max_results parameter, but the 'total_found' and 'returned' fields imply pagination without full explanation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% because max_results has a clear Chinese description ('最多回傳筆數'). The tool description itself doesn't add extra meaning to this parameter, but the schema already covers it. The return structure description indirectly clarifies how max_results relates to 'returned', but this is not explicit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with '取得聯盟行銷活動列表' (Get list of affiliate campaigns), clearly stating the verb+resource. It specifies the purpose: browse all affiliate campaigns, and differentiates from siblings by mentioning that after obtaining campaign_id, one can call get_affiliate_campaign_detail or get_affiliate_campaign_usage.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: use to browse all affiliate campaigns and then proceed to detail or usage endpoints. It names specific sibling tools and explains when to use them (after getting campaign_id). However, it doesn't explicitly state when not to use this tool, but the guidance is strong enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_agentsA

取得商店的代理人帳號清單。

【用途】 查看商店目前設定的代理人帳號,代理人通常用於 客服、業務等特定角色的操作授權。適合確認代理人 配置或了解有哪些外部帳號有商店操作權限。

【呼叫的 Shopline API】

  • GET /v1/agents

【回傳結構】 dict 含 total, agents[]。 每個 agent 包含 id, name, email, role, enabled, created_at 等。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It implies a read-only operation ('查看') and provides the API endpoint (GET /v1/agents), but it doesn't explicitly state side effects, permissions, or rate limits. The return structure is detailed, which adds some transparency, but safety characteristics are not explicitly stated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections for purpose, API call, and return structure. It is concise and front-loaded with the main purpose, and every sentence adds value without unnecessary fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that this is a simple zero-parameter list tool with no output schema, the description provides a solid return structure and API endpoint. It lacks details like pagination or error behavior, but for a basic list operation, it is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. The description doesn't need to explain parameters; it correctly focuses on the output. No additional parameter semantics are needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: '取得商店的代理人帳號清單' (get list of agent accounts for the store). It clearly states the tool's function and distinguishes it from sibling tools by focusing on agents, not other entities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear use case: to confirm agent configuration or understand which external accounts have store operation permissions. It gives context for when to use the tool, though it doesn't explicitly name alternatives or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_channelsA

取得商店所有銷售渠道清單。

【用途】 查看商店目前開啟的銷售渠道,例如線上商店、POS、 Facebook、Instagram 等。適合了解多渠道銷售佈局, 或做渠道業績分析前的渠道資料確認。

注意:此端點在部分 token 權限下可能回傳 403 或 422, 渠道資訊亦可從訂單的 channel.created_by_channel_name 欄位取得。

【呼叫的 Shopline API】

  • GET /v1/channels

【回傳結構】 dict 含 total, channels[]。 每個 channel 包含 id, name, channel_type, enabled, created_at 等。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description bears full responsibility. It discloses the HTTP method (GET), potential 403/422 errors, and describes the response structure. However, it does not mention rate limits or clarify if disabled channels are included beyond noting '開啟的'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (用途, 注意, API, 回傳結構). It is front-loaded and every sentence provides value, avoiding redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no params, no output schema), the description covers purpose, usage context, limitations, response structure, and alternative data sources. It is complete for an agent to correctly invoke the 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?

There are zero parameters, so schema coverage is trivially 100%. Baseline for 0 parameters is 4. The description adds context about the response but no param info is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves all sales channels ('取得商店所有銷售渠道清單'), uses a specific verb and resource, and distinguishes from siblings like get_channel_detail and get_channel_comparison by emphasizing the list-all behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes a dedicated '用途' section explaining when to use (e.g., understanding multi-channel layout, pre-analysis). It mentions potential errors and an alternative source of channel info, but does not explicitly exclude scenarios or compare to sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_conversationsA

取得客服對話列表。

【用途】 瀏覽所有客服對話的摘要清單,了解目前進行中或歷史的客服溝通狀況。 可依此清單篩選需要進一步查閱訊息內容的對話,再用 get_conversation_messages 取得完整聊天記錄。

【呼叫的 Shopline API】

  • GET /v1/conversations

【回傳結構】 dict 含 total_found, returned, conversations[]。 每個 conversation 包含 id, platform(通訊平台), status(對話狀態), created_at。

ParametersJSON Schema
NameRequiredDescriptionDefault
max_resultsNo最多回傳筆數

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden for behavioral traits. It discloses the return structure (dict with total_found, returned, conversations) and fields (id, platform, status, created_at). However, it does not explicitly state that this is a read-only operation or mention any side effects. For a list tool, this is adequate but not exemplary.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections: purpose, API endpoint, and return structure. It is concise with no redundant information. Every sentence adds value, and the front-loaded purpose immediately informs the agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one optional parameter, no output schema), the description fully covers what an agent needs: purpose, usage flow (browse then drill down), API details, and return structure. It is complete for the complexity level.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with one optional parameter (max_results) described in the schema. The description does not add additional meaning beyond what the schema provides, such as format or default behavior. Baseline score of 3 is appropriate as schema already documents the parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: '取得客服對話列表' (get customer service conversation list). It explains that it provides a summary list of all conversations for browsing current/historical status. It distinguishes itself from sibling tool get_conversation_messages by noting that this tool is for browsing summaries, while the sibling retrieves full message details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool: to browse the summary list of conversations and screen which conversations to retrieve details from. It names the alternative tool (get_conversation_messages) for full messages. It does not explicitly state when not to use, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_customer_groupsA

取得客戶群組列表,支援依名稱搜尋。

【用途】 瀏覽或搜尋已建立的客戶群組(分群)。可用於確認客戶標籤分群策略、 取得群組 ID 後進一步查詢群組成員。

【呼叫的 Shopline API】

  • GET /v1/customer-groups(無搜尋條件時)

  • GET /v1/customer-groups/search(有搜尋條件時)

【回傳結構】 dict 含 total_found, returned, groups[]。 每個 group 包含 id, name, customers_count, created_at。

ParametersJSON Schema
NameRequiredDescriptionDefault
search_keywordNo群組名稱搜尋關鍵字
max_resultsNo最多回傳筆數

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description fully bears the burden. It discloses that the tool calls different API endpoints depending on the search condition and describes the return structure in detail. This goes beyond minimal requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections and uses bullet points. It is slightly longer than necessary but every sentence adds value. It is front-loaded with the purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 optional parameters, no output schema), the description is complete. It covers API endpoints, return structure, and usage context without any gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, providing a baseline of 3. The description adds value by explaining the conditional API endpoint behavior based on 'search_keyword', which is not captured in the schema. This enhances understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: to list or search customer groups. It distinguishes from sibling tools like list_customers by focusing on groups. The verb '取得' (get) and resource '客戶群組列表' (customer group list) are specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit use cases: confirming group strategies and obtaining group IDs for further queries. However, it lacks guidance on when not to use this tool or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_customersA

取得客戶列表,支援依關鍵字搜尋客戶。

【用途】 查詢特定客戶或瀏覽客戶清單。可用姓名、email、電話搜尋。 若要取得單一客戶的完整資訊(含儲值金、點數、等級),請改用 get_customer_profile。

【呼叫的 Shopline API】

  • GET /v1/customers(無搜尋條件時)

  • GET /v1/customers/search(有搜尋條件時)

【回傳結構】 dict 含 total_found, returned, customers[]。 每個 customer 包含 id, name, email, phone, tags, created_at。

ParametersJSON Schema
NameRequiredDescriptionDefault
search_keywordNo搜尋關鍵字(姓名、email、電話)
max_resultsNo最多回傳筆數

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It discloses the underlying Shopline API endpoints (GET /v1/customers vs /v1/customers/search) and return structure (total_found, returned, customers[]). This adds valuable behavioral context beyond the basic listing, though it doesn't mention pagination or side effects.

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?

Well-structured with clear sections (用途, API, 回傳結構). Every sentence provides useful information, no redundancy, and it is front-loaded with the core purpose. Appropriate length for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description compensates by documenting the return structure. It covers the different API paths based on search, differentiates from the profile tool, and lists the customer fields returned. Complete for a list tool with two parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds meaning by explaining that search_keyword triggers the search API and lists searchable fields (姓名、email、電話), which clarifies parameter behavior beyond the schema. max_results is not elaborated but the return structure hints at its role.

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?

Description states '取得客戶列表' (get customer list) with keyword search support, and explicitly distinguishes from get_customer_profile for full customer info. The verb+resource is specific and differentiates from the sibling tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear usage context: '查詢特定客戶或瀏覽客戶清單' (query specific customer or browse customer list). Explicitly names get_customer_profile as the alternative when full profile is needed, fulfilling the when-to-use and alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_custom_fieldsA

取得商店定義的客戶自訂欄位清單。

【用途】 查看商店在客戶資料上設定了哪些額外自訂欄位(如生日、偏好、備註等)。 用於了解客戶資料結構或分析資料完整度。

【呼叫的 Shopline API】

  • GET /v1/custom_fields

【回傳結構】 dict 含 total, fields[]。 每個 field 包含 id, name, type, options 等。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose the HTTP method (GET /v1/custom_fields) and return structure, implying a read-only operation. However, it omits details like authentication requirements, potential rate limits, or whether empty results are handled, so transparency is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured with sections for purpose, API call, and return structure. Each line adds value without redundancy, and the main summary is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (no parameters, no output schema) the description is complete: it defines the tool's purpose, the exact API endpoint, and the return format with field examples. This is sufficient for an agent to select and invoke the tool correctly.

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?

There are zero parameters and the schema is empty, so the baseline is 4. The description adds no parameter semantics because none exist, but it does explain what the return dict contains, which is more relevant here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states '取得商店定義的客戶自訂欄位清單' (get the store's list of custom fields for customers), specifying a concrete verb and resource. It distinguishes itself from sibling tools like list_customers or list_customer_groups by focusing on custom field definitions rather than customer data or groups.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use it: to understand customer data structure or analyze data completeness. It provides clear context but does not explicitly mention when not to use it or name alternative tools, so it falls short of full guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_delivery_optionsA

取得商店啟用的配送方式清單。

【用途】 查看商店目前設定的所有配送方式,例如宅配、超商取貨、 門市自取等。適合確認可用配送渠道或分析訂單配送偏好。

【呼叫的 Shopline API】

  • GET /v1/delivery_options

【回傳結構】 dict 含 total, delivery_options[]。 每個 delivery_option 包含 id, name, delivery_type, enabled, position, price, created_at 等。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It specifies the API endpoint and return structure but does not disclose pagination, rate limits, or whether the list is filtered by 'enabled' or includes all options with a flag. Ambiguity exists between the phrase 'enabled delivery options' and the inclusion of an 'enabled' field.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with headings and bullet-style formatting. It is concise but includes useful details. Minor redundancy in listing examples could be trimmed, but overall it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description provides the return structure with fields. However, it lacks information on pagination, sorting, and whether the list is truncated. For a list operation, this is a notable gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, so the input schema is fully covered. The description does not need to add parameter information, and it appropriately omits any.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists enabled delivery options for a store, with examples like home delivery, convenience store pickup, and in-store pickup. This distinguishes it from sibling tools like get_delivery_option_detail.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use this tool: to view all shipping methods and analyze delivery preferences. It does not explicitly state when not to use it or provide alternatives, but the context is clear given sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_flash_price_campaignsA

取得快閃價格活動列表。

【用途】 瀏覽商店所有快閃特賣(限時特價)活動,了解活動名稱、狀態與時間範圍。 可取得 campaign_id 後進一步呼叫 get_flash_price_campaign_detail 查詢完整詳情。

【呼叫的 Shopline API】

  • GET /v1/flash_price_campaigns

【回傳結構】 dict 含 total_found, returned, items[]。 每筆包含 id, title, status, start_at, end_at, created_at。

ParametersJSON Schema
NameRequiredDescriptionDefault
max_resultsNo最多回傳筆數

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the return structure (dict with total_found, returned, items[] and field names) and the underlying API endpoint. It does not mention pagination, ordering, or authorization, but for a read-only list operation, this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (purpose, API, return structure) and is concise. There is minor redundancy between the opening line and the purpose section, but overall it is efficient and organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, and the description provides the return structure (compensating for the absence of an output schema), explains the purpose, and suggests the detail tool. It could mention pagination behavior, but the max_results parameter in the schema covers that, so the description is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents the only parameter (max_results) with a description, so the description adds no additional parameter meaning. With 100% schema coverage, the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves a list of flash price campaigns, specifies the scope (all flash sales with name, status, time range), and distinguishes it from get_flash_price_campaign_detail by explaining that campaign_id can be used for further detail lookup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides a clear usage context (browsing all flash sale campaigns) and explicitly points to get_flash_price_campaign_detail as the next step for full details, implying when to use each. However, it does not discuss alternatives like list_promotions or search_promotions, so it's not a full exclusionary guide.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_giftsA

取得贈品列表,支援依關鍵字搜尋。

【用途】 瀏覽或搜尋商店所有贈品設定,了解贈品名稱、庫存與適用條件。 若提供搜尋關鍵字則呼叫搜尋端點,否則列出所有贈品。

【呼叫的 Shopline API】

  • GET /v1/gifts(無搜尋條件時)

  • GET /v1/gifts/search(有搜尋條件時)

【回傳結構】 dict 含 total_found, returned, items[]。 每筆包含 id, name, sku, quantity, status, created_at。

ParametersJSON Schema
NameRequiredDescriptionDefault
search_keywordNo搜尋關鍵字(贈品名稱)
max_resultsNo最多回傳筆數

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the conditional API calls (GET /v1/gifts vs GET /v1/gifts/search), the overall return structure (dict with total_found, returned, items[]), and the fields per item. This adds meaningful behavioral context beyond the schema, though it does not explicitly state it is read-only.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured with clear sections for usage, API endpoints, and return structure. Each section contributes useful information without fluff or repetition, keeping the entire description compact.

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?

Despite having no output schema, the description provides a detailed return structure including fields like id, name, sku, quantity, status, and created_at, which is helpful. However, it mentions '適用條件' (applicable conditions) in the purpose but does not list such a field in the return structure, leaving a slight ambiguity. Overall, it is sufficient for a simple list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description reinforces the search keyword's role (gift name) but adds no new parameter-specific details beyond the schema. The return structure mention is not directly about parameters, so it doesn't elevate the score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states '取得贈品列表' (get gift list) and explains it is for browsing or searching all gift settings, covering name, stock, and applicable conditions. It distinguishes from sibling tools like create_gift/update_gift by focusing on listing and provides two endpoints based on search condition.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly specifies when to use each endpoint: if a search keyword is provided, the search endpoint is called; otherwise, the list endpoint. It states the purpose (browse/search) but does not explicitly contrast with alternatives (e.g., create/update), though the context makes this fairly obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_member_point_rulesA

取得商店的會員點數規則設定。

【用途】 查看商店設定的點數回饋規則(消費回饋比例、點數到期規則等)。 用於分析會員忠誠度計畫或對照客戶點數異動。

【呼叫的 Shopline API】

  • GET /v1/member_point_rules

【回傳結構】 dict 含 total, rules[]。 每條規則含 id, name, type, value, conditions 等。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of disclosing behavior. It explicitly reveals the API endpoint (GET /v1/member_point_rules) implying a read-only operation, and outlines the return structure (dict with total and rules[]). It stops short of discussing authentication, rate limits, or error handling, but for a simple listing tool the level of detail is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections: a one-line summary, purpose, API call, and return structure. Each section adds value without redundancy. The main verb and resource are front-loaded, making it easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given its simplicity (zero parameters, no output schema), the description provides the essential details: what the tool does, the API call, and what the response contains. It names fields like id, name, type, value, and conditions, which is enough for an agent to understand the tool's output. No additional context appears necessary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so the baseline is 4. The description adds no parameter-specific information, and none is needed. It also does not contradict the schema, as the schema remains complete with 100% coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves the store's member point rules settings, with specific examples of rule types (consumption reward ratio, point expiration). This distinguishes it from sibling tools like list_membership_tiers (tiers) or adjust_customer_member_points (modification) since it focuses on rules configuration.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly notes the intended use cases: analyzing membership loyalty programs and comparing customer point changes. It does not identify when to avoid this tool or mention specific alternatives, but the clear purpose provides adequate contextual guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_membership_tiersA

取得商店的所有會員等級定義。

【用途】 查看商店設定了哪些會員等級、升等門檻、各等級權益。 用於分析會員結構或確認等級設定。

【呼叫的 Shopline API】

  • GET /v1/membership_tiers

【回傳結構】 dict 含 total, tiers[]。 每個 tier 包含 id, name, threshold, benefits 等。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses the underlying Shopline API endpoint (GET /v1/membership_tiers) and the return structure (dict with total and tiers[] including id, name, threshold, benefits), implicitly signaling a read-only operation. It lacks explicit statements about safety, rate limits, or pagination, but for a zero-parameter list operation, this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured, with labeled sections for purpose, API, and return structure. It is front-loaded with the main action, and every sentence provides useful information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no params, no output schema), the description is complete: it specifies the exact purpose, the API call, and the expected return shape with key fields. An agent can confidently invoke this tool without additional context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and an empty schema, so there is nothing to describe. The baseline for zero-parameter tools is 4, and the description appropriately adds no parameter-specific information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states it retrieves all membership tier definitions for a store, using a specific verb '取得' and resource '會員等級'. It also mentions the use cases (analyzing membership structure or confirming tier settings), which clearly distinguishes it from related sibling tools like list_member_point_rules or get_customer_tier_history.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool: to view membership tier definitions, upgrade thresholds, and benefits, for analyzing membership structure or confirming settings. However, it does not explicitly state when not to use it or name alternative tools, so it falls short of a perfect 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_merchantsA

取得所有商家清單。

【用途】 查看此 API token 可存取的商家帳號列表。 適合多商家環境下確認可操作的商家範圍。

【呼叫的 Shopline API】

  • GET /v1/merchants

【回傳結構】 dict 含 total, merchants[]。 每個 merchant 包含 id, name, handle, currency, locale, created_at 等。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Since no annotations are provided, the description carries the full burden. It discloses the underlying API endpoint, the return structure (dict with total and merchants[]), and the fields per merchant. It does not mention pagination, errors, or rate limits, but for a simple read-only list tool, this is reasonable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (purpose, API call, return structure) and uses concise, information-dense sentences. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, no-output-schema tool, the description is highly comprehensive. It explains the merchant scope, the exact API path, and the response shape including field names, which is more than sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the schema is empty. Per the rubric, 0 params yields a baseline of 4. The description adds no parameter-specific info because none are needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves all merchants ('取得所有商家清單') and elaborates that it lists merchant accounts accessible by the API token. This distinguishes it from siblings like get_merchant_detail, which retrieves a single merchant, and other list tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides a clear usage context: confirming the merchant scope in multi-merchant environments ('適合多商家環境下確認可操作的商家範圍'). However, it does not explicitly name alternatives or state when not to use it, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_paymentsA

取得商店啟用的付款方式清單。

【用途】 查看商店目前設定的付款方式,例如信用卡、ATM 轉帳、 貨到付款、第三方支付等。適合確認可用付款渠道或做訂單 付款方式分析的參考。

【呼叫的 Shopline API】

  • GET /v1/payments

【回傳結構】 dict 含 total, payments[]。 每個 payment 包含 id, name, payment_type, enabled, position, created_at 等。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the underlying API endpoint (GET /v1/payments), the return structure (dict with total and payments[]), and key fields. It also clarifies that only enabled payments are returned. This goes beyond a minimal description, though it omits potential edge cases like pagination or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured into purpose, API, and return sections. It is slightly verbose but every section adds relevant information. The main sentence is front-loaded and clear, with no redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple zero-parameter list tool, the description covers purpose, use cases, API endpoint, and return structure. It lacks details like pagination or authentication requirements, but those are likely unnecessary for this tool's simplicity. Overall, it is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the input schema is empty and schema coverage is 100%. The description adds value by detailing the return structure and field names, which is useful for an agent even without parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function as retrieving the store's enabled payment methods (取得商店啟用的付款方式清單), with specific examples like credit card, ATM, and cash on delivery. This is a specific verb+resource statement that distinguishes it from other list_* siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear use cases: confirming available payment channels and as a reference for order payment analysis. It does not explicitly mention exclusions or alternatives, but the context is clear enough for an agent to decide when to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_product_reviewsA

取得商品評價列表。

【用途】 瀏覽所有商品評價的摘要清單,了解顧客對商品的整體評分與回饋。可用於監控 評價品質、找出評分偏低的商品,或追蹤近期新增的評論。若需查看單一評價的 完整內容(含圖片、店家回覆等),請改用 get_product_review_detail。

【呼叫的 Shopline API】

  • GET /v1/product_review_comments

【回傳結構】 dict 含 total_found, returned, reviews[]。 每個 review 包含 id, product_id, product_name(多語系翻譯優先取中文), rating(評分,通常 1-5), content(評價內容摘要), created_at。

ParametersJSON Schema
NameRequiredDescriptionDefault
max_resultsNo最多回傳筆數

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description properly carries the burden by disclosing the API endpoint (GET /v1/product_review_comments), the return structure (dict with total_found, returned, reviews[]), and per-review fields (id, product_id, product_name, rating, content, created_at). It also notes that content is a summary and product_name defaults to Chinese, adding useful behavioral context. It doesn't explicitly state pagination or rate limits, but the provided details are solid.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections for purpose, usage, API, and return structure. Each sentence delivers useful information without redundancy or fluff, making it appropriately sized and easy to scan.

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?

The tool is simple (1 optional parameter, no output schema), and the description covers all essential aspects: purpose, usage alternative, API endpoint, and detailed return structure. It is complete enough for an agent to invoke correctly without needing further elaboration.

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 already fully describes the only parameter (max_results with default 50 and Chinese description). The tool description does not add extra semantics beyond what the schema provides, so the baseline of 3 applies; the schema covers 100% of parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb '取得' (get/list) and resource '商品評價列表' (product review list), clearly stating it lists product review summaries. It also distinguishes itself from get_product_review_detail by noting the sibling handles full review content, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit use cases: monitoring review quality, finding low-rated products, tracking recent comments. It also directly names the alternative tool (get_product_review_detail) for full content with images and merchant replies, making when-to-use and when-not-to-use crystal clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_product_subscriptionsA

取得商品訂閱列表。

【用途】 瀏覽所有商品訂閱紀錄,了解客戶訂閱哪些商品、訂閱狀態與週期設定。 可取得 subscription_id 後進一步呼叫 get_product_subscription_detail 查詢完整詳情。 適合分析訂閱收入與客戶留存率。

【呼叫的 Shopline API】

  • GET /v1/product_subscriptions

【回傳結構】 dict 含 total_found, returned, items[]。 每筆包含 id, customer_id, product_id, status, frequency, next_billing_at, created_at。

ParametersJSON Schema
NameRequiredDescriptionDefault
max_resultsNo最多回傳筆數

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral transparency burden. It compensates by disclosing the return structure (dict with total_found, returned, items[] and item fields) and the API endpoint GET /v1/product_subscriptions. This goes beyond a basic statement, though it does not explicitly mention it is read-only or discuss pagination 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?

The description is well-structured with sections for purpose, usage, API endpoint, and return structure. The first sentence front-loads the purpose, and every section adds meaningful information without redundancy. It is appropriately sized for the tool's simplicity.

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?

Despite having no output schema, the description provides a complete overview: it explains what the tool does, how to use it (with a pointer to the detail tool), the API endpoint, and the exact return structure. This is fully sufficient for a list tool with one optional parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the only parameter (max_results with '最多回傳筆數'), so the schema already fully documents it. The description adds no additional parameter semantics, leaving the baseline at 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool '取得商品訂閱列表' (get product subscription list) with a specific verb and resource. It further elaborates on listing all subscription records to understand customer subscriptions, statuses, and cycle settings, and explicitly references the sibling tool get_product_subscription_detail for full details, distinguishing it from similar list tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage context: it is suitable for analyzing subscription revenue and customer retention, and it advises calling get_product_subscription_detail after obtaining subscription_id for complete details. This provides a clear alternative and conditions for use, fulfilling the when/alternatives guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_promotionsA

取得促銷活動列表,支援依狀態篩選。

【用途】 瀏覽商店目前所有促銷活動,了解進行中、已排程或已結束的促銷。 可用於分析促銷策略,或取得 promotion_id 後進一步查詢詳情。

【呼叫的 Shopline API】

  • GET /v1/promotions

【回傳結構】 dict 含 total_found, returned, items[]。 每筆包含 id, title, status, discount_type, start_at, end_at。

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNo促銷狀態篩選,例如 'active'、'inactive'、'scheduled'
max_resultsNo最多回傳筆數

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of behavioral disclosure. It transparently reveals the API endpoint (GET /v1/promotions) and the return structure (dict with total_found, returned, items[] and item fields), which is valuable behavioral context beyond the schema. It does not mention pagination, authentication, or error behavior, but it goes well beyond a minimal description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-organized with clear sections (用途, API, 回傳結構). Every sentence adds information—use cases, endpoint, and return structure—without redundancy or filler. The main purpose is front-loaded in the first line.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with no annotations and no output schema, the description is fairly complete: it provides the endpoint, return shape, and common fields, plus use-case context. It could be enhanced by explicitly explaining pagination semantics or naming complementary tools like search_promotions or get_promotion_detail, but it is adequate for an agent to select and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% parameter description coverage for status and max_results. The description adds little beyond '支援依狀態篩選' and the return field list; it does not enrich the parameter semantics meaningfully. Baseline 3 is appropriate because the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the core function ('取得促銷活動列表') and adds the status-filter capability, making the purpose specific to listing promotions. It implies a distinction from detail/analysis tools by mentioning using promotion_id for further detail, but it does not explicitly contrast with sibling search_promotions, 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?

The '用途' section gives clear context: browse all promotions, analyze promotion strategy, or retrieve a promotion_id for later detail queries. This indicates when to use the tool, though it does not explicitly state when not to use it or name alternative tools, so it lacks full exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_purchase_ordersA

【用途】 取得 POS 採購單列表,用於了解進貨狀況與採購歷史。

【呼叫的 Shopline API】

  • GET /v1/pos/purchase_orders

【回傳結構】

  • total_found: 查詢到的採購單總數

  • returned: 實際回傳筆數

  • purchase_orders: 每筆含 id、status、total、created_at

ParametersJSON Schema
NameRequiredDescriptionDefault
max_resultsNo最多回傳筆數

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the exact API endpoint (GET /v1/pos/purchase_orders), the read-only nature (via GET), and outlines the return structure (total_found, returned, purchase_orders with fields). This goes beyond a minimal statement and provides useful behavioral context. However, it doesn't discuss pagination or limits beyond the schema, so a 4.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (purpose, API endpoint, return structure) and each sentence provides distinct value. It is concise and front-loaded with the purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with one optional parameter, the description covers purpose, API call, and return structure. It lacks explicit pagination guidance, but the schema handles the max_results default. This is complete enough for an agent to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 100% of the single parameter (max_results) with a description. The tool description does not repeat or add parameter semantics, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb '取得' (get) and resource 'POS 採購單列表' (POS purchase order list), and explains its purpose ('了解進貨狀況與採購歷史' / understand stocking status and purchase history). This clearly distinguishes it from sibling tools like get_purchase_order_detail or create_purchase_order.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides a clear use case: understanding purchase status and history. It doesn't explicitly mention alternatives or exclusions, but the list-vs-detail distinction is implied by naming the resource as a list. This is clear context without exclusions, so a 4.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_return_ordersA

取得退貨單列表,可依建立日期區間篩選。

【用途】 查詢特定時段內的退貨申請清單,了解退貨狀況與數量。提供退貨單的摘要資訊 (含狀態、對應原始訂單、退款金額及退貨品項數)。若需取得單一退貨單的完整 品項明細,請改用 get_return_order_detail。

注意:analytics_tools 中的 get_refund_summary 也使用同一端點,但以彙總分析 為目的;本工具提供的是原始列表檢視,適合逐筆查閱退貨紀錄。

【呼叫的 Shopline API】

  • GET /v1/return_orders

【回傳結構】 dict 含 total_found, returned, return_orders[]。 每個 return_order 包含 id, status, order_id, total(TWD float), items_count, created_at。

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateNo查詢起始日期(ISO 8601 格式,如 2024-01-01T00:00:00Z)
end_dateNo查詢結束日期(ISO 8601 格式,如 2024-12-31T23:59:59Z)
max_resultsNo最多回傳筆數

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the return structure (dict with total_found, returned, return_orders[]) and explains that it returns summary info, not full item details. It also names the underlying API endpoint. Missing an explicit statement about read-only nature or edge-case behavior, but the GET method and general clarity earn it a 4.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with distinct sections (purpose, usage, API, return structure), making it easy to scan. There is some redundancy between the opening line and the usage section, but overall it is efficient and each section contributes useful 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?

For a list tool with no output schema, the description compensates by detailing the return structure and field meanings. It also provides the API endpoint and sibling distinctions, giving an agent all necessary context to select and invoke the tool correctly. No significant gaps are present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with each parameter described. The description adds value by clarifying that the date range filters by '建立日期' (creation date), which is not explicit in the schema. This interpretive context enhances parameter understanding beyond the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists return orders and can be filtered by creation date range. It explicitly differentiates from siblings by mentioning get_return_order_detail for full item details and get_refund_summary for aggregate analysis, making its role distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit usage context: querying return orders in a time period for status and quantity review. It also gives clear alternatives: use get_return_order_detail for single-order detail and get_refund_summary for aggregate analysis, effectively stating when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_store_creditsA

取得所有客戶的儲值金餘額列表。

【用途】 瀏覽客戶儲值金餘額概況,了解儲值金發放與使用狀況。 可用於計算儲值金負債、找出高餘額客戶。

【呼叫的 Shopline API】

  • GET /v1/user_credits

【回傳結構】 dict 含 total_found, returned, total_balance, credits[]。 每個 credit 包含 customer_id, balance (TWD float)。

ParametersJSON Schema
NameRequiredDescriptionDefault
max_resultsNo最多回傳筆數

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses the underlying API endpoint (GET /v1/user_credits), and the complete return structure including all fields (total_found, returned, total_balance, credits[] with customer_id and balance). This is substantial behavioral context. It does not explicitly state that this is a read-only operation or mention rate limits, but for a listing tool with no mutation, this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-organized with clear sections (用途, API, 回傳結構). Every sentence adds value, and the information is presented in a scannable structure. It is neither too terse nor excessively verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is highly complete for a list tool: it states the purpose, use cases, underlying API, and detailed output structure. Since no output schema exists in the tool definition, this in-description return schema is essential. It lacks explicit pointers to sibling operations or pagination behavior, but remains sufficient for an agent to correctly select and invoke the 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?

The single parameter max_results is fully described in the schema ('最多回傳筆數'), giving 100% coverage. The description adds context by explaining the response contains 'total_found' and 'returned', helping the agent understand the effect of max_results. It does not fully compensate for any ambiguity about 'all customers' vs. the maximum results limit, but the schema already handles the parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear verb+resource statement: '取得所有客戶的儲值金餘額列表' (get all customers' store credit balance list). It specifies the resource (store credit balances) and distinguishes this from sibling tools like update_customer_store_credits, which is a write operation. It also adds use cases, reinforcing specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly explains when to use the tool: '瀏覽客戶儲值金餘額概況' (browse overview), and gives concrete applications like calculating store credit liability ('計算儲值金負債') and identifying high-balance customers ('找出高餘額客戶'). However, it does not mention alternatives or when not to use it, so it stops short of a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_taxesA

取得商店設定的稅率清單。

【用途】 查看商店目前設定的稅率規則,例如營業稅、消費稅等。 適合確認稅率設定或在財務分析時核對稅務規則。

【呼叫的 Shopline API】

  • GET /v1/taxes

【回傳結構】 dict 含 total, taxes[]。 每個 tax 包含 id, name, rate, included_in_price, country, region, created_at 等。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses the underlying API call (GET /v1/taxes) and the return structure (dict with total, taxes[], and fields like id, name, rate, included_in_price). This gives the agent a clear expectation of output, though it does not explicitly state read-only semantics, the name 'list' and 'GET' imply it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear headers (【用途】, 【呼叫的 Shopline API】, 【回傳結構】) and every sentence provides value. It is compact, front-loaded with the main purpose, and avoids any filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple no-argument list operation, the description is complete: it covers purpose, usage context, API endpoint, and return structure. Since there is no output schema, the description properly fulfills the need to explain the return format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema coverage is trivially 100%. The description correctly does not add unnecessary parameter details, earning the baseline of 4 for a no-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with '取得商店設定的稅率清單' (get the store's configured tax rate list), which is a specific verb+resource statement. It also provides examples (營業稅、消費稅) and clearly distinguishes itself from all sibling tools that focus on orders, products, customers, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 【用途】 section states when to use this tool: '適合確認稅率設定或在財務分析時核對稅務規則' (suitable for confirming tax settings or checking tax rules during financial analysis). This provides clear context, though it does not explicitly mention alternatives or when-not-to-use, which is acceptable given no comparable tax tool exists among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

query_ordersA

依時間區間、訂單狀態、通路來源查詢訂單列表。回傳精簡的訂單摘要。

【呼叫的 Shopline API】

  • GET /v1/orders/search

  • GET /v1/orders

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYes起始日期 YYYY-MM-DD
end_dateYes結束日期 YYYY-MM-DD
statusNo訂單狀態篩選
channelNo通路篩選: online=線上官網, pos=實體門市, all=全部all
store_nameNo門市名稱篩選(如:松菸誠品、新光A11)
max_resultsNo最多回傳筆數

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry behavioral transparency. It mentions calling two GET endpoints ('GET /v1/orders/search' and 'GET /v1/orders'), indicating a read-only operation, but does not explicitly state non-destructiveness or other traits like rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is relatively concise with two sentences and an API list. It front-loads the purpose, but the API list adds some redundancy. No wasted sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 6 parameters and no output schema, the description misses details like output format, pagination, and ordering. It is adequate but lacks complete context for an agent to fully understand the return structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description does not add significant meaning beyond the schema; it only reiterates filter categories already defined in the input schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states it queries order lists by time range, status, and channel, returning a concise summary. It clearly distinguishes from sibling tools like get_order_detail or get_archived_orders.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for filtering orders but does not explicitly contrast with alternatives or provide when-not conditions. Usage is implied by the tool name and sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

redeem_couponA

[WRITE] 核銷(使用)優惠券。

【用途】 在結帳或特定場景下核銷優惠券,將優惠券標記為已使用狀態。 適合 POS 場景或 API 整合的結帳流程。

【呼叫的 Shopline API】

  • POST /v1/coupons/redeem

【回傳結構】 dict 含 success: bool, resource_id: str, message: str, result: dict。

【副作用】

  • 優惠券狀態變更為已使用,不可再次使用(一次性優惠券)

  • 核銷紀錄會寫入系統,影響促銷統計報告

  • 操作通常不可逆,請確認核銷對象與條件正確

ParametersJSON Schema
NameRequiredDescriptionDefault
coupon_dataYes優惠券核銷資料,通常包含 coupon_code 與訂單或客戶識別資訊

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully carries the burden of behavioral disclosure. It explicitly lists side effects (coupon becomes used, affects statistics, irreversible), gives the return structure, and notes the API endpoint. This exceeds typical transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-organized with clear sections for purpose, usage, API, return structure, and side effects. Every section is informative and no content is redundant. It is appropriately sized and front-loaded.

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?

The description is complete for a mutation tool with no annotations and no output schema: it covers purpose, appropriate scenarios, the underlying API call, return structure, and side effects including irreversibility. It provides sufficient context for an agent to invoke the tool safely.

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?

The only parameter is coupon_data, and the schema description already provides a basic meaning (usually contains coupon_code and order/customer info). The tool description adds no additional parameter elaboration, so the score stays at the baseline of 3 given 100% schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: '核銷(使用)優惠券' (redeem/use coupon) and marks it as used. However, it does not explicitly differentiate from sibling tools like claim_coupon, so it misses the top score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use this tool ('適合 POS 場景或 API 整合的結帳流程' - suitable for POS scenarios or API-integrated checkout flows), but it does not mention alternatives or exclusions, such as not using it for claiming coupons.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_promotionsA

依關鍵字搜尋促銷活動。

【用途】 快速找到特定名稱的促銷活動,例如搜尋「週年慶」、「黑五」等。 搜尋結果含 id 可進一步呼叫 get_promotion_detail 取得完整資訊。

【呼叫的 Shopline API】

  • GET /v1/promotions/search

【回傳結構】 dict 含 total_found, returned, items[]。 每筆包含 id, title, status, discount_type, start_at, end_at。

ParametersJSON Schema
NameRequiredDescriptionDefault
keywordYes搜尋關鍵字(促銷名稱)
max_resultsNo最多回傳筆數

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the underlying API endpoint (GET /v1/promotions/search) and the return structure (dict with total_found, returned, items[] and per-item fields). This gives the agent a clear picture of what will happen, though it doesn't detail edge cases like exact-match semantics or pagination behavior beyond the response counts.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is highly structured with clear sections (用途, API, 回傳結構). It is concise, uses bullet-like formatting, and every sentence contributes meaningful information. No fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple search tool with 2 parameters and no output schema, the description provides the essential information: purpose, API endpoint, and return fields. It even mentions the next step (get_promotion_detail) and includes pagination-related counts (total_found, returned). Lacks examples of actual requests or deeper pagination logic, but overall it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: both keyword and max_results are described in the input schema. The description adds examples of keyword values and explains that results contain ids for further lookup, but it mostly reinforces what the schema already says. No substantial new parameter semantics are introduced.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: searching promotions by keyword (依關鍵字搜尋促銷活動). It provides concrete examples (週年慶, 黑五) and distinguishes it from siblings by noting it returns ids for further use with get_promotion_detail, setting it apart from list_promotions and inspection tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The '用途' section provides clear context: use this to quickly find promotions by specific name. It implies this is for targeted search rather than general listing, and points to get_promotion_detail for follow-up. It stops short of explicitly naming list_promotions as the alternative for full listings, but the context is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_couponA

[WRITE] 發送優惠券給指定客戶。

【用途】 主動將優惠券發送給特定客戶,常用於行銷活動、客戶回饋、CRM 觸發場景。

【呼叫的 Shopline API】

  • POST /v1/coupons/send

【回傳結構】 dict 含 success: bool, resource_id: str, message: str, result: dict。

【副作用】

  • 優惠券發送後,目標客戶帳號中將出現對應的優惠券

  • 依優惠券設定,可能有數量限制;若庫存不足,API 會回傳錯誤

  • 部分類型的優惠券一旦發送,無法收回

ParametersJSON Schema
NameRequiredDescriptionDefault
coupon_dataYes優惠券發送資料,通常包含 coupon_id 與目標客戶識別資訊

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses side effects: coupon appears in customer account, quantity limits may cause errors, and some coupon types cannot be recalled. It also mentions the API call and error conditions. However, it does not discuss idempotency, auth requirements, or rate limits, which are relevant for a write operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-organized with clear sections: purpose, API endpoint, return structure, and side effects. It starts with a concise one-line summary and each section contributes valuable information without redundancy. The length is appropriate for the tool's complexity.

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?

Despite no output schema, the description explicitly defines the return structure (dict with success, resource_id, message, result). It covers purpose, API, side effects, and error conditions. For a simple write tool with one parameter, this is highly complete and leaves no significant gaps for an agent to misuse it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has one parameter, coupon_data, with a description: "優惠券發送資料,通常包含 coupon_id 與目標客戶識別資訊". Since schema description coverage is 100%, the baseline is 3. The tool description itself does not add further detail about the parameter structure beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear, specific statement: "[WRITE] 發送優惠券給指定客戶" (Send coupon to specified customer). This directly states the action (send), resource (coupon), and target (specified customer), and also lists common use cases like marketing campaigns and CRM triggers, which differentiate it from sibling tools such as claim_coupon and redeem_coupon.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context: "常用於行銷活動、客戶回饋、CRM 觸發場景" (commonly used in marketing campaigns, customer feedback, CRM trigger scenarios). It does not explicitly name alternatives or state when not to use the tool, but the '主動' (proactive) framing implies distinction from customer-initiated actions like claim_coupon.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_order_messageA

[WRITE] 發送與特定訂單相關的對話訊息。

【用途】 針對指定訂單發送訊息給買家,適用於出貨通知、客服回覆、訂單異常說明等場景。

【呼叫的 Shopline API】

  • POST /v1/conversations/order-messages

【回傳結構】 dict 含 success: bool, resource_id: str, message: str, conversation: dict。

【副作用】

  • 在買家的對話收件匣中新增一則訊息,買家可即時收到通知

  • 訊息送出後無法撤回或修改

ParametersJSON Schema
NameRequiredDescriptionDefault
message_dataYes訊息資料,例如 {"order_id": "ORD123", "message": "您的訂單已出貨,請注意查收!", "sender_type": "merchant"}

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

由於沒有 annotations,描述完全承擔了行為揭露的責任。它明確說明副作用:在買家對話收件匣新增訊息、買家即時收到通知、訊息送出後無法撤回或修改,並提供回傳結構與呼叫的 API,讓 agent 充分理解此操作的不可逆性及影響。

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?

描述以清晰標題分段(用途、API、回傳結構、副作用),目的句置於開頭,每個段落皆提供具體且有價值的資訊,無冗餘內容,易於快速掃讀與理解。

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?

作為一個帶有巢狀物件參數的寫入工具,描述完整涵蓋了副作用、回傳結構、適用情境與底層 API。雖然無輸出 schema,但已提供足夠資訊供 agent 判斷是否使用及預期結果,整體完整性高。

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 對唯一參數 message_data 有 100% 描述覆蓋,包含型別與範例,因此 schema 已承擔主要說明責任。描述本身未額外補充參數語法或格式細節,符合 baseline 3 的情境。

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?

描述以明確的動詞與資源說明工具用途:'發送與特定訂單相關的對話訊息',並補充適用於出貨通知、客服回覆等情境。這與兄弟工具 send_shop_message 形成對比,能清楚區分這是一個針對特定訂單的訊息發送工具,而非一般店鋪訊息。

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?

描述列出具體適用場景(出貨通知、客服回覆、訂單異常說明),提供清晰的使用情境。但未明確指出何時不應使用此工具,也未提及替代工具(如 send_shop_message),因此缺少排除性指引。

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_shop_messageA

[WRITE] 發送一般商店對話訊息。

【用途】 對客戶發送非特定訂單的通用訊息,適用於行銷通知、活動公告、客服主動聯繫等場景。

【呼叫的 Shopline API】

  • POST /v1/conversations/shop-messages

【回傳結構】 dict 含 success: bool, resource_id: str, message: str, conversation: dict。

【副作用】

  • 在客戶的對話收件匣中新增一則商店訊息,客戶可即時收到通知

  • 訊息送出後無法撤回或修改

  • 大量發送時請注意 Shopline 的訊息頻率限制,以避免觸發反垃圾機制

ParametersJSON Schema
NameRequiredDescriptionDefault
message_dataYes訊息資料,例如 {"customer_id": "CUST456", "message": "感謝您的支持,本週特惠活動開始囉!", "sender_type": "merchant"}

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

無 annotations,描述自行承擔行為揭露責任。清楚列出副作用:無法撤回/修改、客戶即時通知、大量發送需注意頻率限制,並附上 API 路徑與回傳結構,提供相當豐富的上下文。

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?

以段落式結構呈現,四段各司其職,沒有冗詞。長度稍長但每段都提供實用資訊,適合複雜工具。

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?

對一個寫操作工具而言,已涵蓋目的、API、回傳結構與副作用,資訊足以讓 agent 正確使用。未提及錯誤處理或權限需求,但考量單一參數的簡單度,完整度已相當高。

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 對唯一的 message_data 參數描述已達 100% 涵蓋,且包含範例。描述中並未進一步補充參數語義,故依規則給出基準分 3。

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?

明確指出「發送一般商店對話訊息」,以及「非特定訂單的通用訊息」,與兄弟工具 send_order_message 做出區隔。動詞+資源+適用情境清楚,具備明確目的。

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?

說明適用於行銷通知、活動公告、客服主動聯繫等場景,並強調「非特定訂單」,隱含排除了 order-specific 訊息。但未明確提及「當需要發送訂單相關訊息時請改用 send_order_message」,因此略少一分。

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

split_orderA

[WRITE] 拆分訂單為多個子出貨單。

【用途】 將一筆訂單拆分為多個子單,適用於商品分批到貨或不同倉庫分開出貨的場景。 split_config 為字典,內容依 Shopline API 規格定義各子單。

【呼叫的 Shopline API】

  • POST /v1/orders/{order_id}/split

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 原訂單被拆分為多個子訂單,原訂單狀態可能變更

  • 操作通常不可逆,請確認拆單設定正確後再執行

  • 已出貨的訂單無法拆單

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYes訂單 ID
split_configYes拆單設定,包含各子單的商品與配送資訊

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully carries the burden of behavioral disclosure. It explicitly lists side effects: original order status may change, operation is usually irreversible, and shipped orders cannot be split. It also includes the API endpoint and return structure, providing comprehensive behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections: [WRITE], 用途 (purpose), API call, return structure, and side effects. It is concise, front-loaded with the main action, and every sentence provides meaningful information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (write operation, nested object, no output schema), the description is remarkably complete. It covers purpose, use cases, API endpoint, return structure, side effects, and constraints (shipped orders cannot be split). No critical information is missing for an agent to decide and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for both parameters. The description adds value by explaining split_config is a dictionary following Shopline API specifications, and clarifies that it defines each sub-order. It does not detail the internal structure, but the reference to the spec is useful guidance beyond the schema's generic description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: '拆分訂單為多個子出貨單' (split an order into multiple sub-shipments), with a specific verb (split) and resource (order). It distinguishes from siblings by focusing on the split operation, which is unique among the listed tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear context for when to use: '適用於商品分批到貨或不同倉庫分開出貨的場景' (scenarios of goods arriving in batches or separate warehouses). It also gives an exclusion: '已出貨的訂單無法拆單' (shipped orders cannot be split). However, it does not explicitly name alternative tools or provide broader when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_addon_productA

[WRITE] 更新加購商品資料。

【用途】 修改指定加購商品的名稱、價格、圖片等欄位。僅傳入要修改的欄位。

【呼叫的 Shopline API】

  • PUT /v1/addon_products/{addon_product_id}

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 修改指定加購商品的資料,變更立即生效

  • 不可復原,但可再次呼叫此工具覆蓋

ParametersJSON Schema
NameRequiredDescriptionDefault
addon_product_idYes加購商品 ID
addon_dataYes要更新的加購商品欄位,例如 {name, price, ...}

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It marks the operation as [WRITE], discloses the exact Shopline API endpoint, return structure, and side effects (immediate effect, irreversible but can be overwritten). This is strong disclosure, though it omits permission requirements and error/failure behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description uses clear section headers (Purpose, API, Return Structure, Side Effects) with bullets, and each section contributes non-redundant information. It is slightly verbose but well-organized and front-loaded with the [WRITE] tag.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given two parameters, no output schema, and no annotations, the description covers the essential context: purpose, partial-update semantics, the underlying API call, return structure, and side effects. It does not cover error conditions or permission requirements, but the core information is present.

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 descriptions cover both parameters (100%), and the description adds the key semantic that addon_data is a partial update object—only fields to change need to be passed—with examples like {name, price, ...}. This clarifies intent beyond the schema's generic object definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool updates addon product data (更新加購商品資料) and specifies the fields that can be modified (name, price, image). It also implies partial updates by saying only the fields to change are passed, distinguishing it from list/create/quantity-specific sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides usage context by noting 'only pass in the fields to modify' (僅傳入要修改的欄位), which clarifies partial update behavior. However, it does not explicitly state when to use this tool over the alternative sibling tools (e.g., update_addon_product_quantity) or when not to use it, so guidance is incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_addon_product_quantityB

[WRITE] 更新加購商品庫存數量。

【用途】 直接以 ID 更新指定加購商品的庫存數量。

【呼叫的 Shopline API】

  • PUT /v1/addon_products/{addon_product_id}/quantity

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 指定加購商品的庫存數量將被覆蓋為新值

  • 庫存變動立即生效

ParametersJSON Schema
NameRequiredDescriptionDefault
addon_product_idYes加購商品 ID
quantityYes新的庫存數量(絕對值,非差異)

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose the main side effect: the quantity is overwritten and takes effect immediately. However, it does not mention idempotency, required permissions, or error conditions. Given the absence of annotations, this gap is significant for a write operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with sections for purpose, API call, return structure, and side effects. It is front-loaded with a WRITE tag and concise. Slight redundancy exists between the title and first line, but overall it is efficiently organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter write operation, the description covers the main behavior, API endpoint, and side effects. It lacks permission requirements and error handling expectations, but the tool is relatively simple. The return structure is described even without an output schema, which adds completeness. Adequate but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are documented. The description adds value by explaining that quantity is an absolute value, not a delta, which reinforces the schema description. It also clarifies the purpose of addon_product_id. This is above the baseline since it adds meaningful semantic context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool updates the inventory quantity of a specified add-on product by ID, using the verb '更新' (update) with a specific resource (addon product quantity). It distinguishes from the sibling tool update_addon_product_quantity_by_sku by explicitly using ID-based targeting.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it (when updating quantity by ID) but does not explicitly state when not to use it or mention the alternative by-SKU tool. It provides the calling API path but no explicit exclusions or alternative comparison, so it's adequate but lacks clear selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_addon_product_quantity_by_skuA

[WRITE] 依 SKU 更新加購商品庫存數量。

【用途】 直接以 SKU 為索引更新加購商品庫存數量,適合批次庫存同步場景。

【呼叫的 Shopline API】

  • PUT /v1/addon_products/sku/quantity

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 指定 SKU 的加購商品庫存數量將被覆蓋為新值

  • 庫存變動立即生效

ParametersJSON Schema
NameRequiredDescriptionDefault
skuYes加購商品 SKU 編號
quantityYes新的庫存數量(絕對值,非差異)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses side effects: '指定 SKU 的加購商品庫存數量將被覆蓋為新值' (the quantity will be overwritten to the new value) and '庫存變動立即生效' (changes take effect immediately). It also documents the return structure, which is strong for an unannotated mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections: [WRITE], purpose, API endpoint, return structure, and side effects. Every section is information-dense and adds value, with no waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity, the description covers the essential aspects: purpose, API endpoint, return format, and side effects. It does not mention error/edge cases or permission prerequisites, but these are not critical for such a simple operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with both parameters clearly documented (sku and quantity, including that quantity is an absolute value, not a delta). The tool description adds minimal extra meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states '依 SKU 更新加購商品庫存數量' (update add-on product inventory quantity by SKU), which is a specific verb+resource+scope. The [WRITE] prefix and the emphasis on SKU-indexed updating clearly distinguish this from the sibling tool update_addon_product_quantity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear usage scenario: '適合批次庫存同步場景' (suitable for batch inventory synchronization scenarios). This gives the agent a concrete context, but it does not explicitly name alternatives or provide when-not-to-use conditions, so it falls short of full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_affiliate_campaignA

[WRITE] 更新聯盟行銷活動。

【用途】 修改已建立的聯盟行銷活動,例如調整佣金比例、活動期限或適用條件。

【呼叫的 Shopline API】

  • PUT /v1/affiliate_campaigns/{campaign_id}

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 修改立即生效;佣金規則調整後,新訂單將套用新規則

  • 已產生的佣金紀錄不受影響(依各活動的歷史快照而定)

  • 不可復原(無版本歷史),但可再次呼叫此工具覆蓋

ParametersJSON Schema
NameRequiredDescriptionDefault
campaign_idYes聯盟行銷活動 ID
campaign_dataYes要更新的活動欄位(僅傳入需修改的欄位)

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full disclosure burden and handles it excellently. It reveals immediate effect of changes, that new orders apply new rules while existing commission records are unaffected (snapshot-dependent), irreversibility, and the ability to overwrite by calling again. The return structure (success, resource_id, message) is also disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-organized into labeled sections (用途, API, 回傳結構, 副作用) with no filler. It is front-loaded with the [WRITE] marker and purpose, and every section provides distinct actionable information, making it efficiently scannable for an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is remarkably complete: it covers the purpose, maps to the underlying API endpoint, specifies the return format, and details side effects. The partial-update semantics of campaign_data are implicit in the schema and reinforced with examples, so the agent has enough context to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with clear descriptions already present for campaign_id and campaign_data. The description adds value by giving concrete examples of campaign_data fields (commission ratio, duration, applicable conditions), which is especially helpful given additionalProperties:true and no fixed sub-schema for the nested object.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb and resource: '修改已建立的聯盟行銷活動' (modify existing affiliate campaign) with concrete examples like commission rate, duration, and conditions. The [WRITE] prefix reinforces the mutation nature, and the focus on updating existing campaigns distinguishes it from sibling tools such as create_affiliate_campaign, delete_affiliate_campaign, and list_affiliate_campaigns.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 【用途】 section explicitly frames when to use this tool: to modify already-created affiliate campaigns, with examples of adjustable fields. This provides clear usage context, though it does not explicitly name alternatives or state when NOT to use it (e.g., 'use create_affiliate_campaign for new campaigns'), which keeps it from a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_categoryA

[WRITE] 更新商品分類資料。

【用途】 修改分類名稱、排序、父分類等屬性。僅傳入要修改的欄位,未傳入的欄位不會被覆蓋。

【呼叫的 Shopline API】

  • PUT /v1/categories/{category_id}

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 分類資料變更立即生效,影響前台分類導覽顯示

  • 不可復原,但可再次呼叫此工具覆蓋

ParametersJSON Schema
NameRequiredDescriptionDefault
category_idYes分類 ID
category_dataYes要更新的分類欄位,例如 {"name": "冬季特賣"}

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Since no annotations are provided, the description carries the full transparency burden. It discloses the PUT endpoint, immediate effect on frontend navigation, non-reversibility but overwritability via repeated calls, and the return dict structure (success, resource_id, message). This is thorough behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-organized into labeled sections (purpose, API, return, side effects), each providing distinct and relevant information without redundancy. It is appropriately sized for the tool's complexity and front-loads the core purpose.

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 moderate-complexity update tool with a simple schema and no output schema, the description covers purpose, partial-update behavior, return structure, and side effects. It lacks explicit error-handling or prerequisite details (e.g., category existence validation), but is otherwise comprehensive enough for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters are already documented in the schema (100% coverage), but the description adds meaningful context by explaining partial-update semantics and giving example attribute keys (name, sort, parent) that clarify the shape of category_data beyond the schema's generic example.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool updates product category data and lists specific attributes (name, sort order, parent category), clearly distinguishing it from create/delete category siblings. The [WRITE] marker and PUT endpoint reinforce its update purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context with the partial-update instruction ('only fields passed are modified; unpassed fields won't be overwritten'), which explains when and how to use it. However, it doesn't explicitly contrast with alternatives like create_category or delete_category, so it stops short of a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_customerA

[WRITE] 更新客戶基本資料。

【用途】 修改客戶姓名、聯絡方式、生日等基本資料。僅傳入要修改的欄位,未傳入的欄位不會被覆蓋。

【呼叫的 Shopline API】

  • PUT /v1/customers/{customer_id}

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 修改客戶資料,變更立即生效

  • 不可復原(無版本歷史),但可再次呼叫此工具覆蓋

ParametersJSON Schema
NameRequiredDescriptionDefault
customer_idYes客戶內部 ID
nameNo新姓名
emailNo新 Email
phoneNo新電話
genderNo性別 (male/female/other)
birthdayNo生日 YYYY-MM-DD

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full responsibility for disclosing behavioral traits. It explicitly lists side effects: '修改客戶資料,變更立即生效' (changes take effect immediately) and '不可復原(無版本歷史),但可再次呼叫此工具覆蓋' (not reversible, no version history, but can be overwritten). It also states the return structure, making it highly transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections: [WRITE], purpose, API, return structure, and side effects. Each section is concise and necessary, providing essential information without redundancy. It is front-loaded with purpose and immediately tells the agent what the tool does.

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 6-parameter update tool with no annotations and no output schema, the description covers the key aspects: purpose, partial-update usage, API endpoint, return structure, and side effects. It lacks details on authentication requirements or error conditions, but these are not critical for the basic update operation. Overall, it is sufficiently complete for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (all 6 parameters described in the schema). The description adds valuable beyond-schema semantics: '僅傳入要修改的欄位,未傳入的欄位不會被覆蓋' (only pass fields to modify; omitted fields are not overwritten). This clarifies the partial-update behavior for all optional fields, which is not evident from the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states '更新客戶基本資料' (update customer basic info) and elaborates with '修改客戶姓名、聯絡方式、生日等基本資料' (modify name, contact, birthday, etc.). This distinguishes it from sibling tools like update_customer_tags and update_customer_store_credits, which target different aspects of a customer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on how to use the tool: '僅傳入要修改的欄位,未傳入的欄位不會被覆蓋' (only pass fields to modify; omitted fields are not overwritten). This explains partial-update usage. However, it does not explicitly mention alternatives or when not to use this tool, so it stops short of fully contrasting with sibling update tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_customer_store_creditsA

[WRITE] 調整客戶儲值金餘額。

【用途】 增加或扣除客戶儲值金,常用於儲值金充值、退款補償、活動贈送等場景。

【呼叫的 Shopline API】

  • PUT /v1/customers/{customer_id}/store-credits

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 客戶儲值金餘額立即變動

  • 異動紀錄會寫入客戶的儲值金歷史(可透過 get_customer_profile 查看)

  • 扣除後如餘額不足,API 可能回傳錯誤

ParametersJSON Schema
NameRequiredDescriptionDefault
customer_idYes客戶內部 ID
amountYes調整金額(正數=增加,負數=扣除)
noteNo調整備註/原因

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully discloses the write behavior via the '[WRITE]' tag and side effects: immediate balance change, history record via get_customer_profile, and possible insufficient-balance error. It also gives the return structure, making behavioral expectations transparent.

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?

Description is well-structured with clear sections (purpose, API, return, side effects) and front-loaded with the write intent. Every sentence provides distinct value; no fluff.

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?

The description is complete for a mutation tool: it states purpose, underlying API, return schema, and side effects/error conditions. Without an output schema annotation, providing the return structure is valuable. No significant gaps are apparent.

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?

The schema covers 100% of parameters with descriptions, including amount's positive/negative semantics and note as a reason. The description adds no additional parameter-level detail beyond the schema, so it meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with '[WRITE] 調整客戶儲值金餘額' and explicitly states '增加或扣除客戶儲值金', using a specific verb and resource. It clearly identifies the tool as adjusting store credit balances, distinguishing it from sibling read tools like list_store_credits and point adjustment tools like adjust_customer_member_points.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lists concrete use cases: '儲值金充值、退款補償、活動贈送' (top-up, refund compensation, event gifting), giving clear context for when to use. However, it does not explicitly name alternatives or state when not to use this tool, so it falls short of the top score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_customer_tagsA

[WRITE] 設定客戶標籤(覆蓋現有標籤)。

【用途】 為客戶設定標籤,常用於行銷分群、VIP 標記等。注意:會覆蓋客戶現有的所有標籤。

【呼叫的 Shopline API】

  • PUT /v1/customers/{customer_id}/tags

  • POST /v1/customers/{customer_id}/tags

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 覆蓋客戶的所有現有標籤為新的標籤列表

  • 若要新增標籤而非覆蓋,請先用 get_customer_profile 取得現有標籤再合併

ParametersJSON Schema
NameRequiredDescriptionDefault
customer_idYes客戶內部 ID
tagsYes標籤列表(會取代現有標籤)

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It explicitly discloses the destructive side effect: '覆蓋客戶的所有現有標籤為新的標籤列表' (overwrites all existing tags). The '[WRITE]' prefix signals mutation, and the '副作用' section further elaborates on the overwrite and the safe alternative. This goes beyond minimal disclosure and effectively informs the agent of consequences.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections ('[WRITE]', '用途', '呼叫的 Shopline API', '回傳結構', '副作用') and every sentence adds value. It is concise yet thorough, front-loading the most important overwrite warning. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter mutation tool, the description covers purpose, side effects, return structure, API endpoints, and usage guidance. It even suggests a safe alternative workflow. Despite lacking annotations and an output schema, the description compensates fully, making it complete for an agent to select and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%: both customer_id and tags are described in the schema. The description reinforces the overwrite semantics for tags, but the schema already states '標籤列表(會取代現有標籤)'. The description adds context about usage but does not provide additional parameter-level details beyond schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with '[WRITE] 設定客戶標籤(覆蓋現有標籤)' which clearly states the action (set customer tags) and the critical behavior (overwrites existing tags). It distinguishes itself from sibling tools like update_order_tags and update_product_tags by explicitly mentioning customer tags, and also contrasts with an 'add' operation via the overwrite note.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The '用途' section gives typical use cases (marketing segmentation, VIP marking). More importantly, it provides explicit guidance on when NOT to use this tool for adding tags, directing the agent to first use get_customer_profile to fetch existing tags and merge them. This clearly addresses alternatives and exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_flash_price_campaignA

[WRITE] 更新快閃價格活動。

【用途】 修改已建立的快閃價格活動,例如調整特價金額、活動時段或適用商品範圍。

【呼叫的 Shopline API】

  • PUT /v1/flash_price_campaigns/{campaign_id}

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 修改立即生效;若活動正在進行中,前台價格即時更新

  • 不可復原(無版本歷史),但可再次呼叫此工具覆蓋

ParametersJSON Schema
NameRequiredDescriptionDefault
campaign_idYes快閃價格活動 ID
campaign_dataYes要更新的活動欄位(僅傳入需修改的欄位)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses that changes take effect immediately (including live frontend updates) and that the operation is not reversible but can be overwritten. It also includes the return structure. This is strong disclosure for a write operation, though it omits permission or error details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections: [WRITE], purpose, API endpoint, return structure, and side effects. It is concise, front-loaded with the primary purpose, and every sentence adds valuable information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a write tool with no output schema and no annotations, the description covers key aspects: purpose, API endpoint, return structure, and side effects. It could mention preconditions (e.g., campaign status restrictions) but given the tool's simplicity and schema coverage, it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters. The description adds examples of what campaign_data can contain (special price, schedule, product range), but does not specify the full nested structure or field names, which is a gap given additionalProperties is true. Thus the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: update an existing flash price campaign, with examples of what can be adjusted (price, time period, product range). It distinguishes from siblings by specifying '修改已建立的' (modify existing), contrasting with create and delete tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for modifying existing campaigns and provides examples of fields to adjust. It does not explicitly name alternatives or state when not to use, but the context is clear given the sibling set; thus it provides clear context without explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_giftA

[WRITE] 更新贈品資料。

【用途】 修改指定贈品的名稱、數量、圖片等欄位。僅傳入要修改的欄位。

【呼叫的 Shopline API】

  • PATCH /v1/gifts/{gift_id}

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 修改指定贈品的資料,變更立即生效

  • 不可復原,但可再次呼叫此工具覆蓋

ParametersJSON Schema
NameRequiredDescriptionDefault
gift_idYes贈品 ID
gift_dataYes要更新的贈品欄位,例如 {name, quantity, ...}

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full transparency burden. It discloses that modifications take effect immediately, are irreversible, but can be overwritten by calling again. It also specifies the return structure (success, resource_id, message). This goes beyond a basic functional statement and provides meaningful behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (Purpose, Usage, API, Return, Side effects), starting with the core action. Every section provides necessary information without fluff, making it concise and easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description fully covers return values. It also addresses side effects and API details, which are essential for a write operation. The tool has only two parameters, and the description covers its purpose, usage, and behavior completely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% coverage for both parameters, but the description adds value by clarifying the partial-update behavior ('僅傳入要修改的欄位') and listing example fields (name, quantity, image). This helps the agent understand that gift_data should be a partial object, not a full replacement.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with '更新贈品資料' and specifies '修改指定贈品的名稱、數量、圖片等欄位', clearly stating the tool updates gift data and which fields are involved. This provides a specific verb+resource+scope, distinguishing it from generic actions. Though a sibling tool update_gift_quantity_by_sku exists, the description's field list makes the general-purpose nature clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes the explicit usage note '僅傳入要修改的欄位', telling the agent to pass only fields to be updated for a partial update. This is clear contextual guidance on how to use the tool, but it does not mention alternatives or explicitly when not to use it, so it misses the highest tier.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_gift_quantity_by_skuA

[WRITE] 依 SKU 更新贈品庫存數量。

【用途】 直接以 SKU 為索引更新贈品庫存數量,適合批次庫存同步場景。

【呼叫的 Shopline API】

  • PATCH /v1/gifts/quantity-by-sku

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 指定 SKU 的贈品庫存數量將被覆蓋為新值

  • 庫存變動立即生效,影響贈品可用性

ParametersJSON Schema
NameRequiredDescriptionDefault
skuYes贈品 SKU 編號
quantityYes新的庫存數量(絕對值,非差異)

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It explicitly labels the operation as [WRITE], details side effects (quantity will be overwritten, changes take effect immediately, affecting gift availability), and describes the return structure. This is thorough behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (Purpose, API Called, Return Structure, Side Effects) and is appropriately sized. The [WRITE] prefix and main action are front-loaded, and every sentence contributes to understanding the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 2-param write tool with no output schema or annotations, the description is complete. It covers purpose, usage context, exact API endpoint, return structure, and side effects. No critical information is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with both sku and quantity described meaningfully (quantity as absolute value, not difference). The description reinforces this by noting the overwrite behavior, but adds little new parameter-specific information beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: '依 SKU 更新贈品庫存數量' (update gift inventory quantity by SKU). It uses a specific verb (update), identifies the resource (gift inventory quantity), and specifies the indexing method (by SKU), distinguishing it from sibling tools like update_gift or update_addon_product_quantity_by_sku.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides usage context: '適合批次庫存同步場景' (suitable for batch inventory sync scenarios) and notes the direct SKU-indexed approach. It does not explicitly mention when not to use this tool or alternative tools, but the context is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_merchantA

[WRITE] 更新商家基本資料。

【用途】 修改指定商家的名稱、聯絡資訊、地址等基本設定。僅傳入要修改的欄位,未傳入的欄位不會被覆蓋。 適合商家資料異動(如搬遷、更名)時同步更新 Shopline 商家設定。

【呼叫的 Shopline API】

  • PUT /v1/merchants/{merchant_id}

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 修改商家資料,變更立即生效

  • 商家名稱等資訊可能顯示於顧客可見的頁面(如收據、通知 Email)

  • 不可復原,但可再次呼叫此工具覆蓋

ParametersJSON Schema
NameRequiredDescriptionDefault
merchant_idYes商家 ID
merchant_dataYes要更新的商家欄位,例如:{"name": "我的商店", "email": "shop@yourstore.com", "phone": "02-1234-5678", "address": "台北市..."}

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description self-discloses key behaviors: changes take effect immediately ('變更立即生效'), may appear on customer-visible pages (receipts, emails), and are non-reversible but can be overwritten by calling again. It also mentions the PUT API and return structure, which is excellent for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (用途, API, 回傳結構, 副作用) and front-loads the purpose. It is somewhat lengthy, but each section provides distinct value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description covers purpose, usage, API endpoint, return structure, and side effects comprehensively. For a write operation with two parameters (including a nested object), this is complete.

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?

Both parameters have schema descriptions (100% coverage), but the description adds the crucial partial-update semantics for merchant_data, explicitly stating that only passed fields are modified. This goes beyond the schema's example JSON and enhances understanding of how to use the parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states '更新商家基本資料' and elaborates on modifying specific merchant fields (name, contact info, address). It distinguishes itself from read-only siblings like get_merchant_detail by emphasizing the update operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: '僅傳入要修改的欄位,未傳入的欄位不會被覆蓋' (only pass fields to modify, untouched fields won't be overwritten) and suggests a use case (搬遷、更名). It does not explicitly mention alternatives, but no other update-merchant tool exists, so context is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_orderA

[WRITE] 更新訂單欄位。

【用途】 修改訂單的可編輯欄位(如備註、配送地址等)。僅傳入要修改的欄位,未傳入欄位不受影響。

【呼叫的 Shopline API】

  • PATCH /v1/orders/{order_id}

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 訂單資料立即變更,不可復原(可再次呼叫此工具覆蓋)

  • 部分欄位(如金額)可能受限於訂單狀態而無法修改

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYes訂單 ID
fieldsYes要更新的欄位與值,以字典形式傳入

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full behavioral disclosure. It clearly states side effects: immediate and irreversible changes (訂單資料立即變更,不可復原), the ability to overwrite via another call, and status-based field restrictions. It also documents the API endpoint and return structure, which exceeds minimal expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-organized with clear sections (purpose, API, return, side effects), uses bullet-style formatting, and front-loads the write indicator [WRITE]. Every sentence contributes useful information without repetition or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simple two-parameter interface and lack of output schema, the description covers essential aspects: the exact API method, return structure, and side effects. It does not address error cases or authentication requirements, but these are somewhat self-evident from the context and schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes both parameters, but the description adds critical partial-update semantics (僅傳入要修改的欄位,未傳入欄位不受影響), clarifying that only provided fields are modified. It also documents the return structure (dict with success, resource_id, message), which is not in an output schema. This meaningfully enhances the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool updates order fields (更新訂單欄位), lists example fields (備註, 配送地址), and distinguishes it from sibling order operations by specifying PATCH /v1/orders/{order_id} and partial-update behavior. This makes the tool's purpose specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for modifying editable order fields and notes that some fields may be restricted by order status. However, it does not explicitly state when to use this tool over siblings like update_order_status or update_order_tags, nor does it provide explicit exclusion criteria. The guidance is contextual but not directive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_order_deliveryA

[WRITE] 更新訂單配送資訊。

【用途】 修改指定訂單配送記錄的物流資訊,例如更新追蹤號碼、物流公司、配送狀態等。 適合整合第三方物流系統後回寫配送狀態。

【呼叫的 Shopline API】

  • PUT /v1/order_deliveries/{delivery_id}

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 修改訂單配送記錄,變更立即生效

  • 狀態變更可能觸發 Shopline 的自動通知(如寄送出貨通知 Email 給顧客)

  • 不可復原,但可再次呼叫此工具覆蓋

ParametersJSON Schema
NameRequiredDescriptionDefault
delivery_idYes訂單配送記錄 ID
delivery_dataYes要更新的配送欄位,例如:{"tracking_number": "123456", "carrier": "黑貓宅急便", "status": "shipped"}

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly states that changes take effect immediately, status changes may trigger automatic notifications (e.g., shipping confirmation emails), and the operation is irreversible but can be overwritten by calling the tool again. This is comprehensive and goes well beyond the minimum.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear labeled sections: purpose, usage, API call, return structure, and side effects. It is concise but information-dense, with every section providing relevant detail. The [WRITE] prefix immediately signals the operation type.

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?

The description compensates for the lack of an output schema by explicitly describing the return structure (dict with success, resource_id, message). It covers usage context, the underlying API endpoint, side effects, and potential notifications. This is complete for a mutation tool with no annotations or output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers both parameters with descriptions that already explain delivery_id and delivery_data (including an example). The tool description adds only a brief mention of fields like tracking_number, carrier, and status, which the schema already covers. With 100% schema coverage, the description adds little extra parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool updates delivery information for a specific order delivery record (修改指定訂單配送記錄的物流資訊). It names concrete fields (tracking number, carrier, delivery status) and is easily distinguished from sibling tools like get_order_delivery (read), execute_order_shipment (shipment execution), and update_order (general order update).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear use case: suitable for writing back delivery status after integrating a third-party logistics system (適合整合第三方物流系統後回寫配送狀態). This gives context for when to use the tool, though it doesn't explicitly mention alternatives or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_order_statusA

[WRITE] 更新訂單狀態(支援同時更新多種狀態)。

【用途】 分別或同時更新訂單的主狀態、配送狀態、付款狀態。 僅傳入非 None 的參數,每個非 None 參數會各自呼叫一支 API。

【呼叫的 Shopline API】

  • PATCH /v1/orders/{order_id}/status(若 status 非 None)

  • PATCH /v1/orders/{order_id}/delivery-status(若 delivery_status 非 None)

  • PATCH /v1/orders/{order_id}/payment-status(若 payment_status 非 None)

【回傳結構】 dict 含 success: bool, resource_id: str, message: str, updated_fields: list。

【副作用】

  • 訂單狀態立即變更,影響前台顯示與後台報表

  • 狀態變更可能觸發客戶通知(取決於商店設定)

  • 非法的狀態值或不合法的狀態轉換會導致 API 回傳錯誤

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYes訂單 ID
statusNo訂單狀態(如 confirmed / cancelled)
delivery_statusNo配送狀態(如 shipped / delivered)
payment_statusNo付款狀態(如 paid / unpaid)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It reveals side effects: immediate status change, impact on frontend/reports, possible customer notifications, and errors for invalid statuses. It also discloses that each non-None parameter invokes a separate API call, adding transparency beyond just saying 'update'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with headers (用途, API calls, 回傳結構, 副作用) and bullet lists. Every section delivers distinct information, and there is no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is complex due to multiple possible API calls per invocation. The description compensates for lacking an output schema by stating the return dict structure and lists side effects and error conditions. However, it does not address partial success scenarios or permission requirements, leaving some completeness gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage with examples for all four parameters. The description adds significant meaning by explaining the non-None conditional behavior and mapping each parameter to a specific PATCH endpoint, which is not apparent from the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with '[WRITE] 更新訂單狀態(支援同時更新多種狀態)', which clearly identifies the verb (update) and resource (order status). It further distinguishes the three sub-statuses (main, delivery, payment), setting it apart from sibling tools like update_order or cancel_order.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 【用途】 section explicitly says the tool updates main, delivery, and payment statuses individually or together, giving clear context for when to use it. It also explains that only non-None parameters trigger API calls, but it does not name alternative tools or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_order_tagsA

[WRITE] 設定訂單標籤(覆蓋現有標籤)。

【用途】 為訂單設定標籤,常用於訂單分類、優先處理標記、客服備註分群等場景。 注意:會覆蓋訂單現有的所有標籤。

【呼叫的 Shopline API】

  • PATCH /v1/orders/{order_id}/tags

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 覆蓋訂單的所有現有標籤為新的標籤列表

  • 若要新增標籤而非覆蓋,請先用 get_order_detail 取得現有標籤再合併

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYes訂單 ID
tagsYes標籤列表(會取代現有標籤)

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses behavioral traits: it marks the operation as [WRITE], states it overwrites all existing tags, specifies the underlying PATCH API, describes the return structure, and lists side effects including a merge strategy. This is comprehensive and transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (Purpose, API, Return, Side Effects), front-loaded with the key overwrite warning. Every sentence provides necessary information, with no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given it's a write tool with no annotations or output schema, the description covers all necessary aspects: purpose, API endpoint, return structure, side effects, and usage guidance. An agent has enough to correctly select and invoke the 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 100% for both parameters (order_id and tags), so the baseline is 3. The description adds extra semantic context by explaining that tags replaces the entire set and providing a concrete workflow for merging existing tags via get_order_detail, which goes beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: setting order tags and overwriting existing tags. It uses a specific verb ('set') and resource ('order tags'), and explicitly notes the overwrite behavior, distinguishing it from read-only siblings like get_order_tags and generic update tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage context: order categorization, priority marking, customer service grouping. It also gives clear guidance on when NOT to use it (when appending tags) and suggests an alternative approach with get_order_detail, which is excellent practical advice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_pickup_storeA

[WRITE] 更新配送選項的自取門市資訊。

【用途】 修改指定配送選項下的自取門市(Pickup Store)資訊,例如更新門市名稱、地址、電話、營業時間等。 適合門市資訊異動時同步更新 Shopline 的自取門市設定。

【呼叫的 Shopline API】

  • PUT /v1/delivery_options/{delivery_option_id}/pickup_store

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 修改指定配送選項下的自取門市資訊,變更立即生效

  • 顧客於結帳頁選擇自取時將看到更新後的門市資訊

  • 不可復原,但可再次呼叫此工具覆蓋

ParametersJSON Schema
NameRequiredDescriptionDefault
delivery_option_idYes配送選項 ID
pickup_store_dataYes自取門市資料,例如:{"store_name": "台北信義門市", "address": "台北市信義區...", "phone": "02-1234-5678", "business_hours": "10:00-22:00"}

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does so excellently. It discloses the [WRITE] nature, immediate effect, customer-facing visibility, and irreversibility (though overwrite is possible). This gives the agent important risk awareness beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections for purpose, API mapping, return structure, and side effects. Every section earns its place, and the [WRITE] prefix plus front-loaded purpose make it scannable for an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a mutation tool with no output schema and a nested object parameter. The description compensates fully by including the API endpoint, expected return dict structure, side effects, and an example payload. Given the complexity, the description is complete enough 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 100%, so the baseline is 3. The description adds genuine value by providing a concrete JSON example for pickup_store_data and explaining the role of delivery_option_id. This goes beyond mere schema repetition and helps the agent construct inputs correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('修改'/'更新') and a concrete resource (自取門市 under a delivery option), clearly distinguishing it from siblings like get_delivery_option_detail or update_order_delivery. It also lists the kinds of fields that can be updated, making the purpose immediately understandable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states when this tool is appropriate ('適合門市資訊異動時同步更新 Shopline 的自取門市設定'), giving clear usage context. However, it does not explicitly mention when not to use it or name alternative tools, so it stops short of full exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_productA

[WRITE] 更新商品基本資料。

【用途】 修改現有商品的名稱、描述、分類、狀態等欄位。僅傳入要修改的欄位, 未傳入的欄位不會被覆蓋。

【呼叫的 Shopline API】

  • PUT /v1/products/{product_id}

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 商品資料變更立即生效,前台同步更新

  • 不可復原(無版本歷史),但可再次呼叫此工具覆蓋

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYes商品內部 ID
product_dataYes要更新的商品欄位(僅需傳入要修改的欄位)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden. It discloses the write nature, immediate front-end effect, irreversibility, and the partial-update behavior. It could add error conditions or permission requirements, but covers key side effects well beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (purpose, API, return, side effects), front-loaded with [WRITE] and purpose. It is concise for the information it conveys, with no redundant sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no output schema, it covers purpose, endpoint, return structure, side effects, and partial update behavior. Missing details like error handling or authorization are minor given the tool's complexity and the richness of the provided information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value by giving concrete examples of updatable fields (name, description, category, status) and explaining the partial-update semantics, which is not fully captured by the schema's generic product_data description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it updates existing product basic information, listing specific fields (name, description, category, status). The [WRITE] marker and API endpoint reinforce the action. It distinguishes itself from sibling tools like update_product_quantity and update_product_price by focusing on '基本資料' rather than specific attributes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear context for when to use—when modifying existing product fields—and describes partial-update behavior ('only pass fields to modify, unspecified fields are not overwritten'). It does not explicitly name alternatives or exclusions, but the field focus and sibling context make appropriate usage clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_product_priceA

[WRITE] 更新商品售價(無變體商品)。

【用途】 直接設定無變體商品的售價。適用於調價、促銷結束恢復原價等場景。 若商品有變體,請改用 update_variation_price。

【呼叫的 Shopline API】

  • PUT /v1/products/{product_id}/price

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 售價立即更新,前台同步顯示新價格

  • 不影響進行中的訂單(訂單成立時已鎖定價格)

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYes商品內部 ID
priceYes新售價(TWD)

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses the write nature with [WRITE], the exact API endpoint, return structure, and side effects including immediate price display and lack of impact on existing orders. This is comprehensive for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-organized into concise sections, front-loading the core purpose. Every sentence provides useful information without padding, and the structure (purpose, API, return, side effects) makes it easy to scan.

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?

The tool is simple with two required parameters and no output schema, and the description covers usage, alternatives, API, return structure, and side effects. It is fully sufficient for an agent to invoke correctly without ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes both parameters (product_id as internal ID, price as new TWD amount) with 100% coverage. The description does not add significant additional parameter syntax or format details beyond the schema, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it updates the selling price for products without variants, with a specific verb and resource. It distinguishes from the sibling update_variation_price by explicitly noting the variant-product constraint. Applicable scenarios like price adjustments and promo-end restorations add clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says to use this tool for setting prices of non-variant products and provides context (price adjustments, restoring original price). It directly instructs to use update_variation_price for variant products, making the alternative and when-not-to-use explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_product_quantityA

[WRITE] 更新商品庫存數量(無變體商品)。

【用途】 直接設定無變體商品的庫存數量。適用於盤點後調整庫存或手動補貨場景。 若商品有變體,請改用 update_variation_quantity。

【呼叫的 Shopline API】

  • PUT /v1/products/{product_id}/quantity

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 庫存數量立即更新,影響前台可購買數量

  • 若設為 0 且商品設定不允許超賣,前台將顯示缺貨

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYes商品內部 ID
quantityYes新庫存數量(絕對值,非增減量)

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses the write operation, immediate frontend impact, and out-of-stock behavior when quantity is set to zero. Also includes API endpoint and return structure, providing comprehensive behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear sections (purpose, API, return, side effects) and no redundant text. The main purpose is front-loaded, and each sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, usage context, alternative tools, API endpoint, return structure, and side effects. Fully complete for a simple mutation tool, leaving no significant gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema already covers both parameters with descriptions, including absolute vs. incremental quantity. The description adds minimal extra parameter meaning, so baseline 3 applies given 100% schema coverage.

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?

Description clearly states the tool updates inventory quantity for non-variant products, with a specific verb and resource. It explicitly distinguishes from sibling tools by directing variant products to update_variation_quantity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use context (stocktaking, manual replenishment) and an explicit alternative for products with variations. This fully clarifies usage versus alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_product_reviewA

[WRITE] 更新單筆商品評論。

【用途】 修改評論內容、審核狀態、評分等資料,適用於客服審核或編輯不當評論。

【呼叫的 Shopline API】

  • PATCH /v1/product_review_comments/{comment_id}

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 評論資料變更立即生效

  • 若變更評分,商品平均評分將同步更新

  • 不可復原,但可再次呼叫此工具覆蓋

ParametersJSON Schema
NameRequiredDescriptionDefault
comment_idYes評論 ID
review_dataYes要更新的評論欄位,例如 {"status": "published", "content": "修改後的評論"}

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses that changes take effect immediately, that changing the rating will sync the product's average rating, and that the operation is irreversible but can be overridden by calling again. It also provides the return structure (dict with success, resource_id, message). This is rich, non-obvious behavioral context far beyond a simple 'update' statement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections: 用途 (purpose), 呼叫的 Shopline API (called API), 回傳結構 (return structure), and 副作用 (side effects). Every section provides necessary information without redundancy. The opening line is front-loaded with the action and resource. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (2 params, no output schema) and the description covers purpose, usage context, API endpoint, return structure, and side effects. This is near-complete for an update operation. It lacks mention of error cases or prerequisites (e.g., what happens if comment_id does not exist), but given the tool's straightforward nature and the presence of return structure, the description is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: both comment_id and review_data have meaningful descriptions, with review_data including an example object. The tool description adds minimal extra parameter info, only hinting at updatable fields in the purpose section. Baseline of 3 is appropriate since the schema already does the heavy lifting and the description does not significantly enhance parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with '更新單筆商品評論' (update single product review), clearly stating the verb and resource. It further specifies fields like content, moderation status, and rating, and names the exact API endpoint PATCH /v1/product_review_comments/{comment_id}. This clearly distinguishes it from sibling tools like create_product_review or bulk_update_product_reviews.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states an explicit use case: '適用於客服審核或編輯不當評論' (suitable for customer service moderation or editing inappropriate reviews), providing clear context. However, it does not explicitly contrast with alternatives such as bulk_update_product_reviews or delete_product_review, nor does it state when not to use this tool. Thus it has clear context but lacks exclusions/alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_product_tagsA

[WRITE] 設定商品標籤(覆蓋現有標籤)。

【用途】 為商品設定標籤,常用於商品分群、促銷標記、SEO 分類等。 注意:此操作會覆蓋商品現有的所有標籤。

【呼叫的 Shopline API】

  • POST /v1/products/{product_id}/tags

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 覆蓋商品的所有現有標籤為新的標籤列表

  • 若要新增標籤而非覆蓋,請先用 get_product_list 取得現有標籤再合併後傳入

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYes商品內部 ID
tagsYes標籤列表(會取代現有標籤)

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full responsibility and does an excellent job. It discloses the overwrite side effect, the underlying API endpoint (POST /v1/products/{product_id}/tags), the return structure (dict with success, resource_id, message), and explicitly warns that existing tags are replaced. This goes well beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with labeled sections (用途, API, 回傳結構, 副作用), each providing necessary information without redundancy. It is concise yet comprehensive, using headings and bullet-like formatting for readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter mutation tool with no output schema, the description covers everything needed: purpose, side effects, API endpoint, return structure, and even an alternate workflow. It is fully contextual and leaves no critical gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% coverage with clear descriptions for both parameters (product_id and tags). The description adds some context about tag usage and the merge workflow, but most of the parameter semantics are already in the schema, so the description contributes only marginal additional value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 設定商品標籤 (set product tags), and immediately notes that it overwrites existing tags. This distinguishes it from sibling tools like update_customer_tags and update_order_tags by specifying the resource (product).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 【用途】 section explains common use cases (product grouping, promotion marking, SEO), and the 【副作用】 section explicitly warns about overwriting and provides an alternative workflow: use get_product_list first to merge tags. This gives clear when-to and when-not-to guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_product_variationA

[WRITE] 更新商品變體資料。

【用途】 修改特定商品變體的 SKU、規格選項、狀態等欄位。僅傳入要修改的欄位, 未傳入的欄位不會被覆蓋。

【呼叫的 Shopline API】

  • PUT /v1/products/{product_id}/variations/{variation_id}

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 變體資料變更立即生效,前台同步更新

  • 不可復原(無版本歷史),但可再次呼叫此工具覆蓋

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYes商品內部 ID
variation_idYes變體內部 ID
variation_dataYes要更新的變體欄位(僅需傳入要修改的欄位)

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description discloses important behavioral traits: immediate effect, front-end synchronization, and irreversibility (no version history) but can be overridden by calling again. Also specifies the exact API endpoint and return structure, giving the agent a full picture of side effects and outcome.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (purpose, API endpoint, return structure, side effects). Each section provides meaningful information without fluff, making it easy to scan and digest.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is complete: it explains what it does, how to use it (partial update), the expected return shape, and side effects. This covers all critical information an agent needs to invoke and interpret the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for all three parameters, so the schema already documents IDs and variation_data. The description adds meaning by clarifying variation_data is a partial update and listing example fields (SKU, spec options, status), which helps the agent construct the nested object correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool updates product variation data with a specific verb (更新) and resource (商品變體資料). It mentions modifying SKU, spec options, status, etc., which distinguishes it from sibling tools that target specific fields like quantity or price.

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?

Provides clear usage context: only pass fields to be modified, untouched fields will not be overwritten. Does not explicitly compare with sibling tools like update_variation_quantity or update_variation_price, but the partial-update note is actionable and helps an agent decide when to call this generic variation update.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_promotionA

[WRITE] 更新既有促銷活動。

【用途】 修改已建立的促銷活動內容,例如調整折扣金額、有效期限、適用條件等。

【呼叫的 Shopline API】

  • PUT /v1/promotions/{promotion_id}

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 修改立即生效,已在結帳流程中的消費者可能受影響

  • 不可復原(無版本歷史),但可再次呼叫此工具覆蓋

ParametersJSON Schema
NameRequiredDescriptionDefault
promotion_idYes促銷活動 ID
promotion_dataYes要更新的促銷活動欄位(僅傳入需修改的欄位)

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully carries the burden of behavioral disclosure. It details the API call (PUT /v1/promotions/{promotion_id}), states that changes take effect immediately and may affect consumers in checkout, and explicitly notes irreversibility (though it can be overwritten). It also describes the return structure, providing excellent transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear section headers (Purpose, API, Return Structure, Side Effects). Each section is concise and serves a distinct purpose, with no wasted wording. It is front-loaded with the essential purpose and write indicator.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a write tool with no annotations or output schema, this description is remarkably complete. It covers the purpose, API endpoint, return structure, and side effects—including irreversibility and impact on active checkout flows. The only missing detail is the full promotion_data schema, but that is provided in the input schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with both parameters having descriptions. The description adds examples of what can be updated (discount amount, validity, conditions) but does not substantially explain the structure of promotion_data beyond the schema. It meets the baseline for high schema coverage but does not go beyond it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'update existing promotion' with specific examples of modifiable attributes (discount amount, validity period, conditions). The [WRITE] marker and verb 'update' distinguish it from sibling tools like create_promotion, delete_promotion, and get_promotion_detail.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The purpose section explicitly indicates this tool is for modifying existing promotions, providing clear context for when to use it. However, it does not explicitly mention alternatives or when not to use it, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_return_orderA

[WRITE] 更新退貨單狀態或資料。

【用途】 修改退貨單的審核狀態、退款金額、備註等資料,適用於客服審核退貨申請流程。

【呼叫的 Shopline API】

  • PUT /v1/return_orders/{return_order_id}

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 退貨單資料變更立即生效

  • 若將狀態更新為「已退款」,可能觸發實際退款動作並影響財務帳務

  • 不可復原,請謹慎確認狀態變更

ParametersJSON Schema
NameRequiredDescriptionDefault
return_order_idYes退貨單 ID
return_order_dataYes要更新的退貨單欄位,例如 {"status": "approved", "note": "已確認退款"}

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden for behavioral disclosure. It explicitly lists side effects: changes take effect immediately, refund status may trigger actual financial refunds, and changes are irreversible. It also states the return structure (success, resource_id, message), providing a clear picture of consequences beyond the basic write operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured using sections like 【用途】, 【呼叫的 Shopline API】, 【回傳結構】, and 【副作用】. It is appropriately concise, with each section delivering essential information without redundancy. The front-loaded '[WRITE]' tag immediately signals the operation type.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the main necessary contexts: the exact API endpoint, the use case, return structure, and side effects. Given that the output schema is absent, the return structure explanation is especially helpful. It lacks details on error handling or validation rules, but for a write tool with a flexible nested object, this is quite complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already has 100% coverage for both parameters, so the baseline is 3. The description adds meaningful context by clarifying that setting the status to '已退款' may cause actual refunds and financial impact, and gives a concrete example of the data object structure. This goes beyond schema explanations and helps agents understand the implications of parameter values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with '[WRITE] 更新退貨單狀態或資料' (Update return order status or data), which clearly states the specific action and resource. It further lists concrete fields (審核狀態, 退款金額, 備註), making it distinct from read-only return order tools like get_return_order_detail or list_return_orders.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states '適用於客服審核退貨申請流程' (suitable for customer service review return application process), providing clear context for when this tool is appropriate. It does not explicitly name alternatives or exclusion cases, but the use case is well-defined enough to distinguish it from other operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_variation_priceA

[WRITE] 更新商品變體售價。

【用途】 直接設定特定變體的售價。適用於個別規格調價、限時特價等場景。

【呼叫的 Shopline API】

  • PUT /v1/products/{product_id}/variations/{variation_id}/price

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 售價立即更新,前台同步顯示新價格

  • 不影響進行中的訂單(訂單成立時已鎖定價格)

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYes商品內部 ID
variation_idYes變體內部 ID
priceYes新售價(TWD)

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It exceeds expectations by disclosing side effects: '售價立即更新,前台同步顯示新價格' (price updates immediately, storefront syncs) and '不影響進行中的訂單' (does not affect existing orders). It also provides the return structure and the exact API endpoint, giving a transparent view of the tool's 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?

The description is efficiently structured with clear sections: title, purpose, API call, return structure, and side effects. Every sentence adds value—no fluff or redundancy. It is concise yet comprehensive for a tool of this simplicity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (3 simple required params, no output schema), the description is complete. It includes the purpose, API endpoint, return structure, and side effects. The presence of side-effect information is especially valuable since annotations are absent. Nothing critical is missing for an agent to correctly invoke and understand the outcome.

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?

The input schema has 100% coverage, with each parameter (product_id, variation_id, price) already described in detail. The description does not add significant semantic meaning beyond what the schema provides, though it does imply the relationship between the IDs through the API path. Since schema coverage is high, a baseline of 3 is appropriate per the scoring guidelines.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: '更新商品變體售價' (update product variation price) and '直接設定特定變體的售價' (directly set a specific variation's price). This specific verb+resource combination distinguishes it from sibling tools like update_product_price (which likely updates base product price) and update_variation_quantity (which updates stock). The use cases '個別規格調價、限時特價' further clarify the intended scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly provides a 'purpose' section that states when to use the tool: '適用於個別規格調價、限時特價等場景' (suitable for individual spec price adjustments, limited-time promotions). This gives clear context for appropriate use. However, it does not explicitly mention when NOT to use it or name alternative tools (e.g., update_product_price), so it misses the full 'when/when-not/alternatives' guidance needed for a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_variation_quantityA

[WRITE] 更新商品變體庫存數量。

【用途】 直接設定特定變體的庫存數量。適用於盤點後調整庫存或手動補貨場景。 若要批次更新多個 SKU 庫存,可改用 bulk_update_quantities。

【呼叫的 Shopline API】

  • PUT /v1/products/{product_id}/variations/{variation_id}/quantity

【回傳結構】 dict 含 success: bool, resource_id: str, message: str。

【副作用】

  • 庫存數量立即更新,影響前台可購買數量

  • 若設為 0 且商品設定不允許超賣,前台將顯示缺貨

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYes商品內部 ID
variation_idYes變體內部 ID
quantityYes新庫存數量(絕對值,非增減量)

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that the stock quantity updates immediately, affects front-end purchasable quantity, and if set to 0 with no oversell allowed, front-end will show out of stock. It also includes the API endpoint. While it doesn't mention auth requirements, it thoroughly explains side effects and operational context.

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?

Well-structured with clear sections (用途, 呼叫的 Shopline API, 回傳結構, 副作用). Information is concise and front-loaded, with the write indicator '[WRITE]' at the start. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 3-parameter update tool with no output schema, the description explains the purpose, the API endpoint, the return structure, and side effects. It is complete for the tool's complexity, and the sibling differentiation further enhances context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so each parameter already has descriptions. The description adds clarity that quantity is an absolute value '新庫存數量(絕對值,非增減量)', which is already in the schema. According to the rubric, baseline is 3 when schema coverage is high, and the description doesn't significantly extend beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states '直接設定特定變體的庫存數量' (directly set specific variation's stock quantity), which precisely describes the verb+resource+scope. It also distinguishes from sibling tools like bulk_update_quantities by noting it's for a single variance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use: '適用於盤點後調整庫存或手動補貨場景' (for inventory adjustment after stocktake or manual replenishment). It also gives an alternative: '若要批次更新多個 SKU 庫存,可改用 bulk_update_quantities' (for batch updates, use bulk_update_quantities), clearly naming the alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_mediaA

[WRITE] 上傳媒體檔案至 Shopline。

【用途】 上傳圖片或其他媒體檔案至 Shopline 媒體庫,上傳後可取得媒體 ID 供商品圖片等用途使用。 注意:Shopline API 可能需要 multipart/form-data,本工具目前以 JSON body 傳送, 若 API 回傳格式錯誤,請改用 multipart 上傳方式。

【呼叫的 Shopline API】

  • POST /v1/media

【回傳結構】 dict 含 success: bool, resource_id: str, message: str, media: dict。

【副作用】

  • 在 Shopline 媒體庫中新增一筆媒體記錄

  • 上傳的檔案將佔用商店的媒體儲存空間

ParametersJSON Schema
NameRequiredDescriptionDefault
media_dataYes媒體上傳資料。可能需要包含 file_url(遠端 URL)或 base64 編碼的檔案內容,視 Shopline API 支援的格式而定。範例:{"file_url": "https://your-cdn.shoplineapp.com/image.jpg", "type": "image"}

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It explicitly discloses side effects (adds a media record, consumes storage space) and a known behavioral limitation (JSON body may be rejected; may need multipart). This is more transparent than typical descriptions and goes beyond what annotations would convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with sections for purpose, API call, return structure, and side effects. Every section is informative and earns its place. It's concise without being underspecified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description provides the return structure, API endpoint, side effects, and a caveat about the JSON/multipart issue. This is complete for a simple upload tool, covering all essential aspects for an agent to invoke and interpret results correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides a detailed description of media_data with an example, achieving 100% coverage. The tool description does not add significant parameter-specific meaning beyond noting the media ID in the return structure. This matches the baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (upload) and resource (media files to Shopline media library), and clarifies the outcome (obtain media ID for product images). It distinguishes itself from sibling tools by focusing on the media library, whereas tools like add_product_images likely attach images directly to products.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: use this to upload media and receive an ID for later use in product images. It also notes the JSON body limitation and advises fallback to multipart on format errors. However, it doesn't explicitly mention alternatives or exclusions, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 143 tool updatesv0.3.0
    • First observedadd_product_images
    • First observedadjust_customer_member_points
    • First observedbulk_assign_categories
    • First observedbulk_create_product_reviews
    • First observedbulk_delete_product_reviews
    • First observedbulk_execute_shipment
    • First observedbulk_update_product_reviews
    • First observedbulk_update_quantities
    • First observedcancel_order
    • First observedclaim_coupon
    • First observedcreate_addon_product
    • First observedcreate_affiliate_campaign
    • First observedcreate_category
    • First observedcreate_customer
    • First observedcreate_flash_price_campaign
    • First observedcreate_gift
    • First observedcreate_metafield
    • First observedcreate_order
    • First observedcreate_product
    • First observedcreate_product_review
    • First observedcreate_product_variation
    • First observedcreate_promotion
    • First observedcreate_purchase_order
    • First observedcreate_return_order
    • First observeddelete_affiliate_campaign
    • First observeddelete_category
    • First observeddelete_customer
    • First observeddelete_flash_price_campaign
    • First observeddelete_product
    • First observeddelete_product_images
    • First observeddelete_product_review
    • First observeddelete_product_variation
    • First observeddelete_promotion
    • First observeddelete_purchase_orders
    • First observedexecute_order_shipment
    • First observedget_affiliate_campaign_detail
    • First observedget_affiliate_campaign_usage
    • First observedget_app_settings
    • First observedget_archived_orders
    • First observedget_category_detail
    • First observedget_category_sales
    • First observedget_category_tree
    • First observedget_channel_comparison
    • First observedget_channel_detail
    • First observedget_conversation_messages
    • First observedget_customer_geo_analysis
    • First observedget_customer_group_members
    • First observedget_customer_lifecycle
    • First observedget_customer_profile
    • First observedget_customer_tier_history
    • First observedget_delivery_option_detail
    • First observedget_delivery_time_slots
    • First observedget_flash_price_campaign_detail
    • First observedget_inventory_overview
    • First observedget_inventory_turnover
    • First observedget_locked_inventory
    • First observedget_low_stock_alerts
    • First observedget_merchant_detail
    • First observedget_order_action_logs
    • First observedget_order_delivery
    • First observedget_order_detail
    • First observedget_order_labels
    • First observedget_order_tags
    • First observedget_order_transactions
    • First observedget_product_list
    • First observedget_product_review_detail
    • First observedget_product_subscription_detail
    • First observedget_product_variants
    • First observedget_promotion_analysis
    • First observedget_promotion_detail
    • First observedget_promotion_roi
    • First observedget_purchase_order_detail
    • First observedget_refund_by_store
    • First observedget_refund_summary
    • First observedget_repurchase_analysis
    • First observedget_return_order_detail
    • First observedget_rfm_analysis
    • First observedget_sales_summary
    • First observedget_sales_trend
    • First observedget_slow_movers
    • First observedget_staff_permissions
    • First observedget_stock_by_warehouse
    • First observedget_stock_transfer_suggestions
    • First observedget_token_info
    • First observedget_top_products
    • First observedget_warehouses
    • First observedlist_addon_products
    • First observedlist_affiliate_campaigns
    • First observedlist_agents
    • First observedlist_channels
    • First observedlist_conversations
    • First observedlist_custom_fields
    • First observedlist_customer_groups
    • First observedlist_customers
    • First observedlist_delivery_options
    • First observedlist_flash_price_campaigns
    • First observedlist_gifts
    • First observedlist_member_point_rules
    • First observedlist_membership_tiers
    • First observedlist_merchants
    • First observedlist_payments
    • First observedlist_product_reviews
    • First observedlist_product_subscriptions
    • First observedlist_promotions
    • First observedlist_purchase_orders
    • First observedlist_return_orders
    • First observedlist_store_credits
    • First observedlist_taxes
    • First observedquery_orders
    • First observedredeem_coupon
    • First observedsearch_promotions
    • First observedsend_coupon
    • First observedsend_order_message
    • First observedsend_shop_message
    • First observedsplit_order
    • First observedupdate_addon_product
    • First observedupdate_addon_product_quantity
    • First observedupdate_addon_product_quantity_by_sku
    • First observedupdate_affiliate_campaign
    • First observedupdate_category
    • First observedupdate_customer
    • First observedupdate_customer_store_credits
    • First observedupdate_customer_tags
    • First observedupdate_flash_price_campaign
    • First observedupdate_gift
    • First observedupdate_gift_quantity_by_sku
    • First observedupdate_merchant
    • First observedupdate_order
    • First observedupdate_order_delivery
    • First observedupdate_order_status
    • First observedupdate_order_tags
    • First observedupdate_pickup_store
    • First observedupdate_product
    • First observedupdate_product_price
    • First observedupdate_product_quantity
    • First observedupdate_product_review
    • First observedupdate_product_tags
    • First observedupdate_product_variation
    • First observedupdate_promotion
    • First observedupdate_return_order
    • First observedupdate_variation_price
    • First observedupdate_variation_quantity
    • First observedupload_media

TDQS

A3.8/5.0

Scored across 143 tools

Disambiguation4/5

Most tools target distinct resource-action combinations, with clear descriptions. However, the sheer number (143) creates potential confusion between similar operations like update_product_price vs update_variation_price, and the presence of both single and bulk variants for reviews and other entities may cause misselection.

Naming Consistency5/5

Tools follow a consistent verb_noun pattern (e.g., create_product, update_order, get_customer_profile). The naming convention is uniform across all tools, with only minor deviations like query_orders instead of list_orders, which are still predictable.

Tool Count2/5

With 143 tools, the server is far beyond the typical well-scoped range of 3-15. This suggests the server tries to cover the entire Shopline platform in one server, which is overwhelming and reduces coherence. It would be better split into multiple focused servers.

Completeness4/5

The tool surface is extremely comprehensive, covering CRUD operations for most entities (products, categories, customers, orders, promotions, etc.), analytics, and inventory management. Minor gaps exist (e.g., no create_customer_group, no update_customer_group), but overall it's very complete for a full e-commerce platform.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    A Shopify-focused MCP server that enables AI agents to manage store operations like order tracking, product discovery, and checkout link generation. It facilitates customer-facing interactions including shipping estimates and real-time inventory searches.
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    A production-grade MCP server and CLI tool that enables AI agents to manage Shopify stores through 49 built-in tools across products, orders, inventory, and analytics. It supports natural language workflows for tasks like inventory tracking, customer support, and sales reporting.
    139 npm
    18
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    A comprehensive MCP server for Shopify Admin API integration, enabling AI assistants to manage products, orders, customers, inventory, analytics, and more through natural language.
    8 npm
    18
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    MCP server for the Shopline Open API. Exposes 140+ tools for querying and managing orders, products, customers, promotions, analytics, and store settings from your Shopline store via Claude.
    100
    MIT