olx-mcp-server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@olx-mcp-serverlist my adverts with statistics"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
olx-mcp-server
OLX.uz uchun MCP server. Claude (yoki boshqa MCP klient) orqali:
Profil: akkaunt ma'lumotlari, e'lonlar soni holatlar bo'yicha, OLX hisob balansi, telefon tasdiqlanganligi
Mening e'lonlarim: ro'yxat va statistika (ko'rishlar, telefon ko'rishlar, saqlaganlar, xabarlar), kunlik statistika tarixi, faollashtirish / o'chirib qo'yish / ko'tarish / uzaytirish / o'chirish
Raqobatchilar: segmentdagi asosiy sotuvchilar, ularning profili va e'lonlari
Bozor tahlili: narx statistikasi (median, 25/75%), bozor tuzilmasi, reklama ulushi, tavsiyalar; o'z e'loningizni raqobatchilar bilan solishtirish
E'lon joylash: tayyorlanmoqda (pastga qarang)
Qanday ishlaydi
Rasmiy OLX Partner API O'zbekiston uchun ochiq emas, shuning uchun server sizning brauzer sessiyangiz (cookie'lar) orqali ishlaydi — xuddi olx.uz saytining o'zi kabi:
Qism | Manba | Kerak |
Profil, e'lonlarim, e'lon boshqaruvi | olx.uz | OLX'ga kirish ( |
Qidiruv, raqobatchilar, bozor tahlili | olx.uz ochiq qidiruv API'si | Hech narsa |
Kategoriyalar, parametrlar, joylar | categories.olxcdn.com, GraphQL, geo API | Hech narsa |
Sessiya
~/.olx-mcp/session.jsonda saqlanadi. Bu fayl akkauntingizga kirish kalitiga teng — hech kimga bermang.access_token15 daqiqa amal qiladi; server uni saytning o'zi kabi avtomatik yangilaydi (login.olx.uz sessiyasi orqali). Sessiya butunlay eskirsa (odatda ~2 hafta faolsizlikdan keyin) — qayta kiring.olx.uz oddiy HTTP so'rovlarni bloklaydi, shuning uchun so'rovlar kompyuterdagi Google Chrome yoki Microsoft Edgening ko'rinmas (headless) rejimi orqali yuboriladi. Brauzer 2 daqiqa ishlatilmasa yopiladi.
Bozor tahlili so'rovlari akkauntsiz (anonim) yuboriladi.
⚠️ Norasmiy loyiha — OLX bilan bog'liq emas. Saytning ichki API'larini ishlatadi. OLX ularni o'zgartirsa, moslash kerak bo'ladi. OLX qoidalari avtomatlashtirishni cheklashi mumkin — so'rovlarni me'yorida yuboring, ommaviy e'lon joylash uchun ishlatmang.
Related MCP server: gotham-browser
Toollar
Akkaunt: olx_login, olx_session_status, olx_get_my_profile
Mening e'lonlarim: olx_list_my_adverts, olx_get_my_advert (kunlik statistika bilan), olx_advert_action
(activate / deactivate / refresh / extend / finish / remove)
Ma'lumotnoma: olx_suggest_category, olx_list_categories, olx_get_category (majburiy parametrlar va qiymatlar), olx_find_location
Bozor va raqobatchilar: olx_search_offers, olx_get_offer, olx_get_offer_phones, olx_get_seller, olx_analyze_market,
olx_find_competitors, olx_compare_my_advert
Aloqa raqamlari: olx_get_offer_phones 1–20 ta e'lon uchun sotuvchining telefonini ochadi (saytdagi "Показать телефон"
tugmasi bilan bir xil, login shart emas) va tavsifga yozilgan raqamlarni ham ajratib beradi. olx_get_offer tavsifdagi
raqamlarni doim ko'rsatadi, include_phones=true bilan esa telefonni ham ochadi. Har bir ochish sotuvchining
statistikasiga yoziladi va OLX kunlik limit qo'yadi — faqat kerakli e'lonlar uchun so'rang.
O'rnatish (istalgan qurilmada)
Talablar: Node.js 20+, Google Chrome yoki Microsoft Edge, Claude Desktop.
git clone https://github.com/lxz-401/olx-mcp-server.git
cd olx-mcp-server
npm install # bog'liqliklar + avtomatik build
npm run setup:claude # Claude Desktop / Cowork konfiguratsiyasiga "olx" serverini qo'shadi
npm run login # Chrome ochiladi — OLX akkauntingizga o'zingiz kiringSo'ng Claude Desktop'ni to'liq yoping (tray → Quit) va qayta oching. OLX toollari Chat'da ham, Cowork'da ham paydo bo'ladi (Cowork mahalliy serverlarni Claude Desktop konfiguratsiyasi orqali oladi; server sizning kompyuteringizda ishlaydi).
setup:claudeWindows (oddiy va Microsoft Store versiyasi), macOS va Linux'dagi konfiguratsiya faylini o'zi topadi, mavjud sozlamalarni saqlaydi va asl faylning zaxirasiniclaude_desktop_config.json.bak-olxga oladi.Har bir qurilmada alohida
npm run loginqiling.session.jsonni qurilmalar o'rtasida ko'chirmang va hech qachon git'ga qo'shmang (u repo tashqarisida,~/.olx-mcp/da saqlanadi).Yangilash:
git pull && npm install, keyin Claude Desktop'ni qayta ishga tushiring.
Qo'lda ulash
Claude Code:
claude mcp add olx --scope user -- node "/to'liq/yo'l/olx-mcp-server/dist/index.js"Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"olx": {
"command": "node",
"args": ["/to'liq/yo'l/olx-mcp-server/dist/index.js"]
}
}
}Konfiguratsiya fayli joyi: Windows — %APPDATA%\Claude\ yoki Store versiyasida
%LOCALAPPDATA%\Packages\Claude_*\LocalCache\Roaming\Claude\; macOS — ~/Library/Application Support/Claude/.
E'lon joylash
OLX e'lon joylashdan oldin telefon raqamini SMS orqali bir marta tasdiqlashni talab qiladi. Buni olx.uz saytida yoki OLX
ilovasida o'zingiz bajaring ("Подать объявление" → telefon → SMS kod). olx_session_status tasdiqlanganligini ko'rsatadi.
Shundan so'ng olx_create_advert tooli qo'shiladi.
Sozlamalar (muhit o'zgaruvchilari)
O'zgaruvchi | Default | Tavsif |
|
| Sessiya (cookie) fayli |
|
| Javoblar tili ( |
|
| Qaysi brauzer ishlatilsin |
| — | Brauzer exe fayliga to'liq yo'l |
|
|
|
|
| Boshqa mamlakat OLX'i uchun |
Misol so'rovlar
"Profilimni va e'lonlarim statistikasini ko'rsat" →
olx_get_my_profile,olx_list_my_adverts status=ALL"iPhone 13 128GB ni Toshkentda qanchaga sotsam bo'ladi?" →
olx_find_location+olx_analyze_market"Kir yuvish mashinalari bo'yicha asosiy raqobatchilarim kim?" →
olx_find_competitors→olx_get_seller"12345 raqamli e'lonimni raqobatchilar bilan solishtir" →
olx_compare_my_advert"Toshkentdagi arzon iPhone 13 sotuvchilarining raqamlarini ber" →
olx_search_offers sort=price_asc→olx_get_offer_phones
Tekshirish
node scripts/smoke-test.mjs '[["olx_session_status",{}],["olx_search_offers",{"query":"iphone","limit":3}]]'Available Tools
17 toolsolx_advert_actionE'lonni boshqarishADestructive
Change the state of one of the account's adverts (same actions as the "My ads" page on olx.uz):
activate: re-activate a finished/inactive advert (may require a paid packet if the free limit is used up)
deactivate: hide an active advert (e.g. item sold)
refresh: bump the advert to the top ("Поднять"). May be PAID unless free refresh is available — confirm with the user first
extend: extend the validity period
finish: move to finished/archive
remove: delete a finished advert PERMANENTLY — cannot be undone; always confirm with the user first
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| advert_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes far beyond the annotations by disclosing crucial behavioral details: 'refresh: May be PAID unless free refresh is available', 'remove: delete a finished advert PERMANENTLY — cannot be undone', and the requirement to confirm with the user for paid or destructive actions. This adds significant value over the destructiveHint and idempotentHint flags, which are generic. The description paints a clear picture of side effects and prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a compact bullet list that front-loads the main purpose and then breaks down each action with necessary details. Every line adds value: the intro clarifies it mirrors the 'My ads' page, and each bullet includes a definition plus any caveats (paid, permanent, confirmation). No wasted words, and the structure is easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity—multiple state changes, potential costs, and a permanent deletion option—the description covers all essential aspects: what each action does, when it's paid, when confirmation is required, and the irreversibility of removal. There is no output schema, so return values are not needed. An agent has everything required to invoke the tool correctly and safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description thoroughly explains the 'action' enum by detailing each possible value with its semantics and implications. For 'advert_id', the parameter name is self-explanatory and the schema already provides type and constraints. The description does not explicitly describe advert_id, but the action parameter's rich explanation compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Change the state of one of the account's adverts' and enumerates six specific actions with detailed explanations. It distinguishes itself from sibling tools like olx_list_my_adverts (listing) and olx_get_my_advert (viewing) by focusing on state mutations, leaving no ambiguity about its function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides concrete guidance for each action, including when to use them (e.g., 'activate: re-activate a finished/inactive advert') and important cautions (e.g., 'refresh: ... May be PAID unless free refresh is available — confirm with the user first'). While it doesn't explicitly name alternative tools, the context makes it clear this is for modifying adverts, not for listing or viewing them. The guidance is strong but stops short of explicit 'when not to use' statements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
olx_analyze_marketBozor va narx tahliliARead-onlyIdempotent
Analyze the OLX market for a product/segment. Collects up to sample_size live listings plus site-wide facet counts and returns:
total active listings (competition level)
price statistics per currency (min / 25% / median / 75% / max / mean, outliers removed)
private vs business split, top regions, cities and categories
condition split, share of promoted (paid) listings, delivery share
listing age and refresh activity, typical photo count
most active sellers in the sample
actionable recommendations (competitive price range, photos, promotion)
Use for "how much should I sell X for", "how competitive is this niche", "who dominates this market". No auth needed. Tip: narrow with category_id to exclude accessories (e.g. 'iphone 13' also matches cases).
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Qidiruv so'zi, masalan 'iphone 13 128gb' | |
| city_id | No | Shahar ID (olx_find_location orqali toping, masalan 4 = Toshkent) | |
| price_to | No | Maksimal narx (so'mda) | |
| condition | No | Holati: yangi yoki b/u (ko'p kategoriyalarda ishlaydi) | |
| region_id | No | Viloyat ID (olx_find_location orqali toping) | |
| owner_type | No | Faqat xususiy yoki faqat biznes sotuvchilar | |
| price_from | No | Minimal narx (so'mda) | |
| category_id | No | OLX kategoriya ID (masalan 85 = Mobil telefonlar) | |
| district_id | No | Tuman ID | |
| sample_size | No | Tahlil uchun nechta e'lon yig'ilsin (20–500; ko'p = aniqroq, lekin sekinroq) | |
| response_format | No | Javob formati: 'markdown' (o'qish uchun) yoki 'json' (to'liq tuzilgan ma'lumot) | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds the detail that it collects live listings and returns recommendations, but does not elaborate on internal behavior like potential rate limits or data freshness. The added context is useful but not extensive, fitting a baseline 3 given 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a bulleted list of outputs, making it easy to scan. It front-loads the core purpose and provides targeted use cases and a practical tip, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (11 params, no required params, no output schema), the description clearly explains the return values and usage guidance. It could mention limitations like the need for category filtering, but the tip already covers a key edge case. It's nearly complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 11 parameters are documented with descriptions (e.g., query, city_id, sample_size). The description does not add extra parameter-level guidance beyond the tip about category_id, which is helpful but minor. Baseline 3 is appropriate since the schema already covers the parameters well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool performs market analysis for a product/segment, listing specific outputs (price stats, competition level, seller split, recommendations). It distinguishes itself from siblings like olx_find_competitors and olx_compare_my_advert by focusing on aggregate market data rather than individual competitor comparison.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit use cases such as 'how much should I sell X for' and 'how competitive is this niche', and notes no auth needed. It also gives a tip to narrow with category_id to avoid irrelevant matches, helping agents decide when to apply this tool over other search tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
olx_compare_my_advertMening e'lonimni raqobatchilar bilan solishtirishARead-onlyIdempotent
Compare one of the logged-in account's adverts against similar live listings on OLX. Loads the advert and its stats (needs a session), searches similar offers (by title keywords within the same category), and reports: price percentile and rank vs competitors, market price stats, photo count vs competitors, promoted share, phone-view conversion, and concrete recommendations (price change, photos, promotion, title).
Args:
advert_id: your advert id (from olx_list_my_adverts)
query: override search keywords (default: first 5 words of your title)
city_id / region_id: restrict competitors to a location (olx_find_location)
sample_size: listings to compare against
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Qidiruv so'zlarini qo'lda berish | |
| city_id | No | Shahar ID (olx_find_location orqali toping, masalan 4 = Toshkent) | |
| advert_id | Yes | ||
| region_id | No | Viloyat ID (olx_find_location orqali toping) | |
| sample_size | No | Tahlil uchun nechta e'lon yig'ilsin (20–500; ko'p = aniqroq, lekin sekinroq) | |
| response_format | No | Javob formati: 'markdown' (o'qish uchun) yoki 'json' (to'liq tuzilgan ma'lumot) | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds real behavioral context: it loads advert stats, searches live listings by title/category, requires a session, and produces recommendations. There is no contradiction with 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description front-loads the core purpose in the first sentence, then compactly summarizes the behavior and the key outputs. The Args block is terse and each line conveys a meaningful constraint or provenance detail. No filler or repetition of the schema is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity and six parameters, the description covers the main behavioral flow, input provenance, and the nature of the generated report. The response_format parameter already tells the agent how results will be returned, so an output schema is not required. It is not a 5 only because it does not explicitly tell the agent when to prefer this over closely related siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 83%, so the baseline is 3, but the description adds meaning beyond the schema by explaining that advert_id comes from olx_list_my_adverts, query defaults to the first 5 title words, and city_id/region_id restrict competitors. It also clarifies the purpose of sample_size as the number of listings to compare against. This is genuinely useful guidance above the structured schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Compare'), a clear resource ('one of the logged-in account's adverts'), and the comparison target ('similar live listings on OLX'). It also enumerates the output report components, leaving no ambiguity about what the tool produces. It is clearly distinguishable from siblings like olx_find_competitors or olx_analyze_market because it operates on the caller's own advert.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: it needs a session, uses title keywords within the same category, and can be restricted by location. It references provenance helpers such as olx_list_my_adverts and olx_find_location. It does not explicitly name when-not-to-use it or list exclusion criteria against sibling tools, so it stops just 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.
olx_find_competitorsRaqobatchilarni aniqlashARead-onlyIdempotent
Identify the main competitors (sellers) for a product/segment on OLX. Groups sampled listings by seller and ranks them by number of listings, then enriches the top sellers with their public profile and total active listing count.
Returns per competitor: seller_id, name, business flag, listings in this segment, promoted listings, median price, cities, account age, last activity, total active listings on OLX, sample URLs. Follow up with olx_get_seller(seller_id) for a deep dive on one competitor. No auth needed.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | Nechta raqobatchini batafsil ko'rsatish | |
| query | No | Qidiruv so'zi, masalan 'iphone 13 128gb' | |
| city_id | No | Shahar ID (olx_find_location orqali toping, masalan 4 = Toshkent) | |
| price_to | No | Maksimal narx (so'mda) | |
| condition | No | Holati: yangi yoki b/u (ko'p kategoriyalarda ishlaydi) | |
| region_id | No | Viloyat ID (olx_find_location orqali toping) | |
| owner_type | No | Faqat xususiy yoki faqat biznes sotuvchilar | |
| price_from | No | Minimal narx (so'mda) | |
| category_id | No | OLX kategoriya ID (masalan 85 = Mobil telefonlar) | |
| district_id | No | Tuman ID | |
| sample_size | No | Tahlil uchun nechta e'lon yig'ilsin (20–500; ko'p = aniqroq, lekin sekinroq) | |
| response_format | No | Javob formati: 'markdown' (o'qish uchun) yoki 'json' (to'liq tuzilgan ma'lumot) | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool read-only and idempotent, and the description adds substantial behavioral context: it samples listings, groups by seller, ranks by listing count, enriches top sellers with profile and active-listing data, and states that no auth is needed. The explicit list of returned per-competitor fields also goes well beyond the annotation hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well ordered: purpose first, then method, then return fields, then follow-up, then auth note. Every sentence earns its place, and there is no redundant restatement of schema constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter tool with no output schema, the description covers the core behavior, return fields, next-step tool, and authentication requirements, while the schema covers all parameter details. The remaining ambiguity is that all parameters are optional and the description does not clarify what happens or what is required for a valid call with no filters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every one of the 12 parameters is already documented with type, constraints, and examples in the input schema. The tool description adds no additional parameter semantics, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: identifying the main competitors/sellers for a product/segment on OLX. It also explains the method (grouping sampled listings by seller, ranking by count, enriching top sellers), which makes the tool's function concrete and distinguishable from listing-search and seller-profile tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly indicates when to use the tool — when competitor discovery for a product/segment is needed — and gives a clear follow-up path with olx_get_seller(seller_id). It does not, however, state when not to use it or how it compares to olx_search_offers or olx_analyze_market, so it lacks full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
olx_find_locationShahar / tuman ID sini topishARead-onlyIdempotent
Find OLX city_id / district_id / region_id by place name (e.g. "Samarqand", "Chilonzor", "Ташкент"). No auth needed. Use the IDs for market search filters (city_id, region_id, district_id) and for advert location.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Joy nomi |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive behavior; the description adds 'No auth needed', which is a useful access/behavioral fact beyond the schema and annotations. It also makes clear the operation is a pure lookup by place name, with no side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each earns its place: function and examples, auth requirement, and downstream usage. The core action is front-loaded and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, low-complexity lookup with rich annotations, the description is nearly complete: input, output kinds, auth, and downstream use. It doesn't specify the exact return shape, but the absence of an output schema is compensated by the explicit list of IDs returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema already documents 'name' with 100% coverage, so baseline is 3; the description adds concrete examples ('Samarqand', 'Chilonzor', 'Ташкент') and clarifies the parameter is a place name that maps to OLX location IDs. That extra semantic detail justifies a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Find'), the exact resource ('OLX city_id / district_id / region_id'), and the input ('by place name'). The purpose is sharply distinct from sibling tools like olx_search_offers or olx_get_profile, so an agent can select it unambiguously.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use the tool ('Use the IDs for market search filters ... and for advert location') and notes no auth is needed. It doesn't name alternative tools or exclusions, but the use-case statement is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
olx_get_categoryKategoriya va uning parametrlariARead-onlyIdempotent
Get an OLX category: name, path, whether adverts can be posted in it (is_addable / leaf), max photos, validity days, subcategories, and the advert PARAMETERS — code, label, type (enum/price/input...), required flag, units (e.g. currency UZS/UYE) and allowed values (key=label). Use the parameter codes and value keys when posting an advert. No auth needed. Find category ids with olx_list_categories.
| Name | Required | Description | Default |
|---|---|---|---|
| category_id | Yes | ||
| response_format | No | Javob formati: 'markdown' (o'qish uchun) yoki 'json' (to'liq tuzilgan ma'lumot) | markdown |
| include_children | No | Subkategoriyalar nomlarini ham olish |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, openWorldHint, idempotentHint, destructiveHint), the description adds 'No auth needed' and clarifies that the response is a category's configuration, including parameter constraints and allowed values. This gives the agent a concrete expectation of what will come back. It does not cover error handling or rate limits, but for a safe, read-only lookup the annotations already cover the key behavioral traits. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short, information-dense sentences with no filler. The primary result fields are front-loaded in the first sentence, followed immediately by the actionable use case, auth note, and sibling-tool pointer. It avoids repeating schema text and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only lookup with no output schema, the description covers what the category data contains, where to get the category_id, and why the result is useful for posting adverts. The optional response_format and include_children parameters are explained in the schema, so the description does not need to repeat them. The only minor omission is not mentioning error behavior for an invalid category_id, which is acceptable for a safe operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes response_format and include_children, and the description adds meaning to the undocumented category_id by framing it as an OLX category lookup and pointing to olx_list_categories as the source of ids. It also explains why the returned parameter codes and value keys matter, connecting the output back to ad posting. With two of three parameters already documented in the schema, the description's added contribution is moderate but useful.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Get an OLX category' and enumerates the exact payload: name, path, is_addable/leaf, max photos, validity days, subcategories, and advert parameter definitions including codes, types, required flags, units, and allowed values. This resource-level specificity clearly separates it from olx_list_categories, which returns category ids, and from olx_suggest_category.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use the returned parameter codes and value keys when posting an advert, giving the agent a concrete downstream use case. It also directs the agent to olx_list_categories for finding category ids, establishing the proper lookup sequence. It does not spell out when to prefer olx_suggest_category or olx_list_categories, so the guidance is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
olx_get_my_advertE'lon statistikasiARead-onlyIdempotent
Get one of the account's adverts with totals (views, phone views, saves, messages) and the DAILY statistics history (page views and messages per day) plus paid promotions history. Use to see how an advert's traffic changes over time.
| Name | Required | Description | Default |
|---|---|---|---|
| advert_id | Yes | E'lon ID si (olx_list_my_adverts dan) | |
| response_format | No | Javob formati: 'markdown' (o'qish uchun) yoki 'json' (to'liq tuzilgan ma'lumot) | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, fully covering the safety profile. The description adds what data is returned (totals, daily history, paid promotions) but does not disclose additional behavioral traits such as rate limits, auth requirements, or response structure. This is acceptable given the annotations, but no extra behavioral caveats are provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loads the most important information (what the tool returns), and ends with a clear usage statement. Every word 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with two fully documented parameters, strong annotations, and no output schema, the description covers all essential aspects: it names the specific data returned, the daily history, paid promotions, and the intended use case. The schema handles parameter details, so nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both advert_id and response_format are already documented with formats, defaults, and sources. The description does not add parameter-specific meaning beyond what the schema provides, matching the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: 'Get one of the account's adverts with totals ... and the DAILY statistics history ... plus paid promotions history.' It also mentions concrete data types (views, phone views, saves, messages), distinguishing it from sibling tools like olx_list_my_adverts and olx_compare_my_advert.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: 'Use to see how an advert's traffic changes over time.' It does not explicitly state when not to use it or mention alternative tools, but the intended usage is unambiguous and helpful for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
olx_get_my_profileMening OLX profilimARead-onlyIdempotent
Get the logged-in OLX account profile: name, id, registration date, last login, business flag, phone verification, contact details used in adverts, advert counters by status (active / waiting / moderated / archive / unpaid / outdated), saved (observed) ads and searches, and OLX wallet balance. For the advert list with views/phone stats use olx_list_my_adverts.
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | Javob formati: 'markdown' (o'qish uchun) yoki 'json' (to'liq tuzilgan ma'lumot) | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior, lowering the burden on the description. The description adds value by scoping to the logged-in account and detailing the returned categories (counters by status, saved ads/search, wallet balance). It does not cover auth-failure behavior or rate limits, but those are not required given 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and resource, and its first sentence carries a dense but useful list of returned data. The second sentence earns its place by routing to a sibling. It is slightly list-heavy, but there is no waste or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating the profile sections an agent can expect. It also provides the key cross-tool routing for advert stats. It stops short of explaining session failures or exact response shape, but the 'logged-in' qualifier and sibling set make the remaining gaps minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: the only parameter, response_format, has an enum, default, and explanatory description in the schema. The tool description contributes no additional parameter-level meaning, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a precise action ('Get') on a specific resource ('logged-in OLX account profile') and enumerates the major data groups returned. It explicitly distinguishes itself from olx_list_my_adverts by directing advert-level views/phone stats to that sibling, so an agent can discriminate 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The tool's context is clear: it is for account/profile-level data rather than per-advert statistics. The final sentence explicitly names the alternative tool and the exact condition ('advert list with views/phone stats') that should route to olx_list_my_adverts, leaving no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
olx_get_offerRaqobatchi e'lonini ko'rishARead-onlyIdempotent
Get full public details of any OLX listing by its numeric id (from search results): description, all parameters, price, seller, location, promotion flags, dates, contact name and phone numbers written in the description. Set include_phones=true to also reveal the seller's contact phone (same as the "Show phone" button). Useful to study how a competitor writes and positions their listing.
| Name | Required | Description | Default |
|---|---|---|---|
| offer_id | Yes | ||
| include_phones | No | Sotuvchining telefon raqamini ham ochish ("Показать телефон"; sotuvchining statistikasiga yoziladi) | |
| response_format | No | Javob formati: 'markdown' (o'qish uchun) yoki 'json' (to'liq tuzilgan ma'lumot) | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the operation as read-only, open-world, and idempotent. The description adds useful behavior: it works on public details and include_phones mirrors the OLX 'Show phone' button, which is the main non-obvious action. The seller-statistics side effect appears in the schema, so it is not lost.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three purposeful sentences with no filler: the first covers the operation and returned data, the second covers the optional phone flag, and the third states the use case. Everything earns its place and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema, the description still enumerates the major fields an agent can expect and mentions the markdown/json response switch. It does not detail error cases or auth, but 'public details' and the strong safety annotations make this sufficient for a read-only lookup tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description supplies important semantics the schema lacks for offer_id: it is a numeric id coming from search results. It also reinforces include_phones's behavior, while response_format is already fully explained by its enum-specific schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete operation—get full public details of an OLX listing by numeric id—and enumerates the returned content: description, parameters, price, seller, location, promotion flags, dates, and contacts. This clearly distinguishes it from narrower siblings like search, seller profile, or phone-only tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context: the id comes from search results and the tool is useful for studying how a competitor writes and positions a listing. It does not explicitly name alternatives or say when not to use it, but the intended scenario is evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
olx_get_offer_phonesE'lonlardagi aloqa raqamlariARead-only
Reveal the contact phone numbers of one or more OLX listings (the same as pressing "Показать телефон" on the site). No login needed. For each offer returns: title, url, seller, contact name, phones from the "show phone" button, and phone numbers the seller wrote in the title/description. If the seller hid the phone, phones is [] and phone_available=false.
Notes: each reveal is counted in the seller's statistics and OLX applies a daily limit (429) — request only the offers the user actually needs. Offer ids come from olx_search_offers / olx_get_seller.
| Name | Required | Description | Default |
|---|---|---|---|
| offer_ids | Yes | E'lon ID lari (1–20 ta) | |
| response_format | No | Javob formati: 'markdown' (o'qish uchun) yoki 'json' (to'liq tuzilgan ma'lumot) | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and destructiveHint annotations, the description adds valuable behavioral details: exact return fields, hidden-phone behavior (phones [] and phone_available=false), the fact that each reveal counts in seller statistics, and the OLX 429 daily limit. This is an excellent disclosure of side effects and constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the core behavior, and every sentence earns its place. It packs return fields, edge cases, authentication needs, and rate-limit guidance without unnecessary filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite lacking an output schema, the description covers the return shape, hidden-phone case, auth requirements, rate limits, and where to get inputs. This is complete enough for an agent to invoke the tool correctly and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents both parameters with 100% coverage, so the baseline is 3. The description adds useful meaning by telling the agent where offer_ids come from and reinforcing the practical limits, which goes beyond pure schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Reveal') and resource ('contact phone numbers of one or more OLX listings') and clearly differentiates the tool from siblings by explaining it provides phone data from the 'show phone' button and listing text. This is precise and distinguishes it from likely-confused tools like olx_get_offer or olx_get_seller.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: no login is needed, offer IDs come from olx_search_offers / olx_get_seller, and users should request only what they need due to the daily limit. It does not explicitly contrast with alternative tools, so it falls just short of full alternative-based guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
olx_get_sellerSotuvchi (raqobatchi) profiliARead-onlyIdempotent
Analyze any OLX seller by user id (seller_id from search results): public profile (name, business flag, registration date, last activity, response time), total active listings, their categories and price levels, share of promoted listings, and a sample of their latest listings.
| Name | Required | Description | Default |
|---|---|---|---|
| seller_id | Yes | ||
| listings_sample | No | Nechta e'lonini ko'rsatish/tahlil qilish | |
| response_format | No | Javob formati: 'markdown' (o'qish uchun) yoki 'json' (to'liq tuzilgan ma'lumot) | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, and non-destructive behavior. The description adds useful context by specifying what data is analyzed and returned, such as business flag, registration date, response time, promoted share, and latest listings. No contradiction with annotations exists; the only minor gap is lack of detail on edge cases like invalid seller_id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence: it starts with the primary action and input, then compresses the output contract into a parenthetical list. Every phrase adds information; there is no filler, repetition of the title, or redundant detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only analysis tool with three parameters and no output schema, the description is complete enough to invoke correctly. It identifies the required input, its source, the analysis scope, and the main output components. Missing details like pagination or error behavior are not necessary given the annotations and simple schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, leaving seller_id undocumented. The description compensates by explicitly defining seller_id as a user id from search results. It also ties listings_sample to 'a sample of their latest listings', while response_format is already self-documented in the schema. This adds meaning beyond the raw JSON schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Analyze any OLX seller by user id'. It enumerates the exact outputs—public profile fields, active listings, categories, price levels, promoted share, and a sample of latest listings—making the tool's purpose unmistakable. The word 'any' also distinguishes it from olx_get_my_profile, which targets the caller's own profile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: the seller_id comes from search results and the tool works for any OLX seller, implying competitor analysis. However, it does not explicitly name alternatives or state when not to use it, such as 'for your own profile use olx_get_my_profile', so it stops short of full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
olx_list_categoriesOLX kategoriyalariARead-onlyIdempotent
Browse or search the OLX category tree (no auth). Without arguments returns top-level categories; parent_id lists subcategories; search finds categories by name (Russian/Uzbek as shown on the site) and shows full paths. Use the ids as category_id in market tools and olx_get_category.
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Nom bo'yicha qidiruv, masalan 'телефон' | |
| parent_id | No | Ota-kategoriya ID (0 = eng yuqori daraja) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive, and the description adds relevant behavior: no auth required, argument-dependent outputs, and search full paths. This is useful additional context beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with no filler: the primary purpose, each argument mode, and the relationship to other tools. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only browse/search tool with two optional parameters and no output schema, the description supplies the necessary invocation patterns and downstream id usage. It does not detail the exact response shape, but the no-output-schema case is simple enough that this is a minor gap, not a blocker.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description enriches the parameters by explaining parent_id enumerates subcategories and search matches by Russian/Uzbek names and returns full paths. This meaningfully goes beyond the raw schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb/resource pair: 'Browse or search the OLX category tree' and immediately distinguishes modes (no args, parent_id, search), so an agent knows exactly what it does. It also names the downstream consumer, olx_get_category and market tools, which helps separate it from the sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear selection context: use without args for top-level categories, parent_id for subcategories, and search by name. It does not explicitly discuss when to avoid this tool versus olx_suggest_category, but the invocation guidance is concrete enough for correct use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
olx_list_my_advertsMening e'lonlarimARead-onlyIdempotent
List the logged-in account's adverts by status with performance stats (views, phone views, saves, messages).
Args:
status: ACTIVE (default) | WAITING | UNPAID | FINISHED | MODERATED | ALL (all statuses)
query: filter by title text
limit (1–50), offset: pagination
response_format: markdown | json
Returns per advert: id, title, status, price, currency, category path, location, dates, days to expire, photos count, stats {views, phones, observed}, message counters, paid features. Sorted newest first; markdown adds totals and conversion.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | Sarlavha bo'yicha filtr | |
| offset | No | ||
| status | No | ACTIVE | |
| response_format | No | Javob formati: 'markdown' (o'qish uchun) yoki 'json' (to'liq tuzilgan ma'lumot) | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavior: returned fields, sorting newest first, stats structure, pagination behavior, and markdown-specific totals/conversion. This goes beyond the annotation baseline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well organized with a lead sentence, an Args block, and a Returns block. Every sentence adds useful information, and the most important scoping ('logged-in account's adverts') is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With five optional parameters and no output schema, the description is complete: it documents all parameters, lists per-advert return fields, explains the stats object, states ordering, and describes output format differences. An agent has enough information to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 40%, so the description carries the burden, and it succeeds. It explains the meaning of all five parameters: status values and default, query filtering by title, limit/offset pagination, and response_format choices. This is meaningful guidance beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') with a clear resource ('the logged-in account's adverts') and a differentiating scope ('by status with performance stats'). It clearly distinguishes itself from sibling tools like olx_get_my_advert, which retrieves a single advert.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys a clear use case: listing the current account's adverts with status and performance stats. However, it does not explicitly state when to prefer this over alternatives such as olx_get_my_advert for a single advert, or mention any prerequisites like having an active session.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
olx_loginOLX akkauntiga kirishAIdempotent
Open a visible Chrome window on the user's computer so THEY can log into their OLX account (phone/email + password or SMS code). The tool never types credentials; it only waits until login is detected (up to wait_minutes) and saves the session cookies locally. Call this when any account tool returns a session error. Tell the user a Chrome window has opened and they should log in there.
| Name | Required | Description | Default |
|---|---|---|---|
| wait_minutes | No | Kirishni necha daqiqa kutish |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already say readOnlyHint=false (mutation), idempotentHint=true, and destructiveHint=false. The description adds valuable behavior beyond that: it opens a visible window on the user's machine, waits until login is detected, saves session cookies locally, and does not type credentials. This covers the important non-obvious behavior (interactive user involvement, no automation of credentials, cookie persistence). It could have mentioned that it blocks until timeout or returns a session-status result, but the main behavioral risks (no credential entry, cookie saving) are clearly disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, all load-bearing: what the tool does, key constraint (never types credentials/waits and saves cookies), and when to call it plus user instructions. No filler, and the critical caveat ('never types credentials') is front-loaded in the first sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a login tool with 1 optional param and no output schema, this is complete. It covers the purpose, the interaction model, the trigger condition, the timeout parameter, the side effect (saving cookies), and the user-facing message. An agent can invoke this correctly and knows what to tell the user. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 1 parameter and schema description coverage at 100%, the baseline is 3. The description adds meaning though: it explains wait_minutes corresponds to 'waits until login is detected (up to wait_minutes)', which ties the parameter to the login-wait behavior. It doesn't describe what happens when the timeout is reached (e.g., error vs. return), but for a single optional parameter with reasonable schema docs, this is more than minimum.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('open a visible Chrome window... to log into their OLX account') and clearly differentiates it from siblings: it's the only tool that performs interactive login, while siblings like olx_session_status and olx_get_my_profile require an existing session. Even without knowing the sibling definitions, an agent can tell this is the login/session-restoration tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to call it: 'Call this when any account tool returns a session error.' It also says what the tool does NOT do ('never types credentials') and what the user must do, plus it gives a concrete first step ('Tell the user a Chrome window has opened'). This is strong usage guidance with no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
olx_search_offersOLX'da e'lonlarni qidirishARead-onlyIdempotent
Search live OLX listings (public site data, no auth needed) with filters and sorting. Use to look at competitor listings for a product, check current prices, or browse a category/region.
Args: query, category_id, region_id, city_id, district_id, price_from, price_to (UZS), owner_type (private|business), condition (new|used), sort (relevance|newest|price_asc|price_desc), offset, limit (1–50), response_format.
Returns: total matching listings and offers with id, title, price, currency, condition, seller (id, name, business), city/region, created date, promotion flags, photo count, URL; plus has_more/next_offset for pagination (max offset 1000). For aggregated stats use olx_analyze_market instead of paging manually.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Saralash: relevance | newest | price_asc | price_desc | relevance |
| limit | No | ||
| query | No | Qidiruv so'zi, masalan 'iphone 13 128gb' | |
| offset | No | ||
| city_id | No | Shahar ID (olx_find_location orqali toping, masalan 4 = Toshkent) | |
| price_to | No | Maksimal narx (so'mda) | |
| condition | No | Holati: yangi yoki b/u (ko'p kategoriyalarda ishlaydi) | |
| region_id | No | Viloyat ID (olx_find_location orqali toping) | |
| owner_type | No | Faqat xususiy yoki faqat biznes sotuvchilar | |
| price_from | No | Minimal narx (so'mda) | |
| category_id | No | OLX kategoriya ID (masalan 85 = Mobil telefonlar) | |
| district_id | No | Tuman ID | |
| response_format | No | Javob formati: 'markdown' (o'qish uchun) yoki 'json' (to'liq tuzilgan ma'lumot) | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior; the description adds genuinely useful operational context: no auth needed, live public data, pagination via has_more/next_offset, and a maximum offset bound. It does not mention error behavior or rate limits, but it goes beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and usage, followed by a compact args list and return summary. The length is justified by the tool's 13 parameters and no output schema, though the Args enumeration slightly duplicates schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by detailing return fields, pagination fields, and the maximum accessible offset. It also routes users to the correct sibling for aggregated statistics. Minor gaps like error conditions and rate limits prevent a perfect score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high (85%), so the schema already documents most parameters. The description lists the arguments and adds small clarifications like UZS currency and accepted enum values, but largely repeats what the schema provides rather than adding new semantic depth.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Search live OLX listings' with filters and sorting. It clearly differentiates itself from siblings by noting it works on public site data without auth and by pointing to olx_analyze_market for aggregate stats instead.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use the tool: looking at competitor listings, checking current prices, or browsing a category/region. It also names the alternative for aggregated stats ('For aggregated stats use olx_analyze_market instead of paging manually'), giving the agent a clear decision rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
olx_session_statusOLX sessiya holatiARead-onlyIdempotent
Check whether an OLX account session is saved and valid, which account it is, and whether the phone is SMS-verified (OLX requires a verified phone before posting adverts). Competitor/market tools do not need a session.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety traits are covered. The description adds value by disclosing the specific state it inspects (saved/valid session, account identity, SMS verification) and the rationale tied to posting adverts. There is 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The core checking behavior is front-loaded, and the parenthetical about OLX's phone requirement adds essential context without bloating the description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter status-checking tool, the description is nearly complete: it states what is checked, why it matters, and which sibling domain does not need it. It does not describe the exact response shape, but with no output schema and openWorldHint=true, the missing return details are a minor gap rather than a blocker.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is empty with zero parameters, so schema coverage is trivially 100%. With no parameters to document, the baseline of 4 applies, and the description does not need to add parameter-specific semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Check') with a clear resource ('OLX account session') and lists the exact facts returned: session saved/valid, account identity, and SMS-verification status. This is distinct from sibling tools like olx_login or olx_get_my_profile, so an agent can identify it without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when this tool matters: OLX requires a verified phone before posting adverts, so checking session and phone-verification status is a prerequisite step. It also gives a when-not signal by noting that competitor/market tools do not need a session, though it does not explicitly name alternative tools or spell out a full decision rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
olx_suggest_categorySarlavha bo'yicha kategoriya tavsiyasiARead-onlyIdempotent
Suggest OLX categories for an advert title (the same suggestion the olx.uz posting form shows). Needs a logged-in session. Returns category ids with full path. Then call olx_get_category(id) to see required parameters.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | E'lon sarlavhasi, masalan 'iPhone 13 128GB qora' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior. The description adds valuable beyond-annotation context: authentication requirement ('Needs a logged-in session') and the exact return shape ('category ids with full path'). 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, each earning its place: what it does, the posting-form behavior it reproduces, the auth prerequisite, what it returns, and the natural next call. Front-loaded with the core action and no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description is fully sufficient: it states input semantics, auth requirement, return values, and the recommended follow-up call. An agent has everything needed to invoke it correctly and understand the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter 'title' is already documented with an example. The description reinforces that it is an 'advert title' but does not add significant new meaning beyond the schema. This matches the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Suggest OLX categories for an advert title' with a precise reference to the olx.uz posting form suggestion behavior. This clearly distinguishes it from sibling tools like olx_list_categories and olx_get_category, especially by pointing the agent to olx_get_category for the next step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage context: needs a logged-in sessionchers, and directs the agent to follow up with olx_get_category(id) to see required parameters. It does not explicitly enumerate when-not-to-use alternatives, but the context is clear enough for an agent to select this tool over list/get category tools.
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.
17 tool updates
v2.0.0- First observed
olx_advert_action - First observed
olx_analyze_market - First observed
olx_compare_my_advert - First observed
olx_find_competitors - First observed
olx_find_location - First observed
olx_get_category - First observed
olx_get_my_advert - First observed
olx_get_my_profile - First observed
olx_get_offer - First observed
olx_get_offer_phones - First observed
olx_get_seller - First observed
olx_list_categories - First observed
olx_list_my_adverts - First observed
olx_login - First observed
olx_search_offers - First observed
olx_session_status - First observed
olx_suggest_category
TDQS
Scored across 17 tools
The tools are largely separated into clear groups: session/account, category/location lookup, public search/detail, and market analysis. Minor overlap exists between olx_get_offer and olx_get_offer_phones, and between olx_analyze_market and olx_find_competitors, but descriptions clarify their different outputs.
Most tools follow a consistent olx_ + verb + noun pattern such as list/get/search/find/analyze/compare/suggest. A few exceptions like olx_session_status, olx_advert_action, and olx_login break the verb_noun pattern, so it is mostly consistent but not perfect.
17 tools is slightly above the typical sweet spot, but it is reasonable given the server's dual scope of managing a user's OLX account and performing public market/competitor analysis. No tools are truly redundant, though a couple could be merged without much loss.
The most obvious gap is the absence of any tool to create or edit an advert, despite olx_get_category and olx_suggest_category providing parameters clearly meant for posting. The lifecycle only covers state changes like activate/deactivate/refresh, and there are no messaging or conversation tools.
Maintenance
Related MCP Connectors
MCP for Yandex Direct: manage ad campaigns & analytics from Claude or ChatGPT
Browser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.
Hosted Amazon Seller Central and Amazon Ads MCP server for Claude, ChatGPT, Cursor, and agents.
OpenAI Ads MCP for ChatGPT Ads campaigns, creatives, audiences, insights, and conversions.
Related MCP Servers
- AlicenseBqualityCmaintenanceEnables browser automation and control through ZenLink, allowing Claude Desktop and other MCP clients to drive a Zen Browser with 75+ tools for navigation, content extraction, interaction, parallel multi-tab operations, and session management.10047 PyPIMIT
- FlicenseNot gradedqualityBmaintenanceEnables Claude Code to control a real browser using AI for web scraping, competitive intelligence, and UX auditing through the MCP protocol.-
- AlicenseNot gradedqualityDmaintenanceEnables Claude AI to interact with LinkedIn through browser automation, including profile reading, people and job search, company research, post publishing, and profile editing.MIT
- FlicenseNot gradedqualityCmaintenanceEnables free access to multiple AI models (ChatGPT, Claude, Gemini, etc.) via MCP tools and OpenAI-compatible endpoints by leveraging browser session cookies, eliminating the need for API keys.-