OZON MCP
OZON MCP
Ozon 셀러를 위한 오픈소스 MCP Server, 42개 섹션의 중국어 운영 지식 베이스와 466개의 API 메서드가 내장되어 있어 AI Agent가 운영 경험을 검색하고 Seller/Performance API를 호출하며 실제 비즈니스 작업을 실행할 수 있습니다.
목차
Related MCP server: wildberries-mcp
프로젝트 소개
OZON MCP는 Model Context Protocol 기반의 지식형 MCP Server입니다. Ozon Seller API와 Performance API의 전체 인터페이스 문서, 파라미터 Schema, 속도 제한 규칙 및 비즈니스 워크플로우를 표준화된 MCP 도구로 캡슐화하여 Claude, Cursor, Codex 등 AI Agent가 Ozon API를 직접 검색하고 이해하며 호출할 수 있게 합니다.
어떤 문제를 해결하나
Ozon 오픈 플랫폼에는 두 세트의 API(Seller + Performance)가 있으며 총 460개 이상의 인터페이스가 55개 비즈니스 모듈에 분산되어 있습니다. 문서를 수동으로 조회하고, 요청을 조합하며, 페이지네이션과 속도 제한을 처리하는 것은 매우 시간이 많이 걸립니다.
OZON MCP는 AI Agent를 여러분의 Ozon 운영 도우미로 만듭니다:
Agent는 중국어 또는 러시아어로 API 메서드를 검색하여 필요한 인터페이스를 찾을 수 있습니다
각 메서드는 완전히 파싱된 JSON Schema를 반환하며, 요청 파라미터, 응답 구조, 속도 제한 규칙 및 알려진 함정을 포함합니다
쓰기 작업 실행 시 다층 안전 가드가 있어 오작동을 방지합니다
자동 페이지네이션으로 대량 데이터를 순회할 수 있습니다
13개의 선별된 비즈니스 워크플로우가 내장되어 있어 품절 분석, 가격 진단, 쇼핑몰 건강 검진 등의 시나리오를 다룹니다
누가 사용하면 좋을까
AI로 일상 운영 분석을 보조하고 싶은 Ozon 셀러
Agent에 Ozon 기능을 통합해야 하는 크로스보더 전자상거래 도구 개발자
MCP 프로토콜에 관심이 있고 실제 적용 사례를 알고 싶은 개발자
핵심 기능
API 발견 및 탐색
도구 | 기능 |
| 모든 API 모듈(Seller + Performance) 나열, 각 모듈의 메서드 수 포함 |
| 전문 검색(BM25 정렬), 중러문 지원, 모듈/API/보안 등급별 필터 가능 |
| 단일 메서드의 전체 문서 조회: JSON Schema, 속도 제한, 알려진 문제, 예시, 연관 메서드 |
| 지정된 모듈의 모든 메서드 나열 |
비즈니스 워크플로우
13개의 선별된 워크플로우로 다음 비즈니스 카테고리를 다룹니다:
카테고리 | 예시 워크플로우 |
주문 | 주문 동기화, 배송 관리 |
재고 | 품절 위험 분석, 재고 회전율 진단 |
가격 | 가격 지수 분석, 경쟁사 가격 비교 |
분석 | 판매 보고서, 재무 데이터 집계 |
광고 | 광고 캠페인 데이터, 프로모션 효과 분석 |
상품 | 상품 정보 일괄 조회, 카테고리 트리 순회 |
각 워크플로우에는: 작업 단계 시퀀스, 페이지네이션/동시성 지침, 권장 데이터베이스 Schema, 알려진 함정 및 결과 해석 설명이 포함됩니다.
안전한 실행
도구 | 기능 |
| 단일 API 호출 실행, 3중 가드(보안 등급 / 구독 권한 / Schema 검증) |
| 자동 페이지네이션 순회, 4가지 페이지네이션 모드 지원(offset / cursor / last_id / page_number) |
참고 정보
도구 | 기능 |
| 메서드/모듈/전역 속도 제한 규칙 조회 |
| Ozon API 오류 코드 및 해결 방법 조회 |
| 메서드의 실제 요청 예시 조회 |
| 내장 API 문서 버전 및 업데이트 시간 확인 |
| 지정된 메서드와 연관된 다른 메서드 찾기 |
구독 권한
도구 | 기능 |
| 지정된 구독 등급에서만 사용할 수 있는 메서드 나열 |
| 현재 계정의 구독 등급 조회 |
참고: 현재 버전은 지식 서버입니다 — API 자격 증명을 구성하지 않아도 모든 발견, 검색, 참고 및 워크플로우 도구를 정상적으로 사용할 수 있습니다. 실제 API 호출을 실행해야 할 때만 자격 증명 구성이 필요합니다.
API 메서드 전체 보기
프로젝트에는 466개의 Ozon API 메서드에 대한 완전한 중국어 카탈로그(methods_catalog.md)가 내장되어 있으며, Ozon 셀러 비즈니스의 모든 영역을 다룹니다:
비즈니스 영역 | 포함 내용 |
상품 관리 | 상품 업로드 및 업데이트, 카테고리 속성, 이코노미 상품, 디지털 상품, 상품 가격 및 재고 |
주문 및 물류 | 주문 조회 및 취소, FBO/FBS/rFBS 배송, 패키지 추적, 반품 관리, 배송 지역 |
창고 및 공급 | FBS 창고 관리, FBO 공급 신청, FBP 직송/인계 지점/방문 수거 |
재무 및 보고 | 재무 보고서(판매 정산/비용/환불), 분석 보고서(트래픽/검색/전환), 셀러 평점 |
마케팅 및 가격 | 가격 전략, Ozon 플랫폼 활동, 셀러 자체 활동, 프로모션 및 홍보 |
고객 서비스 | 구매자 채팅, 리뷰 관리, Q&A 관리, 푸시 알림 |
계정 및 인증 | API 키 관리, 브랜드 인증, 품질 인증서, 셀러 백오피스 정보 |
Agent는 접속 후 중국어로 검색할 수 있으며(예: "주문 목록 조회", "재고 일괄 업데이트"), 카탈로그 카드 형식의 중국어 설명과 결합하여 올바른 API를 빠르게 찾아 호출을 실행할 수 있습니다. 각 메서드에는 HTTP 메서드, 인터페이스 경로, 보안 등급 및 구독 요구사항이 표시되어 있어, Agent는 이를 기반으로 쓰기 작업 확인이나 상위 구독 권한이 필요한지 직접 판단할 수 있습니다.
중국어 Ozon 운영 지식 베이스
프로젝트에는 완전한 중국어 Ozon 운영 지식 베이스가 내장되어 있으며, 42개 섹션의 Ozon 전자상거래 강좌를 기반으로 정리된 610개의 검색 가능한 지식 조각이 포함됩니다. Agent는 중국어 자연어로 검색하여 운영 경험, 작업 절차 및 함정 회피 가이드를 빠르게 찾을 수 있습니다.
지식 베이스 개요
항목 | 내용 |
강좌 수 | 42개 |
지식 조각 | 610개 |
언어 | 간체 중국어 |
출처 유형 | 강좌 운영 경험 |
검색 엔진 | 로컬 BM25 |
중국어 검색 | 바이그램/트라이그램 토큰화 + 비즈니스 용어 보호 |
데이터베이스 | 불필요 |
Embedding | 불필요 |
외부 서비스 | 불필요 |
다루는 주제
지식 베이스는 Ozon 셀러의 개점부터 사후 관리까지의 전체 프로세스를 다룹니다:
플랫폼 운영 모델(따라팔기, 정교한 운영, 대량 상품 등록, 드롭쉬핑)
FBS, FBO, FBP, rFBS 네 가지 이행 모드
쇼핑몰 등록 및 국제 운임 계산
창고 설정 및 물류 구성
상품 선정 방법 및 선정 풀 구축
상품 중량 및 크기 검증
셀러 백오피스 모듈 상세 설명
상품 카드 최적화 및 메인 이미지 제작
가격 전략 및 이익률 계산
프로모션 활동 및 광고 홍보
주문 발생 및 배송 프로세스
반품 처리 및 이상 주문
운영 리스크 및 쇼핑몰 폐쇄 방지
운영 지식 MCP 도구
도구 | 용도 | 주요 파라미터 |
| 운영 지식 베이스 검색 |
|
| 전체 지식 조각 읽기 |
|
| 강좌 목차 탐색 |
|
권장 호출 순서: 먼저 검색 → chunk_id 선택 → 전체 증거 읽기 → 답변 구성.
Agent 호출 흐름
graph TD
A[客户提问] --> B{运营知识问题?}
B -->|是| C[ozon_search_operations_knowledge]
B -->|API数据问题| F[ozon_search_methods]
C --> D[选择1-3个chunk_id]
D --> E[ozon_get_operations_knowledge]
E --> G{需要当前数据?}
F --> G
G -->|是| H[ozon_call_method / ozon_fetch_all]
G -->|否| I[组织回答]
H --> I
I --> J[标注来源与时效风险]호출 예시
"초보자는 먼저 따라팔기와 정교한 운영 중 무엇을 해야 하나요?"
Agent는 먼저 ozon_search_operations_knowledge({"query": "초보자 따라팔기 정교한 운영"})를 호출하여 관련 조각을 얻은 후 ozon_get_operations_knowledge를 호출하여 전체 증거를 읽고, 강좌 내용을 기반으로 두 모드의 장단점과 적용 조건을 답변합니다.
"물류 대행이 무엇인가요, rFBS 전체 배송 프로세스는 무엇인가요?"
Agent는 "물류 대행 rFBS 배송 프로세스"를 검색하여 lesson 01 관련 지식 조각을 얻은 후, 강좌 내용과 결합하여 물류 대행 개념과 rFBS의 주문 발생부터 수령까지의 전체 프로세스를 설명합니다.
"정교한 운영에서 차별화는 어떻게 해야 하나요?"
Agent는 "정교한 운영 차별화"를 검색하여 lesson 02에서 정교한 운영 상품 선정 차별화 전략의 전체 증거를 얻고, 상품 카드 최적화, 메인 이미지 차별화, 가격 전략 등의 차원을 포함하여 답변합니다.
"Ozon 창고와 물류는 어떻게 설정해야 하나요?"
Agent는 "창고 물류 설정"을 검색하여 lesson 06에서 창고 구성의 상세 단계와 주의사항을 얻습니다.
"상품 등록 전에 중량은 어떻게 확인해야 하나요?"
Agent는 "등록 전 중량 확인"을 검색하여 lesson 07에서 중량 검증의 작업 방법과 일반적인 함정을 얻습니다.
"상품 노출이 없으면 먼저 무엇을 확인해야 하나요?"
Agent는 "상품 노출 없음"을 검색하여 상품 카드, 가격, 검색 순위 등 관련 조각의 진단 방향을 얻습니다.
답변 경계
중요 안내:
강좌 지식은 운영 경험 요약으로, Ozon의 현재 공식 규칙과 동일하지 않습니다
수수료, 요율, 물류 기간, 판매 금지, 처벌, 광고 및 반품 정책은 수시로 변경될 수 있습니다
verification_required=true조각은 고객에게 현재 공식 자료를 재확인하도록 안내해야 합니다고객의 실제 쇼핑몰, 주문, 재고, 상품, 재무 또는 광고 데이터와 관련된 경우 실제 Ozon API를 호출해야 합니다
지식 베이스에 없는 내용은 지어내면 안 됩니다
지식 베이스 업데이트
향후 운영 지식을 업데이트할 때 다음 파일을 교체하세요:
src/ozon_mcp/operations_knowledge/data/manifest.yamlsrc/ozon_mcp/operations_knowledge/data/chunks.jsonlsrc/ozon_mcp/operations_knowledge/data/topics.jsonsrc/ozon_mcp/operations_knowledge/data/ozon_operations_knowledge.md
이후 검증을 실행하세요:
uv run python scripts/validate_operations_knowledge.py
uv run pytest사용 시나리오
시나리오 1: 배송 대기 주문 조회
"배송 대기 중인 모든 주문을 조회해줘"
Agent는 먼저 ozon_search_methods로 "order list" 또는 "주문 목록"을 검색하여 OrderAPI_GetOrderList를 찾은 후, ozon_describe_method로 파라미터 구조를 확인하고, 마지막으로 ozon_fetch_all로 페이지네이션하여 전체 주문을 가져옵니다.
시나리오 2: 품절 위험 확인
"품절 위험 분석 워크플로우를 실행해서 어떤 SKU가 품절될 수 있는지 확인해줘"
Agent는 ozon_get_workflow({"name": "oos_risk_analysis"})를 실행하고, 단계에 따라 AnalyticsAPI_StocksTurnover를 호출하며, 워크플로우에 내장된 해석 규칙에 따라 위험 SKU를 표시합니다.
시나리오 3: 쇼핑몰 건강 검진
"내 쇼핑몰 상태를 종합적으로 점검해줘"
Agent는 ozon_get_workflow({"name": "cabinet_health_check"})를 실행하고, 평점, 쇼핑몰 정보, 배송 기간 세 가지 인터페이스를 병렬로 호출하여 각 지표와 상태를 종합합니다.
시나리오 4: 상품 정보 일괄 내보내기
"판매 중인 모든 상품의 기본 정보를 가져와줘"
Agent는 ozon_fetch_all로 ProductAPI_GetProductList를 호출하고, last_id 페이지네이션을 자동으로 순회하여 전체 상품 목록을 반환합니다.
시나리오 5: 특정 API 사용법을 모를 때
"Ozon에 창고 재고를 조회하는 인터페이스가 있나요? 파라미터는 어떻게 입력하나요?"
Agent는 ozon_search_methods({"query": "warehouse stock"})로 해당 메서드를 찾은 후, ozon_describe_method로 전체 파라미터 Schema와 호출 예시를 얻고, 요청 파라미터 조합을 도와줍니다.
시스템 아키텍처
graph TD
A[MCP 客户端<br/>Claude / Cursor / Codex / Windsurf]
B[OZON MCP Server<br/>FastMCP stdio]
C[API 知识层<br/>Swagger + YAML]
K[运营知识层<br/>BM25 + 中文分词]
D[Seller API Client<br/>api-seller.ozon.ru]
E[Performance API Client<br/>api-performance.ozon.ru]
F[Ozon Seller API]
G[Ozon Performance API]
A -->|JSON-RPC over stdio| B
B --> C
B --> K
B --> D
B --> E
D -->|Client-Id + Api-Key| F
E -->|OAuth2 Bearer| G
subgraph 安全守卫
H[安全等级检查<br/>read/write/destructive]
I[订阅权限校验]
J[Schema 验证]
end
B --> H --> I --> J핵심 모듈 설명:
지식 계층: 시작 시 내장 Swagger 파일과 YAML 지식 베이스에서 466개 메서드의 전체 정의를 로드합니다
검색 인덱스: BM25 기반 전문 검색 엔진, 중러문 토큰화 및 필드 가중치 지원
메서드 그래프: 문서 링크와 워크플로우를 기반으로 자동 구축된 메서드 관계 네트워크
속도 제한 관리: per-API 단위의 속도 제한, 자동 대기열 및 백오프 재시도
안전 가드: 3중 검증 — 보안 등급(읽기 전용/쓰기/파괴적) → 구독 권한 → JSON Schema 검증
프로젝트 구조
ozon-mcp/
├── src/ozon_mcp/ # 核心代码
│ ├── __init__.py # 版本号
│ ├── __main__.py # CLI 入口,MCP stdio 启动
│ ├── config.py # 环境变量配置(SecretStr 保护凭据)
│ ├── server.py # FastMCP 服务器工厂
│ ├── state.py # 进程内缓存(订阅等级 TTL)
│ ├── errors.py # 统一错误模型
│ ├── data/ # Swagger API 文档
│ │ ├── seller_swagger.json # Seller API (420 方法)
│ │ ├── perf_swagger.json # Performance API (46 方法)
│ │ └── swagger_meta.json # 文档版本元数据
│ ├── knowledge/ # 精选知识库(YAML)
│ │ └── ... # 工作流、限流、错误码等
│ ├── operations_knowledge/ # 中文运营知识库
│ │ ├── models.py # 数据模型(Pydantic)
│ │ ├── loader.py # 加载与完整性校验
│ │ ├── tokenizer.py # 中文分词器
│ │ ├── search.py # BM25 检索引擎
│ │ └── data/ # 知识库数据
│ │ ├── manifest.yaml # 元数据
│ │ ├── chunks.jsonl # 610 个知识片段
│ │ ├── topics.json # 42 个课程主题
│ │ └── ozon_operations_knowledge.md # 原始知识文档
│ ├── schema/ # Schema 引擎
│ │ ├── extractor.py # OpenAPI → JSON Schema 提取
│ │ ├── search.py # BM25 全文搜索
│ │ ├── graph.py # 方法关系图 (networkx)
│ │ ├── catalog.py # 方法目录
│ │ └── resolver.py # $ref 内联解析
│ ├── tools/ # MCP 工具定义(15 个)
│ │ ├── discovery.py # 发现类工具 (4)
│ │ ├── execution.py # 执行类工具 (2)
│ │ ├── reference.py # 参考类工具 (4)
│ │ ├── workflow.py # 工作流工具 (2)
│ │ ├── subscription.py # 订阅工具 (2)
│ │ └── graph.py # 图谱工具 (1)
│ └── transport/ # HTTP 传输层
│ ├── seller.py # Seller API 客户端
│ ├── performance.py # Performance API 客户端
│ ├── oauth.py # OAuth2 Token 管理
│ ├── ratelimit.py # 速率限制
│ └── base.py # 基类(重试、错误映射)
├── tests/ # 测试
│ ├── unit/ # 单元测试 (25 文件)
│ ├── integration/ # 集成测试 (4 文件)
│ ├── golden/ # 回归测试 (3 文件)
│ └── live/ # 真实 API 烟雾测试 (需凭据)
├── scripts/ # 辅助脚本
│ ├── export_methods.py # 导出方法目录
│ └── generate_subscription_overrides.py # 生成订阅覆盖配置
├── Dockerfile # 多阶段 Docker 构建
├── pyproject.toml # 项目配置
├── uv.lock # 依赖锁定
└── glama.json # Glama MCP 注册환경 요구사항
항목 | 요구사항 |
운영 체제 | Windows / macOS / Linux |
Python | 3.12 또는 3.13 |
패키지 관리자 | |
Docker(선택) | 컨테이너화 배포용 |
Ozon 계정 | API 호출 실행 시에만 필요; 지식 검색은 자격 증명 불필요 |
Ozon API 권한
Seller API: Ozon 백오피스에서
Client-Id와Api-Key생성 필요Performance API:
Client ID와Client Secret신청 필요
빠른 시작
방법 1: uv 사용(권장)
# 克隆仓库
git clone https://github.com/yifan4243-sketch/OZON_MCP.git
cd OZON_MCP
# 安装依赖
uv sync
# 验证启动
uv run ozon-mcp --help도움말 정보가 표시되면 설치 성공입니다. 이제 MCP 클라이언트에 연결하여 사용할 수 있습니다(MCP 클라이언트 구성 참조).
방법 2: Docker 사용
# 构建镜像
docker build -t ozon-mcp:local .
# 启动(stdio 模式,需要凭据)
docker run -i \
-e OZON_CLIENT_ID=your_client_id \
-e OZON_API_KEY=your_api_key \
ozon-mcp:localDocker 이미지에는 자격 증명이 포함되어 있지 않으며, 반드시
-e또는--env-file로 전달해야 합니다.
환경 변수
변수명 | 필수 여부 | 용도 | 예시 |
| Seller API 호출 시 필수 | Seller API Client-Id |
|
| Seller API 호출 시 필수 | Seller API Api-Key |
|
| Performance API 호출 시 필수 | Performance OAuth Client ID |
|
| Performance API 호출 시 필수 | Performance OAuth Client Secret |
|
| 아니요 | 로그 레벨(기본값 |
|
모든 자격 증명은 pydantic.SecretStr로 보호되며, 실수로 출력되거나 로그에 기록되지 않습니다.
구성 예시는 .env.example을 참조하세요.
MCP 클라이언트 구성
OZON MCP는 MCP stdio 프로토콜을 사용합니다. 다음 구성은 다양한 MCP 클라이언트에 적용됩니다.
Claude Desktop
구성 파일 편집:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"ozon": {
"command": "uv",
"args": ["--directory", "D:/path/to/ozon-mcp", "run", "ozon-mcp"],
"env": {
"OZON_CLIENT_ID": "your_client_id",
"OZON_API_KEY": "your_api_key"
}
}
}
}Windows 경로는 슬래시 또는 이중 백슬래시를 사용합니다(예:
D:/ozon-mcp또는D:\\ozon-mcp).
Claude Code (CLI)
# 在项目目录下执行
claude mcp add ozon -- uv run ozon-mcp또는 ~/.claude/mcp.json을 수동으로 편집:
{
"mcpServers": {
"ozon": {
"command": "uv",
"args": ["--directory", "/path/to/ozon-mcp", "run", "ozon-mcp"],
"env": {
"OZON_CLIENT_ID": "your_client_id",
"OZON_API_KEY": "your_api_key"
}
}
}
}Cursor
Settings → MCP → Add new MCP Server, 또는 ~/.cursor/mcp.json 편집:
{
"mcpServers": {
"ozon": {
"command": "uv",
"args": ["--directory", "/path/to/ozon-mcp", "run", "ozon-mcp"],
"env": {
"OZON_CLIENT_ID": "your_client_id",
"OZON_API_KEY": "your_api_key"
}
}
}
}Codex
~/.codex/mcp.json 편집:
{
"mcpServers": {
"ozon": {
"command": "uv",
"args": ["--directory", "/path/to/ozon-mcp", "run", "ozon-mcp"],
"env": {
"OZON_CLIENT_ID": "your_client_id",
"OZON_API_KEY": "your_api_key"
}
}
}
}Windsurf
~/.codeium/windsurf/mcp_config.json 편집:
{
"mcpServers": {
"ozon": {
"command": "uv",
"args": ["--directory", "/path/to/ozon-mcp", "run", "ozon-mcp"],
"env": {
"OZON_CLIENT_ID": "your_client_id",
"OZON_API_KEY": "your_api_key"
}
}
}
}기타 MCP 클라이언트
MCP stdio 프로토콜을 지원하는 모든 클라이언트를 연결할 수 있습니다. 일반 구성:
command: uv
args: ["--directory", "/path/to/ozon-mcp", "run", "ozon-mcp"]
transport: stdio
env:
OZON_CLIENT_ID: your_client_id
OZON_API_KEY: your_api_key더 많은 클라이언트는 MCP 공식 클라이언트 목록을 참조하세요.
호출 예시
다음 예시는 AI Agent를 통해 OZON MCP를 사용하는 자연어 상호작용 방식을 보여줍니다.
조회 유형
사용자: Ozon Seller API에 어떤 모듈이 있는지 나열해줘
Agent가 ozon_list_sections를 호출하여 55개 모듈과 메서드 수를 반환합니다.
사용자: "주문"과 관련된 모든 인터페이스를 검색해줘
Agent가 ozon_search_methods({"query": "주문"})를 호출하여 일치 결과와 점수를 반환합니다.
사용자: OrderAPI_GetOrderList의 전체 문서를 확인해줘
Agent가 ozon_describe_method({"operation_id": "OrderAPI_GetOrderList"})를 호출하여 전체 JSON Schema, 속도 제한 규칙 및 호출 예시를 반환합니다.
분석 유형
사용자: 내 쇼핑몰의 전반적인 건강 상태를 분석해줘
Agent가 ozon_get_workflow({"name": "cabinet_health_check"})를 실행하여 워크플로우 단계를 얻은 후, 단계에 따라 평점, 쇼핑몰 정보 등의 인터페이스를 호출하여 분석 결과를 종합합니다.
사용자: 어떤 상품에 품절 위험이 있나요
Agent가 ozon_get_workflow({"name": "oos_risk_analysis"})를 실행하고, 재고 회전율 인터페이스를 호출하며, 워크플로우에 내장된 해석 규칙에 따라 DEFICIT 및 NO_SALES 상태의 SKU를 표시합니다.
일괄 유형
사용자: 판매 중인 모든 상품을 가져와줘
Agent가 ozon_fetch_all({"operation_id": "ProductAPI_GetProductList", "params": {"filter": {"visibility": "ALL"}}})를 호출하여 자동 페이지네이션 순회 후 전체 상품 목록을 반환합니다.
이상 원인 조사 유형
사용자: 상품 목록 인터페이스 호출 시 오류가 발생했는데 오류 코드가 429야
Agent가 ozon_get_error_catalog({"code": "429"})를 호출하여 속도 제한 오류의 설명과 해결 방법을 조회하고, 동시에 ozon_get_rate_limits({"operation_id": "ProductAPI_GetProductList"})로 해당 인터페이스의 구체적인 속도 제한 규칙을 확인합니다.
개발 및 테스트
개발 의존성 설치
uv sync --dev테스트 실행
# 运行所有测试(跳过需要真实 API 凭据的测试)
uv run pytest -m "not live"
# 包含覆盖率报告
uv run pytest -m "not live" --cov=src/ozon_mcp --cov-report=term코드 검사
# Ruff 格式检查
uv run ruff check src/ tests/
# MyPy 类型检查
uv run mypy src/ozon_mcp/로컬 서비스 시작
# 仅知识模式(无需凭据)
uv run ozon-mcp
# 带 Seller API 凭据
OZON_CLIENT_ID=xxx OZON_API_KEY=xxx uv run ozon-mcpDocker 빌드
docker build -t ozon-mcp:local .보안 설명
.env파일을 커밋하지 마세요. 모든 자격 증명은 환경 변수로 전달되며,.env는.gitignore에 추가되어 있습니다로그에 전체 자격 증명을 기록하지 마세요. 모든 자격 증명 필드는
SecretStr로 보호되며,repr()과print()는 실제 값을 노출하지 않습니다최소 권한 사용. MCP Server 전용 Ozon API 키를 별도로 생성하고 필요한 권한만 부여하는 것을 권장합니다
키를 정기적으로 교체. Ozon 백오피스에서 API Key를 정기적으로 업데이트하는 것을 권장합니다
쓰기 작업은 수동 확인 필요. 모든
write및destructive작업에는 추가 확인 파라미터가 필요합니다신뢰할 수 있는 환경에서 실행. 로컬 또는 신뢰할 수 있는 서버에서 실행하고 공개 네트워크에 노출하지 마세요
사용 전 플랫폼 규칙 확인. Ozon API의 속도 제한 규칙, 권한 요구사항 및 수수료 정책은 변경될 수 있습니다
자주 묻는 질문
MCP 클라이언트가 서비스를 찾지 못함
uv가 설치되어 있고 PATH에 있는지 확인하세요:
uv --versionuv 명령이 존재하지 않음
uv 설치:
# Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh환경 변수가 적용되지 않음
변수명이 OZON_ 접두사를 사용하고 올바르게 설정되었는지 확인하세요. 다음 명령으로 테스트할 수 있습니다:
OZON_LOG_LEVEL=DEBUG uv run ozon-mcp --helpOzon API가 401 또는 403 반환
OZON_CLIENT_ID와 OZON_API_KEY가 올바른지 확인하고, 키가 만료되지 않았는지 확인하세요.
요청 빈도 제한(429)
서버에 자동 재시도 및 백오프 메커니즘이 내장되어 있습니다. 429가 지속되면 동시 요청 빈도를 낮출 수 있습니다.
Docker 시작 실패
Docker가 설치되어 있고 빌드 명령이 프로젝트 루트 디렉터리에서 실행되는지 확인하세요:
docker build -t ozon-mcp:local .
docker run -i -e OZON_CLIENT_ID=xxx -e OZON_API_KEY=xxx ozon-mcp:localWindows 경로 문제
MCP 클라이언트 구성의 경로는 슬래시 또는 이중 백슬래시를 사용하세요:
"args": ["--directory", "D:/path/to/ozon-mcp", "run", "ozon-mcp"]다중 쇼핑몰 구성 방법
현재 버전은 하나의 MCP Server 프로세스가 하나의 Ozon 계정에 해당합니다. 다중 쇼핑몰 시나리오에서는 여러 Server 인스턴스를 시작하고 각각 다른 환경 변수를 구성해야 합니다.
운영 지식 베이스를 사용할 수 없음(knowledge_unavailable)
시작 시 운영 지식 베이스 로드에 실패하면(예: 데이터 파일 손상 또는 누락), 세 가지 운영 지식 도구는 여전히 존재하지만 호출 시 통일된 오류가 반환됩니다:
{
"error": "knowledge_unavailable",
"error_type": "knowledge_unavailable",
"message": "中文Ozon运营知识库当前不可用,请检查知识库资源是否完整并重新启动MCP Server。",
"component": "operations_knowledge",
"recovery_hint": "检查 src/ozon_mcp/operations_knowledge/data/ 下的 manifest.yaml、chunks.jsonl、topics.json 是否完整,然后重启 MCP Server。"
}반환 필드 설명:
필드 | 값 | 설명 |
|
| 기계가 판별 가능한 오류 코드 |
|
| 오류 유형 열거값 |
| 중국어 안내 | Agent를 위한 읽기 가능한 설명 |
|
| 장애 구성 요소 |
| 복구 안내 | Agent 또는 운영 담당자의 복구 작업 |
참고: 지식 베이스를 사용할 수 없어도 API 지식 계층 및 기타 도구는 정상적으로 작동하며, 운영 지식 검색 기능만 영향을 받습니다. 지식 베이스 파일을 복원한 후 재시작하면 자동으로 복구됩니다.
라이선스
이 프로젝트는 MIT License를 기반으로 한 오픈소스입니다.
면책 조항
이 프로젝트는 Ozon 공식 프로젝트가 아니며 Ozon 공식과 아무런 관련이 없습니다.
Ozon API의 인터페이스, 요청 제한 규칙, 수수료 정책 및 권한 요구 사항은 수시로 변경될 수 있습니다.
사용자는 Ozon 플랫폼 서비스 약관 및 적용 가능한 법률을 준수해야 합니다.
쓰기 작업 및 자금 작업과 관련된 경우 수동 검토 후 실행하는 것이 좋습니다.
이 프로젝트는 본 소프트웨어 사용으로 인해 발생하는 어떠한 손실에 대해서도 책임을 지지 않습니다.
Available Tools
15 toolsozon_describe_methodA
Get a complete description of one Ozon API method.
Returns the method's metadata plus fully-resolved JSON Schema for request and responses. All $ref pointers are inlined; oneOf/anyOf/allOf combinators are preserved verbatim. When knowledge layer is loaded, also includes rate_limit, quirks, examples, and related methods — everything an agent needs to call the method correctly.
Provide either operation_id (preferred) OR path (+ optional http_method).
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| http_method | No | ||
| operation_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, and it mostly delivers. It reveals that all $ref pointers are inlined, combinators are preserved verbatim, and the response conditionally includes rate_limit, quirks, examples, and related methods when the knowledge layer is loaded. It does not mention behavior for invalid, missing, or ambiguous input, but the main output characteristics 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?
The description is compact and front-loaded: purpose first, then key output behavior, then input instructions. Every sentence adds value, and there is no filler or repetition of schema field titles. The length is appropriate for the tool's complexity.
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 method-description tool, the description is largely complete: it covers what is returned, the conditional enrichment, and the parameter selection strategy. It could be stronger by noting error behavior or when to prefer sibling discovery tools, but the presence of an output schema reduces the need to explain return values in prose.
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%, so the description must compensate, and it does. It explains the relationship between path and http_method, identifies operation_id as the preferred alternative, and states that path can be optionally paired with http_method. It stops short of giving concrete formats or examples, but the core semantic distinction between the two lookup modes is present.
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: 'Get a complete description of one Ozon API method.' It goes beyond a generic statement by specifying the unique output traits—fully-resolved JSON Schema, inlined $ref pointers, preserved combinators—that distinguish this tool from sibling introspection tools. The scope ('one method') is explicit.
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 input-selection guidance ('Provide either operation_id (preferred) OR path (+ optional http_method)'), which helps the agent choose between parameter combinations. However, it does not explicitly explain when to use this tool versus siblings like ozon_search_methods or ozon_get_related_methods. The usage context is implied rather than stated with alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ozon_get_error_catalogA
Look up Ozon API errors and their solutions.
Without arguments returns all known errors. With code (e.g. "429" or "InvalidArgument") filters by code. With operation_id returns errors specific to that method plus all generic ones.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ||
| operation_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and it does disclose the key behavioral outcomes: return all errors, filter by code, or return method-specific plus generic errors. The main gap is how the tool behaves when both code and operation_id are supplied together, but core transparency is strong.
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 first sentence states the core purpose, followed by three terse, high-signal sentences covering each argument mode. There is no filler 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 simple lookup tool with two optional parameters and an output schema, the description covers the main behaviors and parameter meanings well. The only notable omission is the combined `code` + `operation_id` case, which is a minor completeness gap.
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%, and the description fully compensates: it explains what `code` does with examples and explains the meaningful behavior of `operation_id` (method-specific plus generic errors). Each parameter receives semantic context the schema lacks.
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 ('Look up') and resource ('Ozon API errors and their solutions'), and explicitly explains the three invocation modes (no arguments, by code, by operation_id). This makes the tool's purpose immediately distinguishable from siblings like rate limits, examples, or method descriptions.
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 by telling exactly what happens with no arguments, with a code, and with an operation_id. It does not explicitly discuss alternatives or when not to use the tool, so it stops short of the top score, but the run-mode guidance is concrete and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ozon_get_examplesB
Get hand-crafted request examples for one method.
Examples are real, validated payloads matching the method's request schema — copy them as starting points for your own calls.
| Name | Required | Description | Default |
|---|---|---|---|
| operation_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It adds value by stating the examples are 'real, validated payloads matching the method's request schema,' which is a meaningful guarantee. However, it doesn't disclose error behavior, whether multiple examples are returned, or any limitations.
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, front-loaded with the core purpose and a practical usage hint. There is no filler or repetition; every clause contributes meaningful information.
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 an output schema, the description conveys the purpose and the nature of the returned data. However, it omits how to discover a valid operation_id and offers no context about when this tool is the right choice, leaving an agent partially under-informed.
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%, so the description must compensate for the undocumented operation_id parameter. It only loosely ties the parameter to 'one method' and doesn't explain what the ID looks like or where to obtain it. This leaves a significant gap for an agent selecting a value.
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 ('Get') and a distinct resource ('hand-crafted request examples for one method'), making it clear that this tool returns example payloads rather than descriptions or schemas. It is distinguishable from sibling tools like describe_method or search_methods, though it does not explicitly name an alternative.
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 no guidance on when to choose this tool over siblings. The phrase 'copy them as starting points for your own calls' explains how to use the result, not when to invoke the tool. It also doesn't mention how to find a valid operation_id via related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ozon_get_operations_knowledgeA
根据chunk_id读取一个完整的Ozon运营知识片段。
应在 ozon_search_operations_knowledge 返回相关chunk_id后调用, 用于取得完整证据并组织客户答案。
Args: chunk_id: 知识片段ID,来自搜索结果的chunk_id字段
| Name | Required | Description | Default |
|---|---|---|---|
| chunk_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. The verb '读取' (read) makes the read-only nature clear, and the purpose (retrieve full evidence) is transparent. It does not mention edge cases like missing chunk_id, but for a simple retrieval operation this is a minor gap.
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 purpose, then gives usage context, then parameter details. Every sentence earns its place with no 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?
For a single-parameter retrieval tool with an output schema available, the description fully covers what the tool does, when to use it, and where the parameter comes from. 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?
The input schema provides only the type and name, and schema description coverage is 0%. The description compensates by explaining the source of chunk_id ('来自搜索结果的chunk_id字段'), which adds meaningful guidance beyond the 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 ('读取'/read) and resource ('完整的Ozon运营知识片段'/complete Ozon operations knowledge fragment), and clearly ties it to the search sibling. An agent can distinguish it from ozon_search_operations_knowledge and other getter 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 explicitly states when to use the tool: after ozon_search_operations_knowledge returns relevant chunk_id, and why: to obtain complete evidence and organize customer answers. This gives clear when-to-use guidance and implicitly defines the alternative search tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ozon_get_rate_limitsA
Look up rate limits for a method, section, or the whole API.
Without arguments returns all known limits. With operation_id, returns the most specific limit (per-method overrides per-section overrides global).
NOTE: Many limits in v0.2 are conservative guesses (source: 'guess'). Verify against real Ozon responses before relying on them in production.
| Name | Required | Description | Default |
|---|---|---|---|
| section | No | ||
| operation_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the read-only lookup behavior, the precedence behavior, and importantly warns that 'many limits in v0.2 are conservative guesses (source: 'guess')' and advises verification before production use. This is substantive behavioral context beyond the schema.
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 front-loaded with the core purpose. Every sentence earns its place: the first states what the tool does, the second explains argument behavior, and the note conveys an essential reliability caveat. No redundant 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 read-only lookup tool with two optional parameters and an output schema, the description covers the main usage modes and adds an important data-quality warning. It could more explicitly define what values 'section' expects and how to discover valid section identifiers, but sibling discovery tools likely cover that gap.
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%, so the description must compensate. It explains operation_id's meaning and precedence behavior clearly. The 'section' parameter is implied by 'a method, section, or the whole API' but not given a dedicated explanation; still, its purpose is reasonably inferable.
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 ('Look up') and clearly identifies the resource ('rate limits') and scope options ('a method, section, or the whole API'). This distinguishes it from sibling tools like ozon_describe_method or ozon_search_methods, which serve clearly different purposes.
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 concrete invocation guidance: 'Without arguments returns all known limits' and 'With operation_id, returns the most specific limit'. It explains the precedence rule per-method over per-section over global. It does not explicitly contrast with sibling tools, but the focused scope makes the usage context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ozon_get_sectionA
List all methods inside a section (by section name or tag).
Args: query: section name or tag, e.g. "FinanceAPI", "Финансовые отчёты", "ProductAPI"
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It conveys that the tool is a read-only lookup ('List') and explains how the query is interpreted (section name or tag), but it does not mention matching behavior, error cases, or other operational details. This is adequate for a simple lookup tool but not rich.
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 short, front-loaded with the core purpose, and includes a concise parameter explanation with examples. Every sentence adds value and there is no redundant 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, simple lookup tool with an output schema present, the description is complete enough. It tells the agent what the tool does, how the query parameter works, and what kind of answer to expect. No critical missing information prevents correct invocation.
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 only defines 'query' as a string with 0% coverage, so the description fully compensates by explaining that it accepts a section name or tag and providing concrete examples like 'FinanceAPI' and 'Финансовые отчёты'. This adds significant meaning beyond the 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 clearly states the tool's function: 'List all methods inside a section' with a specific resource and query input. It differentiates well from sibling tools like ozon_list_sections and ozon_describe_method by indicating that it returns methods within a section.
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 intended use case is clear: call this when you need all methods belonging to a section identified by name or tag. It does not explicitly state when not to use it or mention alternatives, but the context is unambiguous enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ozon_get_swagger_metaA
Return metadata about the bundled Ozon swagger snapshots.
Tells the caller which spec version we are shipping, how many methods it contains, when the snapshot was refreshed, and the SHA-256 of the file. Useful for:
agents that need to decide whether to re-check docs online;
operators validating that a refresh actually landed;
bug reports — include this in the issue so reproduction is exact.
Returns {"error": "missing"} when the package was built without
swagger_meta.json (pre-v0.6 snapshot).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the return contents (spec version, method count, refresh timestamp, SHA-256) and the error case ('{"error": "missing"}') with a version qualifier. It does not mention side effects or network behavior, but the tone and content make this a read-only metadata operation.
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 main purpose, followed by a tidy bullet list of use cases and a clear error note. Every sentence contributes information; the structure makes the content scannable without 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?
For a no-parameter tool with an output schema, the description provides all necessary context: what is returned, why it is useful, and what the failure mode looks like. Nothing an agent needs to invoke the tool correctly 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?
The tool has zero parameters, so the baseline is 4. There is nothing to explain about parameter semantics, and the description correctly focuses on the output. No parameter documentation is needed.
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 ('Return metadata') and a clear resource ('bundled Ozon swagger snapshots'), then lists the exact pieces of metadata delivered. It clearly distinguishes itself from sibling tools like ozon_search_methods or ozon_describe_method, which operate on API operations rather than the snapshot itself.
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 'Useful for' section gives concrete, actionable scenarios: deciding whether to re-check docs online, validating a refresh, and including in bug reports. It does not explicitly name alternative tools or state when not to use it, but the use cases are specific enough to guide selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ozon_get_workflowA
Get the full step-by-step plan for one workflow.
Returns ordered steps with operation_ids, pagination/batching/concurrency
guidance, recommended DB schema, and known gotchas. Analytical
workflows additionally carry interpret (how to read the data),
when_to_use (situations the workflow fits) and common_mistakes.
Args: name: workflow name from ozon_list_workflows, e.g. "sync_orders_fbs" or "oos_risk_analysis"
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it does well by describing the rich return behavior: ordered steps, operation_ids, pagination/batching/concurrency guidance, recommended DB schema, and known gotchas. It also discloses conditional content for analytical workflows. It does not explicitly state that the operation is read-only, but 'Get' and 'Returns' strongly imply a safe retrieval.
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-structured: a one-line primary purpose, a concise summary of return contents, and a focused Args section. No filler or repetition exists, and the most important action 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?
For a single-parameter retrieval tool with an output schema present, the description is complete enough. It identifies the prerequisite source for the argument, gives representative examples, and summarizes the return value. Agents can confidently select and invoke this tool without needing additional context.
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 provides only a bare 'name' string with no description, so 0% schema coverage. The description compensates fully by explaining that name is a workflow name from ozon_list_workflows and offering two realistic examples ('sync_orders_fbs', 'oos_risk_analysis'). This gives the agent the exact source and format of valid values.
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: 'Get the full step-by-step plan for one workflow.' It clearly differentiates from sibling tools like ozon_list_workflows because it targets a single workflow rather than listing all workflows, and it does not overlap with method-focused siblings like ozon_describe_method.
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 to use the tool: after obtaining a workflow name from ozon_list_workflows. It gives concrete examples of valid names. It does not explicitly state when NOT to use it or name alternatives, but the one-workflow scope and prerequisite are clear enough for an agent to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ozon_list_methods_for_subscriptionA
List all Ozon methods that mention a specific subscription tier.
Useful when an agent wants to know "what extra capabilities do I unlock by upgrading to Premium Plus?" or "which methods will fail without Premium?". Tiers are auto-extracted from method documentation, so this is a hint, not a contract — the actual hard 403 set may differ.
Args: tier: one of UNSPECIFIED, PREMIUM_LITE, PREMIUM, PREMIUM_PLUS, PREMIUM_PRO
| Name | Required | Description | Default |
|---|---|---|---|
| tier | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it handles this well by disclosing that tiers are auto-extracted from documentation, calling the result a 'hint, not a contract', and warning that the actual 403 set may differ. This is exactly the kind of behavioral nuance an agent needs to avoid over-trusting the output.
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 front-loaded: the first sentence states the core function, followed by practical use cases, a critical caveat, and parameter values. Each sentence earns its place; there is no filler or repetition of structured data.
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 an output schema present, the description covers purpose, when to use it, the main reliability caveat, and the complete set of valid parameter values. Nothing necessary for an agent to invoke it correctly 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 0%, so the description must compensate for the schema's bare string type. It does so by enumerating the valid tier values: UNSPECIFIED, PREMIUM_LITE, PREMIUM, PREMIUM_PLUS, and PREMIUM_PRO, and by tying them to subscription tiers in the usage examples. This adds real meaning beyond the input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'List all Ozon methods that mention a specific subscription tier.' It clearly differentiates from sibling tools like ozon_search_methods or ozon_get_related_methods by focusing on subscription-tier membership, and it reinforces this with concrete user questions.
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 when-to-use guidance through examples like 'what extra capabilities do I unlock by upgrading to Premium Plus?' and 'which methods will fail without Premium?'. It does not explicitly name alternative tools or state when not to use it, but the context is unambiguous enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ozon_list_operations_topicsA
列出中文Ozon运营知识库的课程目录和主题。
可按模块、课程标题或关键词筛选,用于了解知识库覆盖范围。
Args: query: 可选,按课程标题或关键词筛选 module: 可选,按模块筛选 limit: 返回数量(默认20) offset: 分页偏移(默认0) include_chunk_ids: 是否返回chunk_id列表(默认false,避免上下文过大)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| module | No | ||
| offset | No | ||
| include_chunk_ids | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses pagination via limit/offset and the side effect of include_chunk_ids (avoiding overly large context). Being a list operation, read-only behavior is reasonably inferable.
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 front-loaded: purpose first, then usage intent, followed by a clean Args block. Every sentence adds value, and there is no filler or duplication of schema-only information.
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?
All five optional parameters are semantically explained, the use case is clear, and an output schema exists so return-value documentation is unnecessary. The description is fully sufficient for an agent to call this 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?
The schema has 0% description coverage, but the description fully compensates by explaining query, module, limit, offset, and include_chunk_ids, including defaults and the rationale for the chunk ID flag.
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 a concrete resource: the Chinese Ozon operations knowledge base's course catalog and topics. It also states filtering capabilities, making its scope distinct from the search/retrieval 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?
It explicitly says the tool is for understanding knowledge base coverage, and lists the available filters. It does not explicitly name sibling alternatives or state when not to use it, but the intended context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ozon_list_sectionsA
List all Ozon API sections (Seller + Performance) with method counts.
Use this first to orient yourself in the API. Returns sections grouped by api ('seller' or 'performance'), each with the human-readable section name, the underlying tag, and the number of methods inside.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full disclosure burden. It clearly explains behavior: returns sections grouped by api, includes section name, tag, and method count, and covers both seller and performance APIs. It does not mention auth or side effects, but the listing nature and zero parameters make those less critical.
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: purpose, usage, and output structure. The primary action is front-loaded, and every sentence carries useful information without padding.
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 low complexity, zero parameters, and available output schema, the description is complete. It tells the agent when to use it, what it lists, and how the result is structured. Nothing important is missing for selecting and invoking it 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?
The tool has zero parameters, and schema coverage is 100%, so there are no parameter semantics to clarify. The description correctly adds no parameter-related confusion and earns the zero-parameter baseline of 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 and resource: 'List all Ozon API sections' with explicit scope ('Seller + Performance') and output ('method counts'). The description makes the tool's purpose immediately clear and distinct from focused sibling tools like ozon_get_section.
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 explicit entry-point guidance: 'Use this first to orient yourself in the API.' This tells the agent when to invoke the tool. It does not name exclusions or alternatives, but for a zero-parameter orientation tool this is sufficient context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ozon_list_workflowsA
List all curated workflows, optionally filtered by category.
Workflows are step-by-step recipes for chaining Ozon API methods into
real data pipelines or analytical reports. Use ozon_get_workflow
to fetch the full plan for a specific workflow.
Args:
category: optional filter — one of "catalog", "orders",
"analytics", "health", "pricing", "content", "advertising",
"warehouse", "returns", "finance". When provided, only
workflows in that category are returned. categories in
the response always lists every value present in the catalogue.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the read-only listing behavior, the optional category filter, and adds a useful nuance: 'categories in the response always lists every value present in the catalogue.' This goes beyond the bare operation and gives the agent a clearer model of the tool's behavior.
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 structured with a clear one-sentence purpose, a brief explanatory paragraph about workflows, a pointer to the sibling tool, and a structured Args section. The category list is somewhat long but necessary, and every sentence contributes a useful 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 simple list operation with one optional parameter and an existing output schema, the description is nearly complete. It covers purpose, filtering behavior, category values, and the sibling tool for deeper details. It doesn't explicitly mention the absence of required parameters or error handling, but 'optional' and the provided category list imply this well enough.
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%, so the description must fully explain the parameter. It does: category is described as optional, its allowed values are enumerated, and the filtering behavior is specified. This fully compensates for the missing 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 opens with a clear, specific statement: 'List all curated workflows, optionally filtered by category.' It identifies the resource (curated workflows) and the action (list), and distinguishes itself from the sibling ozon_get_workflow by explaining that the sibling fetches the full plan. This makes the tool's purpose unmistakable.
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 for when to use this tool ('List all curated workflows') and explicitly routes the agent to ozon_get_workflow when a full plan is needed. It does not explicitly discuss exclusions or when not to use it, but the sibling differentiation and category filter behavior provide adequate guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ozon_search_methodsA
Full-text search across all Ozon API methods.
Searches over operation_id, path, summary, description, section, and tag using BM25 ranking with field boosting (summary x4, path/op_id x3, description x1). Supports Russian and English queries with stemming.
Args: query: free-text query, e.g. "list of postings" or "финансовые транзакции" section: optional filter — match by section name or tag (case-insensitive substring) api: optional filter — "seller" or "performance" safety: optional filter — "read", "write", or "destructive" limit: max results to return (default 10)
| Name | Required | Description | Default |
|---|---|---|---|
| api | No | ||
| limit | No | ||
| query | Yes | ||
| safety | No | ||
| section | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the BM25 ranking algorithm, field boosting weights, Russian/English stemming support, and available filters. This goes well beyond a basic statement and gives an agent realistic expectations about search behavior.
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 and front-loaded: a clear one-line purpose, followed by relevant search behavior details, then a compact argument list. Every sentence contributes useful information with no repetition 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?
The description covers search semantics, all parameters, and filtering options. Since an output schema exists, not detailing the return format is acceptable. The main gap is the lack of explicit routing guidance relative to sibling search/knowledge tools, but overall it is close to complete for this tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description fully compensates. It explains query with examples, describes section, api, safety, and limit, and even specifies allowed values such as 'read', 'write', and 'destructive'. This adds significant meaning beyond the bare 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 immediately states a specific action — full-text search across all Ozon API methods — and identifies the exact searched fields (operation_id, path, summary, description, section, tag). This clearly distinguishes it from sibling tools like ozon_list_sections or ozon_describe_method.
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?
Usage is implied: use this tool when you need to find API methods by free-text query. However, it does not explicitly say when to prefer this over alternatives such as ozon_search_operations_knowledge or ozon_get_related_methods, nor does it state any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ozon_search_operations_knowledgeA
搜索中文Ozon运营知识库。
适用于经营模式、跟卖、精铺、选品、商品卡、定价、仓库、物流、货代、 促销、广告、履约、售后和风险问题。先搜索获取相关片段ID,再使用 ozon_get_operations_knowledge 读取完整证据。
Args: query: 搜索关键词(中文),例如"跟卖怎么选品""精铺差异化""货代发货流程" limit: 返回结果数量(默认5,最大10) module: 可选,按模块筛选 lesson_id: 可选,按课程ID筛选 verification_required: 可选,筛选需要时效复核的片段
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| module | No | ||
| lesson_id | No | ||
| verification_required | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses key behavior: this is a search step that returns fragment IDs, not full content, and that full evidence is obtained elsewhere. It could add more detail about output structure or edge cases, but the core behavioral contract is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately long but every section earns its place: purpose, domain keywords, workflow, and parameter details. The topic list is somewhat lengthy but adds useful selection context. The Args section is cleanly structured and 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 output schema exists and the tool is a straightforward search operation, the description is complete: it covers the required query, all optional filters, the workflow, and the relationship to the companion get tool. An agent has enough information to invoke this 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 0%, so the description is the only source of parameter meaning. It explains all five parameters: query with Chinese examples, limit with default and maximum, module filtering, lesson_id filtering, and verification_required for time-sensitive review. This fully compensates for the empty 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 states a specific verb and resource: '搜索中文Ozon运营知识库' (search the Chinese Ozon operations knowledge base). It lists concrete application domains and explicitly distinguishes itself from the sibling read tool by saying to search first for fragment IDs and then use ozon_get_operations_knowledge to read full evidence.
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 usage context by enumerating the applicable topics ('经营模式、跟卖、精铺...') and gives an explicit workflow: first search to obtain fragment IDs, then use ozon_get_operations_knowledge for full evidence. This effectively tells the agent when to use this tool and names the alternative.
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.
15 tool updates
v0.1.1- First observed
ozon_describe_method - First observed
ozon_get_error_catalog - First observed
ozon_get_examples - First observed
ozon_get_operations_knowledge - First observed
ozon_get_rate_limits - First observed
ozon_get_related_methods - First observed
ozon_get_section - First observed
ozon_get_swagger_meta - First observed
ozon_get_workflow - First observed
ozon_list_methods_for_subscription - First observed
ozon_list_operations_topics - First observed
ozon_list_sections - First observed
ozon_list_workflows - First observed
ozon_search_methods - First observed
ozon_search_operations_knowledge
TDQS
Scored across 15 tools
Each tool has a clear, distinct purpose: searching methods, describing a method, listing sections, retrieving workflows, rate limits, errors, examples, and separate Chinese knowledge base tools. No two tools overlap in functionality.
Most tools follow the 'ozon_verb_noun' pattern (e.g., search_methods, get_workflow), but a few are inconsistent: 'ozon_get_section' actually lists methods rather than retrieving a section, and 'describe_method' vs 'get_section' uses different verbs for similar retrieval actions. Overall still predictable.
15 tools is reasonable for an API exploration and knowledge base server. It covers a comprehensive set of actions without being excessive or sparse.
The server covers all major aspects of Ozon API exploration: sections, methods, workflows, limits, errors, examples, metadata, subscription details, and a Chinese operations knowledge base. No obvious missing functionality for its stated purpose.
Maintenance
Related MCP Connectors
Hosted Amazon Seller Central and Amazon Ads MCP server for Claude, ChatGPT, Cursor, and agents.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Discover and call 10,000+ production APIs from one MCP server. Pay-per-call billing for AI agents.
MCP server giving AI agents one-connection access to China A-share market intelligence: financials,
Related MCP Servers
- AlicenseAqualityDmaintenanceozon-mcp is a knowledge-rich MCP server that turns the entire Ozon seller toolkit into 15 high-leverage tools. AI agents (Claude, Cursor, Cline, Continue, Goose, Zed, …) can search the API in Russian or English, drill into any of 466 methods with a fully-resolved JSON Schema, and execute calls with built-in safety guards. Subscription- aware, automatic pagination over all 4 cursor styles, retry/ba1523MIT
- FlicenseNot gradedqualityDmaintenanceMCP server that turns Wildberries marketplace into a toolkit for LLM agents, enabling product search, detailed card inspection, price history, reviews, and cross-product comparison.-
- FlicenseNot gradedqualityDmaintenanceMCP server exposing 1688 and OZON e-commerce crawling tools, enabling AI agents to perform product search, image search, and supplier contact scraping via natural language.-
- AlicenseAqualityDmaintenanceMCP server for Ozon Seller API that enables AI clients to manage products, prices, stocks, orders, analytics, and finances on Ozon marketplace.2640 npm6-