Project+apps

Контракт для агентов

Это короткая рабочая схема для внешних ИИ-агентов. Она нужна, чтобы агент не путал MCP и API, не плодил дубли и не пытался писать через неподходящий коннектор.

MCP читает API пишет Опора: slug Без raw data

1. Базовый принцип

Короткое правило: MCP читает, API пишет. На контуре с PROJECT_APPS_MCP_WRITE_ENABLED=false write-tools в MCP отключены полностью — только HTTP API.

2.1 Как узнать направления

2. Что читать через MCP

MCP нужен для того, чтобы агент ориентировался в системе до записи.

Смысл чтения: агент должен понимать не только продукт, но и место объекта внутри штаба: направление, продукт, приложение, внимание сейчас, канон и summary-слой.

3. Что писать через API

Все create/update действия выполняются через API с заголовком токена.

Accept: application/json
Content-Type: application/json
X-Project-Apps-Token: <выданный токен>
Конкуренты, отзывы конкурентов, ключи и store truth уже выделены как отдельные сущности в штабе, но в текущем публичном write-контракте агент пишет прежде всего core и summary-слой. Для market/store слоя пока опираемся на admin workflow.

4. Алгоритм без дублей

  1. Сначала прочитать канон и контекст.
  2. Потом найти продукт или приложение, чтобы понять, существует ли объект.
  3. Если объект найден — использовать PATCH.
  4. Если объект не найден — использовать POST.
  5. Не создавать новую запись, если уже найден устойчивый идентификатор.

Опорные идентификаторы

Если у приложения спорная судьба, фиксируй это как needs-product или product-candidate, а не создавай фиктивный продукт только ради чистоты таблицы.

5. Минимум для записи продукта

{
  "direction_slug": "fitness",
  "name": "Push-Ups",
  "portfolio_status": "rebuild",
  "product_focus": "rewrite",
  "summary": "Фитнес-продукт для гипотезы по отжиманиям.",
  "is_revenue_generating": false,
  "monetization_model": "Требует подтверждения.",
  "health_state": "Нужна проверка",
  "risk_summary": "Нет точных store identity.",
  "growth_chance": "Высокий после нормализации.",
  "next_step": "Привязать store names и economics summary."
}

6. Минимум для записи приложения

{
  "product_slug": "push-ups",
  "name": "Push-Ups Black & White",
  "platform": "iOS",
  "implementation_status": "building",
  "store_url": "https://apps.apple.com/app/...",
  "bundle_id": "org.farmchel.pushups.variant1",
  "package_id": "org.farmchel.pushups.variant1"
}

Если продуктовая привязка спорная

{
  "direction_slug": "fitness",
  "name": "Quit Smoking Android",
  "platform": "Android",
  "implementation_status": "building",
  "product_binding_status": "product-candidate",
  "product_candidate_name": "Quit Smoking",
  "package_id": "org.farmchel.quit.smoking"
}

7. Что агенту запрещено

Если нужно глубже изучить поля и маршруты, агент должен дальше читать документацию API и документацию MCP.