Skip to main content
Glama
sepehr071

technolife-mcp

by sepehr071

📱 technolife-mcp

Let your AI agent shop around on Technolife. Search phones, laptops and appliances, compare every seller's cash and installment price, read specs and reviews, and catch today's deals, all from Claude, Cursor or Copilot.

PyPI Python CI MCP Registry License: MIT

Install in Cursor Install in VS Code

Quick start · What it can do · Tools · FAQ · فارسی


Why

On Technolife one product page hides several sellers, colors, warranties and three price lists (cash, installment, buy now pay later). Finding the best offer means clicking through each of them. An agent with technolife-mcp reads them all at once:

You: Where is the Lenovo IdeaPad Slim 3 i3 1315U cheapest on Technolife, and what does it cost in installments?

Agent: calls tl_suggest(query="IdeaPad Slim 3 i3 1315U") → tl_product(product_code="TLP-60492")

Seller

Cash

Installment

Buy now pay later

Warranty

ایران پشتیبان

125,000,000

128,750,000

135,000,000

18 months

چیتک شاپ

129,500,000

133,385,000

139,860,000

18 months

دیباکام

130,000,000

133,900,000

140,400,000

18 months (Dibacom)

ایران پشتیبان is cheapest in every price list and ships the next working day; device insurance adds 2,375,000. Want me to check the exact total with insurance using tl_price_basket?

Real tool output from 2026-10-03; prices change all the time. Prices are in Toman.

Related MCP server: SoloTodo MCP

What it can do

  • 🔎 Search the whole catalog with prices, stock, rating, price range and brand/category filters

  • 💸 Find the cheapest in-stock offers, re-sorted on the real price after discount

  • 🏷️ Compare sellers of one product: price per color, warranty, stock, delivery time, seller reputation

  • 💳 See installment prices (installment and buy now pay later) next to cash, and price a basket with insurance

  • 📋 Read specs and compare up to 5 products side by side

  • ⭐ Check quality with customer reviews, star distribution and the site's AI review summary

  • ⚡ Catch deals: the main discount list, timed deals (تکنو تایم) and current campaigns

  • 🔒 Read-only by design: no login, no basket, no orders, no payment

Quick start

You need uv.

claude mcp add technolife -- uvx technolife-mcp

Settings → Developer → Edit Config, then add:

{
  "mcpServers": {
    "technolife": { "command": "uvx", "args": ["technolife-mcp"] }
  }
}

Click Install in Cursor above, or add the Claude Desktop block to ~/.cursor/mcp.json.

Click Install in VS Code above, or add to .vscode/mcp.json:

{
  "servers": {
    "technolife": { "type": "stdio", "command": "uvx", "args": ["technolife-mcp"] }
  }
}

It's a standard stdio MCP server: run uvx technolife-mcp, or pip install technolife-mcp and run technolife-mcp.

Then just ask:

  • "Cheapest in-stock Lenovo laptop with 16 GB RAM on Technolife?"

  • "Compare the iPhone 16 and iPhone 17: price, camera, battery."

  • "Which deals on Technolife have more than 50% off right now?"

  • ارزان‌ترین گوشی سامسونگ با قیمت اقساطی در تکنولایف؟

How it works

  AI agent  (Claude, Cursor, Copilot, ...)
      │
      │  MCP over stdio
      ▼
  technolife-mcp  (runs on your machine)
      │
      │  HTTPS (GraphQL)
      └──────▶  www.technolife.com

technolife-mcp runs locally and calls the same public endpoints the technolife.com website uses. There's no hosted server in between, no API key, and nothing about you is sent anywhere else.

Tools

Products are identified by codes like TLP-60492 and sellers by TLS-15172. List tools return the site's featured offer per product, which is not always the cheapest seller; tl_product returns every seller, color and price list.

Tool

What it does

tl_search

Search with prices, stock, rating; filters for price, brand, category; category/brand facets with their codes

tl_find_cheapest

Cheapest in-stock products for a search, one flat list sorted by the real price

tl_suggest

Product name → product codes (typeahead)

tl_find_brand

Brand name → brand filter code and brand page

Tool

What it does

tl_categories

Find category pages by name, list the top level, or a category's sub-pages

tl_category_products

Products of a category, brand or promotion page, sorted and filtered

tl_category_filters

A page's brands, categories, price range and attribute filters (RAM, screen, CPU, ...) with codes

Tool

What it does

tl_product

Every offer: seller, color, warranty, stock, delivery, insurance, installment prices, specs

tl_compare

2-5 products side by side: price, stock, rating, every spec

tl_reviews

Customer reviews, star distribution and the AI summary with pros and cons

tl_price_basket

Exact total for seller items: discounts, insurance, quantity limits, cash vs installment

Tool

What it does

tl_deals

Current discounts (biggest percent first) and timed home-page deals

tl_campaigns

Current campaigns, or one campaign's sections and products

tl_seller

A seller's rating, on-time and fault-free percentages, and its products

Tool

What it does

tl_store_info

Physical stores, shipping methods and costs, 7-day returns, payment methods

tl_faq

Search the help-center FAQ

tl_shop_reviews

Customer reviews of the shop itself

tl_find_location

Address or landmark → coordinates, province and city

tl_reverse_geocode

Coordinates → address, province, city and neighbourhood

All 19 tools are annotated readOnlyHint: true and return compact structured JSON, so they don't flood the agent's context.

Good to know

  • Prices are in Toman, as on the site (1 Toman = 10 Rial). final_price is after discount; discount_pct is computed from the two prices, because the site's own percent label is sometimes missing.

  • Ratings are 0–5; null means not rated yet. Review and shop-review dates are Jalali, as the site shows them.

  • Installments: the same seller item costs a few percent more in the installment and buy-now-pay-later price lists; tl_product shows all three and tl_price_basket totals any of them.

  • Shipping cost is not included anywhere: Technolife only prices shipping for a logged-in address. tl_store_info(topic="shipping") has the rules.

  • Price sorting: the site's price order is approximate (timed deals lag), so price sorts are re-sorted on the real price.

  • Persian queries match best (آیفون 16, لپ تاپ لنوو). Category search treats Arabic ي/ك and half-space vs space as equal.

FAQ

Sort by price and accessories win. tl_search and tl_find_cheapest return the matching categories with their codes; the agent passes the phone one back as category_code (e.g. 1 for mobile phones).

No, and that's deliberate. It has no login and never saves a basket or touches order or payment endpoints. tl_price_basket only asks the server for prices. The agent finds the best offer; you buy on the site.

No. It was tested from an Iranian home connection and from a Turkish IP, and both worked. Cloud servers outside Iran were not tested; if Technolife blocks one, set TECHNOLIFE_MCP_PROXY.

Technolife sometimes resets connections; the server retries a failed connection once (timeouts are not retried). If it keeps failing, check your connection or set TECHNOLIFE_MCP_PROXY. Normal system proxy variables are ignored on purpose, because direct calls are the fastest.

Use the full path to uvx (where uvx on Windows, which uvx on macOS/Linux) as command.

npx @modelcontextprotocol/inspector uvx technolife-mcp

Configuration

Variable

Default

Meaning

TECHNOLIFE_MCP_PROXY

unset

HTTP proxy for every request, e.g. http://user:pass@host:port

فارسی

technolife-mcp به دستیار هوش مصنوعی شما (Claude، Cursor، Copilot و ...) اجازه می‌دهد در تکنولایف جستجو کند، قیمت نقدی و اقساطی همه فروشندگان یک کالا را مقایسه کند، مشخصات فنی و نظرات را بخواند و تخفیف‌های فعال را پیدا کند.

  • فقط خواندنی است: وارد حساب نمی‌شود، سبد خرید ذخیره نمی‌کند و سفارش ثبت نمی‌کند.

  • قیمت هر رنگ، فروشنده و گارانتی را همراه با قیمت اقساطی و هزینه بیمه نشان می‌دهد.

  • همه قیمت‌ها به تومان است.

  • روی سیستم خود شما اجرا می‌شود و به هیچ سرور واسطی داده نمی‌فرستد.

  • به IP ایران نیاز ندارد: با IP ایران و ترکیه آزمایش شده است.

نصب در Claude Code:

claude mcp add technolife -- uvx technolife-mcp

بعد بپرسید: «ارزان‌ترین لپ تاپ لنوو با ۱۶ گیگ رم در تکنولایف و قیمت اقساطی آن چقدر است؟»

Development

git clone https://github.com/sepehr071/technolife-mcp && cd technolife-mcp
uv sync
uv run pytest            # offline, against recorded responses
uv run pytest -m live    # real API
uv run ruff check .

Tools live in src/technolife_mcp/search.py, catalog.py, product.py, offers.py and info.py; each is a typed async function with a docstring that tells the agent when to use it. Issues and PRs are welcome, especially new tools and fixes for API changes.

Releases: bump the version in pyproject.toml and server.json, then push a v* tag. GitHub Actions tests, publishes to PyPI and the MCP Registry, and creates the GitHub Release.

Disclaimer

Unofficial and not affiliated with or endorsed by Technolife. It uses the public endpoints of the technolife.com website, which can change without notice. Please keep request rates reasonable.

License

MIT

Available Tools

19 tools
tl_campaignsCampaignsA
Read-onlyIdempotent

List current campaigns, or show one campaign's sections and products.

  • Without code: campaign landings (code) and promotion pages (page_url) linked from the home page.

  • With code: the campaign's carousels with a few products each, and its links. Pass a page_url to tl_category_products to list all of its products with filters (products_in_carousel counts only the carousel, not the page).

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoCampaign landing code from this tool's list, e.g. 'payday-technolife'. Omit to list current campaigns.
products_per_sectionNoProducts to show per carousel of a campaign.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and openWorld, so safety is covered. The description adds mode-dependent output context (landings/promotion pages linked from home page vs carousels with a few products and links), which is useful beyond the annotations, though it does not mention rate limits or pagination.

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 purpose is front-loaded in the first line, followed by two tightly scoped bullets for each mode and a single routing sentence. Every sentence earns its place with no filler.

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

Completeness4/5

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

An output schema exists so return-value detail is not required, and both params are schema-covered. The description covers both invocation modes and the sibling hand-off, leaving only minor gaps such as pagination or limits for large campaign lists.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (code, products_per_section) are already fully documented in the schema. The description's mode split largely restates what the schema says about omitting 'code', so it adds little beyond the baseline.

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

Purpose4/5

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

The description gives a specific verb and resource ('List current campaigns, or show one campaign's sections and products') and splits the tool into two clear modes keyed on the presence of 'code'. It distinguishes itself from tl_category_products by routing product listing there, though it does not explicitly differentiate from nearby siblings like tl_deals or tl_categories.

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

Usage Guidelines5/5

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

It states explicitly when to use each mode ('Without code' vs 'With code') and names the alternative tool (tl_category_products) with the condition that selects it, including a caveat that products_in_carousel counts only the carousel, not the page. Nothing about selection is left to inference.

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

tl_categoriesCategoriesA
Read-onlyIdempotent

Find category pages and their urls for tl_category_products.

  • With query: categories anywhere in the menu whose name matches (best way to get a url).

  • With url: that category's sub-pages (brand and series pages).

  • With neither: the top-level categories and the titles of their children (get a child's url with query).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoList the sub-pages (brands, series) of this category, e.g. 'category/mobile/mobile-phone'.
queryNoFind categories whose name contains this, e.g. 'لپ تاپ گیمینگ' or 'هدفون'.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so safety behavior is covered. The description adds one useful trait: with neither input only top-level categories and child titles are returned (no urls), and it does not say what happens if both url and query are supplied. No contradiction with annotations.

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

Conciseness5/5

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

Three one-line bullets after a single-sentence purpose statement, front-loaded with the primary use case (query for urls) and no filler. Every line carries distinct routing information.

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

Completeness4/5

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

Return values are covered by the existing output schema, and the description fully explains the three input modes, so an agent can call it correctly in the common cases. The only gap is undefined behavior when both optional params are provided simultaneously.

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

Parameters4/5

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

Schema coverage is 100% with examples for both params, so the baseline is 3; the description goes beyond by explaining the behavioral meaning of each param's presence/absence and treating them as mode selectors rather than independent filters. It still doesn't state precedence when both are passed.

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?

Opens with a specific verb and resource ('Find category pages and their urls') and names the sibling tool it feeds (tl_category_products), so the agent knows this is the category-navigation entry point rather than a product/search tool. The three input modes are enumerated up front.

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

Usage Guidelines5/5

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

Explicitly routes the caller: use query to match categories by name ('best way to get a url'), use url to list a category's sub-pages, and use neither for the top-level tree. This is a near-complete when-to-use map for a 2-parameter optional-input tool.

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

tl_category_filtersCategory filtersA
Read-onlyIdempotent

List the filters of a category, brand or promotion page: brands, categories, price range and attributes with their codes.

Use before tl_category_products to filter by brand (brand_codes), by category on brand and promotion pages (category_codes) or by attributes such as RAM, screen size, CPU series or usage (attribute_codes).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPage path from tl_categories / tl_find_brand / tl_campaigns, e.g. 'category/laptop-equipment/laptop', 'brand/samsung' or 'promotion/power48'.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered structurally. The description adds value by explaining what the returned codes are for and that they feed a downstream filtering call, which is genuinely useful behavioral context beyond the annotations.

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

Conciseness5/5

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

Two sentences, zero filler. The purpose is front-loaded and the usage guidance follows immediately, with the filter-code mappings packed into a single efficient clause.

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

Completeness5/5

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

An output schema exists, so return values need not be explained. The description covers purpose, sequencing with the sibling, and what the output codes are used for — everything an agent needs to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100% and the url parameter is fully documented with a pattern and examples, so the schema does the heavy lifting. The description implies the url points at a category/brand/promotion page but adds no syntax or format detail beyond what the schema already provides, so baseline 3 is correct.

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 ('List the filters of a category, brand or promotion page') and enumerates exactly what those filters contain (brands, categories, price range, attributes). It names the sibling tl_category_products and positions itself relative to it, so an agent can distinguish the two without opening either schema.

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

Usage Guidelines5/5

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

Explicitly states 'Use before tl_category_products' and maps each filter type to the code argument it enables (brand_codes, category_codes, attribute_codes). This is a clear when-to-use plus alternative/sequencing, leaving nothing to inference.

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

tl_category_productsBrowse a category or brandA
Read-onlyIdempotent

List the products of a category, brand or promotion page with prices, discount, stock and rating.

Use to browse a product type (laptops, phones) or brand sorted by price or popularity, with filters. Get brand and attribute codes (RAM, screen size, CPU...) and the price range from tl_category_filters first. For free text use tl_search.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPage path from tl_categories / tl_find_brand / tl_campaigns, e.g. 'category/laptop-equipment/laptop', 'brand/samsung' or 'promotion/power48'.
pageNoZero-based page number.
sortNoOrder; cheapest, most_expensive and biggest_discount_toman are re-sorted on the real price after discount within the page.best_selling
limitNoProducts per page.
in_stockNoOnly products that can be ordered now.
max_priceNoHighest price in Toman, e.g. 150000000.
min_priceNoLowest price in Toman, e.g. 50000000.
brand_codesNoBrand filter codes from the `brands` list of a result or tl_find_brand, e.g. [16] (Lenovo) or [16, 19] (Lenovo or ASUS).
fast_deliveryNoOnly items shipped quickly from Technolife's own stock.
category_codesNoCategory filter codes from the `categories` of tl_category_filters (brand and promotion pages), e.g. [1] for phones.
attribute_codesNoAttribute filter codes from tl_category_filters (all must match), e.g. [4447] for 16 GB RAM laptops.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds the two-step workflow dependency on tl_category_filters and notes what each result carries, but says nothing about rate limits, result caps across pages, or how the re-sorted price ordering behaves beyond what the schema already states.

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

Conciseness5/5

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

Two compact sentences, front-loaded with the core capability, followed by usage and the prerequisite/alternative routing. No filler or restated name/title content.

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

Completeness5/5

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

With 11 parameters fully covered by the schema and an output schema present, the description does not need to explain return values. It supplies the missing pieces an agent needs: the prerequisite call for filter codes and the free-text alternative, which is complete for this tool's complexity.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter (url, page, sort, limit, in_stock, price bounds, brand/category/attribute codes) is already documented in the schema with examples. The description only alludes to 'filters' generically and adds no syntax or provenance detail beyond what the schema provides, so the baseline 3 applies.

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

Purpose5/5

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

The first sentence gives a specific verb (List), a precise resource (products of a category, brand or promotion page), and the returned fields (prices, discount, stock, rating). It also explicitly contrasts itself with tl_search for free-text queries, so an agent can separate it from siblings without opening 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 Guidelines5/5

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

It states when to use it (browsing a product type or brand, sorted and filtered), names the prerequisite step ('Get brand and attribute codes ... from tl_category_filters first'), and routes free-text intent to tl_search. When-to-use, prerequisite ordering, and alternative are all explicit.

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

tl_compareCompare productsA
Read-onlyIdempotent

Compare 2-5 products side by side: price, stock, rating and every spec.

specs is {section: {spec: values}} with one value per product, in the order of products; specs no product fills are left out. Products of the same category compare best. For sellers and colors of one product use tl_product.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_codesYes2 to 5 product codes, e.g. ['TLP-60492', 'TLP-133524'].

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover read-only/idempotent/no-destruction, so the bar is lower. The description adds valuable non-obvious behavior: the specs keying is {section: {spec: values}} with values ordered per product, and specs no product fills are omitted – details an agent couldn't infer from annotations.

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 action, then two compact sentences on specs shape and routing. Efficient, though the specs-shape sentence is dense and the line breaking is slightly odd.

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 values needn't be explained, and the description still usefully explains the specs structure. It could be more complete on category-comparison limitations or error behavior, but for a 1-param read-only tool it's solid.

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

Parameters3/5

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

Schema description coverage is 100% and the schema already documents the format, pattern, and 2-5 range. The description restates the 2-5 constraint and adds the ordering rule for specs values, but that ordering pertains to the return shape rather than the parameter itself, so it's roughly baseline.

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

Purpose5/5

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

States a specific verb (compare) and resource (products) with scope (2-5, side by side). It also distinguishes from the sibling tl_product by explicitly routing single-product seller/color needs there.

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?

Gives a clear routing rule to tl_product for the seller/color use case and notes that same-category products compare best. It doesn't, however, cover the other ~17 siblings or state when not to use this tool.

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

tl_dealsDealsA
Read-onlyIdempotent

List current in-stock discounts (Technolife's main deal list, تکنوآف) and, on page 0, the timed home-page deals (تکنو تایم).

Use for "best deals right now". deal_ends is when the discount stops (UTC). total is the size of the whole deal list, before min_discount_pct. With biggest_percent or min_discount_pct each page scans the next 100 deals and returns the best limit of them; more_on_page counts the matches cut off (raise limit to see them). For discounts inside one category use tl_category_products with sort=biggest_discount_toman.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoZero-based page number.
sortNoOrder; biggest_percent re-sorts a page of the largest Toman discounts by percent.biggest_percent
limitNoMax deals to return (and max timed deals).
min_discount_pctNoOnly deals with at least this percent off.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Adds substantial context beyond the readOnly/idempotent annotations: deal_ends is UTC, total is the pre-filter list size, and biggest_percent/min_discount_pct cause each page to scan the next 100 deals and return the best `limit`, with more_on_page counting the cut-off matches. That is genuine operational behavior an agent cannot get from the annotations.

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?

Dense and front-loaded: the tool's identity leads, then behavior, then the alternative. Some clauses (the 100-deal scan explanation) are tightly packed but each earns its place; nothing is padding.

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 format need not be described, and the description covers paging, filtering, and the sibling alternative well. It leaves minor ambiguity about how page numbering advances through the 100-deal scan window, but is otherwise sufficient for correct invocation.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description goes further by explaining the interaction between sort, min_discount_pct and paging (scan window, more_on_page) and by clarifying that total ignores min_discount_pct. It still doesn't explain how page interacts with the scan window, leaving a minor gap.

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 specific verbs and resources: in-stock discounts from the main deal list (تکنوآف) plus timed home-page deals (تکنو تایم) on page 0. An agent can distinguish this immediately from tl_category_products, tl_find_cheapest, and the other siblings.

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?

Directly answers the selection question with 'Use for "best deals right now"' and routes the category-scoped case to a named alternative (tl_category_products with sort=biggest_discount_toman), including the exact parameter value needed.

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

tl_faqSearch FAQA
Read-onlyIdempotent

Search Technolife's help-center FAQ and return matching questions with plain-text answers.

Use for policy questions (installments, delivery, returns, warranty, invoices). Short single words match best; an empty list means try another word or tl_store_info.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesOne or two Persian words, e.g. 'ارسال', 'اقساط', 'مرجوعی', 'گارانتی'.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), so the bar is lower. The description still adds operational behavior: how to phrase queries ('short single words match best') and how to interpret an empty result set, which the annotations cannot convey. It does not discuss rate limits or result counts, keeping 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?

Two compact sentences, front-loaded with the action and resource, followed immediately by when-to-use and the empty-result fallback. No filler sentences.

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

Completeness5/5

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

An output schema exists, so return-value explanation is unnecessary, and the single required parameter is fully covered by schema plus description. Usage conditions and the failure-mode alternative are both present, making the definition self-sufficient.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents the single 'query' parameter including its Persian-language examples. The description adds real matching semantics beyond that ('short single words match best'), which the schema does not state.

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 (search the help-center FAQ) and names the return shape (matching questions with plain-text answers). This is clearly distinguishable from the product-oriented siblings like tl_search and tl_product without opening 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 Guidelines5/5

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

Gives an explicit use case (policy questions: installments, delivery, returns, warranty, invoices) and a concrete fallback path ('an empty list means try another word or tl_store_info'), naming the alternative sibling by name. Nothing is left to inference.

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

tl_find_brandFind brandA
Read-onlyIdempotent

Look up a brand by its Persian name: filter code and brand page.

Pass brand_code in brand_codes of tl_search / tl_find_cheapest / tl_category_products, or brand_page as the url of tl_category_products to list all the brand's products. Empty list: the site spells the brand differently (هوآوی, not هواوی); call tl_search with the name and take the code from its brands facet.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesBrand name in Persian as written on the site, e.g. 'سامسونگ' or 'لنوو'.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, open-world, so the safety profile is covered. The description adds genuinely new behavior: the empty-result meaning (site spells the brand differently) and the recovery path through tl_search. This is a meaningful disclosure beyond annotations.

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

Conciseness4/5

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

Two short paragraphs, front-loaded with the purpose, then the usage routing. No filler sentences. Slightly dense but each clause carries actionable information.

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

Completeness4/5

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

An output schema exists, so return values need not be explained, and the description wisely focuses on how to use brand_code and brand_page downstream. For a one-parameter lookup tool it covers the important failure mode and routing. Could mention nothing further it critically lacks.

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

Parameters4/5

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

Schema coverage is 100% and the schema itself documents the Persian-name requirement with examples. The description reinforces the input semantics by stating the name must be the Persian site spelling and demonstrates the mismatch problem. It adds context but doesn't need to restate the parameter, so it sits slightly above the schema baseline.

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

Purpose4/5

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

States a specific verb and resource: look up a brand by its Persian name, returning filter code and brand page. Clear purpose, though the distinction from tl_search is implied rather than sharply drawn. It is a lookup helper rather than the search itself.

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

Usage Guidelines5/5

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

Explicitly tells the agent where the returned values go (brand_codes in tl_search/tl_find_cheapest/tl_category_products, brand_page in tl_category_products) and gives an exact fallback for the empty-list case, naming tl_search and the `brands` facet. When-to-use and alternatives are both concrete.

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

tl_find_cheapestFind cheapest productsA
Read-onlyIdempotent

Find the cheapest in-stock products for a search, one flat list sorted by the real price after discount.

Use when the user wants the lowest price. Cheap accessories (cases, glass) and other models often match a model name ('آیفون 16' also matches Galaxy A16): check the returned categories and brands, call again with category_code and brand_codes, and check titles. Prices are the site's featured offer per product (not always the cheapest seller); tl_product shows every seller, color and installment price.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax products to return.
pagesNoPages of 100 cheapest-indexed results to scan.
queryYesProduct name or words, Persian or English, e.g. 'آیفون 16' or 'لپ تاپ لنوو'.
max_priceNoHighest price in Toman, e.g. 150000000.
min_priceNoLowest price in Toman, e.g. 50000000.
brand_codesNoBrand filter codes from the `brands` list of a result or tl_find_brand, e.g. [16] (Lenovo) or [16, 19] (Lenovo or ASUS).
category_codeNoCategory filter code from the `categories` list of a tl_search / tl_find_cheapest result, e.g. 1 (mobile phones), to skip accessories.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive, open-world behavior, so the safety profile is covered. The description adds genuinely non-obvious behavioral context: results are in-stock only, sorted by post-discount real price, and the displayed price is the site's featured offer per product rather than necessarily the cheapest seller. No auth/rate-limit or pagination behavior is disclosed.

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 purpose, then usage, then pitfalls and price semantics — a sensible order. The middle sentence is long and dense (parenthetical example plus three chained actions) but every clause carries actionable information.

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

Completeness4/5

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

With an output schema present, return values need not be explained, and the description covers what matters for correct invocation: purpose, trigger condition, the accessory false-positive trap, refinement via returned metadata, and the meaning of the shown price. Minor gaps (pagination via `pages`, value of `limit`) are already handled by the schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 7 parameters, including where brand_codes and category_code come from. The description adds a light workflow hint ('call again with category_code and brand_codes') but conveys no syntax, range, or format meaning beyond what the schema states. Baseline 3 is correct.

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

Purpose5/5

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

Specific verb+resource+scope: 'Find the cheapest in-stock products for a search, one flat list sorted by the real price after discount.' It also differentiates itself from the sibling tl_product (which 'shows every seller, color and installment price'). An agent can tell this apart from tl_search and tl_product without opening 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?

'Use when the user wants the lowest price' gives a clear triggering condition, and it names tl_product as the alternative for full seller-level pricing. It also proactively warns that accessory/other-model noise matches model names and prescribes a refine-and-retry loop with category_code/brand_codes. There's no explicit when-not clause, 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.

tl_find_locationFind locationA
Read-onlyIdempotent

Turn an address or landmark into coordinates with its province and city.

Use to tell which city an address is in (shipping methods depend on the city, see tl_store_info topic=shipping) or to find the nearest branch.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax places to return.
queryYesAddress, street or landmark, Persian works best, e.g. 'میدان ونک' or 'شیراز خیابان زند'.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds the useful detail that results carry province and city, but discloses no additional behavioral traits (rate limits, ambiguity handling, auth needs) beyond that.

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

Conciseness5/5

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

Two short paragraphs, front-loaded with the core operation before the usage contexts. Every sentence earns its place with no redundancy or 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?

An output schema exists so return values need no explanation, annotations cover the safety profile, and the schema fully documents both parameters. The description supplies the remaining context an agent needs: what the tool converts and why it would be called.

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

Parameters3/5

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

Schema description coverage is 100%, so both the query and limit parameters are already documented in the schema, including the Persian-language example and the 1-20 bound. The description re-touches 'address or landmark' but adds no syntax or format detail beyond the schema, so the baseline of 3 applies.

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

Purpose5/5

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

The description states a specific transformation with clear directionality: 'Turn an address or landmark into coordinates with its province and city.' This forward-geocoding direction is unambiguous and implicitly distinguishes it from the sibling tl_reverse_geocode, which does the opposite mapping.

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

Usage Guidelines4/5

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

It gives two concrete use cases ('tell which city an address is in' and 'find the nearest branch') and even cross-references tl_store_info for the shipping dependency. It stops short of naming an explicit alternative (e.g., tl_reverse_geocode) or stating when-not-to-use, 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.

tl_price_basketPrice a basketA
Read-onlyIdempotent

Get the exact total for a set of seller items: discounts, insurance, quantity limits, cash vs installment price.

Prices on Technolife's server as a guest; nothing is saved, no login, no order. Shipping is not included (it needs a logged-in address). max_count is the most units one order may contain; over_max_count means the site will refuse that quantity. Each seller_item_id may appear once: compare cash and installment in separate calls.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesSeller items to price, from tl_product offers.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/openWorld, and the description adds substantial context beyond them: no persistence, no authentication, no order placement, shipping exclusion, and the max_count/over_max_count refusal behavior. These are exactly the side-effect and constraint details an agent cannot infer from structured fields.

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 outcome, then constraints in short declarative sentences. The parenthetical asides ('it needs a logged-in address') are slightly chatty but each sentence carries useful information, so little is wasted.

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

Completeness5/5

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

With an output schema present and 100% schema coverage, the description need not explain return values, and it correctly focuses on the non-obvious: guest mode, shipping exclusion, quantity limits, and the dedupe constraint. Nothing needed to call it correctly 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?

Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning: it explains what max_count and over_max_count mean in the response and clarifies the one-entry-per-seller_item_id rule, which shapes how the items array must be constructed.

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?

Opens with a specific verb and resource: 'Get the exact total for a set of seller items', and enumerates what the total includes (discounts, insurance, quantity limits, cash vs installment). An agent knows precisely what this computes, though it never explicitly names which sibling (e.g. tl_compare, tl_find_cheapest) it replaces.

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?

Gives concrete operating context: prices as a guest, nothing saved, no login, no order, shipping excluded because an address requires login. It also constrains invocation ('each seller_item_id may appear once: compare cash and installment in separate calls'), which is real usage guidance, though no alternative tool is named.

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

tl_productProduct detailsA
Read-onlyIdempotent

Get one product's offers: price per color, seller and warranty, stock, delivery time, insurance and installment prices.

Use after tl_search / tl_suggest to answer "where is it cheapest, which color, which warranty, when does it ship, how much in installments". offers are cheapest cash price first; installment_price and bnpl_price are the same seller item in the installment (LOAN) and buy now pay later (BNPL) price lists, null if not offered. Pass seller_item_id to tl_price_basket for a final total.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_codeYesProduct code from a search or list, e.g. 'TLP-60492' (the bare number works too).
include_specsNoInclude the full spec table (adds a few KB).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/openWorld/non-destructive, so safety is covered. The description still adds real behavioral context beyond them: offers are sorted 'cheapest cash price first', and installment_price/bnpl_price represent the same seller item in different price lists and are 'null if not offered'. That ordering and nullability contract is not derivable from annotations.

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

Conciseness5/5

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

Front-loaded with the return contents, then the workflow, then the semantics of the ambiguous price fields. Every sentence carries information; nothing is restated from the schema or annotations.

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

Completeness5/5

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

With an output schema present the description need not explain return values, yet it usefully clarifies the two easily-confused price fields and the sort order. Combined with annotations and full schema coverage, an agent has everything needed to call this correctly and chain it into tl_price_basket.

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

Parameters3/5

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

Schema description coverage is 100% — product_code and include_specs are both fully documented in the schema, including the TLP- pattern and the 'adds a few KB' cost note. The description's extra detail concerns returned price fields rather than the two input parameters, so it adds little on the parameter axis. Baseline 3 is correct.

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

Purpose5/5

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

States a specific verb and resource ('Get one product's offers') and enumerates exactly what is returned: price per color, seller/warranty, stock, delivery time, insurance and installment prices. This is clearly distinguishable from tl_search and tl_suggest, which the description itself names as upstream steps.

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

Usage Guidelines5/5

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

Explicitly says 'Use after tl_search / tl_suggest', gives the user questions it answers (cheapest, which color, warranty, shipping, installments), and routes onward: 'Pass seller_item_id to tl_price_basket for a final total.' Both the entry condition and the follow-up tool are named.

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

tl_reverse_geocodeDescribe coordinatesA
Read-onlyIdempotent

Describe coordinates as an address with province, city and neighbourhood.

Use to confirm a delivery point with the user, or to get the city for shipping rules.

ParametersJSON Schema
NameRequiredDescriptionDefault
latYesLatitude (Iran: ~25 to ~40), e.g. 35.7575.
longYesLongitude (Iran: ~44 to ~63), e.g. 51.4106.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered structurally. The description only adds that the output is an address broken into province/city/neighbourhood, which is largely duplicated by the existing output schema, so it contributes little behavioral context beyond annotations.

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

Conciseness4/5

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

Two short sentences, with the core operation front-loaded before the usage note. No filler or repetition; only slight room to sharpen by naming an alternative 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?

With a full output schema and fully described parameters, the description only needs to convey purpose and usage, which it does. Coverage of out-of-range coordinate behavior is handled by the schema bounds, so nothing essential is missing for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100% – both lat and long carry range constraints and examples in the schema itself. The description adds no syntax, format or semantics for the parameters, so the baseline 3 applies.

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 transformation: describe coordinates as an address with province, city and neighbourhood. This is unambiguous and clearly a reverse-geocoding operation. It does not explicitly differentiate from tl_find_location, but no sibling overlaps the coordinate-to-address direction, so the risk of mis-selection is low.

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?

Gives two concrete when-to-use scenarios (confirming a delivery point with the user, getting the city for shipping rules), which is above the minimum-viable bar. It does not name an alternative or state when NOT to use it, 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.

tl_reviewsProduct reviewsA
Read-onlyIdempotent

Read customer reviews of a product: average 0-5, star distribution, AI summary with pros/cons, and the reviews.

Use as a quality check before recommending a product. sort=lowest_rated surfaces complaints. The AI summary (null for products with few reviews) comes on page 0 only. The rating sorts rank the newest 500 reviews, newest first within a rating.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoZero-based page number.
sortNoOrder of the reviews.newest
limitNoReviews per page.
product_codeYesProduct code from a search or list, e.g. 'TLP-60492' (the bare number works too).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds non-obvious behavior: the AI summary is null for low-review products and only appears on page 0, and the rating sorts rank only the newest 500 reviews with newest-first tiebreak. These are exactly the quirks an agent would otherwise discover only by trial.

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?

Four short sentences, front-loaded with what the tool returns, followed by a usage cue and then the two edge-case rules. No filler and nothing repeated from the schema or annotations.

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

Completeness5/5

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

An output schema exists, so return structure need not be explained, yet the description still flags the nullable AI summary and its page-0 restriction. Combined with full schema coverage and a clear read-only annotation set, an agent has everything needed to call this correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the enum values: it explains what lowest_rated surfaces (complaints) and clarifies that highest/lowest_rated rank a bounded 500-review window. It does not add anything for page or limit, which the schema already covers.

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 (Read) and resource (customer reviews of a product) and enumerates exactly what is returned: average rating, star distribution, AI summary with pros/cons, and the reviews themselves. This cleanly separates it from tl_shop_reviews (store-level) and tl_product (product metadata) even though neither sibling is named.

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?

"Use as a quality check before recommending a product" gives a concrete decision context, and "sort=lowest_rated surfaces complaints" gives actionable guidance for that goal. There is no explicit when-not-to-use or named alternative, 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.

tl_sellerSellerA
Read-onlyIdempotent

Get a marketplace seller's reputation (rating 0-5, on-time %, fault-free %, time on Technolife) and its products.

Use to judge a seller found in tl_product offers before recommending its offer.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoZero-based page number.
sortNoOrder of the seller's products.best_selling
limitNoProducts per page.
in_stockNoOnly products that can be ordered now.
seller_codeYesSeller code from tl_product offers, e.g. 'TLS-15172' (the bare number works too).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds useful context on what data is returned (rating scale, on-time %, time on Technolife) but says nothing about pagination, rate limits, or behavior for unknown seller codes.

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

Conciseness5/5

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

Two tight sentences with zero filler: the first front-loads what is returned, the second front-loads the usage trigger. Every clause earns its place.

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

Completeness4/5

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

With an output schema present, return values need not be re-explained, and the description covers purpose, payload fields, and the calling context. The only minor gap is paging/sort behavior on the product list, which is left to the schema.

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

Parameters3/5

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

Schema description coverage is 100%, so page, sort, limit, in_stock, and seller_code are all documented in the schema itself. The description adds no parameter-level detail (e.g. how sort interacts with paging), so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Get a marketplace seller's reputation... and its products') and enumerates the returned reputation metrics, so the agent knows exactly what comes back. It is clearly distinct from siblings like tl_product or tl_reviews.

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

Usage Guidelines4/5

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

Explicitly says when to use it: to judge a seller surfaced in tl_product offers before recommending that offer, which chains it to the sibling that produces seller codes. No explicit when-not or alternative tools are named, 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.

tl_shop_reviewsShop reviewsA
Read-onlyIdempotent

Read customer reviews of the Technolife shop itself (service, delivery), newest first, rating 1-5, with staff replies.

Use to judge the shop rather than a product (for a product use tl_reviews). Dates are Jalali; the newest reviews on the site may be a few years old.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoZero-based page number, newest first.
limitNoReviews per page.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds real context beyond that: newest-first ordering, rating range 1-5, inclusion of staff replies, Jalali dates, and a data-freshness caveat that reviews may be years old.

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

Conciseness5/5

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

Three short sentences with no filler; the core purpose and the sibling disambiguation are front-loaded, and the data caveat is placed last where it belongs.

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?

Because an output schema exists, return values need no explanation, and the description covers the ordering, rating scale, and the notable Jalali/freshness quirks. It is essentially complete for a simple read tool, with only minor room for more pagination guidance.

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

Parameters3/5

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

Schema coverage is 100%, so both page and limit are fully documented in the schema, giving a baseline of 3. The description only echoes the 'newest first' ordering already present in the page parameter and adds no syntax or edge-case detail beyond the schema.

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

Purpose5/5

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

States a specific verb (Read) and resource (customer reviews of the Technolife shop itself), with explicit scope (service, delivery). It directly distinguishes itself from the sibling tl_reviews, so an agent can route without opening either schema.

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

Usage Guidelines5/5

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

Gives an explicit selection rule: use this to judge the shop rather than a product, and names the alternative (tl_reviews) for the product case. When-to-use and when-not-to-use are both stated.

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

tl_store_infoShop infoA
Read-onlyIdempotent

Read one of Technolife's info pages as plain text.

Use for questions about physical stores, how and how much shipping costs per city, returns and how to pay. Exact shipping cost of an order needs a logged-in address, so quote the rules from here. For other questions try tl_faq.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYesbranches (physical stores, hours, phones), shipping (methods and costs), returns (7-day return guarantee), payment_methods (online, in store, installments).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds real context beyond them: output is plain text, and order-specific shipping costs cannot be quoted without a logged-in address, so the agent should quote general rules. It stops short of describing pagination or page-selection behavior.

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

Conciseness5/5

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

Front-loads the core action, then the use cases, then the shipping caveat and fallback sibling. Every sentence earns its place 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?

With rich annotations, a fully documented enum parameter, and an output schema covering return values, the description supplies everything else an agent needs: what it returns (plain text), when to use it, and when to route elsewhere.

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

Parameters3/5

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

Schema description coverage is 100% with a single fully documented enum, so the schema already carries the parameter meaning. The description restates the topic areas but adds no enum syntax or format detail beyond what the schema provides, making the baseline 3 correct.

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 ('Read one of Technolife's info pages as plain text') and enumerates the covered topics (stores, shipping, returns, payment). It explicitly distinguishes itself from the sibling tl_faq, so an agent can route between them without opening either schema.

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

Usage Guidelines5/5

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

Gives explicit when-to-use triggers ('questions about physical stores, how and how much shipping costs per city, returns and how to pay') plus a key caveat that exact order shipping needs a logged-in address, and names the alternative (tl_faq) for other questions. This is near-complete routing guidance.

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

tl_suggestSuggest productsA
Read-onlyIdempotent

Turn a product name into Technolife product codes (typeahead, up to 30 products, no prices).

Use to resolve a name like 'آیفون 16' to codes for tl_product / tl_compare / tl_reviews. For prices, filters and paging use tl_search.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesProduct name or words, Persian or English, e.g. 'آیفون 16' or 'لپ تاپ لنوو'.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds useful behavioral detail beyond annotations: typeahead behavior, a maximum of 30 products, and the fact that no prices are returned.

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

Conciseness5/5

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

The description is three short sentences and front-loads the core behavior first, followed by usage and the alternative tool. Every sentence adds distinct routing or constraint information with no wasted text.

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

Completeness5/5

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

Given the output schema, rich annotations, and 100% schema description coverage, the description provides everything an agent needs: purpose, scope, limit, exclusion of prices, downstream use, and the alternative for broader search. No necessary behavioral or routing context is missing.

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

Parameters3/5

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

The input schema has 100% description coverage for the single query parameter, including examples in Persian and English. The description reinforces that the input is a product name but adds no syntax, format, or constraint details beyond what the schema already provides, so this is the baseline adequate score.

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

Purpose5/5

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

The description states a specific verb and resource: it turns a product name into Technolife product codes. It also distinguishes the tool from siblings by naming tl_product / tl_compare / tl_reviews as downstream consumers and tl_search as the alternative for prices, filters, and paging.

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

Usage Guidelines5/5

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

The description explicitly says to use it to resolve a name into codes for specific sibling tools, and explicitly says to use tl_search instead for prices, filters, and paging. This gives a clear when-to-use and when-to-use-an-alternative rule.

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. 19 tool updatesv0.1.0
    • First observedtl_campaigns
    • First observedtl_categories
    • First observedtl_category_filters
    • First observedtl_category_products
    • First observedtl_compare
    • First observedtl_deals
    • First observedtl_faq
    • First observedtl_find_brand
    • First observedtl_find_cheapest
    • First observedtl_find_location
    • First observedtl_price_basket
    • First observedtl_product
    • First observedtl_reverse_geocode
    • First observedtl_reviews
    • First observedtl_search
    • First observedtl_seller
    • First observedtl_shop_reviews
    • First observedtl_store_info
    • First observedtl_suggest

TDQS

A4/5.0

Scored across 19 tools

Disambiguation4/5

Most tools have clearly distinct purposes, and descriptions actively route the agent between overlapping product-retrieval tools such as tl_search, tl_find_cheapest and tl_category_products. Minor ambiguity remains because several tools return product/price lists, but the documented use-case boundaries are strong.

Naming Consistency4/5

All tools use a consistent tl_ prefix and snake_case, making the set readable and predictable. The only minor inconsistency is that some names are verb-based (tl_search, tl_find_brand) while others are noun-based (tl_categories, tl_deals, tl_product).

Tool Count4/5

At 19 tools, the server is slightly heavier than the ideal 3-15 range, but the breadth matches a full product-discovery domain with search, category filters, product details, reviews, deals, sellers, store info and price basketing. Each tool appears to cover a distinct capability rather than duplicating another.

Completeness4/5

The surface covers the main read-only lifecycle for e-commerce product research: discovery, filtering, product offers, price comparison, reviews, sellers, deals, campaigns, store/FAQ info, geolocation and basket pricing. A minor gap is that single-product specs are not directly exposed via tl_product, though tl_compare can surface specs when multiple products are compared.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Provides live product search, offer comparison, and price history retrieval from BestPrice.gr through three read-only tools, enabling AI applications to query shopping data without an API key.
    4
    6
    Apache 2.0
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to query SoloTodo's product catalog, compare specs and prices, analyze price history, detect inflated offers, and review buyer evaluations through natural language.
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables searching and comparing product prices, sellers, and price history from Torob, Iran's price-comparison engine, including shop trust signals and physical store availability.
    1
    MIT