Production-grade MCP gateway for the Kwork freelance marketplace
Strong schema definitions with proper JSON Schema validation, clear parameter constraints (min/max, patterns, enums), and comprehensive descriptions in Russian. All 12 tools have explicit input schemas and descriptions. Tool naming follows verb_noun convention (get_*, list_*, search_*, prepare_*, commit_*). However, descriptions are verbose (200-400+ chars) and written in Russian, which may reduce LLM comprehension in English-first agents. Error handling guidance is present but sparse, most tools lack recovery hints. Output schemas are documented via Pydantic models (ResultEnvelope types). Composition is excellent: read tools are cleanly separated from write tools, with idempotency and confirmation patterns for destructive operations.
Проверить фактический аккаунт, ожидаемую привязку и готовность writes. Используйте первым после запуска и перед безопасным write-flow. Возвращает стабильные user_id/username и полную внешнюю запись профиля. Данные Kwork помечены как недоверенный внешний ввод.
Выполнить ровно подготовленный payload в режиме shared one-writer. Commit повторяем только с теми же write_id/payload_hash/token: shared ledger вернёт сохранённый результат и не вызовет Kwork повторно. Remote writes никогда автоматически не retry. Timeout, proxy loss, 5xx или неподтверждённый offer_id дают submission_unknown/isError; после этого commit повторять нельзя — вызовите reconcile_write.
Получить страницу проектов с явным discovery-режимом и opaque cursor. ``favorites`` передаёт пустую категорию, ``all`` — специальное значение ``all``, ``category_ids`` требует непустой список. Результат сохраняет полные описания и unknown upstream fields, paging, query fingerprint и watermark, пригодный для будущего delta polling.
Получить активные и общие коннекты без изменения аккаунта.
Получить полный стандартный exchangeInfo response через pinned API client.
Descriptions are in Russian, reducing accessibility for English-first LLM agents and developers. Descriptions exceed 200 chars baseline, wasting tokens and burying key details.
Error handling lacks recovery guidance. Tools return exceptions but do not tell LLMs what to do next (e.g., 'User not found. Try search_users() first.').
prepare_write accepts a generic 'request' object (type: object) with no schema constraints. LLMs cannot validate the payload structure before submission, risking malformed writes.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2025-06-18+ | v2 |
Получить проект по стабильному project_id с полным описанием и raw fields.
Получить полный публичный профиль ровно по одному user_id или username.
Прочитать durable state и сохранённый результат без remote write.
Список собственных офферов; каждый элемент гарантирует offer_id и project_id.
Проверить и сохранить точный Kwork write payload без remote side effect. Поддерживаемые actions: submit_offer, delete_offer, send_message, edit_message, delete_message, mark_dialog_read, submit_order_approval и set_kwork_state. Перед подготовкой выполняются свежая account binding check и action-specific preflight. Результат содержит payload_hash, TTL и HMAC-derived confirmation_token; в ledger хранится только его hash. Exact replay того же idempotency_key/request возвращает тот же token, пока запись prepared. Другой request с тем же key запрещён.
Read back Kwork state for submission_unknown without resubmitting payload. Возвращает reconciled_succeeded при найденном точном side effect. Reconciled_absent требует нескольких полных отрицательных наблюдений через visibility interval; до этого остаётся submission_unknown. Remote write не выполняется.
Искать пользователей Kwork с сохранением полных полей и paging metadata.
discover_projects 'category_ids' parameter is required only in 'category_ids' mode but not enforced by schema. Conditional parameter dependencies are documented in description but not in JSON Schema.
Tool annotations (ANNO_READ) are present but limited to read-only hints. Destructive operations (prepare_write, commit_write) lack explicit destructiveHint annotations per MCP spec.