Skip to main content
Glama

meta-search MCP

MCP Compatible Python MCP SDK

상품의 객관적 사양, 사용자 리뷰, 판매 정보를 통합하여 검색하고 비교하는 Model Context Protocol(MCP) 서버입니다.

meta-search는 상품의 사양뿐 아니라 실제 사용자가 느낀 특징과 판매 조건까지 함께 고려하여 AI 에이전트가 상품을 탐색하고 비교할 수 있도록 지원합니다.

수집된 상품 데이터는 로컬 SQLite 카탈로그에 저장되며, MCP를 지원하는 AI 클라이언트에서 자연어로 검색할 수 있습니다.

주요 기능

  • 통합 상품 검색: 객관적 사양, 체감 속성, 가격·배송·재고 조건을 결합해 상품을 검색하고 정렬합니다.

  • 리뷰 기반 분석: 사용자 리뷰에서 추출한 Opinion Unit을 활용하여 타건감, 소음 등 실제 사용 경험을 비교합니다.

  • 상품 비교: 여러 상품의 사양, 판매 정보, 리뷰 통계를 비교하고 주요 차이점을 요약합니다.

  • 근거 기반 검색: 실제 리뷰 발췌문과 통계 정보를 제공하며 조건에 부합하는 상품과 정보가 부족한 상품을 구분합니다.

  • 상품 자동 등록: URL을 입력하면 상품 정보와 리뷰, 판매 정보를 비동기로 수집하고 카탈로그에 등록합니다.

  • 로컬 데이터 검색: SQLite 기반으로 동작하며 데이터 정규화에 필요한 경우 외부 백엔드를 활용합니다.

Related MCP server: Universal Shopping Agent MCP Server

시작하기

요구 사항

  • Antigravty2, ChatGPT(codex), aside browser가 설치 및 인증되어 있어야 하며 각각 agy, codex, aside를 통해 호출할 수 있어야 합니다. 3가지 모두 반드시 유료 플랜을 구독하지 않아도 됩니다.

  • Python >= 3.11, SQLite >= 3.45를 요구합니다.

설치

프로젝트 루트에서 다음 명령어로 의존성을 설치합니다.

uv sync --python 3.11

별도 배포본(release/meta-search)을 사용하는 경우 설치 스크립트를 이용할 수 있습니다.

python3 install.py

설치 스크립트는 실행 환경과 의존성을 구성하며 기본적으로 Codex MCP 등록도 지원합니다.

MCP 클라이언트 설정

Claude Desktop 또는 Cursor 등에서 사용할 수 있는 stdio 설정 예시입니다.

{
  "mcpServers": {
    "meta-search": {
      "command": "/absolute/path/to/meta-search/.venv/bin/python",
      "args": ["-m", "meta_search.server"],
      "env": {
        "META_SEARCH_CONFIG": "/absolute/path/to/meta-search/config.toml"
      }
    }
  }
}

/absolute/path/to/meta-search를 실제 프로젝트 경로로 변경합니다.

클라이언트마다 설정 파일 위치와 구성 형식이 다를 수 있으며 VS Code 등 일부 클라이언트는 별도의 설정 형식을 사용합니다.

사용 예시

MCP 서버 연결 후 AI 에이전트에 자연어로 요청할 수 있습니다.

조건에 맞는 상품 검색

20만 원 이하이면서 무게가 900g 이하인 키보드를 찾아줘.

사용 경험 기반 추천

사용자 리뷰를 바탕으로 타건감이 좋고 소음이 적은 키보드를 추천해줘.

상품 비교

선택한 두 키보드의 주요 사양과 가격, 실제 사용자들의 타건감 평가를 비교해줘.

신규 상품 등록

이 상품을 카탈로그에 등록해줘: https://example.com/product

상품 등록은 명시적인 요청이 있을 때 수행하며, 등록 요청 후 반환되는 작업 ID로 진행 상태를 확인할 수 있습니다.

제공 도구

meta-search는 총 11개의 MCP 도구를 제공합니다.

도구

설명

get_search_guide

검색 가능한 카테고리와 속성, 필터 확인

search_products

사양·체감·판매 조건을 결합한 상품 검색

compare_products

여러 상품의 주요 차이점 비교

get_product_details

상품의 상세 사양 및 정보 조회

search_product_docs

상품 상세 설명 내 키워드 검색

find_review_attributes

리뷰에서 추출한 체감 속성 탐색

list_review_states

체감 속성별 상태 및 표현 조회

get_review_evidence

실제 사용자 리뷰 근거 조회

get_offers

판매처별 가격·배송·재고 정보 조회

register_product

신규 상품 URL 등록 및 수집 요청

get_registration_status

상품 등록 작업의 진행 상태 확인

11개 도구 중 register_product를 제외한 10개는 조회 전용입니다.

체감 속성 검색은 find_review_attributes와 list_review_states에서 유효한 속성과 상태를 확인한 뒤 search_products에 검색 조건을 전달하는 방식으로 동작합니다.

데이터 처리 구조

meta-search는 다음 세 종류의 데이터를 통합합니다.

데이터

주요 내용

Objective

제품 사양 및 카테고리별 핵심 속성

Experience

사용자 리뷰에서 추출한 체감 속성과 평가

Sales

판매처별 가격, 배송 및 재고 정보

신규 상품 등록 과정에서는 agy와 aside를 활용하여 웹 페이지와 리뷰를 수집하고 Codex로 객관 속성과 Opinion Unit을 추출합니다.

체감 속성의 정규화는 로컬 Exact-Match를 기본으로 사용하며 필요시 AWS Lambda 기반 KR-SBERT 군집화를 통해 유사한 표현을 통합합니다.

검색 단계에서는 확인되지 않은 정보를 임의로 충족 또는 불충족으로 판단하지 않고 별도의 판정 불가 결과로 구분합니다.

신규 상품 등록 및 수집 로직

register_product tool을 통해 신규 상품을 등록하거나 수집할 때 수행되는 핵심 로직입니다. 전체 로직은 register_product_flow.mmd에서 확인하실 수 있습니다.

%%{init: {"themeCSS": ".nodeLabel, .nodeLabel p { line-height: 1.6 !important; }"}}%%
flowchart LR
    S1["Stage 1 · 페이지 및 리뷰 수집<br/>agy + aside MCP<br/>상품 URL 접속 및 정보·리뷰 수집"]

    S2["Stage 2<br/>3개 파이프라인<br/>병렬 실행"]

    subgraph A["Stage 2A · 객관 속성 정규화"]
        direction LR
        A1["기존 core 속성 중<br/>누락 항목 확인"]
        A2["기존 상품 + 신규 상품<br/>정규화 입력 생성"]
        A3["agy<br/>core/extra 승격·강등 판단 및 적용"]
        A1 --> A2 --> A3
    end

    subgraph B["Stage 2B · 체감 속성 추출 및 정규화"]
        direction LR
        B1["codex<br/>리뷰별 Opinion Units 추출"]
        B2["KR-SBERT<br/>체감 속성 표현 텍스트 임베딩"]
        B3["계층적 군집화<br/>체감 속성 정규화"]
        B1 --> B2 --> B3
    end

    subgraph C["Stage 2C · 판매 속성 추가 조사"]
        direction LR
        C1["agy<br/>동일 상품 판매처 웹 조사"]
    end

    S3[("Stage 3 · SQLite DB<br/>수집 데이터 저장 및 갱신")]

    S4["Stage 4 · 등록 완료<br/>검색 가능 상태로 전환<br/>macOS 알림 전송"]

    S1 --> S2

    S2 --> A1
    S2 --> B1
    S2 --> C1

    A3 --> S3
    B3 --> S3
    C1 --> S3

    S3 --> S4

설정

주요 실행 설정은 config.toml에서 관리합니다.

설정

용도

META_SEARCH_CONFIG

설정 파일 경로 지정

META_SEARCH_CLUSTER_TOKEN

AWS Lambda 원격 정규화 인증

config.toml

데이터 경로, 수집 한도, CLI 및 정규화 설정

원격 정규화 토큰은 필요한 경우에만 사용되며 환경 변수 또는 별도 토큰 파일로 관리할 수 있습니다. 원격 정규화 토큰은 AWS 관리자가 명시적으로 부여하며 자동으로 발급되지 않습니다.

[!warning] 본 MCP는 정식 배포 용도가 아닙니다. 본 MCP는 가까운 지인들과 함께 사용할 목적으로 만들어진 MCP입니다. 이에 따라 원격 정규화 토큰은 허용된 인원만 제한적으로 사용할 수 있습니다. 다만 원격 정규화는 속성 갱신에만 사용되므로 상품 검색 기능을 사용하는 데는 문제가 없으며 서버를 비롯한 모든 코드가 공개되어 있어 git clone을 통해 직접 사용할 수 있습니다.

라이선스

프로젝트 코드는 GNU GPL 3.0을 따릅니다. 외부 데이터셋과 모델의 이용 조건은 각 원본 제공처의 조건을 따릅니다.

Available Tools

11 tools
compare_productsB
Read-only

같은 카테고리의 2~5개 상품을 객관 속성·판매 요약·체감 토픽으로 비교한다.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idsYes
attribute_keysNo
experience_topicsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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, destructiveHint=false, and openWorldHint=false, covering the safety profile. The description adds the comparison dimensions (objective attributes, sales summary, experiential topics), which is useful context beyond annotations. However, it does not disclose any additional behavioral traits such as auth requirements, rate limits, or data freshness.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no redundant or filler text. It efficiently communicates the core action, scope, and comparison dimensions.

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

Completeness3/5

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

An output schema exists, so the description need not explain return values, and annotations cover the safety profile. However, with 0% parameter description coverage and no usage guidance, the description leaves significant gaps for an agent to correctly invoke the tool, especially regarding the nested experience_topics parameter and attribute_keys format.

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 input schema provides no semantic descriptions for any of the three parameters. The description mentions '2~5개 상품' (mapping to product_ids min/max) and the three comparison aspects (loosely mapping to attribute_keys and experience_topics), but it does not explain what attribute_keys expects, what the nested ExperienceTopic fields mean, or how sales summary is controlled. This is insufficient to compensate for the complete lack of schema documentation.

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 '비교한다' (compare), resource '상품' (products), and scope '같은 카테고리의 2~5개' (same category, 2-5). It also names three comparison dimensions: objective attributes, sales summary, and experiential topics. This differentiates it from search_products and get_product_details implicitly, though no sibling is named explicitly.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus alternatives like get_product_details or search_products, nor any prerequisites, exclusions, or when-not conditions. The constraints (same category, 2-5 products) give minimal context but do not rise to clear usage guidance.

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

find_review_attributesC
Read-only

리뷰 속성 표현을 문자 검색한다. matched_selector와 cluster_selector를 보고 범위를 직접 선택한다.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
offsetNo
categoryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, openWorldHint=false, destructiveHint=false, so the safety profile is covered. The description adds almost nothing beyond that: it does not explain pagination behavior despite limit/offset, nor what the referenced selectors mean. The mention of selector output fields is the only behavioral hint, and it is unexplained.

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?

Two short sentences that are front-loaded and waste no words structurally. But the second sentence is jargon-laden and references undefined fields, so brevity comes at the cost of actual information.

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

Completeness2/5

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

An output schema exists, so return values need not be explained. Still, for a search tool with four fully undocumented parameters and mandatory result pagination, the description leaves too much unspecified, and its dangling selector terminology creates confusion rather than completeness.

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%: limit, query, offset, and category carry only titles and constraints, with no meaning documented anywhere. The description only implies text search (suggesting 'query') and says nothing about limit, offset, or the category filter, and its selector references do not map to any parameter. It fails to compensate for the coverage gap.

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 first sentence gives a specific verb and resource ('text-searches review attribute expressions'), which is reasonably distinguishable from siblings like list_review_states and get_review_evidence. However, the second sentence introduces 'matched_selector' and 'cluster_selector', terms that appear nowhere in the input schema, muddying rather than sharpening what the tool actually does. Core purpose is legible but the scope statement is opaque.

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?

'Look at matched_selector and cluster_selector and choose the scope yourself' gestures at a decision but names no alternative tool and gives no condition for when to use this versus get_review_evidence or list_review_states. The instruction is cryptic and does not tell an agent when this tool is the right choice.

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

get_offersB
Read-only

판매처별 가격·배송·재고·확인 시각을 반환한다. 판매 정보는 확인 시점의 스냅샷이다.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idsYes
availabilityNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare this a safe read (readOnlyHint=true, destructiveHint=false), lowering the bar. The description does add a genuinely useful, non-obvious trait: the offer data is a snapshot as of the check time. However it says nothing about rate limits, batch size limits, or behavior on invalid product IDs, so it is context, not rich behavioral disclosure.

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

Conciseness5/5

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

Two short sentences, front-loaded with the return payload and followed by the one caveat that matters (snapshot semantics). Nothing is wasted or buried.

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

Completeness3/5

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

An output schema exists, so return-value structure need not be restated, and annotations cover the safety profile. The remaining gap is parameter behavior — especially that availability filters results — plus batching or error semantics, none of which the description supplies.

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 two parameters and fails to address either. Critically, the availability filter (a supported-value enum subset) is never mentioned, and product_ids semantics (list input, batching, limits) are left entirely unexplained.

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 (반환한다/returns) and a specific resource scope (판매처별 offers with price, shipping, stock, check time), which lets an agent distinguish it from search_products or compare_products. It never explicitly names or excludes a sibling, so it stops short of a 5.

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

Usage 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 such as compare_products for comparison workflows. Usage can only be inferred from the returned field list.

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

get_product_detailsC
Read-only

상품의 전체 객관 속성·상세 Markdown·판매처·주요 리뷰 속성을 반환한다.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYes
experience_topicsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds a useful inventory of what is returned, but says nothing about the effect or role of experience_topics, pagination, or why certain data may be absent.

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 that enumerates the return contents with no filler. Efficient, though its brevity is achieved partly by omitting information the complex parameter schema needs.

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?

An output schema exists, so explaining return values is not strictly required. However, for a tool with an undocumented nested parameter and 0% schema coverage, the description leaves the agent without the semantics needed to construct experience_topics correctly.

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 schema defines a non-trivial nested experience_topics object (topic_id, aspect_variant_ids, desired/contrary state variants) that the description never mentions. Only product_id is implicitly inferable from context, so the description does not compensate for the coverage gap.

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 (반환한다 / returns) and resource (상품 / product) and enumerates the returned content: objective attributes, detail Markdown, sellers, and key review attributes. This clearly separates it from search-oriented siblings like search_products, though it never explicitly names the distinction.

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 or prerequisites are given. It does not say when to reach for this instead of siblings such as search_products, get_offers, or find_review_attributes, which heavily overlap the seller and review content mentioned here.

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

get_registration_statusA
Read-only

등록 작업 하나 또는 최근 10개 작업의 단계·경고·실패 원인을 조회한다.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the bar is lower. The description still adds real behavior beyond them: an implicit cap of 10 results when no id is supplied, and the fact that warnings and failure causes are surfaced rather than just a status code. Auth and pagination behavior remain unstated.

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 dense sentence that front-loads the scope (one job vs. recent 10) and then the returned content, with no filler or redundancy. Every clause carries information an agent needs.

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

Completeness4/5

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

Given an output schema exists, return values need not be detailed, and the annotations cover the safety profile. For a one-optional-param read tool the description is essentially complete, though it omits how job_id is produced and any polling guidance that would make the workflow self-contained.

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

Parameters4/5

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

Schema description coverage is 0% for the single job_id property, so the description must carry the load, and it does: job_id selects one job and its absence switches to the 10-recent-jobs mode. It does not state the id's format or where an agent obtains it (presumably from register_product), which keeps it from a 5.

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

Purpose4/5

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

States a specific verb and resource ('조회한다' + '등록 작업') plus the return content (단계·경고·실패 원인) and the two operating modes (single job vs. recent 10). An agent can distinguish it from the sibling register_product, which performs the registration rather than reporting on one. It stops short of naming a sibling explicitly, which is what a 5 would require.

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

Usage Guidelines4/5

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

The conditional '하나 또는 최근 10개' conveys clear usage context: pass job_id for a specific job, omit it for a recent-jobs overview. There is no explicit statement of when this tool should be reached for (e.g., polling after register_product) and no exclusion/alternative routing, so it falls short of a 5.

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

get_review_evidenceC
Read-only

일치·상반·기타·상태 미기재 리뷰의 원문 근거를 확인한다. 한 리뷰에 여러 라벨을 허용한다.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupNoall
limitNo
offsetNo
sentimentsNo
product_idsNo
aspect_variant_idsYes
include_full_reviewNo
desired_state_variant_idsNo
contrary_state_variant_idsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds one useful behavioral fact — that a single review can carry multiple labels — but says nothing about pagination, result volume, or how the many filters interact. With annotations carrying the read safety profile, a 3 is appropriate.

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

Conciseness4/5

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

Two short sentences, front-loaded with the scope before the multi-label caveat, with no filler. It is efficient, though the brevity is partly under-specification rather than true density.

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?

An output schema exists, so return values need not be described. But for a 9-parameter, filter-heavy retrieval tool with 0% schema coverage and no usage guidance, the description leaves the agent without enough to select filters or understand the paging model.

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 9 parameters. The description's enumeration of label groups loosely maps to the group enum, but it never explains aspect_variant_ids (the required param), include_full_review, desired_state_variant_ids, contrary_state_variant_ids, or the paging/filter params. The description fails to compensate for the near-total schema gap.

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 (리뷰의 원문 근거 = review source-text evidence) and enumerates the label categories it covers (matching/contrary/other/state-unstated), which maps cleanly to the group enum. However, the verb 확인한다 ('check/verify') is vague — it does not make clear that this retrieves evidence text rather than validating it, and nothing distinguishes it from siblings like find_review_attributes or list_review_states.

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 alternative tools. The reader is told what the tool covers but not under which circumstances to call it versus the many sibling review/attribute tools.

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

get_search_guideB
Read-only

카테고리·동적 필터 키/연산자·관측값과 답변 정책을 확인한다.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds the content scope (what the guide contains) but no further behavioral details such as size, caching, or whether the guide changes over time.

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 front-loads the returned content with no filler. It is appropriately sized for a simple reference tool, though the middle-dot list is slightly dense.

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

Completeness3/5

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

An output schema exists, so return values need not be explained. Still, for an agent to call this correctly, the description should indicate when to use it relative to the many search-related siblings and what the category parameter does; both are missing.

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% for the single optional category parameter. The description mentions '카테고리' only as one of the guide's content areas, not as an input that filters the response, so it fails to compensate for the undocumented parameter.

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 names the specific content the guide returns—categories, dynamic filter keys/operators, observed values, and answer policy—which distinguishes it from the search/compare siblings that operate on products. However, it does not explicitly contrast with documentation-oriented siblings like get_product_docs or search_product_docs, so sibling differentiation is implied rather than stated.

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

Usage Guidelines2/5

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

No when-to-use guidance or alternatives are provided. It never states that this should be called before search_products to learn filter syntax, nor does it mention any prerequisites or exclusions.

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

list_review_statesC
Read-only

선택한 원래 aspect 표현의 상태 ID·리뷰 수·감성 분포·예시를 조회한다.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
offsetNo
product_idsNo
aspect_variant_idsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds no behavioral context of its own — nothing about pagination semantics, result limits, or interaction with the limit/offset parameters. Its content restates return values, which the output schema already carries, so it contributes little beyond the annotations.

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

Conciseness3/5

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

It is a single compact sentence with no wasted phrasing, which is good structure. But the brevity is under-specification rather than discipline — nothing is front-loaded because nothing beyond the bare purpose is provided.

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, zero-schema-coverage tool, the description is far too thin: it omits parameter meanings, filtering behavior, and any usage routing. The existence of an output schema excuses it from explaining return values, yet it spends its only sentence on return contents anyway, leaving the caller-facing gaps unfilled.

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 must carry the burden and it does not. It only loosely implies that aspect_variant_ids selects the 'original aspect expressions' being queried, leaving query, product_ids, limit, and offset entirely unexplained in both schema and 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 names a clear verb (조회한다/retrieve) and resource (the state of selected original aspect expressions), and it enumerates the returned contents: status ID, review count, sentiment distribution, and examples. That is specific enough for an agent to know what the tool returns. It does not, however, distinguish this from siblings like find_review_attributes or get_review_evidence, which all operate in the same review-aspect space.

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 stated alternatives, and no exclusions or prerequisites. The reader cannot tell from the text whether this is the right tool versus find_review_attributes or get_review_evidence. Only the required aspect_variant_ids hints at any precondition.

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

register_productB

사용자가 상품 링크와 함께 등록을 명시적으로 요청했을 때만 호출한다. 호출 후 결과를 기다리지 말고 대화를 마친다. 완료되면 macOS 알림이 표시된다.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
category_hintNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare this is a non-read-only, open-world, non-destructive operation, but the description adds genuinely new behavior: the call is fire-and-forget (don't await the result), the conversation should end, and a macOS notification fires on completion. That async, side-effecting behavior is exactly what an agent needs and is not derivable from the annotations.

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

Conciseness4/5

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

Three short sentences with the critical invocation constraint front-loaded. Every sentence carries information; only the notification detail borders on trivia, but it supports the fire-and-forget behavior.

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

Completeness3/5

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

An output schema exists so return values need no explanation, and the async behavior is covered. However, for a 2-param write tool it says nothing about parameter meaning and never points to get_registration_status for tracking the async result, leaving a real gap.

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

Parameters2/5

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

Schema description coverage is 0% and the description mentions neither 'url' nor 'category_hint'. With two parameters (one required, one optional with a default) completely undocumented, the description fails to compensate for the schema gap.

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 the verb '등록' (register) and ties it to a product link, but it largely restates the tool name and never explains what registration actually does (persist a product into tracking, etc.). It offers no differentiation from siblings like get_registration_status or get_product_details, so an 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 Guidelines4/5

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

Explicit invocation condition: call only when the user explicitly requests registration with a product link, and after calling do not wait for the result but end the conversation. This is strong when-to-use guidance, though it names no alternatives (e.g., the status-check sibling) for follow-up.

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

search_product_docsC
Read-only

상세 문서에서 공백/쉼표로 나눈 키워드가 있는 줄과 가장 가까운 앞 제목을 찾는다.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
categoryNo
max_resultsNo
product_idsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds real value by disclosing the matching semantics (keywords split on whitespace/commas, line-level match, nearest preceding heading returned), which is non-obvious behavior. It does not cover rate limits, pagination, or what happens with multiple matches.

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 efficient, though the terse phrasing packs matching mechanics and return behavior into one clause without structure, and the essential usage routing is absent entirely.

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?

An output schema exists, so return formatting need not be described, and annotations cover safety. But with four parameters at 0% schema coverage and no usage guidance, the definition is incomplete: the agent cannot tell how category or product_ids scope the search or when to prefer this over search_products.

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 four parameters, so the description carries the full burden. It partially compensates by explaining that query is split on spaces/commas into keywords, but category, max_results (default 15, max 50) and product_ids receive no explanation at all, leaving three of four parameters semantically opaque.

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

Purpose4/5

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

The description states a concrete retrieval behavior: it finds lines in the detailed document containing keywords split on spaces/commas and returns the nearest preceding heading. That is a specific verb+resource, but it never distinguishes this from siblings like search_products or get_search_guide, leaving the 'docs vs products vs guide' boundary implicit.

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 the sibling get_search_guide (which is plausibly the entry point for this search flow), and no exclusions. The agent must infer from the name alone whether this or search_products is the right tool.

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

search_productsC
Read-only

전체 조건을 받아 객관·판매·리뷰로 필터하고 정렬한다. applied_filters_markdown을 답변 앞에 그대로 표시한다.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNo
limitNo
filtersNo
categoryNo
offer_filterNo
user_requestNo
evidence_topicsNo
interpretation_notesNo
experience_conditionsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description does add a non-obvious behavioral requirement: 'applied_filters_markdown' must be shown verbatim ahead of the answer. That is real added context, but nothing is said about how filters interact or what happens when conditions conflict.

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

Conciseness4/5

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

Two short sentences: the operational purpose is front-loaded and the display instruction follows. Every clause carries information and there is no padding, though the brevity comes at the cost of the missing detail noted 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?

For a 9-parameter tool with deeply nested filter objects and no parameter descriptions, the description is far too thin; it does not explain how the filter/sort structures relate to the three stated dimensions. The existence of an output schema excuses it from describing return values, but the input side remains largely opaque.

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 9 parameters, several of which are complex nested objects (SortSpec, OfferFilter, ObjectiveFilter, ExperienceTopic, ExperienceCondition). The phrase '객관·판매·리뷰' loosely hints at the three filter families but leaves sort, limit, category, user_request, and interpretation_notes completely unexplained. The description fails to compensate for the coverage gap.

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 action (filter and sort) over a meaningful scope ('전체 조건을 받아' – accepting all conditions) broken into three dimensions: objective, sales, and review. This is more than a restatement of the name. However, it never names the sibling tools it must be distinguished from (e.g., compare_products, get_product_details), so an agent must infer the boundary itself.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus search_product_docs, compare_products, or get_product_details, and no prerequisites or exclusions. The only directional cue is an output-formatting instruction, not selection guidance. An agent gets no routing help.

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. 11 tool updatesv0.1.0
    • First observedcompare_products
    • First observedfind_review_attributes
    • First observedget_offers
    • First observedget_product_details
    • First observedget_registration_status
    • First observedget_review_evidence
    • First observedget_search_guide
    • First observedlist_review_states
    • First observedregister_product
    • First observedsearch_product_docs
    • First observedsearch_products

TDQS

B3.3/5.0

Scored across 11 tools

Disambiguation4/5

Most tools target distinct actions (search, compare, details, offers, registration status). The review trio (find_review_attributes, list_review_states, get_review_evidence) forms a staged pipeline that could momentarily confuse an agent, and search_product_docs vs get_product_details overlap in the 'product content' space, but descriptions clarify their roles.

Naming Consistency5/5

All names follow a consistent snake_case verb_noun pattern (get_, search_, compare_, find_, list_, register_). Verbs are used predictably for their action class with no style mixing.

Tool Count5/5

11 tools sit squarely in the ideal 3-15 range. Each tool maps to a distinct step in the search/compare/review/registration workflow, so no tool feels redundant or missing.

Completeness4/5

The surface covers the full lifecycle: guidance, search, compare, details, docs lookup, review analysis (attributes/states/evidence), offers, and registration with status. Minor gaps like search pagination or explicit seller comparison are absent but not blocking.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers