# gateway_call

> Вызов инструмента подключённой интеграции (например, GitHub) через MMW — параметры, ответ и ошибки.

Из этой страницы вы узнаете, как агент вызывает инструменты интеграций, подключённых к проекту в MMW, и почему секреты интеграции при этом не попадают к модели.

Сквозной пример: агент читает файл `docs/deploy.md` из репозитория команды через интеграцию `github_readonly`, чтобы сверить его с фактом о деплое staging.

## Назначение

`gateway_call` вызывает один инструмент внешней MCP-интеграции, которую пользователь включил для проекта в кабинете. Токены и ключи интеграции хранятся на сервере MMW и модели не передаются. Доступны только интеграции, явно включённые для проекта ключа.

Те же инструменты интеграций видны в списке инструментов и под собственными именами — например, `github_readonly.get_file_contents`. Их можно вызывать напрямую, это равнозначно `gateway_call`.

## Параметры

| Параметр | Тип | По умолчанию | Описание |
| --- | --- | --- | --- |
| `server` | string | — (обязательный) | Имя интеграции, например `github_readonly`. Без точек. |
| `tool` | string | — (обязательный) | Имя действия интеграции, например `get_file_contents`. Без точек. |
| `arguments` | object | — (обязательный) | Параметры действия — по схеме инструмента интеграции. |
| `project_id` | string или null | `null` | Проект для вызова. По умолчанию — проект ключа. |

## Ответ

Ответ — результат инструмента интеграции в том виде, в каком его вернула интеграция. Для MCP-интеграций это обычно объект с полем `content` (список блоков текста). MMW ничего не добавляет к результату.

## Пример

```json title="arguments"
{
  "server": "github_readonly",
  "tool": "get_file_contents",
  "arguments": {
    "owner": "acme",
    "repo": "platform",
    "path": "docs/deploy.md",
    "ref": "main"
  }
}
```

```json
{
  "content": [
    {
      "type": "text",
      "text": "# Деплой\n\nstaging: systemd-юнит app-staging ..."
    }
  ]
}
```

Набор инструментов и их параметры определяет сама интеграция. Для GitHub (только чтение) это, например, `get_file_contents` (`owner`, `repo`, `path`, `ref`), `pull_request_read` (`owner`, `repo`, `pull_number`, `method`, `page`, `per_page`) и `get_me` без параметров.

## Ошибки

| Текст | Причина |
| --- | --- |
| `invalid gateway server or tool name` | Пустое имя или точка в `server` или `tool`. Передавайте `github_readonly` и `get_file_contents` отдельно. |
| `gateway project not found` | Указанный `project_id` не существует или неактивен. |
| `gateway tool not found` | Такого инструмента нет среди включённых интеграций проекта, или интеграция сейчас отключена либо не прошла проверку работоспособности. |
| `required downstream secret is missing` | Для интеграции не настроен секрет (токен) в кабинете. |
| `downstream tool is not allowlisted` | Инструмент не входит в разрешённый список интеграции. |
| `project call limit exceeded` | Исчерпан лимит вызовов проекта в минуту. |
| `project gateway concurrency limit exceeded` | Слишком много одновременных вызовов интеграций в проекте. |
| `downstream timeout` | Интеграция не ответила вовремя. |
| `downstream response size limit exceeded` | Ответ интеграции превысил допустимый размер. |
| `downstream transport failure`, `downstream JSON-RPC error` | Сбой на стороне интеграции. |
| `[MMW Notice]: …` | Нет подписки или аккаунт приостановлен. |

## Примечания

- Интеграции подключаются в кабинете, в разделе «Шлюз MCP». Без подключённой интеграции `gateway_call` вызывать бессмысленно — список инструментов интеграций будет пуст.
- В подключениях ChatGPT (бета) `gateway_call` и инструменты интеграций недоступны: там только инструменты памяти.
- Вызовы интеграций записываются в журнал проекта (без секретов).
- Аннотация `openWorldHint: true`: клиент знает, что инструмент обращается к внешней системе, и может запросить подтверждение.

Вызовы интеграций учитываются в том же лимите вызовов проекта в минуту, что и вызовы памяти, плюс есть ограничение на число одновременных вызовов интеграций (см. [Лимиты](/reference/limits/)).

## Что дальше
