Skip to main content
Glama
Priceminder MCP Server

Priceminder MCP Server

by haidrau

Priceminder MCP Server

License: MIT Python MCP Website

中文 | English

Priceminder — Same-day Shopee competitor price monitoring, powered by AI agents through the Model Context Protocol (MCP).

🌐 Sign up free: priceminder.online

Monitor competitor prices across Shopee Southeast Asia (SG, MY, TH, VN, ID, PH, BR). Let your AI agent track, analyze, and alert on price movements — all through natural language.


📌 Important: Where the Data Comes From — and What's Free

Bottom line first: calling the MCP server is free. MCP and API access are free on every tier, including Free. The Free tier is simply limited by your own watch quota — you can only query the products on your monitoring list.

You don't need to integrate any paid third-party data API yourself. When you click "Monitor Now" on a Shopee product page, the Priceminder backend collects the public product-page price at your plan's cadence (Free: 2×/day, Pro: 4×/day), stores it, and the MCP server reads it back for your AI agent.

Install Extension → Follow products you want to watch → Backend collects & stores → AI Can Query

In short: the MCP server is the open-source access layer; collection and storage are hosted by priceminder.online. All you need is a free account and the steps below.

⚠️ Prerequisites

Step

Action

Details

Required

① Install the browser extension

Chrome / Edge / 360 Browser — see Extension Installation Guide

Required

② Browse Shopee product pages, click "Monitor Now"

Only products you manually add to monitoring are accessible via MCP

Required

③ Get your credentials from the dashboard

See Quick Start below

Optional

④ Configure MCP in your AI client

Then you can query prices via natural language

🔑 Two credentials — pick the one that matches your mode

Mode

Credential

Where it goes

Hosted HTTP (recommended, nothing to install)

MCP Key (short)

Inside the URL: https://priceminder.online/mcp_server?key=YOUR_MCP_KEY

Self-hosted stdio (developers, uvx / Docker)

Long API token

SENTINEL_TOKEN environment variable

Log in to the Priceminder dashboard → Settings → MCP Setup → Generate MCP Key. (The browser extension's settings page shows the same key.) Regenerating the key invalidates the old one immediately. The long API token is your account token, shown in the same settings area.

⚠️ The two are not interchangeable: a short key in SENTINEL_TOKEN, or a long token in the URL, both return 401.

🤖 AI Capability Boundaries

Priceminder's MCP tools can only query products you've manually added to your monitoring list. It cannot arbitrarily search all of Shopee.

AI Can Do ✅

AI Cannot Do ❌

List my monitored products and prices

Search Shopee for products I haven't monitored

View price history and trends of monitored items

Get pricing for any arbitrary product ID

Check price drop alerts and push records

Analyze competitor stores I'm not tracking

Add new products to monitor (requires extension scan first)

Auto-discover new competitors

Run smart-follow analysis and log pricing decisions

Modify my account password or settings

In short: You tell the system which competitors to watch, MCP lets AI analyze what's been collected.

For full capability details, see the MCP Tools Overview →


Related MCP server: Ecommerce Price Monitor MCP

💰 Free Usage, Quota & Rate Limits (read this first)

Does MCP / API cost extra?

No. MCP and API are free on all tiers, including Free. The Free tier is naturally limited by your watch quota — you can only query data for the products on your own monitoring list. Source: pricing page · FAQ

Getting the most out of the open-source build

Your goal

What to do

Use it out of the box

Follow the Free-user flow: register a free account → install the extension and add products → generate an MCP Key (hosted HTTP) or long API token (stdio) → wire it into your AI client. No cost, no credit card

Modify or extend the code

This repository is MIT licensed — change the transport, add tools, plug in your own scheduler. As long as SENTINEL_API_BASE still points at priceminder.online, you read data within your own account's quota

Monitor more competitors through the priceminder.online API

Upgrade to Pro: 50 watch slots instead of 5, 4×/day collection instead of 2×/day, no MCP / API quota cap. See pricing

About the 120 requests/minute limit

Open-source clients share one public API key (the SENTINEL_API_KEY default, sentinel-oss-client-2026), and the backend rate-limits it to 120 requests per minute per user.

This exists to keep the server healthy for everyone — it is not a paywall. Normal conversational use (one question usually triggers 1–3 tool calls) never comes close. What actually limits how many competitors you can watch is your plan's watch quota (Free: 5 products total), not the call rate.

If you genuinely need high-frequency automation (batch sweeps, using MCP as a data source for scripts), upgrading to Pro gives you uncapped API calls.


📊 Why Priceminder?

Same-day data, not yesterday's. Most price monitoring tools — including alternative MCP servers — return T-1 (yesterday's cached) data. Priceminder collects on your plan's cadence — Free: twice a day (morning and afternoon), Pro: four times a day — so you act on today's collected price, not an overnight cache.

Capability

Alternative MCP Servers

Priceminder

Data freshness

T-1 (yesterday)

T-0 (same-day; 2×/day on Free, 4×/day on Pro)

Price change detection

Next day

Same day (within ~6 hours on Pro)

Flash sale / 7.7 / 9.9 / 11.11

Misses intra-day moves

Collected at several points during the day + drop alerts

Push notifications

❌ Query-only

✅ Desktop + Feishu (Pro adds Telegram / Slack)

Smart-follow decision loop

❌ None

✅ Analyze → Decide → Review → Stats

Self-hosted

✅ Supported

✅ Supported

In short: If you're using other tools, you're making decisions on yesterday's data. Priceminder gives you today's collected prices — and pushes alerts when competitors move.


🌟 Features — 22 MCP Tools

10 basic tools for querying and monitoring, plus 12 smart-follow tools that close the loop from price movement → competitor response → pricing decision → post-hoc review.

Tier 1 — Query

#

Tool

Description

API

1

get_monitor_list

List all products you're tracking

GET /monitors

2

get_price_summary

Batch price summary across all tracked products

GET /price/summary

3

get_price_history

Price history time-series for a specific product

GET /price/history

4

get_alerts

List price drop alerts (supports site filter)

GET /alerts

Tier 2 — Action

#

Tool

Description

API

5

add_monitor

Add a new product to your monitor list

POST /monitors

6

update_monitor_status

Pause or resume monitoring

PUT /monitors/{id}

7

mark_alert_read

Mark an alert as read

PUT /alerts/{id}/read

Tier 3 — Insight

#

Tool

Description

API

8

get_crawl_health

Check crawler engine health & stats

GET /telemetry/summary + /telemetry/site-stats

9

get_monitor_overview

Dashboard overview of all monitors

GET /user/dashboard

10

search_my_products

Search your monitored products

GET /monitors?keyword=xxx

Tier 4 — Smart Follow (12 tools)

#

Tool

Description

Example prompt

11

run_smart_follow_analysis

Trigger one smart-follow analysis run (sync batch + status check)

"Run the smart-follow analysis"

12

get_smart_follow_results

Latest analysis results: suggested action, target price, rationale

"What pricing changes do you suggest for my own products?"

13

mark_self_owned

Mark / unmark a product as your own (self-owned)

"Mark this product as mine"

14

map_competitors

Replace the competitor set for a self-owned product

"Set Competitor A as a competitor of my storage box"

15

get_competitor_mapping

View the full self-owned → competitor mapping

"Which competitors are linked to my products?"

16

create_decision

Log a pricing decision

"I'll follow the price down to THB 195"

17

list_decisions

Browse decision history

"Show the decision history for the storage box"

18

review_decision

Review a decision after the fact (free-text outcome + effectiveness enum)

"Review that last price-following decision"

19

adopt_decision

Adopt a suggested decision

"Adopt this suggestion"

20

reject_decision

Reject a suggested decision

"Reject this suggestion"

21

get_smart_follow_stats

Last 30 days decision stats

"What's the adoption and effectiveness rate?"

22

get_algorithm_list

Algorithm list, toggles and parameters

"Which algorithms are in use?"

Smart-Follow Loop Example

You: Run today's smart-follow analysis
AI : run_smart_follow_analysis() → status=done, 7 rules fired
     get_smart_follow_results() → storage box: follow price to THB 195 (competitor cut 8.5%)
You: Let's follow the price
AI : create_decision(monitor_id=101, action=follow_price, target_price=195) → decision_id=88
     review due in 14 days
You: Adopt that decision
AI : adopt_decision(decision_id=88, actual_price=195)
(14 days later)
You: How did the last price change perform?
AI : get_price_history(...) + comparison → review_decision(decision_id=88,
       review_outcome="sales +12% in 7 days", review_result="effective")
     Overall: get_smart_follow_stats() → 62% adopted, 71% effective

⚠️ Contract notes: the backend /run endpoint executes synchronously (up to 180s) and swallows internal exceptions, so the tool re-checks /run/{id}/status to report the real outcome. get_smart_follow_results reads /latest and does not accept a run id. list_decisions / get_competitor_mapping have limited server-side filtering and pagination — the tools filter and truncate client-side.

See the full tool documentation here: MCP Tools Overview →


🚀 Quick Start

Install Extension → Add Products → Get MCP Key (hosted) or Long API Token (stdio) → Configure AI Client

For a visual step-by-step guide with screenshots, see the official docs: Quick Start Guide →

Step 1: Install the Browser Extension

Browser

Installation

Chrome

Search "Priceminder" on Chrome Web Store

Edge

Search "Priceminder" on Edge Add-ons

360 Browser

Download offline installer from the official website

Opera

Opera add-ons store

See Extension Installation Guide → for screenshots.

Step 2: Add Products to Monitor

Open any Shopee product page (supports SG/MY/TH/ID/TW/PH/VN). A "Monitor Now" button will appear at the top-right:

  1. Click "Monitor Now" → product added to your monitor list

  2. The system automatically starts collecting price data at your chosen interval

  3. Configure crawl frequency and alert thresholds in the extension settings

💡 You need monitored products first. Without them, the AI will return empty results when queried. Start with a few competitor products — Free covers 5 total, Pro 50.

Step 3: Get Your MCP Key

Log in to the Priceminder dashboard → Settings → MCP Setup → Generate MCP Key.

This short key is for hosted HTTP mode only. If you plan to run the server locally (stdio via uvx or Docker), skip to the self-hosted stdio section — that mode needs your long API token instead.

Then copy the full connection URL shown in the dashboard (the key is already embedded, no extra fields needed):

https://priceminder.online/mcp_server?key=YOUR_MCP_KEY

⚠️ The endpoint is priceminder.online, not mcp.priceminder.online — the latter only serves /health checks.

Step 4: Configure Your AI Client

Supported AI clients (hosted mode — recommended, no local install required):

Client

Transport

Config file / path

Cherry Studio

streamable-http (in-app form)

none (Settings → MCP Servers)

OpenClaw

in-app form / YAML

none (Settings → MCP Servers)

WorkBuddy (Tencent)

http

user ~/.workbuddy/mcp.json; project <project-root>/.workbuddy/mcp.json

Claude Desktop

streamable-http

Win %APPDATA%\Claude\claude_desktop_config.json; mac ~/Library/Application Support/Claude/claude_desktop_config.json

Cursor

streamable-http

project .cursor/mcp.json; user ~/.cursor/mcp.json

TRAE

no type field

none (Settings → MCP)

Cline (VS Code)

streamable-http / stdio

%APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json

Hermes Agent

stdio (YAML)

~/.hermes/config.yaml (Win %USERPROFILE%\.hermes\config.yaml)

QwenWork

streamable-http (in-app connector)

none (Extensions → Connectors)

Windsurf

streamable-http

~/.codeium/windsurf/mcp_config.json

Doubao (desktop only)

HTTP (in-app form)

none (custom connector form)

Generic form (Cherry Studio / OpenClaw / Claude Desktop / Cursor / Cline / Windsurf)

{
  "mcpServers": {
    "shopee-sentinel": {
      "type": "streamable-http",
      "url": "https://priceminder.online/mcp_server?key=YOUR_MCP_KEY"
    }
  }
}

WorkBuddy (Tencent)

"Experts · Skills · Connectors" → Connectors tab → Custom Connector (top right) → Configure MCP, paste:

{
  "mcpServers": {
    "shopee-sentinel": {
      "type": "http",
      "url": "https://priceminder.online/mcp_server?key=YOUR_MCP_KEY"
    }
  }
}

After saving, you must click "Trust" on the entry — without it the tools will not load on first connection. It's connected once the status shows Connected and 22 tools are listed.

Some builds are strict about the type value: if it isn't recognized, try "type": "streamableHttp" first; if that still fails, remove the whole type line — with url present the client infers HTTP automatically. WorkBuddy supports http (streaming), sse and stdio; Priceminder uses http.

TRAE

Settings → MCP → + Add → Manual / Raw config, paste (omit type):

{
  "mcpServers": {
    "shopee-sentinel": {
      "url": "https://priceminder.online/mcp_server?key=YOUR_MCP_KEY"
    }
  }
}

QwenWork

Extensions → Connectors → + Add, paste (transport type streamable-http):

{
  "mcpServers": {
    "shopee-sentinel": {
      "type": "streamable-http",
      "url": "https://priceminder.online/mcp_server?key=YOUR_MCP_KEY"
    }
  }
}

Doubao (ByteDance, desktop client only)

Custom connectors are a form, not pasted JSON: "Plugins · Skills · Partners" → Plugins → + Add → New custom connector:

Field

Value

Server name

Priceminder

Transport type

HTTP

Server URL

the full URL from Step 3

Custom Headers

leave empty (the key is already in the URL)

The web version does not support custom connectors; Priceminder is a public HTTPS service, no local install needed.

For detailed client setup guides with screenshots, see: Client Setup Guides →

Step 5: Verify the Connection

Test your setup by asking these questions:

Your Prompt

Tool Called

Expected Result

"What am I monitoring?"

get_monitor_list

Your current monitor list

"How are my competitors' prices?"

get_price_summary

Price summary (current/baseline/high/low/avg)

"Any new price drop alerts?"

get_alerts

Unread price drop records

"Is the crawler healthy?"

get_crawl_health

Crawler engine status

"Run the smart-follow analysis"

run_smart_follow_analysis

Analysis batch result (status, rules fired)

"What pricing changes do you suggest?"

get_smart_follow_results

Per-product suggested action and target price

Your client's tool list should show 22 tools (10 basic + 12 smart follow).

✅ If the AI returns your monitoring data, setup is successful.

❌ If results are empty, make sure you've added products to monitor via the extension first.

Step 6: Troubleshooting

Symptom

Check

Connection fails / no tools listed

Is the URL complete with ?key=…? Is the host priceminder.online (not mcp.)? Does the client support Streamable HTTP?

401 Unauthorized

Key is invalid or was regenerated — copy a fresh one from the dashboard

WorkBuddy lists 0 tools

You didn't click Trust, or type isn't recognized (see the fallback above)

Using one key on multiple devices

Supported — Cherry Studio / Claude Desktop / Cursor can all be configured simultaneously

Disconnect completely

Remove the MCP server in the client; to revoke every connection, regenerate the key in the dashboard

Self-hosted stdio mode (developers)

To run the server locally instead of using the hosted endpoint:

{
  "mcpServers": {
    "sentinel": {
      "command": "uvx",
      "args": ["sentinel-mcp-server"],
      "env": {
        "SENTINEL_API_BASE": "https://priceminder.online/shopee",
        "SENTINEL_TOKEN": "your-api-token"
      }
    }
  }
}

In stdio mode use the long API token from the dashboard — not the short MCP Key that goes in the hosted URL.

Hermes Agent uses YAML (mcp_servers section of ~/.hermes/config.yaml):

mcp_servers:
  sentinel:
    command: uvx
    args: ["sentinel-mcp-server"]
    env:
      SENTINEL_API_BASE: "https://priceminder.online/shopee"
      SENTINEL_TOKEN: "your-api-token"
    enabled: true

💬 Prompt Scenarios

Here are 3 real-world scenarios you can run — each demonstrates a different use case:

1️⃣ Store-Level Price Watch

"Monitor all products from Shopee store 'ABC Official Store' on Shopee SG. If any product drops more than 5% in the last 24 hours, summarize the changes."

Your AI agent will:

  1. Check your monitor list for this store's products

  2. Compare latest crawl prices

  3. Return products that dropped below the threshold

Best for: Brand competition — keep tabs on a specific competitor's entire catalog.

2️⃣ Flash Sale / Campaign Alert

"During the 7.7 sale, list every price change of 3% or more across the products I track. Show only the products that changed."

Your AI agent will:

  1. Call get_price_summary to get current vs previous prices

  2. Filter for products with ≥3% movement

  3. Present a clean before/after comparison

Best for: Campaign periods — don't wake up to yesterday's data when competitors adjust prices several times a day.

3️⃣ Price Drop Intelligence

"Show me all price drop alerts from the last 2 days. Which products dropped the most? Highlight any drops over 10%."

Your AI agent will:

  1. Call get_alerts for recent notifications

  2. Call get_price_history on the biggest movers for context

  3. Rank by drop percentage and highlight critical moves

Best for: Buying decisions — spot the deepest discounts.

4️⃣ Smart-Follow Decision Loop

"Run the smart-follow analysis for my own products, show me the suggestions, and log a decision for the ones I agree with. Then tell me the adoption rate for the last 30 days."

Your AI agent will:

  1. Call run_smart_follow_analysis and check the run status

  2. Call get_smart_follow_results for suggested actions and target prices

  3. Call create_decision for each suggestion you confirm

  4. Call get_smart_follow_stats for the 30-day summary

Best for: Operations teams — turn price intelligence into a documented, reviewable pricing workflow.

More real-world prompt examples: Scenarios & Best Practices →


🔗 n8n Integration

Priceminder ships with a ready-to-import n8n workflow template.

File: priceminder-mcp-n8n.json

Workflow

Schedule ─► Get Price Summary ─► Parse Drops ─► Has Drops? ─┬► Telegram Alert
(4h cron)                                                     ├► Email Alert
                                                              └► Log (no drops)

Import

  1. Open n8n → Workflows → Import from File

  2. Select priceminder-mcp-n8n.json

  3. Configure credentials:

    • SENTINEL_TOKEN (env var on the n8n host)

    • Telegram bot token + chat ID (optional)

    • SMTP credentials (optional)

  4. Activate the workflow


🏗️ Architecture

┌─────────────────────────────────────────────────────┐
│                  AI Client                          │
│  (Claude Desktop / Cursor / Cherry Studio / Hermes) │
└──────────────┬──────────────────────────────────────┘
               │  MCP Protocol (stdio or HTTP/SSE)
               ▼
┌──────────────────────────────────────┐
│     Priceminder MCP Server           │
│  ┌────────────────────────────────┐  │
│  │  Tool Registry (22 tools)      │  │
│  │  Tier 1–3: query/action/insight│  │
│  │  Tier 4: smart follow          │  │
│  └──────────────┬─────────────────┘  │
│                 │ HTTP + Token Auth
│  ┌──────────────▼─────────────────┐  │
│  │  API Client (httpx)           │  │
│  └──────────────┬─────────────────┘  │
└─────────────────┼────────────────────┘
                  │ HTTPS
┌─────────────────▼────────────────────┐
│     Priceminder REST API             │
│  (User / Monitor / Price / Alert /   │
│   Telemetry / Smart-Follow)          │
└─────────────────┬────────────────────┘
                  │
┌─────────────────▼────────────────────┐
│     PostgreSQL 16                    │
│  (Price History / Users / Alerts /   │
│   Decisions / Competitor Maps)       │
└──────────────────────────────────────┘

Data Flow

① User selects products to monitor via extension
      │
      ▼
② Backend collects public product-page prices at your plan's cadence → PostgreSQL
      │
      ▼
③ MCP Server reads via API
      │
      ▼
④ AI client queries via MCP protocol

Key point: Data flows one way — user selects products → backend collects on the hosted side → MCP reads. The extension only tells the system which products to watch; collection and storage happen in the cloud, so you don't wire up a data source yourself and you don't pay extra (the Free tier is bounded by your watch quota — see pricing).


🔧 Configuration

Environment Variables

Variable

Description

Default

SENTINEL_API_BASE

Backend API base URL

https://priceminder.online/shopee

SENTINEL_TOKEN

Your long API token (stdio mode). Hosted HTTP mode does not use it — put your short MCP Key in the URL instead

(required in stdio)

SENTINEL_API_KEY

Shared public API key marking open-source MCP clients. Rate-limited at 120 requests/min per token purely to keep the server healthy for everyone (not a paywall)

sentinel-oss-client-2026

SENTINEL_TIMEOUT

HTTP request timeout (s)

30

MCP_MODE

Run mode: stdio or http

stdio

MCP_HOST

HTTP server bind address

127.0.0.1

MCP_PORT

HTTP server port

8020

SENTINEL_MCP_INTERNAL_KEY

Internal key for hosted-mode auth checks

—

LOG_LEVEL

Log level

INFO


📡 API Reference

Authentication

All backend API calls require these headers:

X-Api-Key: YOUR_API_KEY
X-Sentinel-Token: YOUR_TOKEN

🆓 Free vs Pro

MCP and API are free on all tiers — the difference between Free and Pro is watch quota, collection frequency and data retention, not whether you can call the server.

Feature

Free

Pro

Supported sites

ID / VN / TH / PH / MY / SG / BR (7 sites)

Same

Monitored products

5 total

50 total

Collection frequency

2×/day (morning and afternoon)

4×/day (all day)

Price trend

Last 7 days

Last 30 days

Push channels

Desktop + Feishu

Desktop + Feishu + Telegram / Slack

MCP / API

✅ Free, bounded by your watch quota

✅ Free, no quota cap

Smart-follow

✅ Free until 2026-12-31

✅ Permanent entitlement

Full entitlements and current pricing: priceminder.online/en/pricing →

Want the priceminder.online API to watch many more competitors at 4×/day? Upgrade to Pro 👉 pricing


🛠️ Development

git clone https://github.com/haidrau/sentinel-mcp-server.git
cd sentinel-mcp-server

# Install dev dependencies
pip install -e ".[dev]"

# Verify all 22 tools are registered
python -c "import asyncio, sentinel_mcp.server as s; print(len(asyncio.run(s.mcp.list_tools())))"

# Run tests
python -m pytest tests/

# Start in dev mode
export SENTINEL_TOKEN=your-test-token
python -m sentinel_mcp.server

📄 License

MIT License — see LICENSE for details.


🤝 Contributing

Contributions are welcome! Feel free to:

  • Open issues for bugs or feature requests

  • Submit PRs for new tools or improvements

  • Ask questions in the discussions


💌 Contact

Questions, bug reports, feature requests or partnership inquiries — all welcome. We reply within 24 hours on business days.

Email: priceminder@foxmail.com


Available Tools

22 tools
add_monitorA

添加一个新的商品到监控列表。用户需要提供一个 Shopee 商品 URL。

用户可能的问法:

  • "帮我监控这个商品 https://shopee.sg/..."

  • "把这个加到监控列表"

  • "我想盯一下这个竞品的价格"

需要提供 product_url(必填)。可选参数:

  • product_name / shop_name:商品名与店铺名(留空则由爬虫采集后填充)

  • site / currency:显式指定站点与货币;留空则从 URL 解析(支持 my/th/vn/sg/id/ph/br)

  • base_price:种子基准价(留空表示跳过)

  • check_interval:采集间隔分钟数(默认 120)

  • alert_threshold:降价阈值百分比(默认 5)

NameRequiredDescriptionDefault
siteNo
currencyNo
shop_nameNo
base_priceNo
product_urlYes
product_nameNo
check_intervalNo
alert_thresholdNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations at all, the description carries the whole burden, and it does disclose useful behavior: empty product_name/shop_name are backfilled by the crawler, site/currency are parsed from the URL, and base_price empty means 'skip'. It does not say whether monitoring starts immediately, what happens on a duplicate URL (idempotency), or what happens when URL parsing fails — significant gaps for a create/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?

Purpose is front-loaded in one sentence, then user phrasings, then a compact bullet list of parameters — a sensible order. The example utterances are slightly verbose for a definition body, but they earn their place by anchoring invocation intent.

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?

Return values are covered by the output schema, and parameter defaults/fallbacks are well explained. Still missing for an un-annotated create tool are duplicate handling, immediate-vs-deferred crawl behavior, and failure modes on an unparseable URL, which an agent would need before confidently invoking it.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it largely does: it walks through all eight parameters, marks product_url as required, lists supported sites (my/th/vn/sg/id/ph/br), and explains the meaning of each optional field. It only omits finer details such as the currency unit for base_price and any valid range for check_interval/alert_threshold.

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 first sentence gives a specific verb plus resource ('添加一个新的商品到监控列表'), and it is clearly distinct from read-side siblings like get_monitor_list or get_monitor_overview. An agent can tell this is the creation path for a new monitored product without inspecting any schema.

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

Usage Guidelines4/5

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

The '用户可能的问法' examples give concrete trigger conditions and make clear this is the entry point whenever a user supplies a Shopee URL to track. There is no explicit exclusion or routing statement (e.g. what to do if the product is already monitored, or whether to use search_my_products first), so it stops short of a full when/when-not guide.

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

adopt_decisionA

采纳一条决策建议,状态变为 adopted。可记录实际执行价。

用户可能的问法:

  • "这条建议我采纳了"

  • "我实际执行价是 195,不是建议的 199"

  • "把那条降价建议标记为已采纳"

参数:

  • decision_id: 决策 ID

  • actual_price: 实际执行价;留空则采用建议的 target_price

注意:hold_price / observe / improve_rating 这类建议通常没有目标价,采纳后实际执行价可能仍为空。

NameRequiredDescriptionDefault
decision_idYes
actual_priceNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.9/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 does meaningful work: it discloses the state transition to adopted, the default-fill behavior (actual_price 留空则采用建议的 target_price), and an edge case where certain decision types have no target price so actual_price may remain empty. It does not state preconditions (must the decision be pending?) or whether adoption is reversible, which keeps it short of a 5.

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

Conciseness5/5

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

The action and state outcome are front-loaded in the first sentence, then parameter notes, then an edge-case caveat. The example utterances are slightly verbose but directly aid routing, and no sentence is 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?

An output schema exists, so return values need no explanation, and for a two-parameter mutation the description covers the key semantics and one important edge case. Missing are precondition/validation behavior (e.g., what happens if the decision was already adopted or rejected), which an agent would want before calling a state-changing tool.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it does: decision_id is identified as the decision ID, and actual_price is defined both as the executed price and as optional with a documented fallback to the suggestion's target_price. The only gap is the absence of format/range hints for the price value.

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

Purpose4/5

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

States a specific verb+resource (采纳一条决策建议) and the resulting state change (状态变为 adopted), which goes beyond the tool name. It does not explicitly contrast itself with sibling review_decision or reject_decision, so an agent must infer the boundary from the verb alone.

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

Usage Guidelines3/5

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

Three example user utterances ('这条建议我采纳了', '我实际执行价是 195…', '把那条降价建议标记为已采纳') give concrete trigger contexts, which is genuinely useful. However there is no explicit when-not guidance or named alternative (e.g., 'to reject instead, use reject_decision'), leaving the sibling boundary implied.

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

create_decisionA

记录一条跟卖决策建议(状态为 suggested,14 天后到期复盘)。决策会进入统计与复盘闭环。

用户可能的问法:

  • "记一下我的决定:跟着降到 199"

  • "这个商品我打算维持价格,记一条"

  • "把系统的建议存成一条决策"

参数:

  • monitor_id: 监控项 ID

  • action: 必须是 follow_price / hold_price / observe / raise_price / improve_rating

  • target_price: 目标价(follow_price / raise_price 时建议填写)

  • reason: 留档理由(自由文本)

  • context_json: 决策时上下文(JSON 字符串;传对象会自动序列化)

返回 decision_id 与 review_at;随后可用 adopt_decision 采纳或 reject_decision 拒绝。

NameRequiredDescriptionDefault
actionYes
reasonNo
monitor_idYes
context_jsonNo
target_priceNo

Output Schema

NameRequiredDescription
resultYes

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 and does disclose real behavior: the created record defaults to status 'suggested', expires for review after 14 days, and feeds statistics/review loops. It also documents the return payload (decision_id, review_at). It does not mention permissions, whether duplicate decisions are allowed, or failure modes.

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

Conciseness4/5

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

Front-loaded with the core behavior, then parameter semantics, then return values — a logical reading order. The user-phrasing bullet block is mildly redundant but does add intent-matching value; the rest is tight.

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 5-parameter mutation tool with no annotations, it covers purpose, all parameters, side effects on status/expiry, and return fields (an output schema exists so return details need not be exhaustive). Missing only edge-case guidance such as valid monitor_id preconditions or duplicate handling.

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?

Schema coverage is 0% and no enum is declared, so the description does essential work: it enumerates the five valid action values, states target_price is expected for follow_price/raise_price, and explains that context_json accepts an object and will be serialized. That compensates fully for the empty schema descriptions.

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 (record a follow-sell decision, status=suggested, 14-day review), plus the downstream lifecycle. It also names adopt_decision and reject_decision as the follow-up actions, so an agent can separate creation from adoption/rejection without opening other schemas.

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 example user utterances ("记一下我的决定:跟着降到 199") map natural-language intents to this tool, which is unusually actionable guidance. It also describes the workflow continuation via adopt_decision/reject_decision, but never states when NOT to use it (e.g., versus review_decision or when a decision already exists).

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

get_alertsA

获取价格预警列表,查看系统推送过的所有降价预警。支持未读筛选和站点过滤。

用户可能的问法:

  • "有没有新的降价预警"

  • "最近有哪些商品降价了"

  • "未读的预警有几条"

  • "上次推送的那个降价预警是哪个商品"

可选参数:

  • unread_only: 只返回未读预警(默认 false)

  • site: 按站点筛选

  • limit: 返回条数上限(默认 10,最大 50)

NameRequiredDescriptionDefault
siteNo
limitNo
unread_onlyNo

Output Schema

NameRequiredDescription
resultYes

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 must carry the behavioral load. It implies a safe read-only listing operation and discloses meaningful limits (default 10, max 50 for limit). However, it does not discuss permissions, ordering, pagination beyond limit, or failure behavior, so gaps remain for a tool with zero annotation coverage.

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

Conciseness4/5

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

The description is front-loaded with the core purpose, followed by compact usage examples and then the parameter list. The example questions add routing value rather than just filling space. It could be tightened, but everything included supports selection or invocation.

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?

Output schema exists, so return-value documentation is not required. For a zero-required-parameter read tool, the description covers purpose, usage triggers, and all three parameters. Minor omissions such as ordering or what fields an alert contains are acceptable given the output 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?

Schema description coverage is 0%, so the description has to compensate. It explains all three parameters: unread_only filters unread alerts (default false), site filters by site, and limit caps the number of results (default 10, maximum 50). The maximum of 50 and the purpose of site are facts that the bare schema does not convey, though there is no format guidance for site.

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

Purpose4/5

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

The description states a specific verb and resource: it fetches the list of price alerts, covering all drop alerts the system has pushed, along with scoping for unread-only and site filters. This clearly separates it from sibling tools such as mark_alert_read or get_price_summary, though it never names a sibling explicitly or with an explicit comparison.

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 tells an agent what to use this tool for by listing the kinds of user questions this tool answers, such as "any new drop alerts" or "how many unread alerts". That is strong context for routing. There is no explicit when-not-to-use guidance, and no alternatives are named, 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_algorithm_listA

查看智能跟卖算法清单(ALG-01~12)及其启用状态与参数。

用户可能的问法:

  • "现在启用了哪些跟卖算法"

  • "ALG-08 的参数是多少"

  • "系统用哪些规则给我出建议"

无参数。返回 algo_id、名称、是否启用、参数(params)。

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

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 and does well: 查看 marks it as a read-only listing, 无参数 confirms it has no inputs, and the return field set (algo_id、名称、是否启用、params) is disclosed up front. It omits whether the list is global vs. user-scoped and any auth/rate-limit context, which keeps it from a 5.

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

Conciseness4/5

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

The core statement is front-loaded in the first sentence, followed by routing examples and the return contract — a sensible order. The three-line utterance list is somewhat padded and could be trimmed, but each block does contribute to disambiguating intent.

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 tool with an output schema, purpose plus return-field summary is essentially complete. The minor gap is that it doesn't say how the returned algorithm IDs/params are meant to be consumed downstream (e.g. fed into run_smart_follow_analysis), leaving the workflow linkage implicit.

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

Parameters4/5

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

The tool takes zero parameters, which sets the baseline at 4, and the description explicitly confirms this with 无参数 so an agent never hunts for inputs. The mentioned return fields add nothing for parameters but are harmless.

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

Purpose5/5

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

States a specific verb+resource (查看智能跟卖算法清单) with an explicit scope (ALG-01~12) and even names the fields inspected (启用状态与参数). The resource is unambiguous and clearly distinct from siblings such as get_monitor_list or get_price_summary, so an agent can route without opening the schema.

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

Usage Guidelines4/5

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

The three sample user utterances ("现在启用了哪些跟卖算法", "ALG-08 的参数是多少", "系统用哪些规则给我出建议") give concrete triggers for when to call it. It does not, however, name any alternative tool or state when NOT to use this one (e.g. versus get_smart_follow_stats), so it stops short of explicit exclusion guidance.

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

get_competitor_mappingA

查看自己的商品与竞品的映射关系(自营监控 ID → 竞品监控 ID 列表)。

用户可能的问法:

  • "我的商品都对标了哪些竞品"

  • "看看 iPhone 那个挂了多少竞品"

  • "竞品映射表"

可选参数:

  • self_owned_monitor_id: 只查看指定自营商品;留空返回全部

NameRequiredDescriptionDefault
self_owned_monitor_idNo

Output Schema

NameRequiredDescription
resultYes

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 full burden. The word '查看' implies a read-only operation, and the parenthetical clarifies the return shape. However, it does not disclose permissions, pagination behavior, or whether the result is scoped to the caller's account, which leaves meaningful behavioral gaps for a tool with zero annotation coverage.

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

Conciseness4/5

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

The core purpose is front-loaded in the first sentence, followed by example phrasings and a parameter note. The example questions are useful for intent matching but add some length; overall the structure is efficient and each section serves a 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?

With an output schema present, the description needn't explain return values, and it correctly focuses on purpose and the single optional parameter. The main remaining gap is the lack of explicit sibling differentiation from map_competitors, but for a one-parameter read tool this 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?

Schema description coverage is 0%, so the description must compensate. It does so by explaining that self_owned_monitor_id restricts results to a specific self-owned product and that leaving it blank returns all mappings, which adds real meaning beyond the bare integer/null schema.

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

Purpose4/5

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

The description states a specific verb and resource: it returns the mapping from a self-owned monitor ID to a list of competitor monitor IDs. This is clear enough for an agent to understand the tool's output shape. However, it does not explicitly distinguish itself from the sibling tool map_competitors, which likely creates or edits these mappings, so the agent must infer the read-only nature from the word '查看'.

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 three example user phrasings that clearly indicate when this tool applies, which is strong intent-matching guidance. It does not, however, name an alternative tool or state when not to use it, such as when the user wants to create a mapping instead of view one.

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

get_crawl_healthA

检查后台采集引擎的运行状态,包括采集次数、各站点采集情况、过期监控检测。

用户可能的问法:

  • "采集系统运行正常吗"

  • "今天采集了多少次"

  • "各站点的采集情况怎样"

  • "有没有监控很久没更新了"

无需参数,直接返回采集系统健康报告。数据范围为当前用户自己的监控商品。

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

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 full behavioral burden. It discloses the important scoping constraint (data covers only the current user's monitored products) and that it is a direct, no-arg read of a health report, but it doesn't state permissions, rate limits, or freshness semantics. An output schema exists, so return-shape details are reasonably omitted.

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

Conciseness4/5

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

The purpose is front-loaded in the first sentence, followed by example intents and a scope note. The example list is slightly padded but each line serves routing value, so it stays efficient overall.

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

Completeness4/5

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

No parameters, an output schema, and no annotations make this a simple tool, and the description covers purpose, scope, and invocation. An agent has enough to call it correctly; only minor behavioral detail (e.g. what 'stale' means) is missing.

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?

With zero parameters and 100% schema coverage, the baseline of 4 applies. The description correctly reinforces that it takes no parameters, adding no contradictory or missing parameter guidance.

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

Purpose4/5

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

The description states a specific verb and resource ('检查后台采集引擎的运行状态') and enumerates what the report contains: crawl counts, per-site status, and stale-monitor detection. It doesn't explicitly name a sibling it is not (e.g. get_monitor_overview or get_smart_follow_stats), so an agent must infer differentiation from content rather than explicit disambiguation.

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?

Four example user phrasings map clear intents to this tool, which is strong routing guidance for an intent-matched agent. It also states that no parameters are needed. It lacks explicit when-not-to-use or named alternatives, keeping it at 4 rather than 5.

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

get_monitor_listA

获取用户正在监控的商品列表。

用户可能的问法:

  • "我在盯哪些商品"

  • "SG 站有几个商品在监控"

  • "我的监控列表"

  • "暂停中的监控有几个"

返回监控项数组,每项包含商品名、店铺、站点、基准价、当前价、变动幅度、状态等。

NameRequiredDescriptionDefault
siteNo
statusNoactive

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are present, so the description carries the full load. It discloses that the result is an array of monitor items with fields including product name, shop, site, baseline price, current price, change magnitude, and status, which is useful. It says nothing about permissions, pagination, list size limits, or whether 'active' is the implicit default filter.

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 one-line purpose is front-loaded, followed by a compact bullet list of user phrasings and a single return-shape sentence. No filler 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?

An output schema exists, so the return-value sentence is somewhat redundant but harmless. For a zero-required-param read tool the main gaps are undocumented parameter semantics and the lack of any routing guidance against the many read siblings, leaving the definition only minimally sufficient.

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

Parameters2/5

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

Schema description coverage is 0% and the description never names the two parameters. The example questions ('SG 站...' and '暂停中的监控...') hint at site and status filtering, but there is no explanation of accepted values, that status defaults to 'active', or that site is nullable.

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

Purpose4/5

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

The description states a specific verb+resource: '获取用户正在监控的商品列表' (retrieve the list of products the user is monitoring). It is clearly distinguishable from mutation siblings like add_monitor and update_monitor_status, though it doesn't differentiate itself from get_monitor_overview or get_price_summary.

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?

Four example user phrasings ('我在盯哪些商品', 'SG 站有几个商品在监控', '我的监控列表', '暂停中的监控有几个') give concrete triggers for when this tool applies. However, no exclusions or alternative-tool routing are given, so an agent can't tell when get_monitor_overview would be preferred.

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

get_monitor_overviewA

获取所有监控的总览大盘数据,包括活跃监控数、今日采集/预警、各站点分布等。

用户可能的问法:

  • "给我一个监控总览"

  • "我的所有商品监控情况怎样"

  • "大盘数据看看"

无需参数,返回监控大盘摘要。

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.9/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 load, but it is a zero-parameter aggregate read and the output schema already defines the return shape, so the burden is light. It does state that no parameters are needed and that the result is a dashboard summary, yet it says nothing about access scope, whether the data is cached or real-time, or any 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?

Purpose and content list are front-loaded in the first sentence; the query examples and the no-parameters note are short and each serves a routing or clarity function. No filler sentences.

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

Completeness4/5

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

For a simple zero-parameter read tool with an output schema that already documents the returned fields, the description is sufficient: it names the resource, lists the summary categories, and clarifies invocation. The only real gap is the absence of guidance on how this differs from sibling summary tools.

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

Parameters4/5

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

The tool takes zero parameters, which is the baseline-4 case. The closing '无需参数' merely confirms what the empty schema already shows and adds no further semantics.

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

Purpose4/5

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

States a specific verb and resource ('获取所有监控的总览大盘数据') and enumerates the contents (active monitor count, today's collection/alerts, per-site distribution). This distinguishes it from the sibling get_monitor_list, which lists individual monitors rather than aggregating them, though the description never says so explicitly.

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

Usage Guidelines4/5

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

The three example user phrasings ('给我一个监控总览', '我的所有商品监控情况怎样', '大盘数据看看') give an agent concrete routing signals for when this tool applies. However, no alternative is named and no case is excluded, so the agent must infer that get_monitor_list or get_price_summary cover narrower questions.

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

get_price_historyA

获取指定商品的时间序列价格数据,可用于绘制价格趋势图或分析价格变化。

用户可能的问法:

  • "给我看看这个商品近 7 天的价格走势"

  • "iPhone 那个商品的价格变化记录"

  • "帮我画个价格折线图"

  • "MY 站上几个我关注的竞品今天是什么价格,给我看看趋势"

需要提供 monitor_id(必填)。可选 days(默认 7 天,最大 90 天)。

NameRequiredDescriptionDefault
daysNo
monitor_idYes

Output Schema

NameRequiredDescription
resultYes

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 full burden, and it does disclose the days default of 7 and the 90-day cap, which is useful behavioral context. It omits whether the monitor_id must belong to the caller, whether results are paginated, and what happens when no data exists in the window.

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

Conciseness4/5

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

The core purpose is front-loaded in the first sentence, followed by parameter constraints. The example-query bullet list is longer than strictly necessary but earns its place by giving the agent phrasing matches for retrieval.

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

Completeness4/5

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

An output schema exists, so return-value explanation is correctly omitted, and the parameter constraints are covered. The only meaningful gap is not telling the agent how to obtain a valid monitor_id or how this differs from get_price_summary.

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

Parameters4/5

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

Schema description coverage is 0%, so the description has to compensate, and it does: monitor_id is marked required, and days is documented with both its default (7) and hard maximum (90), which the bare schema does not say. It does not explain where a monitor_id comes from (e.g. get_monitor_list), leaving that link implicit.

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

Purpose4/5

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

The description states a concrete verb and resource: fetching a time series of price data for a given product, with the stated downstream uses (trend charting, price-change analysis). This implicitly separates it from get_price_summary, but it never names that sibling, so an agent must infer the boundary itself.

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 four example user phrasings ("近 7 天的价格走势", "价格变化记录", "画个价格折线图", "竞品今天是什么价格") give concrete trigger conditions for when to reach for this tool. However, it never states when NOT to use it or points to get_price_summary as the alternative for aggregate/snapshot queries.

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

get_price_summaryA

获取指定商品或所有活跃监控商品的价格摘要,包括当前价、基准价、最高/最低/均价、趋势方向。

用户可能的问法:

  • "竞品最近价格怎么样"

  • "SG 站上盯的几个商品近 2 天价格怎样"

  • "有没有降价的竞品"

如果不指定 monitor_id,返回所有活跃监控的摘要。可选指定 site(站点)和 days(天数,默认 3)。

NameRequiredDescriptionDefault
daysNo
siteNo
monitor_idNo

Output Schema

NameRequiredDescription
resultYes

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 must carry the safety profile itself; the 'get/摘要' framing implies a read-only operation and it discloses the important behavioral rule that omitting monitor_id aggregates ALL active monitors. It does not state permissions, rate limits, or whether inactive monitors are excluded, which is meaningful for an aggregation 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 purpose statement is front-loaded, followed by example queries and then fallback/default rules — a sensible order for an agent reading top-down. The example list is slightly padded but each line maps to a distinct invocation pattern, so nothing is truly wasted.

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

Completeness4/5

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

An output schema exists, so return values need not be described, yet the description still names the summary fields, and all three optional parameters are covered behaviorally. The remaining shortfall is the absence of annotations, leaving the safety/permission profile implicit for an aggregation query.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it does: it explains that monitor_id is optional and scopes to a single product vs all active monitors, that site filters by site, and that days defaults to 3. The only gap is that site's accepted format (e.g. 'SG') is shown only by example in a sample query rather than specified.

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

Purpose4/5

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

The first sentence gives a specific verb and resource ('获取...价格摘要') and enumerates the returned metrics (current price, baseline, max/min/avg, trend direction), which clearly separates it from a raw history tool. It never names the closest sibling (get_price_history) or explains how a 'summary' differs from 'history' or 'overview', so differentiation is implied rather than stated.

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

Usage Guidelines4/5

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

It provides three concrete user-phrasing examples ('竞品最近价格怎么样', 'SG 站上盯的几个商品近 2 天价格怎样', '有没有降价的竞品'), which is strong positive routing guidance. It also defines the no-monitor_id fallback behavior. It stops short of stating when to prefer get_price_history or get_monitor_overview instead, so no exclusions are given.

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

get_smart_follow_resultsA

查看最近一次智能跟卖分析的结果:每个自营商品的建议动作、目标价、理由与竞品快照。

用户可能的问法:

  • "最近一次跟卖分析结果是什么"

  • "系统建议我跟着降价吗"

  • "target 那个商品有什么建议"

可选参数:

  • monitor_id: 只看指定监控项的结果

建议动作取值:follow_price(跟进降价)/ hold_price(维持)/ observe(观察)/ raise_price(提价)/ improve_rating(优化评分)。 目标价只在 follow_price / raise_price 时有值,其他动作显示“—”。

NameRequiredDescriptionDefault
monitor_idNo

Output Schema

NameRequiredDescription
resultYes

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 and does disclose real behavioral traits: results are limited to the most recent analysis (not a history), and target price is null/'—' for actions other than follow_price/raise_price. It does not cover the empty state (no analysis run yet) or any permission/scope constraints, which is the remaining gap.

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

Conciseness5/5

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

Purpose is front-loaded in the first sentence, followed by clearly delimited blocks for query phrasings, the optional parameter, and action-value semantics. Every block is labeled and the value glossary prevents misinterpretation of the returned action field.

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 optional-parameter read tool with an output schema, the description covers what is returned, the meaning of the action enum, and the null semantics of target price — the agent can call and interpret it correctly. Only the no-data case and the provenance of monitor_id remain unspecified.

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

Parameters4/5

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

Schema description coverage is 0% — monitor_id has no description or enum in the schema — but the description compensates with '只看指定监控项的结果', clarifying it acts as a filter rather than a selector. It omits where to obtain a valid monitor_id (presumably get_monitor_list), which would have made the parameter fully actionable.

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

Purpose4/5

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

The opening line gives a specific verb and resource ('查看最近一次智能跟卖分析的结果') plus the exact payload (suggested action, target price, reason, competitor snapshot per self-owned product). It implicitly distinguishes itself from run_smart_follow_analysis by scoping to the most recent existing result, but it never names that sibling or get_smart_follow_stats, so the differentiation is left to inference.

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 '用户可能的问法' block gives concrete routing triggers ('最近一次跟卖分析结果是什么', '系统建议我跟着降价吗') that map natural-language intents to this tool. There are no explicit exclusions or named alternatives telling the agent when to prefer run_smart_follow_analysis or get_smart_follow_stats instead.

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

get_smart_follow_statsA

查看近 30 天智能跟卖决策统计:建议总数、采纳率、拒绝率、复盘有效率,以及按动作分组明细。

用户可能的问法:

  • "我的跟卖建议采纳率是多少"

  • "最近一个月智能跟卖效果怎么样"

  • "哪些动作建议最多"

无参数。复盘有效率只统计填写了结论枚举(effective/ineffective)的决策。

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/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 and does add real behavioral context: the window is fixed at 30 days (not caller-configurable) and the review-effective rate only counts decisions that have an effective/ineffective conclusion. It never explicitly states this is a read-only, side-effect-free query, which keeps it below 5.

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

Conciseness4/5

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

Front-loads the resource and metric list, then adds example phrasings and the one meaningful caveat; nothing is padded. The example-question block is slightly verbose but earns its place as routing signal.

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

Completeness4/5

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

An output schema exists, so return-shape explanation is unnecessary, and a zero-parameter read tool has little additional risk to disclose. The fixed 30-day window and metric definition are covered, leaving little an agent would still need to know before calling.

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 zero parameters, so the baseline is 4 by rule. The description's 'no parameters' note is consistent with the empty schema but adds nothing beyond it.

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

Purpose4/5

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

States a specific verb and resource (view smart-follow decision statistics) plus the exact metric set (total suggestions, adoption rate, rejection rate, review-effective rate, per-action breakdown) and the 30-day scope. This clearly separates it from analysis/results siblings like run_smart_follow_analysis and get_smart_follow_results, though no sibling is named explicitly.

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

Usage Guidelines4/5

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

The example user questions ("what's my adoption rate", "how did smart-follow perform last month", "which actions get the most suggestions") give concrete routing signals for when to select this tool. There is no explicit when-not-to-use or named alternative, so it stops 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_decisionsA

查看历史跟卖决策记录,可按监控项和状态筛选。

用户可能的问法:

  • "我最近做了哪些跟卖决策"

  • "有哪些建议还没处理"

  • "iPhone 那个商品的决策历史"

可选参数:

  • monitor_id: 只看指定监控项

  • status: 筛选状态 suggested(建议中)/ adopted(已采纳)/ rejected(已拒绝)

  • limit: 显示条数(默认 20)

注意:接口按创建时间倒序返回全部,MCP 侧做状态筛选与截断,头部会标明总数。

NameRequiredDescriptionDefault
limitNo
statusNo
monitor_idNo

Output Schema

NameRequiredDescription
resultYes

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 and does well: it discloses ordering (descending by creation time), that status filtering and truncation happen MCP-side rather than in the API, and that the header reports the total count. It omits any note on permissions or failure behavior, but the read-only listing nature is clear.

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

Conciseness4/5

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

Front-loaded with purpose, then example queries, then parameters, then a behavioral note. Well-organized and generally tight, though the example-query block adds length that could be trimmed for a simple list tool.

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

Completeness4/5

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

An output schema exists so return structure needn't be explained, and the description still notes the header total count. For a 3-param filtered list tool the coverage is essentially complete; only explicit permission/edge-case behavior is absent.

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?

Schema description coverage is 0% and parameters carry no descriptions or enums, so the description must compensate. It does: monitor_id (limit to a monitor), status with the enum values suggested/adopted/rejected, and limit with default 20 are all explained with meaning beyond the bare schema.

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

Purpose5/5

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

States a specific verb+resource: viewing historical follow-sell decision records, with scope (filterable by monitor and status). The 'list' semantics are clearly distinct from the create_decision/review_decision/adopt_decision/reject_decision siblings that mutate state.

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 example user questions ('what decisions did I make recently', 'which suggestions are unhandled', 'iPhone decision history') convey when to reach for this tool. Usage context is concrete, though no explicit exclusions or named alternatives are given.

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

map_competitorsA

设置某自营商品的竞品映射。注意:这是覆盖式写入,会替换该自营商品原有的全部映射。

用户可能的问法:

  • "把这两个竞品挂到我的商品下面"

  • "我的商品对标竞品 101、102、103"

  • "清空这个商品的竞品映射"

参数:

  • self_owned_monitor_id: 自营商品监控 ID

  • competitor_monitor_ids: 竞品监控 ID 列表;传空列表表示清空映射

所有竞品 ID 必须属于当前用户,否则整次写入被拒绝(不会部分生效)。

NameRequiredDescriptionDefault
self_owned_monitor_idYes
competitor_monitor_idsYes

Output Schema

NameRequiredDescription
resultYes

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 and does so well: it discloses overwrite semantics (replaces all existing mappings), the empty-list clear operation, the ownership precondition, and atomic rejection with no partial writes. These are exactly the traits an agent needs before calling 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.

Conciseness4/5

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

The overwrite warning is front-loaded and the param list is compact. The example-phrasings block is somewhat verbose but earns its place by aiding intent matching; overall structure is clean with 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 2-parameter mutation with no annotations, the definition covers purpose, parameters, destructive scope, and failure mode. An output schema exists, so return values need not be described; nothing necessary is missing.

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?

Schema coverage is 0%, and the description fully compensates by defining both parameters, including the non-obvious empty-list-equals-clear semantics that the schema's array type does not convey. This adds real meaning beyond the input schema.

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

Purpose4/5

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

States a specific verb and resource: setting the competitor mapping for one self-owned product. An agent knows exactly what mutation occurs. It does not name the read counterpart (get_competitor_mapping) to differentiate, which keeps it from 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 'user phrasings' block gives concrete triggers (attach competitors, map against IDs 101/102/103, clear all mappings), which maps natural-language intent to this tool. There is no explicit when-not or alternative routing, 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.

mark_alert_readC

将某条预警标记为已读,保持预警列表干净。

用户可能的问法:

  • "把这条预警标记已读"

  • "所有预警都标为已读"

  • "我已经看过那个降价通知了"

需要提供 alert_id(预警记录 ID)。

NameRequiredDescriptionDefault
alert_idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations exist, so the description carries the full burden, yet it does not say whether marking read is reversible, whether read alerts disappear from get_alerts or merely change status, whether the call is idempotent, or what happens if the alert_id is invalid. '保持预警列表干净' hints at list hygiene but never explains the mechanism, which leaves real ambiguity 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.

Conciseness3/5

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

The opening sentence is well front-loaded and earns its place, but the example list is padded, and the second example actively misleads rather than clarifying. Trimming or correcting the examples would make the whole definition tighter and more accurate.

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

Completeness2/5

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

The output schema means return values need not be explained, but for a mutation tool with no annotations and an undocumented parameter, the description should still cover provenance of alert_id, idempotency, and the effect on subsequent get_alerts results. None of that is present, and the bulk-read example adds a misleading expectation rather than filling the gap.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for the single alert_id parameter. It only restates the field name as '预警记录 ID' and adds no meaning beyond the schema title, and says nothing about where to obtain a valid ID (e.g., from get_alerts) or what form it takes.

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

Purpose4/5

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

States a specific verb and resource ('将某条预警标记为已读') and adds a purpose clause ('保持预警列表干净'), which distinguishes it from the read-only siblings like get_alerts. The scope is slightly clouded by the example '所有预警都标为已读', which implies bulk behavior the single-alert_id schema cannot deliver.

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 user-phrasing examples imply when to invoke the tool, which is useful context not present in structured fields. However, there are no explicit exclusions or alternatives, and the bulk-reading example contradicts the single-record scope, leaving the agent to infer which requests this tool can actually satisfy.

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

mark_self_ownedA

把某个监控项标记为自己的商品(自营)或取消标记。只有自营商品会进入智能跟卖批处理。

用户可能的问法:

  • "这个商品是我自己卖的,标记成自营"

  • "把 iPhone 那个设为我自己的商品"

  • "取消这个商品的自营标记"

需要提供 monitor_id;is_self_owned 默认 true(false 表示取消标记)。

NameRequiredDescriptionDefault
monitor_idYes
is_self_ownedNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.1/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 discloses a meaningful downstream behavior—only self-owned products are picked up by the smart-follow batch processing—but says nothing about idempotency, permissions, or what happens to the existing flag on repeated calls.

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

Conciseness4/5

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

The core behavior and downstream effect are front-loaded, followed by example utterances that aid matching, then the parameter note. The examples add length but each reinforces a distinct invocation scenario rather than restating the same point.

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

Completeness4/5

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

An output schema exists, so return values need not be explained. The description covers the action, the toggle semantics, and the business consequence, leaving only permission/idempotency details unstated for a simple mutation.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate; it does so for the non-obvious boolean by stating that is_self_owned defaults to true and that false means unmarking. monitor_id is only named, but its semantics are self-evident from the tool purpose.

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

Purpose5/5

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

States a specific verb and resource (mark/unmark a monitored item as self-owned) plus the functional consequence: only self-owned items enter the smart-follow batch. This clearly separates it from sibling tools like update_monitor_status or add_monitor.

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 concrete user phrasings that indicate when to invoke it ("this product is mine, mark it self-owned", "cancel the self-owned flag"), which gives a clear usage context. It does not, however, name an alternative tool or an explicit when-not-to-use condition.

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

reject_decisionA

拒绝一条决策建议,状态变为 rejected。

用户可能的问法:

  • "这条建议不采纳"

  • "拒绝那个提价建议"

  • "这条跟卖建议我不执行"

需要提供 decision_id。后端不限制状态流转(已拒绝的仍可再次采纳), MCP 侧不做前置校验,操作前请确认决策 ID 无误。

NameRequiredDescriptionDefault
decision_idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.9/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 and does disclose real behavioral traits: the backend does not restrict state transitions (a rejected decision can later be adopted again) and the MCP layer performs no pre-validation. What it omits is the failure mode — what happens if decision_id does not exist — so it's strong but not exhaustive.

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

Conciseness4/5

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

Front-loaded with the action and resulting state, then example phrasing, then caveats — a sensible order. The example-question list is a little verbose, but each line maps to a distinct user phrasing and earns its place for intent matching.

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

Completeness4/5

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

For a one-parameter mutation with no annotations, the description covers outcome state, the re-adoption/state-flow caveat, and the no-pre-validation warning; the output schema covers return values. Missing only error behavior and ID provenance, which are minor at this complexity.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate; it does say decision_id is required and that the caller should confirm the ID before operating. It does not explain where the ID comes from (e.g. list_decisions) or what type/format it takes, so a meaningful gap remains.

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

Purpose4/5

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

States a specific verb and resource ('拒绝一条决策建议') and the resulting state ('状态变为 rejected'), so the effect is unambiguous. It does not name adopt_decision or review_decision as the contrasting siblings, so it stops short of full differentiation.

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

Usage Guidelines4/5

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

The example user utterances ('这条建议不采纳', '拒绝那个提价建议') give concrete intent-matching context for when this tool applies, and the ID-verification note sets a precondition. There is no explicit when-not guidance, e.g. 'to approve instead, use adopt_decision', so routing between the decision siblings still needs inference.

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

review_decisionA

对一条决策做复盘,记录执行后的实际效果。

用户可能的问法:

  • "复盘一下那条降价决策"

  • "上次跟着降价后销量涨了,记一下有效"

  • "那条建议没什么用,复盘结论写无效"

参数:

  • decision_id: 决策 ID

  • review_outcome: 复盘结论说明(必填,自由文本,例如“降价后 7 天销量 +12%”)

  • review_result: 结论枚举 effective(有效)/ ineffective(无效)/ inconclusive(不确定),可选但推荐填写

说明:review_outcome 是留档文字,review_result 是用于统计的枚举;只传文字、不传枚举时统计不会计入。

NameRequiredDescriptionDefault
decision_idYes
review_resultNo
review_outcomeYes

Output Schema

NameRequiredDescription
resultYes

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 and does disclose a non-obvious consequence: passing only free text without review_result means the review will not be counted in statistics. That is real behavioral value beyond the name. It still omits whether a repeated review overwrites a prior one, or what errors occur for an invalid decision_id.

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

Conciseness4/5

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

The purpose is front-loaded, followed by example queries and a compact parameter block. The closing 说明 partially restates the parameter section (text vs. enum), which is mild but justified redundancy given the statistical side effect it warns about.

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

Completeness3/5

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

An output schema exists so return values need not be explained, and the parameters are well covered. However, for a mutation tool with zero annotations, it never states prerequisites—must the decision already be adopted/executed, and is re-review allowed—leaving an agent unable to predict failure modes.

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?

Schema coverage is 0%, and the description compensates fully: it explains decision_id, marks review_outcome as required free text with a concrete example ('降价后 7 天销量 +12%'), and enumerates the three review_result values effective/ineffective/inconclusive that appear nowhere in the schema. It also clarifies the division of labor between the two review fields.

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

Purpose4/5

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

The description states a concrete verb and resource: review a decision and record its actual post-execution effects, which clearly differs from create/adopt/reject in the sibling list. It does not explicitly name those siblings as alternatives, so differentiation is inferred rather than stated.

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

Usage Guidelines4/5

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

Three example user phrasings plus the temporal cue '执行后' make clear when this tool applies (after a decision has been carried out and results are known). It stops short of exclusions—it never says what to do if the decision was never adopted or is still pending.

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

run_smart_follow_analysisA

触发一次智能跟卖批处理分析(ALG-01~12,含 ALG-03/04/08/12 决策链),同步执行并返回结果状态。

用户可能的问法:

  • "帮我跑一次智能跟卖分析"

  • "重新分析一下 iPhone 那个自营商品"

  • "看看竞品价格变动后系统建议我怎么做"

可选参数:

  • monitor_id: 只分析指定的自营监控项;留空则分析全部自营且启用中的商品

分析完成后用 get_smart_follow_results 查看每件商品的建议动作、目标价与理由。 同步执行最长等待 180 秒;若超时,跑批可能仍在后台继续,稍后再查结果即可。

NameRequiredDescriptionDefault
monitor_idNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.6/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 and does well: it discloses synchronous execution with a maximum 180-second wait and that a timeout does not mean the batch stopped — it may keep running in the background, so results should be re-checked later. It does not say whether the run creates or mutates decision records, which is the main remaining behavioral gap.

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

Conciseness4/5

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

Purpose is front-loaded in the first sentence, followed by example utterances, the optional parameter, and timeout behavior. The sample question list is slightly padded but earns its place by improving routing accuracy; overall it is well structured with no real filler.

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

Completeness4/5

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

An output schema exists, so return-value detail is not required, and the description covers the operation's scope, timing, timeout semantics and next step. The one omission is whether the run has side effects on stored decisions, which matters for a batch analysis tool.

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?

Schema coverage is 0%, so the description must compensate, and it does: monitor_id is explained as restricting analysis to one self-owned monitor item, with omission meaning all self-owned, enabled products. That is exactly the semantics an agent needs and goes beyond the bare integer type in the schema.

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

Purpose5/5

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

States a specific verb and resource: triggers a smart follow-sell batch analysis, names the algorithm set (ALG-01~12 with decision chains), and says it runs synchronously and returns result status. The closing pointer to get_smart_follow_results makes clear this tool runs the analysis while that sibling only reads results.

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?

Gives three concrete user phrasings that should route here and an explicit handoff: after the run completes, use get_smart_follow_results to see per-product suggested actions, target prices and reasons. That covers when to use this tool and what to do next, leaving little to inference.

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

search_my_productsA

在用户的监控列表中按关键词搜索商品(匹配商品名或店铺名)。

用户可能的问法:

  • "搜一下我监控里有没有 AirPods"

  • "Samsung 相关的商品有几个在监控"

  • "那个卖耳机的店铺叫什么来着"

需要提供 keyword(搜索关键词)。

NameRequiredDescriptionDefault
keywordYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations at all, the description must carry the behavioral load. It usefully discloses that matching covers both product name and store name, and the search framing implies a non-mutating read. It does not state result ordering, limits, or how partial matches behave, so the disclosure 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.

Conciseness4/5

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

The tool purpose is front-loaded in the first line, followed by example phrasings that earn their space by helping intent matching. The trailing '需要提供 keyword' line is slightly redundant with the required-field schema but is minor.

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

Completeness4/5

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

For a one-parameter read/search tool with an output schema present, the definition covers purpose, matching scope, and trigger phrasings — enough to call it correctly. Result cardinality and ranking behavior are the only notable omissions, and the output schema partly covers those.

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 has 0% schema description coverage, so the description must compensate — and it does, explaining that 'keyword' is the search term and that it matches against product name or store name. No format, length, or encoding constraints are given, which keeps it short of a 5.

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

Purpose4/5

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

The description states a specific verb ('按关键词搜索') and a precisely scoped resource ('用户的监控列表中'的商品), and clarifies the match fields (product name or shop name). It implicitly distinguishes itself from the sibling get_monitor_list (which enumerates rather than keyword-filters), but never names that alternative.

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 list of example user phrasings ('搜一下我监控里有没有 AirPods', 'Samsung 相关的商品有几个在监控') gives concrete context for when this tool is the right pick over enumerating the monitor list. It stops short of explicit when-not-to-use guidance or naming an alternative tool.

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

update_monitor_statusA

暂停或恢复某个监控项。

用户可能的问法:

  • "先暂停 iPhone 那个监控"

  • "恢复 Samsung 的监控"

  • "把 AirPods 的监控停掉"

需要提供 monitor_id(监控项 ID)和 status("paused" 暂停 / "active" 恢复)。

NameRequiredDescriptionDefault
statusYes
monitor_idYes

Output Schema

NameRequiredDescription
resultYes

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 the full burden; it discloses the two target states but not the effects of the transition (does pausing suppress alerts/crawls?), idempotency for an already-paused monitor, or permission requirements. Reversibility is implied by the pause/resume pairing, but the operational consequences are unstated.

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

Conciseness4/5

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

Core purpose is front-loaded in a single sentence, followed by usage examples and the required parameters. The example list is somewhat verbose but earns its place by covering multiple user phrasings; no other padding is present.

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

Completeness4/5

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

For a two-parameter mutation with an output schema, the description covers purpose, the exact state values, and required inputs. The remaining gap is behavioral: with no annotations, error conditions and side effects on alerting are left for the agent to discover.

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

Parameters4/5

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

Schema description coverage is 0% and the status field has no enum in the schema, so the description's explicit mapping of status to "paused" (暂停) / "active" (恢复) is essential information an agent could not otherwise infer. monitor_id is only restated as "监控项 ID", adding little beyond its 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 first sentence states a specific pair of verbs (pause/resume) acting on a specific resource (monitor item), which is immediately distinguishable from siblings like add_monitor or get_monitor_list. An agent can classify the operation without opening the schema.

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

Usage Guidelines4/5

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

Three example user utterances map colloquial phrasings ("先暂停", "停掉", "恢复") onto this tool, which gives concrete when-to-use context. It stops short of naming exclusions or alternatives (e.g., that it does not create or delete monitors), so it is clear but not fully routing.

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. 22 tool updatesv0.3.0
    • First observedadd_monitor
    • First observedadopt_decision
    • First observedcreate_decision
    • First observedget_alerts
    • First observedget_algorithm_list
    • First observedget_competitor_mapping
    • First observedget_crawl_health
    • First observedget_monitor_list
    • First observedget_monitor_overview
    • First observedget_price_history
    • First observedget_price_summary
    • First observedget_smart_follow_results
    • First observedget_smart_follow_stats
    • First observedlist_decisions
    • First observedmap_competitors
    • First observedmark_alert_read
    • First observedmark_self_owned
    • First observedreject_decision
    • First observedreview_decision
    • First observedrun_smart_follow_analysis
    • First observedsearch_my_products
    • First observedupdate_monitor_status

TDQS

A3.6/5.0

Scored across 22 tools

Disambiguation4/5

Most tools target distinct resources/actions: monitor listing, price history, alerts, smart-follow batch analysis, and the decision lifecycle are clearly separated by name and description. There is mild overlap among get_monitor_list, get_monitor_overview, and search_my_products (all return slices of the monitor list), and between get_smart_follow_results and list_decisions, but the descriptions distinguish them adequately.

Naming Consistency5/5

Every tool follows a consistent snake_case verb_noun pattern (get_*, add_*, update_*, mark_*, create_*, list_*, review_*, adopt_*, reject_*, run_*, map_*). The verb choice also reflects intent well: get_ for reads, mark_ for state flips, and lifecycle verbs for decisions.

Tool Count4/5

22 tools is on the heavy side, but the server covers several real subsystems (monitoring, pricing, alerts, crawl health, smart-follow analysis, decision lifecycle, algorithm config), so most tools earn their place. A few listings/summary tools could be consolidated to trim the surface.

Completeness3/5

The decision lifecycle is complete (create/list/review/adopt/reject) and price/alert reads are covered, but the monitor lifecycle has notable gaps: there is no delete_monitor and no way to edit monitor settings such as check_interval or alert_threshold after creation, only a status pause/resume. Alerts likewise support mark-read but not delete/dismiss.

Related MCP Connectors

Related MCP Servers