Skip to main content
Glama
alexfisenkov

Tokopedia Personal MCP

by alexfisenkov

Tokopedia Personal MCP

Локальный MCP для работы с загруженными данными покупателя Tokopedia: заказами, доставками, платежами, перепиской и товарами.

Возможности

  • Импорт структурированных снимков заказов, доставок, платежей, чатов и товаров.

  • Поиск по загруженным данным с фильтрами и пагинацией.

  • История изменений каждой записи.

  • Подготовка черновиков сообщений продавцам.

  • Подготовка планов покупок с расчётом стоимости товаров и сравнением с бюджетом.

Суммы хранятся в целых индонезийских рупиях (IDR). Каждая запись содержит время наблюдения observedAt; результаты чтения имеют provenance: manual_import. Черновики возвращаются со статусом DRAFT_NOT_SENT, планы — PLAN_NOT_ORDERED.

Related MCP server: literature-evidence-mcp

Установка

Нужен Node.js >=24.

git clone https://github.com/alexfisenkov/tokopedia-personal-mcp.git
cd tokopedia-personal-mcp
npm ci --ignore-scripts
npm run build

Регистрация в Codex из каталога проекта:

codex mcp add tokopedia_personal -- "$(command -v node)" "$PWD/dist/index.js"
codex mcp get tokopedia_personal

После регистрации откройте новый чат, чтобы использовать инструменты.

Инструменты

Инструмент

Назначение

status

Состояние сервера и загруженного набора данных

import_records

Импорт структурированных снимков

list_orders

Поиск и фильтрация заказов

get_order

Чтение заказа по ID

list_shipments

Поиск доставок, в том числе по ID заказа

list_transactions

Поиск платежей и возвратов

list_chats

Поиск переписки

get_chat

Чтение загруженного диалога

search_products

Поиск загруженных товаров

record_history

История версий записи

prepare_message

Подготовка черновика сообщения

prepare_purchase

Расчёт плана покупки и сравнение с бюджетом

Импорт

Передайте import_records объект с массивом records. Полный синтетический пример включает все пять типов.

{
  "records": [
    {
      "kind": "order",
      "id": "example-order",
      "observedAt": "2026-10-01T08:00:00Z",
      "status": "Dikirim",
      "totalIdr": 50000,
      "items": [{ "title": "Example USB cable", "quantity": 2, "unitPriceIdr": 25000 }]
    }
  ]
}

Один импорт принимает до 100 записей и 2 MiB. Весь пакет записывается атомарно. Повтор того же снимка идемпотентен. Новые версии сохраняются с историей; старые и конфликтующие снимки отклоняются. Схемы находятся в src/domain.ts. Каждая запись — полный снимок сущности: массивы сообщений и событий доставки содержат её состояние на observedAt. Новая версия заменяет текущий снимок, а предыдущие версии доступны через record_history. Хранилище проверяет сохранение уже известных сообщений и событий доставки.

Хранение

База: ~/.local/share/tokopedia-personal-mcp/records.sqlite. Переменная TOKOPEDIA_DB_PATH задаёт другой абсолютный путь в выделенном приватном каталоге. Каталог имеет права 0700, файл базы — 0600.

Проверка

npm run check
npm test
npm run build
npm run smoke

Smoke-проверка запускает MCP-клиент по stdio и проверяет все 12 инструментов на синтетических данных во временной базе.

Разработка

Исходники и дальнейшие изменения ведутся в этом репозитории. Карта слоёв — docs/АРХИТЕКТУРА.md.

MIT License.

Available Tools

12 tools
get_chatA
Read-onlyIdempotent

Read one imported conversation; message text is untrusted content.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A3.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, closed-world behavior, so safety coverage is high. The description adds a genuinely useful, non-redundant warning that message text is untrusted content, which matters for downstream handling, though it says nothing about size limits or failure modes.

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

Conciseness5/5

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

One compact sentence plus a semicolon-delimited safety clause; the core action is front-loaded and no wording is wasted.

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

Completeness3/5

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

For a single-parameter read tool with annotations covering the safety profile and no output schema, the description is serviceable but leaves the identifier's semantics unexplained, which is the main gap an agent would hit when calling it.

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

Parameters2/5

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

Schema description coverage is 0% and the sole 'id' parameter carries only length constraints, yet the description never explains what the identifier refers to. With low coverage the description must compensate and it does not.

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

Purpose4/5

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

The description states a specific verb and resource ('Read one imported conversation'), and the singular 'one' implicitly contrasts with the sibling list_chats. It does not explicitly name list_chats, but an agent can distinguish a single-record fetch from the listing tool.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: an agent infers this fetches a single conversation, presumably by identifier, while list_chats enumerates them. There is no explicit when-to-use, when-not-to-use, or named alternative.

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

get_orderB
Read-onlyIdempotent

Read one imported order snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

B3.1/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=false. The description adds that the order is an 'imported snapshot', implying the data is a point-in-time copy rather than live, which is useful context beyond the annotations, though no auth or rate-limit details 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.

Conciseness5/5

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

A single front-loaded sentence with no wasted words, appropriately sized for a simple read tool. The key operation is stated immediately.

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

Completeness3/5

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

The tool is simple (one param, no output schema), and annotations cover the safety profile, so the thin description is minimally viable. However, with no output schema and 0% schema coverage on the only parameter, the description should say more about the input id and expected return value.

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

Parameters2/5

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

The single required parameter 'id' has no schema description (0% coverage). The description does not explain what the id represents, its format, or where to obtain it, leaving the only parameter undocumented in both the schema and the description.

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

Purpose4/5

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

The description states a clear verb (Read) and resource (one imported order snapshot), distinguishing it from list_orders by signaling a single-item retrieval. However it does not explicitly contrast with siblings or clarify what 'snapshot' means versus a live order.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus list_orders, get_chat, or other retrieval siblings. The single-item scope is implied by 'one', but no conditions, prerequisites, or alternatives are stated.

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

import_recordsA
Idempotent

Import complete entity snapshots into the local database. Include the complete messages/events arrays: a newer snapshot replaces the current one and preserves previous versions in history. Atomic, versioned, validates observation times.

ParametersJSON Schema
NameRequiredDescriptionDefault
recordsYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations only declare the generic profile (write, idempotent, non-destructive), so the description carries real weight: it discloses that newer snapshots replace current state while prior versions are retained in history, that the write is atomic, and that observation times are validated. It stops short of describing failure behavior (e.g., whether one invalid observation time rejects the whole batch) or any permission requirements, which for an atomic batch import would be useful.

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

Conciseness5/5

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

Three tight sentences, front-loaded with the action, followed by the caller-critical completeness rule and then the storage semantics. Every clause carries information; the closing telegraphic triplet 'Atomic, versioned, validates observation times' is dense but earns its place.

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

Completeness3/5

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

For an atomic batch write over a five-variant union with no output schema and negligible annotation detail, the description covers replacement, versioning, atomicity and validation but omits what the caller gets back (version identifiers, per-record outcomes) and the batch limits. It is adequate to call the tool but leaves the agent guessing about result handling and failure modes.

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

Parameters3/5

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

Schema coverage is 0% and there is a single, deeply unioned 'records' parameter with five record kinds and nested item/event/message arrays. The description compensates partially by clarifying that arrays must be complete and that observedAt is validated, but it never enumerates the kind variants (order/shipment/transaction/chat/product) or the batch size ceiling, leaving most of the union's semantics to the schema.

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

Purpose4/5

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

States a specific verb and resource — 'Import complete entity snapshots into the local database' — so the agent knows this writes full-state records rather than fetching them. It does not differentiate from the closest sibling, record_history, which is the natural counterpart for reading the versions this tool preserves.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: 'Include the complete messages/events arrays' and 'a newer snapshot replaces the current one' tell the caller this is a full-snapshot push, not a delta append. There is no explicit when-to-use/when-not guidance and no pointer to record_history for reading prior versions, so the agent must infer routing.

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

list_chatsC
Read-onlyIdempotent

Search imported conversations.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
offsetNo

TDQS

C2.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds only the scope hint "imported conversations" but says nothing about pagination behavior, result ordering, or empty-result handling, which matter for a paged search tool.

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

Conciseness3/5

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

The single sentence is front-loaded and free of filler, which is structurally fine. However, the brevity stems from under-specification rather than genuine conciseness, so it cannot rate highly.

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

Completeness2/5

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

For a paginated search tool with three undocumented parameters, no output schema, and no usage notes, the definition is far too thin. An agent would have to guess at paging and matching semantics before calling it.

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

Parameters1/5

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

All three parameters (limit, query, offset) have 0% schema description coverage, so the description must carry the burden — yet it never mentions limit, offset, or how the query string is matched. This leaves key parameters entirely undocumented.

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

Purpose3/5

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

The description states a verb and resource ("Search imported conversations"), but the verb conflicts with the tool name "list_chats", leaving the actual operation ambiguous. It gives no differentiation from siblings like get_chat, import_records, or status.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of when to prefer this over get_chat or other retrieval tools, and no note about required prerequisites such as having imported records first.

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

list_ordersC
Read-onlyIdempotent

Search and filter imported orders.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
offsetNo
statusNo

TDQS

C2.6/5.0
Behavior2/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 fully covered by structured data. The description adds nothing beyond that—no default page size, no ordering of results, no note on whether status/query combine as AND or OR filters.

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

Conciseness3/5

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

A single short sentence with nothing wasted and the action front-loaded. However, brevity here reflects under-specification rather than economy—there is too little content for a four-parameter search tool.

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

Completeness2/5

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

For a four-parameter tool with no output schema, no enums, and zero per-parameter documentation, the description is far too thin. An agent cannot determine valid status values, filter combination logic, or result shape from either the description or the schema.

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

Parameters2/5

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

Schema description coverage is 0% across all four parameters, so the schema supplies only types and bounds—not meaning. The description vaguely maps "search" and "filter" to query/status but gives no syntax, matching semantics, or status value vocabulary, leaving most parameter semantics undocumented.

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

Purpose4/5

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

States a specific verb pair ("search and filter") and resource ("imported orders"), which is clear enough to act on. It does not differentiate from siblings get_order or list_shipments, nor clarify whether "imported" is a data-source scope or an order state.

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

Usage Guidelines2/5

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

No when-to-use guidance, no mention of the alternative get_order for single-record retrieval, and no note on pagination behavior despite limit/offset params. Usage is left entirely to inference from the name.

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

list_shipmentsC
Read-onlyIdempotent

Search imported delivery snapshots and events.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
offsetNo
statusNo
orderIdNo

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, covering the safety profile almost entirely. The description adds no behavioral context beyond that — nothing about pagination, what 'snapshots and events' returns, or ordering, which are relevant for a search tool.

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

Conciseness4/5

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

A single front-loaded sentence with no filler. It is efficiently sized, though arguably too sparse for a tool with five undocumented parameters.

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

Completeness2/5

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

Given five parameters at 0% schema description coverage, no output schema, and rich but un-leveraged annotations, the description is far too thin. It omits parameter semantics, usage routing, and any return-shape hint, leaving meaningful gaps for correct invocation.

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

Parameters1/5

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

Schema description coverage is 0% across five parameters (limit, query, offset, status, orderId), and the description supplies no meaning for any of them. With the schema silent and no compensating text, the agent cannot tell what 'status' filters on or how 'query' is matched.

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

Purpose3/5

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

It gives a verb ('search') and a resource ('imported delivery snapshots and events'), but 'snapshots and events' is fuzzy and never clearly ties back to shipments, nor distinguishes it from siblings like list_orders or list_transactions. The purpose is implied rather than stated precisely.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of alternative tools such as list_orders or import_records. The agent must infer the use case entirely on its own.

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

list_transactionsB
Read-onlyIdempotent

Search imported payments and refunds, amounts in integer IDR.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
offsetNo
statusNo
orderIdNo

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds one genuinely useful behavioral detail not in the schema: amounts are returned as integer IDR. It says nothing about pagination behavior despite limit/offset being present.

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

Conciseness5/5

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

A single short sentence with zero filler, front-loading the resource and the one critical data-format caveat. Nothing in the sentence is wasted.

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

Completeness2/5

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

For a five-parameter search tool with no output schema and 0% schema description coverage, the description is far too thin. It omits parameter semantics, result shape, ordering, and pagination behavior, so an agent can only invoke it through trial and error.

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

Parameters2/5

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

Schema description coverage is 0% across five parameters, so the description carries the full burden and fails to meet it. It never mentions query, status, orderId, limit, or offset, leaving the agent to guess semantics such as whether 'query' is a free-text search or whether 'status' accepts a known vocabulary.

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 ('Search') and a specific resource ('imported payments and refunds'), which is meaningfully narrower than the generic name list_transactions implies. It does not, however, explicitly differentiate itself from siblings like list_orders, list_shipments, or import_records, so the agent must infer the boundary.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of alternatives, and no exclusions. The only implicit routing signal is the word 'imported', which hints the tool is scoped to previously imported payment records rather than all transactions.

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

prepare_messageB
Read-onlyIdempotent

Prepare a message draft for an imported chat from the supplied text.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
chatIdYes

TDQS

B3.1/5.0
Behavior3/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. The description adds only that input comes from 'supplied text' and targets an 'imported chat'; it never clarifies what 'prepare' does behaviorally (returns a draft object? validates text? nothing persisted?), which is the main ambiguity.

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?

One compact sentence with the action front-loaded and no filler. It is efficient, though its brevity is partly the source of the missing detail elsewhere.

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

Completeness2/5

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

There is no output schema, so the description should explain what a 'prepared' message draft is and what the caller receives; it does not. Combined with 0% parameter description coverage and no stated relationship to the imported-chat workflow, the definition leaves an agent guessing at both inputs and results.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate, and it only loosely does: 'from the supplied text' maps to the text parameter and 'for an imported chat' hints at chatId. It adds no format, identifier-shape, or length guidance beyond the raw schema constraints.

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 ('Prepare') and resource ('a message draft'), and scopes it to an imported chat, which separates it from siblings like prepare_purchase or import_records. It stops short of naming a sibling or defining what 'prepare' actually produces, so it is clear but not fully differentiated.

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

Usage Guidelines2/5

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

No guidance on when to call this versus alternatives (e.g. prepare_purchase, get_chat, list_chats) and no prerequisites such as the chat needing to be imported first. The agent must infer usage entirely from the name.

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

prepare_purchaseB
Read-onlyIdempotent

Prepare a purchase plan from imported products with subtotal and budget comparison.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYes
maxTotalIdrYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so safety and repeatability are covered without the description's help. The description does add that the tool performs a budget comparison, clarifying it is a pure calculation, but says nothing about whether a plan is persisted, what happens when the budget is exceeded, or error behavior.

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

Conciseness4/5

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

A single front-loaded sentence with no filler, stating the resource first and the compute behavior second. It is efficient, though the extreme terseness leaves useful detail (item shape, limits) unstated.

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

Completeness3/5

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

With no output schema, the description does describe the return concept (a plan with subtotal and budget comparison), which is a plus. But for a two-parameter computation taking a structured items array and a numeric budget, the definition remains thin on input semantics and on failure modes when the plan exceeds maxTotalIdr.

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

Parameters3/5

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

Schema description coverage is 0%, so the description carries the burden. It does map both parameters to meaning: 'subtotal' derives from the items list and 'budget comparison' corresponds to maxTotalIdr. However it omits item structure (productId/quantity), the 30-item cap, quantity bounds, and the currency unit implied by the param name.

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 concrete verb+resource ('prepare a purchase plan') plus the inputs it operates on ('imported products') and its computation ('subtotal and budget comparison'). This is enough to separate it from read-style siblings like list_orders or search_products, though it never names an alternative.

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

Usage Guidelines2/5

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

There is a faint usage cue in 'from imported products', hinting the input comes from a prior import step, but no explicit when-to-use, prerequisites, or named alternatives. The agent must infer when to pick this over prepare_message or list_orders.

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

record_historyC
Read-onlyIdempotent

Read local version history for an imported record.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
kindYes
limitNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description usefully reinforces this by saying the history is 'local', consistent with openWorldHint=false, but says nothing about ordering, pagination, or what a version entry contains.

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?

A single efficient sentence with the resource front-loaded and no filler. It is appropriately sized, though its brevity reflects under-specification rather than disciplined pruning.

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

Completeness2/5

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

With no output schema, 0% parameter description coverage, and three parameters, the description should explain what the returned version history looks like and how limit paginates it. Neither the return shape nor the parameter semantics are addressed, leaving an agent unable to predict the response.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the full burden for id, kind, and limit. It adds only the vague notion of an 'imported record' and never explains the kind enum values, the id format, or that limit caps returned history entries.

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 (read) and a specific resource (local version history) scoped to imported records, which distinguishes it from the sibling getters that return current state. It does not, however, explicitly name an alternative such as get_order, so differentiation is inferable rather than stated.

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

Usage Guidelines2/5

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

The phrase 'for an imported record' hints at a precondition, but there is no explicit when-to-use, when-not-to-use, or named alternative among siblings like get_order or status. An agent must infer that this tool is only for records already imported locally.

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

search_productsC
Read-onlyIdempotent

Search imported product snapshots.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
offsetNo

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds nothing beyond that: no mention of pagination behavior, result ordering, or what 'imported' implies about data freshness or scope.

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?

A single front-loaded sentence with no filler or repetition. It is efficiently written, though its brevity stems from under-specification rather than tight editing of richer content.

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

Completeness2/5

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

For a three-parameter, paginated search tool with no output schema and no parameter documentation, the description is too thin. It omits pagination semantics, result shape, and search scope, leaving the agent to infer behavior from the schema alone.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must carry parameter meaning, but it only weakly implies that 'query' is a search term. It says nothing about how limit/offset paginate, what query matches against, or the interaction between parameters.

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 (search) and resource (imported product snapshots), so an agent can tell it retrieves products matching a query. It does not explain what a 'snapshot' contains or how the search matches, but the core action is unambiguous and no sibling operates on products.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, no prerequisites, and no note about how it relates to the sibling list_* tools. The single sentence offers nothing about context or selection criteria.

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

statusB
Read-onlyIdempotent

Server mode and imported dataset statistics.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare the full safety profile (readOnly, idempotent, non-destructive, closed-world), so a 3 is appropriate. The description adds what the read actually surfaces (server mode plus imported dataset statistics), which is real context beyond the annotations, but it says nothing about freshness, format, or whether it is expensive to call.

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

Conciseness4/5

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

A single tight sentence with zero waste. It is front-loaded, though as a noun phrase rather than a statement of action it is slightly under-specified for an agent skimming tool lists.

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

Completeness3/5

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

For a zero-parameter read-only diagnostic this is nearly adequate, but with no output schema the description should enumerate the returnable fields (server mode values, what 'dataset statistics' contains). As written, the agent knows the topic but not the shape of the result.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline of 4 applies. No parameter semantics are needed or missing.

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

Purpose3/5

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

The description names the resource's content (server mode, imported dataset statistics) but is a verbless fragment with no action stated. It is distinguishable from the siblings (no other tool reports status), but an agent must infer that it reads and returns a status snapshot.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of alternatives. Usage is only implied by the generic name 'status'. Since no sibling overlaps in function, the risk is low, but the description does nothing to route the agent.

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. 12 tool updatesv0.1.0
    • First observedget_chat
    • First observedget_order
    • First observedimport_records
    • First observedlist_chats
    • First observedlist_orders
    • First observedlist_shipments
    • First observedlist_transactions
    • First observedprepare_message
    • First observedprepare_purchase
    • First observedrecord_history
    • First observedsearch_products
    • First observedstatus

TDQS

B3.2/5.0

Scored across 12 tools

Disambiguation4/5

Each tool targets a distinct entity+action: status, chat reads/drafts, order reads, shipment/transaction/chat/product searches, imports, history, and purchase planning. The only mild overlap is between the read/search verbs (list_* vs search_products vs get_*), but the underlying resources differ so misselection risk is low.

Naming Consistency4/5

Nearly all tools follow a verb_noun pattern (get_chat, list_orders, get_order, list_shipments, list_transactions, list_chats, search_products, prepare_message, prepare_purchase, import_records, record_history). The lone noun-only 'status' is a minor, readable deviation.

Tool Count5/5

12 tools is well-scoped for a personal data mirror with read, import, and prepare actions. Every tool maps to a distinct capability with no filler.

Completeness4/5

Reads and imports cover chats, orders, shipments, transactions, and products, plus draft/plan helpers and history. Minor gap: single-record getters exist only for chat and order, not for shipment/transaction/product snapshots, though list_* tools let agents work around this.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to search for products and manage order history on Tokopedia using the Model Context Protocol. It supports advanced filtering, sorting discovery, and authenticated session management via a dual MCP and web interface.
    3 npm
    1
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    Enables importing and querying historical Amazon consumer order data from multiple accounts, with tools for syncing orders, retrieving filtered order details, and managing account sessions.
    5
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    Provides read-only access to a user's AliExpress purchase history, including orders, products, price breakdowns, shipping, refunds, and spending summaries, with local caching.
    16 npm
    MIT