API ВЕГА

Google Maps MCP-сервер

Размещённый сервер Model Context Protocol (MCP), который предоставляет Claude, Cursor, Windsurf и любому другому MCP-клиенту шесть инструментов Google Maps только для чтения. Ищите места, получайте полную информацию о них, отзывы, фотографии и публикации, а также просматривайте историю отзывов отдельного пользователя — всё в виде структурированного JSON. Для работы не нужны проект Google Cloud и включённый биллинг.

Каждый месяц — 1 000 бесплатных кредитов без привязки карты. Этого хватит на 200 вызовов по 5 кредитов.

https://mcp.hasdata.com/mcp?apis=google_maps

Содержание

  • Что потребуется

  • Быстрый старт

  • Примеры запросов

  • Инструменты

  • Ошибки и возможные сбои

  • Стоимость, бесплатный тариф и ограничения

  • Выбор инструмента

  • Сравнение с аналогами

  • Часто задаваемые вопросы

  • Ссылки на HasData

  • Разработка

  • Участие в проекте

  • Лицензия

Что потребуется

MCP-клиент с поддержкой streamable HTTP и пользовательских заголовков. Также понадобится ключ API HasData из личного кабинета. Его можно бесплатно создать без привязки карты; бесплатного тарифа хватит примерно на 200 вызовов в месяц по 5 кредитов. Больше ничего не нужно. Это удалённый сервер, поэтому для подключения достаточно URL и заголовка: не придётся запускать контейнер или использовать проект Google Cloud и его API-ключ. Клиенты, поддерживающие только stdio, могут воспользоваться лаунчером @hasdata/google-maps-mcp (npm) или hasdata-google-maps-mcp (PyPI).

Быстрый старт

URLhttps://mcp.hasdata.com/mcp?apis=google_maps
ТранспортHTTP, streamable
Заголовок авторизацииx-api-key: HASDATA_API_KEY

URL сервера одинаков для всех клиентов. Мы проверили работу сервера в Claude Code и Claude Desktop. Примеры для остальных клиентов приведены в формате, указанном в их документации для удалённых серверов.

Клиенты с поддержкой OAuth могут добавить тот же URL в качестве коннектора и войти в систему, не указывая ключ в конфигурационном файле.

Claude Code

claude mcp add --transport http google-maps "https://mcp.hasdata.com/mcp?apis=google_maps" \
  --header "x-api-key: HASDATA_API_KEY"

Claude Desktop

Claude Desktop загружает из конфигурационного файла только локальные серверы (stdio), поэтому для подключения к удалённому серверу потребуется stdio-лаунчер. Пакет @hasdata/google-maps-mcp выполняет эту роль и получает ключ из переменной окружения.

claude_desktop_config.json:

{
  "mcpServers": {
    "google-maps": {
      "command": "npx",
      "args": ["-y", "@hasdata/google-maps-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}

Предпочитаете Python вместо Node? Замените лаунчер на пакет из PyPI. Его можно запустить с помощью uvx без ручной установки:

{
  "mcpServers": {
    "google-maps": {
      "command": "uvx",
      "args": ["hasdata-google-maps-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}

Если клиент поддерживает OAuth, можно добавить URL в качестве пользовательского коннектора и обойтись без лаунчера.

Cursor

.cursor/mcp.json:

{
  "mcpServers": {
    "google-maps": {
      "url": "https://mcp.hasdata.com/mcp?apis=google_maps",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

Windsurf

~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "google-maps": {
      "serverUrl": "https://mcp.hasdata.com/mcp?apis=google_maps",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

Cline

{
  "mcpServers": {
    "google-maps": {
      "url": "https://mcp.hasdata.com/mcp?apis=google_maps",
      "type": "streamableHttp",
      "headers": { "x-api-key": "HASDATA_API_KEY" },
      "disabled": false
    }
  }
}

VS Code

.vscode/mcp.json:

{
  "servers": {
    "google-maps": {
      "type": "http",
      "url": "https://mcp.hasdata.com/mcp?apis=google_maps",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

Gemini CLI

~/.gemini/settings.json:

{
  "mcpServers": {
    "google-maps": {
      "httpUrl": "https://mcp.hasdata.com/mcp?apis=google_maps",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

Примеры запросов

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

Найди в Google Maps кофейни рядом с центром Сиэтла и покажи первые десять, указав рейтинг, количество отзывов и сайт.

Один вызов, 5 кредитов. В результатах поиска уже есть placeId и dataId, поэтому для последующих запросов не потребуется дополнительный шаг поиска.

Получи полную информацию о месте ChIJAb0KE0RrkFQRuI4X0By5Mcw: часы работы, варианты обслуживания, ценовой уровень и ссылку на меню.

Один вызов, 5 кредитов.

Покажи последние отзывы об этом месте, отсортированные от новых к старым, и расскажи, какие темы встречаются чаще всего.

Один вызов, 5 кредитов. В ответе есть группы тем, сформированные самим Google, с количеством упоминаний каждой темы. Данные уже ранжированы.

Найди автора самого популярного отзыва и перечисли все остальные места, которые он оценивал, вместе с поставленными оценками.

Один вызов, 5 кредитов. В отзыве есть contributorId автора — именно этот идентификатор принимает инструмент для получения данных о пользователе.

Получи ленту фотографий этого места и последние публикации компании.

Два вызова. Фотографии стоят 5 кредитов, публикации — 10.

Есть две причины, по которым такие цепочки обходятся недорого. В каждом результате поиска уже указаны placeId и dataId, поэтому для получения сведений о месте, отзывах, фотографиях и публикациях не нужно выполнять отдельный запрос на поиск идентификатора. Кроме того, в отзыве есть contributorId автора: благодаря этому запрос «кто оставил этот отзыв» позволяет одним вызовом получить полную историю пользователя.

Инструменты

ИнструментЧто возвращает
hasdata_google_maps_contributor_reviews_getMapReviewsОценку и текст каждого отзыва, дату, название и адрес места, placeId, фотографии и ответы владельца. 5 кредитов за вызов
hasdata_google_maps_photos_getMapPhotosКаждую фотографию с URL изображения, миниатюрой, датой загрузки, именем загрузившего и photoId. 5 кредитов за вызов
hasdata_google_maps_place_getPlaceDetailsНазвание, адрес, координаты, телефон, сайт, категории, часы работы, рейтинг, количество отзывов, ценовой уровень, фотографии, популярное время посещения, атрибуты и удобства, plus_code и ссылку на карту. 5 кредитов за вызов
hasdata_google_maps_posts_getMapPostsЗаголовок, описание, изображение, дату публикации, ссылку и название источника или компании для каждой публикации. 10 кредитов за вызов
hasdata_google_maps_reviews_getMapReviewsИмя автора каждого отзыва и ссылку на его профиль, оценку в звёздах, текст, дату публикации или относительную дату, количество отметок «Нравится», ответ владельца, прикреплённые фотографии и признак Local Guide. 5 кредитов за вызов
hasdata_google_maps_search_performMapSearchСписок local pack с placeId, названием, адресом, координатами, рейтингом, количеством отзывов, ценовым уровнем, категориями, телефоном, сайтом, часами работы и миниатюрой. 5 кредитов за вызов

Все шесть инструментов доступны только для чтения. Ниже приведены сокращённые примеры реальных вызовов. Данные в них меняются по мере появления новых отзывов о местах, поэтому воспринимайте их как примеры структуры ответа. Название каждого инструмента ведёт на справочную страницу его конечной точки.

Примеры показывают содержимое полезной нагрузки, а не весь ответ. Результат вызова tools/call содержит один текстовый блок, в котором находится JSON с полями url, status, text и json; собранные данные находятся в json. В исходном JSON-RPC-ответе нужный путь — result.content[0].text: сначала разберите его как JSON, затем обратитесь к .json. Чат-клиент извлекает эти данные автоматически, а при прямом взаимодействии с конечной точкой код должен сделать это самостоятельно.

Четыре инструмента позволяют указать место по placeId или dataId. Поиск возвращает оба идентификатора для каждого результата. Обычно достаточно выполнить поиск, а затем вызвать инструмент получения подробной информации, отзывов, фотографий или публикаций, передав один из сохранённых идентификаторов.

Поиск в Google Maps

hasdata_google_maps_search_performMapSearch

Места, соответствующие запросу, отсортированные так же, как в Google Maps.

ПараметрТипОбязательныйПримечания
qстрокадаПоисковый запрос в свободной форме, например coffee или plumber
llстрокаЦентр карты и масштаб в формате @lat,lng,zoomz, например @47.6062,-122.3321,14z. Этот параметр позволяет привязать поиск к определённому месту
gl / hlстрокаДвухбуквенные коды страны и языка
domainстрокаДомен Google для поиска, например google.com
startчислоСмещение для постраничного вывода результатов, с шагом 20. Также необходимо указать ll

Каждый результат содержит поля position, title, placeId, dataId, address, gpsCoordinates, rating, reviews, type, types, price, website, thumbnail, openState, workingHours, serviceOptions и, если Google показывает такую ссылку, menu.

Местоположение задаётся параметром ll, а не поисковым запросом. Укажите там центр карты и масштаб: если ввести только «coffee», Google будет искать там, где считает вас находящимся. Цифра масштаба определяет, насколько широкую область охватывают результаты.

{
  "localResults": [
    {
      "position": 1,
      "title": "Howdy Y'all Coffee (Central Library)",
      "placeId": "ChIJAb0KE0RrkFQRuI4X0By5Mcw",
      "dataId": "0x54906b44130abd01:0xcc31b91cd0178eb8",
      "address": "1000 4th Ave Fl 3, Seattle, WA 98104",
      "rating": 4.9,
      "reviews": 117,
      "type": "Coffee shop",
      "website": "https://howdyyallcoffee.com/",
      "workingHours": {
        "timezone": "America/Los_Angeles",
        "days": [ { "day": "Friday", "time": "10 AM–4 PM" } ]
      }
    }
  ]
}

Получение подробной информации о месте

hasdata_google_maps_place_getPlaceDetails

Полная информация об одном месте по его placeId.

ПараметрТипОбязательныйПримечания
placeIdстрокадаplaceId из результата поиска
hlстрокаКод языка
domainстрокаДомен Google

Возвращает один объект placeResults с теми же полями, что и результат поиска, а также массивом images. Этот инструмент позволяет получить полную запись о месте, не выполняя лишний поиск.

Получение отзывов о месте

hasdata_google_maps_reviews_getMapReviews

Отзывы о месте с постраничной загрузкой.

ПараметрТипОбязательныйПримечания
placeIdстрокаИдентификатор места. Необходимо указать либо placeId, либо dataId
dataIdстрокаАльтернативный идентификатор места — dataId
sortByстрокаПо умолчанию используется mostRelevant; также доступны newestFirst, ratingHigh и ratingLow
topicIdстрокаФильтр по теме: укажите её id из массива topics
hlстрокаКод языка
nextPageTokenстрокаЗначение pagination.nextPageToken из предыдущего ответа

Возвращает placeInfo, массивы topics и reviews, а также объект pagination. Каждый отзыв содержит поля reviewId, rating, snippet, date, isoDate, link, images, объект user и, если владелец ответил на отзыв, объект response.

Массив topics содержит темы, которые Google автоматически выделяет в отзывах. Для каждой темы указаны keyword и количество упоминаний mentions. Темы уже сгруппированы и подсчитаны — читать каждый отзыв для этого не нужно. Чтобы получить только отзывы по определённой теме, передайте её id в параметре topicId.

Объект user каждого отзыва содержит contributorId. Его принимает инструмент для получения отзывов автора, поэтому от запроса «кто это написал» до просмотра всех отзывов этого автора — всего один вызов.

{
  "placeInfo": { "title": "Howdy Y'all Coffee (Central Library)", "rating": 4.9, "reviews": 117 },
  "topics": [
    { "keyword": "earl grey matcha", "mentions": 26, "id": "bew1w_KAk5U" },
    { "keyword": "friendly baristas", "mentions": 17, "id": "FOw-91tYieQ" }
  ],
  "reviews": [
    {
      "reviewId": "…",
      "rating": 5,
      "snippet": "…",
      "isoDate": "2026-07-06T19:49:00.657Z",
      "user": { "name": "Angela Li", "contributorId": "106033685843245983748" },
      "response": { "isoDate": "2026-07-07T04:44:34.000Z", "snippet": "Thank you!! 🥺☺️" }
    }
  ],
  "pagination": { "nextPageToken": "…" }
}

Получение отзывов автора

hasdata_google_maps_contributor_reviews_getMapReviews

Все отзывы одного автора обо всех местах, которым он поставил оценку.

ПараметрТипОбязательныйПримечания
contributorIdстрокадаcontributorId из объекта user в отзыве
numчислоКоличество отзывов для возврата
gl / hlстрокаКоды страны и языка
nextPageTokenстрокаТокен из предыдущего ответа

Возвращает объект contributor с полями name, level, points и разбивкой contributions, а также массив reviews. Каждая запись в нём содержит собственный объект placeInfo, поэтому для определения места, о котором написан отзыв, дополнительный запрос не нужен. Этот инструмент позволяет анализировать надёжность авторов и связи между отзывами — возможности, недоступные при использовании только ленты отзывов о месте. Он получает общедоступную историю отзывов одного человека. Используйте результаты с соблюдением условий Google и применимого законодательства.

Получение фотографий места

hasdata_google_maps_photos_getMapPhotos

Фотографии, опубликованные для места.

ПараметрТипОбязательныйПримечания
placeIdстрокаИдентификатор места. Необходимо указать либо placeId, либо dataId
dataIdстрокаАльтернативный идентификатор места — dataId
categoryIdстрокаФильтр по категории: укажите её id из массива categories
hlстрокаКод языка
nextPageTokenстрокаТокен из предыдущего ответа

Возвращает массив categories (категории All, Latest, Videos, Menu и другие, специфичные для места), массив photos, где у каждой записи есть URL изображений image и thumbnail, а также объект pagination.

Получение публикаций места

hasdata_google_maps_posts_getMapPosts

Публикации и обновления компании в её карточке Google.

ПараметрТипОбязательныйПримечания
placeIdстрокаИдентификатор места. Необходимо указать либо placeId, либо dataId
dataIdстрокаАльтернативный идентификатор места — dataId
hlстрокаКод языка
nextPageTokenстрокаТокен из предыдущего ответа

Возвращает массив posts.

Большинство мест ничего не публикуют, поэтому пустой массив posts — обычный результат. Перед тем как рассчитывать на наличие публикаций, проверьте длину массива.

Ошибки и сценарии сбоя

При вызове инструмента клиент почти никогда не получает HTTP-код ошибки. Уровень MCP возвращает код 200 и помещает сведения о сбое в результат: устанавливает isError в true и добавляет текст с причиной. Вместо строки со статусом агент получает сообщение.

Неверный ключ отображается в результате вызова инструмента, а не как ошибка подключения. Для получения списка инструментов подходит любой непустой ключ: клиент успешно выполняет рукопожатие и показывает зелёный статус. При первом вызове инструмента возвращается isError: true и текст HasData API error: 401 Unauthorized. Обратите внимание на это сообщение: на предыдущих этапах проблема никак не проявляется.

Единственная настоящая HTTP-ошибка возникает, если ключ не указан. Проверка авторизации выполняется до вызова любого инструмента, поэтому само подключение завершается ошибкой 401.

Аргумент, не соответствующий схеме, отклоняется до отправки запроса. Если выполнить поиск без q, вернётся isError: true и текст MCP error -32602: Input validation error с указанием поля. Данные не запрашиваются, плата не взимается.

Для запросов отзывов, фотографий и публикаций нужно указать место. Для этих трёх инструментов требуется placeId или dataId. Если не передать ни один из них, вернётся ошибка 422 с указанием обоих полей: требование условное, и его нельзя описать в схеме обычным списком обязательных полей. Укажите один из идентификаторов.

Если идентификатор места не найден, возвращается ошибка, а не пустые данные. В ответе будут isError: true, текст HasData API error: 400 Bad Request и значение error в поле requestMetadata.status. Проверяйте этот флаг, а не длину массива.

Пустой массив posts — это корректные данные. В большинстве карточек нет публикаций, поэтому вызов завершается успешно, возвращает статус ok и пустой массив. Это означает, что для места просто нет публикаций.

Результаты, содержащие данные, также включают requestMetadata.id, который полезно указывать при обращении в поддержку, а также ссылки html и json на сохранённый артефакт именно этого вызова.

Тарифы, бесплатный план и лимиты

Поиск, сведения о местах, отзывы, отзывы авторов и фотографии стоят 5 кредитов за успешный вызов. Публикации — 10 кредитов. Размер ответа не влияет на стоимость. Полная страница отзывов стоит столько же, сколько страница с одним отзывом.

Бесплатный план включает 1 000 кредитов в месяц без привязки карты — это 200 вызовов по 5 кредитов. Кредиты обновляются с началом расчётного периода, поэтому агент с небольшим объёмом запросов может работать на бесплатном плане бессрочно.

Платные планы начинаются от $59 в месяц за 200 000 кредитов — это 40 000 вызовов по 5 кредитов. Чем больше объём, тем ниже стоимость одного кредита. Актуальные цены указаны на странице тарифов.

План также определяет допустимое число одновременных запросов. Бесплатный план позволяет выполнять 1 запрос за раз, Startup — 5, Basic — 15, а планы Growth — от 50 до 500. Ограничение по числу одновременных запросов — единственный лимит нагрузки. Отдельного ограничения запросов в минуту нет, а бесплатный план не замедляется и не урезается каким-либо иным образом. Если агент работает без присмотра, предусмотрите обработку превышения лимита: агент, который отправляет запросы сразу по множеству мест, достигнет его раньше, чем вы ожидаете.

Каждый запрос следующей страницы стоит отдельный вызов. На одной странице отзывов обычно около десяти записей, поэтому получение ста отзывов потребует примерно десяти вызовов и 50 кредитов. На одной странице фотографий — двадцать. Бесплатного плана хватит надолго.

Выбор инструментов

Параметр ?apis=google_maps открывает ровно шесть инструментов. Он принимает список: например, ?apis=google_maps,google_serp добавляет к инструментам карт поиск Google. Если не указывать параметр, станут доступны все инструменты HasData — сейчас их 57.

Как правило, лучше ограничить список инструментов. Модель чаще выбирает правильный вариант из шести инструментов, чем из пятидесяти семи. Кроме того, описания инструментов занимают контекст при каждом обращении.

Сравнение

Почти все остальные MCP-серверы для Google Maps работают как оболочка над официальной Google Maps Platform — именно между этими вариантами и предстоит выбирать.

Такие серверы обращаются к API Places, Routes и Geocoding, используя ваши учётные данные Google Cloud. Чтобы запустить один из них, нужно создать проект Google Cloud, подключить оплату с помощью карты, включить каждый API и самостоятельно управлять ключом и квотами. Это подходящий вариант, если вам нужны маршрутизация, геокодирование и проверка адресов — этот сервер таких функций не предоставляет.

Этот сервер получает и разбирает данные, которые Google Maps показывает посетителям. Для работы не нужны проект Google Cloud, подключение оплаты или управление квотами для отдельных API. Кроме того, он предоставляет доступ к данным, которые API Places не отдаёт: полной ленте отзывов, а не небольшой фиксированной выборке, всей истории отзывов отдельного автора, ленте фотографий и публикациям компании.

Оболочка над официальной PlatformЭтот сервер
Что нужно настроитьПроект Google Cloud, оплату, ключи и квоты для отдельных APIОдин API key — один раз
Маршрутизация, геокодирование, проверка адресовДаНе поддерживаются
ОтзывыНебольшая фиксированная выборка для каждого местаЛента с постраничной загрузкой и кластерами по темам
История автора отзывовНедоступнаДа, по contributorId
Фотографии и публикацииОграниченный доступЛента фотографий и публикации компании
Формат результатаJSON в соответствии со схемой PlatformJSON, разобранный из данных, которые видит посетитель
СтоимостьОплата Google за каждый вызов5 кредитов за вызов, 10 — за публикации

Выбор зависит от двух строк. Если вам нужны маршруты или перевод адреса в координаты, этот сервер не поможет, а Platform справится. Если нужны отзывы, которые не вошли в первую выборку, или история автора по всем местам, которые он оценивал, Platform не поможет, а этот сервер справится.

Что этот сервер не умеет. Маршрутизация, геокодирование, проверка адресов, матрица расстояний и любые операции записи не поддерживаются. Сервер только считывает данные карты.

Часто задаваемые вопросы

Что такое MCP-сервер Google Maps?

Это сервер, который предоставляет данные Google Maps в виде инструментов, доступных AI-клиенту. Клиент отправляет вызов инструмента по Model Context Protocol, сервер получает данные и возвращает структурированный JSON. Модель работает с результатом, не обрабатывая HTML-страницу. Этот сервер предоставляет шесть инструментов только для чтения и работает удалённо: клиент подключается к URL, не запуская локальный процесс.

Существует ли официальный MCP-сервер Google Maps?

Google не выпускает универсальный MCP-сервер. Вместо него есть Google Maps Platform — набор платных API, к которым можно обращаться через собственный проект Cloud. Несколько независимых MCP-серверов предоставляют к Platform доступ через оболочку. Этот сервер — размещённая альтернатива, для которой не нужен проект Cloud.

Нужны ли мне проект Google Cloud или ключ API Maps?

Нет. Единственные учётные данные, которые вам понадобятся, — ключ HasData. Создавать проект Google Cloud, подключать оплату и управлять квотами отдельных API не нужно.

Чем отличаются placeId и dataId?

Это два идентификатора, которые Google использует для одного и того же места. Поиск возвращает оба идентификатора для каждого результата, а инструменты получения сведений, отзывов, фотографий и публикаций принимают любой из них. Сохраните тот, который вам удобнее, и используйте его повторно.

Как получить все отзывы, а не только первую страницу?

Прочитайте pagination.nextPageToken в ответе и передавайте его в nextPageToken, пока токен не перестанет возвращаться. Для каждой страницы нужен отдельный вызов.

Нужно ли размещать или запускать сервер самостоятельно?

Нет. Это удалённый MCP-сервер, работающий по streamable HTTP. Ничего не нужно устанавливать, настраивать среду Python или перезапускать процесс.

Данные актуальные или кэшированные?

Актуальные. Каждый вызов получает данные в момент запроса и содержит собственный requestMetadata.id. Два одинаковых вызова выполняются отдельно и не возвращают сохранённую копию ответа.

Можно ли использовать один сервер для нескольких сервисов Google?

Да. Параметр apis принимает список, поэтому ?apis=google_maps,google_serp предоставит агенту инструменты для работы с картами и поиска Google одновременно.

Истекает ли срок действия API key?

Нет, срок действия ключа не истекает. При необходимости его можно заменить в панели управления.

Связан ли этот сервис с Google?

Нет. HasData — независимый сервис, не связанный с Google и не одобренный и не спонсируемый этой компанией. Google и Google Maps — товарные знаки соответствующего владельца. Инструменты работают только с общедоступными данными. Вы несёте ответственность за использование результатов в соответствии с условиями Google и применимым законодательством.

Ссылки HasData

Страницы продуктовПоиск, Отзывы, Фотографии и Публикации
Документация сервераДокументация MCP-сервера
Все 57 инструментов на одном сервереHasData/hasdata-mcp
Руководства для клиентовMCP-клиенты и интеграции
Другие сервисы, данные которых мы обрабатываемЕщё 53 API для сбора данных
Планы и стоимость кредитовПланы и стоимость кредитов
Ключи и статистика использованияПанель управления HasData
Node launcher в npm@hasdata/google-maps-mcp
Python launcher в PyPIhasdata-google-maps-mcp

Разработка

В этом репозитории собраны конфигурация и документация удалённого сервера. Сборка и упаковка в контейнер не требуются.

Здесь есть тест контракта. В README указаны шесть инструментов и их конкретные параметры, но список инструментов на стороне сервера может измениться без коммита в этот репозиторий — тогда информация в README незаметно устареет. Тест проверяет соответствие заявленным характеристикам и запускается в CI каждую неделю, а также при каждом отправленном изменении.

HASDATA_API_KEY=your_key_here npm test

В PowerShell:

$env:HASDATA_API_KEY = "your_key_here"; npm test

Последняя проверка выполняет реальный вызов и стоит 5 кредитов. Это плата за контрольную проверку, которая может завершиться ошибкой по обоснованной причине. Получить список инструментов можно с любым непустым ключом, поэтому тест, который проверяет только список, продолжит проходить и с отозванным ключом.

Участие в разработке

Полезнее всего исправлять таблицы инструментов и примеры ответов — именно эти части быстрее всего устаревают. Указывайте выполненный вызов и полученный ответ. Pull request из fork запускают набор тестов без ключа, а проверки с реальными запросами пропускаются, чтобы не помечать сборку как неудачную.

Лицензия

MIT. См. LICENSE.