Инфраструктура поиска изображений для ИИ-агентов: что реально предлагает рынок
Getty выпустила MCP-сервер в этом месяце; бесплатные библиотеки не выпустили ни одного. Воспроизводимый бенчмарк, перепись реестра и условия четырёх крупных фотоAPI — прочитанные так, будто вы машина, обязанная им подчиняться.
Любой агентный фреймворк, вышедший в этом году, умеет писать код, планировать, вызывать инструменты и открывать pull request. Попросите его найти фотографию — и всё сводится к пожиманию плечами: URL стоковой картинки, придуманный по памяти, битая ссылка или изображение, сгенерированное потому, что искать настоящее оказалось сложнее, чем нарисовать своё. Слабое звено — не модели. Это слой изображений под ними — и его отсутствие вполне конкретно и измеримо.
Это исследование рынка, а не манифест. Всё изложенное ниже было измерено или взято из первоисточника 18 августа 2026 года: перепись официального реестра MCP, опубликованные условия четырёх крупных бесплатных фото-API, условия доступа двух платных лидеров рынка, выпустивших коннекторы для агентов в этом месяце, и небольшой воспроизводимый тест, который вы можете повторить за минуту без единого API-ключа.
Одна оговорка — чтобы вы могли прекратить чтение раньше, если это не ваш вопрос: статья посвящена слою доступа — поиску, доступности, условиям, квотам. Это не пайплайн публикации. Если вам нужно, как превратить черновик в иллюстрированные, снабжённые атрибуцией и размеченные страницы — промпт-роутер, визуальные брифы, сборка, разметка ImageObject — это описано отдельно, в статье
про пайплайн, иллюстрирующий статьи, написанные ИИ.
Что меняется, когда вызывающий — машина
Человек, ищущий фотографию, вводит два-три слова, просматривает сетку изображений и сразу понимает, хороша ли картинка. Любой стоковый поисковик изначально строится на этом цикле. Агент разрушает все три предположения сразу:
- Он пишет предложения, а не ключевые слова. Модель, только что набросавшая раздел про оформление ипотеки, не выдаёт
ипотека; она выдаёт «женщина подписывает ипотечный документ за кухонным столом, а банковский консультант объясняет условия». Это естественный вывод языковой модели, и именно его не может обработать индекс, сопоставляющий токены. - Он не может просмотреть сетку изображений. Всё, что возвращает инструмент, — это всё, что знает агент. Если ответ представляет собой список URL без описания, размеров или атрибуции, агенту приходится загружать и рассматривать каждое изображение — или, что случается гораздо чаще, угадывать.
- У него нет рук. Он не может загрузить скриншоты в очередь на проверку, принять условия, сменить ключ или подождать три рабочих дня одобрения продакшена. Каждый шаг для человека в онбординге API — это стена, у которой агент останавливается.
Так что «инфраструктура поиска изображений для ИИ-агентов» — не маркетинговая фраза. Это чек-лист: поиск на естественном языке, машиночитаемые результаты, достаточно насыщенные для рассуждений, и модель авторизации и квот, которую программа способна пройти самостоятельно.
Тест: предложение против индекса по ключевым словам
Самый дешёвый способ увидеть проблему — отправить собственные слова агента в движок с поиском по ключевым словам. Тест ниже использует Openverse, поиск медиа со свободными лицензиями, который ведёт WordPress.org, потому что его API публичный, не требует ключа, и любой читатель может повторить его за минуту. Четыре брифа — такие, какие модель пишет, иллюстрируя то, что только что набросала:
import json, urllib.request, urllib.parse
BRIEFS = [
"a woman signing a mortgage document at a kitchen table while a bank"
" adviser explains the terms, warm morning light",
"An elderly couple enjoying a peaceful retirement together",
"a child discovering snow for the first time in a suburban garden",
"a delivery cyclist waiting at a red light in heavy rain",
]
def count(q):
u = "https://api.openverse.org/v1/images/?" + urllib.parse.urlencode({"q": q})
r = urllib.request.Request(u, headers={"User-Agent": "benchmark/1.0"})
return json.load(urllib.request.urlopen(r))["result_count"]
for b in BRIEFS:
print(count(b), "|", b[:48])
# 0 | a woman signing a mortgage document at a kitchen
# 0 | An elderly couple enjoying a peaceful retirement
# 0 | a child discovering snow for the first time in a
# 0 | a delivery cyclist waiting at a red light in hea
Четыре брифа, четыре пустых набора результатов. Теперь урежьте каждый бриф до двух ключевых слов, которые ввёл бы человек, — signing document, elderly couple, child snow, cyclist rain — и каждый из них возвращает полную страницу фотографий (API сообщает 240 — это потолок для анонимных вызовов). Каталог содержит нужные снимки. Не понимает он именно предложение.
| Бриф, который реально пишет агент | Движок по ключевым словамOpenverse, полное предложение | Движок по ключевым словамурезано до 2 слов | Семантический движокPexafy, полное предложение |
|---|---|---|---|
| «женщина подписывает ипотечный документ за кухонным столом, а банковский консультант объясняет условия…» | 0 результатов | 240 (потолок) | 16 результатов · 148 мс |
| «пожилая пара наслаждается спокойной пенсией вместе» | 0 результатов | 240 (потолок) | 16 результатов · 135 мс |
| «ребёнок впервые видит снег в саду загородного дома» | 0 результатов | 240 (потолок) | 16 результатов · 147 мс |
| «курьер на велосипеде ждёт на красный свет под сильным дождём» | 0 результатов | 240 (потолок) | 16 результатов · 149 мс |
Столбец Pexafy — это те же четыре предложения, отправленные без изменений в search_photos на хостируемом MCP-сервере, с задержкой, которую сообщил сам сервер. Это сравнение форм запроса, а не качества каталога — и каталог совершенно точно не является проблемой. Собственная статистика Openverse на день теста сообщает о 915 миллионах изображений из 52 источников, и сервис прекрасно справляется с тем, для чего создан: поиском по ключевым словам, для людей. С ним всё в порядке. Он просто никогда не проектировался под вызывающего, который думает предложениями. О том, почему сопоставление тегов ломается на описанной сцене — и что делает вместо этого семантический поиск, — рассказано со стороны читателя в статье
о поиске предложением вместо ключевых слов; новое здесь — это измерение, и то, что оно значит, когда вызывающий — программа, а не человек.
Рынок по состоянию на 18 августа 2026 года
Поиск — это половина дела. Вторая половина — доступность: может ли агент вообще добраться до каталога, и на каких условиях? С тех пор как Model Context Protocol стал способом подключения ассистентов к внешним системам — его текущая спецификация от 28 июля 2026 года перевела протокол на состояние-независимое ядро запрос/ответ, чтобы серверы могли стоять за обычными балансировщиками нагрузки1 — честный способ обследовать этот рынок — смотреть на то, что реально опубликовано, а не на то, что анонсировано.
Платные лидеры рынка появились в этом месяце
Getty Images запустила свой MCP-сервер 12 августа 2026 года, за шесть дней до этой статьи, открыв поиск и загрузку по творческому, редакционному и архивному контенту для ИИ-рабочих процессов.2 Он ориентирован на корпоративные команды и разработчиков платформ, и собственная страница доступа однозначна о пороге входа: нужно активное соглашение с Getty Images, например Premium Access, плюс принятие условий Web Service. Бесплатного уровня нет. Shutterstock контент также доступен через MCP-сервер — 24 инструмента, покрывающих поиск, коллекции и лицензирование — с загрузками, закрытыми за аккаунтом с активной подпиской.3
Оба шага рациональны, и оба рассчитаны на конкретного покупателя. Getty заработала 981,3 млн долларов выручки в 2025 году4 на рынке стоковой фотографии, оценённом примерно в 5,4 млрд долларов на 2026 год5; коннекторы, требующие контракта, защищают эту выручку, а не открывают её. Если вы банк или телекомпания — это именно то, что вам нужно. Если вы разработчик, собирающий побочный проект — или агент, который не должен останавливаться и просить человека что-то подписать — это закрытая дверь.
Бесплатные библиотеки не выпустили ничего подобного
Unsplash, Pexels и Pixabay — три каталога, к которым чаще всего обращаются разработчики, и ни один из них не публикует официальный MCP-сервер. Вместо этого существует полка сторонних обёрток. Мы полностью просканировали официальный реестр MCP — 22 607 серверов, 75 487 опубликованных версий — и оставили каждую запись, название или описание которой связано с поиском фото или стоковых изображений. Картина однородна:
| Официальный реестр MCP, 18 авг 2026 | Количество | Что это значит для агента |
|---|---|---|
| Серверы, перечисленные в реестре, все категории | 22 607 | Вся экосистема, из которой агент может брать инструменты |
| Серверы, соответствующие photo / image / stock / picture и названиям библиотек | 137 | Большинство — редакторы, генераторы или инструменты для личных фото, не поиск |
| …которые реально ищут стоковую или свободно лицензированную фотографию | 11 | Весь адресуемый набор |
| …опубликованные самими Unsplash, Pexels, Pixabay или Openverse | 0 | Каждый — сторонняя обёртка; одна помечена «Unofficial» в собственном описании |
| …которые работают локально и требуют вашего собственного сторонего API-ключа | 7 | UNSPLASH_ACCESS_KEY, PEXELS_API_KEY, PIXABAY_API_KEY… человек должен сначала получить каждый из них |
| …доступные как хостируемый удалённый сервер | 4 | Все четыре — шлюзы с одним источником от одного стороннего оператора, поверх тех же API по ключевым словам |
| Записи для Getty или Shutterstock | 0 | Их серверы существуют, но распространяются вне публичного реестра, среди держателей аккаунтов |
import json, urllib.request, urllib.parse
def crawl(term): # реестр постранично отдаёт данные через `nextCursor`
out, cursor = {}, None
while True:
p = {"limit": "100", "search": term} | ({"cursor": cursor} if cursor else {})
d = json.load(urllib.request.urlopen(
"https://registry.modelcontextprotocol.io/v0/servers?" + urllib.parse.urlencode(p)))
for e in d["servers"]: out[e["server"]["name"]] = e["server"]
cursor = (d.get("metadata") or {}).get("nextCursor")
if not cursor or not d["servers"]: return out
servers = {}
for t in ["photo", "image", "stock", "picture", "unsplash",
"pexels", "pixabay", "getty", "shutterstock", "openverse"]:
servers |= crawl(t)
# 137 уникальных серверов · удалённый или локальный указано в `server["remotes"]`
# обязательные сторонние ключи находятся в packages[].environmentVariables
Каждая из этих обёрток — тонкий клиент к тем же трём API по ключевым словам, а значит, приведённый выше тест применим ко всем им: транспорт изменился, поиск — нет. Обёртка не может научить индекс тегов понимать предложения.
Пункт, который останавливает машину, — это не квота
Квоты и условия бесплатных библиотек сравниваются рядом друг с другом, в общей единице измерения, в статье сравнение бесплатных API стоковых фото — очереди на одобрение, обязательный вызов загрузки, требование кэширования на 24 часа, правила атрибуции. Та статья читает их с точки зрения разработчика, выбирающего провайдера. Прочитайте их снова с точки зрения программы, которая обязана им подчиняться, и выделяется строка, не имеющая ничего общего с объёмом:
Поле запроса Pixabay принимает 100 символов. Четыре брифа в приведённом выше тесте в среднем составляют 72 символа, а ипотечный доходит до 114 — он был бы отклонён напрямую, а не просто плохо ранжирован. Pexels и Unsplash не публикуют ограничение по длине, потому что никогда не ожидали, что оно понадобится: их документированные примеры — Ocean, Tigers, Pears. Поле, рассчитанное на два слова, — это утверждение о том, кем должен был быть вызывающий, и никакая квота этого не исправит. Семантический эндпоинт, с которым разговаривает агент, принимает 500 символов, потому что заключительная часть — «…а банковский консультант объясняет условия» — это именно то, что делает поиск качественным.
То же самое применимо к онбордингу. Демо-уровень, который становится продакшеном только после того, как человек просмотрит скриншоты вашего приложения, — это не лимит скорости, от которого агент может отступить; это шаг, который он вообще не способен выполнить. Pixabay прямо заявляет о намерении — API предназначен для законного человеческого использования, а массовая автоматизированная загрузка запрещена. Ничего неразумного в этом нет: фотографы отдают работу бесплатно, а кто-то платит за трафик. Это просто описывает API, чей вызывающий предполагался с экраном и парой рук.
Четыре требования и кто им соответствует
Сложите обе половины вместе, и спецификация слоя изображений, который агент реально может использовать, получится короткой и проверяемой. Это намеренно не сравнение провайдеров — размер каталога, цены и условия лицензий выстроены в статье-сравнении. Эти четыре пункта только про то, может ли программа вообще добраться до картинок:
- Семантический поиск — полное предложение возвращает ранжированную страницу, а не пустой результат.
- Свободные лицензии, несколько источников — ничего не нужно лицензировать по отдельным изображениям, и вкус ни одной отдельной библиотеки не определяет каждую публикуемую страницу.
- Хостируемый сервер с собственным входом — удалённый, OAuth, никакого локального процесса для установки и никакого стороннего API-ключа для вставки в конфигурационный файл.
- Бесплатный уровень, который машина может пройти самостоятельно — без проверки скриншотов, без контракта, месячная квота и лимит скорости в минуту, под который может подстроиться воркер.
| По состоянию на 18 авг 2026 | Семантика | Свободные лицензии, много источников | Хостируемый сервер + OAuth | Самообслуживаемый бесплатный уровень |
|---|---|---|---|---|
| Getty Images MCP | Поиск на естественном языке | Лицензированный каталог, по контракту | Да, для держателей аккаунта | Нет — требуется активное соглашение |
| Shutterstock через MCP | По ключевым словам | Лицензированный каталог, по подписке | Да, с авторизацией аккаунта | Нет — подписка нужна для загрузки |
| Обёртки Unsplash / Pexels / Pixabay | Нет — под ними API по ключевым словам | По одному источнику каждая | Нет — локальный процесс, ваш собственный ключ | Наследует человеческий онбординг базового API |
| Openverse | Нет — индекс по ключевым словам | Да, очень широкий каталог CC | Нет официального MCP-сервера | Да, открытый API |
| Pexafy | Да — предложения, до 500 символов | 9 источников со свободной лицензией, 9М+ фото | Да — mcp.pexafy.com/mcp, OAuth 2.1 |
Да — 5,000 запросов/месяц, 20/мин, без карты |
Мы делаем Pexafy, так что читайте эту последнюю строку с тем скептицизмом, который она заслуживает, — а затем проверьте её: перепись реестра воспроизводима одним скриптом, условия доступа Getty и Shutterstock указаны на их собственных страницах, а лимиты трёх фото-API — в их собственной документации, все ссылки внизу. Утверждение узкое и проверяемое: на 18 августа 2026 года мы не смогли найти второй сервис, который отвечает всем четырём пунктам. Если вы знаете такой, мы добавим его в эту таблицу — смысл записывания требований в том, что кто угодно может применить их к любому продукту, включая наш собственный.
Что хороший сервер изображений делает через MCP
Коннектор — это не REST-эндпоинт в новой обёртке. Два способа использования этого слоя описаны в других статьях и здесь не повторяются — иллюстрирование черновика, в статье про пайплайн, и сохранение визуальной согласованности длинной серии, в статье про объём. К инфраструктуре относится то, от чего оба зависят и что ни одна из них не может добавить постфактум: три решения на стороне сервера, принятые один раз, для каждого агента, который когда-либо подключится.
1. Возвращайте объекты, о которых агент может рассуждать. Всё, что возвращает инструмент, — это всё, что знает модель, — она не может просмотреть сетку изображений. Разница между двумя формами ниже — это разница между ассистентом, который рассуждает о фотографиях, и тем, который просто передаёт ссылки:
# Типичная обёртка по ключевым словам: агенту приходится загружать и смотреть, или угадывать
[{ "url": "https://…/photo-8795398.jpeg" }, { "url": "https://…/366611.jpg" }]
# Один результат, как он возвращается — здесь урезан, ничего не добавлено
{
"rank": 1, // метка, которую использует человек: "больше похожего на #1"
"photo_id": "019e14d9-e821-…", // то, что принимает get_similar_photos
"width": 6424, "height": 4283, "orientation": "landscape",
"color_hex": "#918872", "blur_hash": "LPI#Px?aDikCGwW?M{kD-VR*s.fl",
"source": "Pexels", "license_type": "free",
"alt_description": "Older couple sits together on wooden bench in a park",
"attribution": { "plain": "Photo by Anastasia Shuraeva on Pexels", "html": "…" },
"urls": { "thumb": "…", "small": "…", "regular": "…", "large": "…" }
}
С этой второй формой агент способен сказать «#3 портретный, он сломает ваш блок-герой», отбросить дублирующегося фотографа, вывести строку атрибуции и передать вашему шаблону пару width/height, которая устраняет сдвиг вёрстки — без загрузки хотя бы одного изображения. С первой формой каждое из этих решений — это либо угадывание, либо дополнительный запрос.
2. Нумеруйте результаты, чтобы человек мог на них указать. Результаты приходят уже ранжированными #1, #2, #3… — так любой ссылается на фото в разговоре: «больше похожего на #3» — без ручного копирования идентификаторов. В клиентах, поддерживающих MCP Apps, миниатюры отображаются встроенно, а открытие одной показывает метаданные, которые уже были в результате инструмента, без дополнительного вызова.
3. Оставайтесь только для чтения, и говорите об этом прямо. Три инструмента, никаких прав на запись, никакой мутации аккаунта. У одного из них нет аналога с ключевыми словами вообще:
search_photos_by_image принимает референсное изображение — уже имеющийся у клиента баннер, скриншот, вставленный в чат — плюс необязательное предложение, чтобы скорректировать результат
(«как это, но ночью»). В API с сопоставлением тегов нет поля, куда такой запрос можно было бы даже ввести. И агент, который ничего не может изменить, — это агент, чей наихудший исход — пустой результат, а не тикет в службу поддержки.
Два интерфейса, и какой вам нужен
Есть ровно два способа попасть внутрь, и выбор связан с тем, кто участвует в процессе, а не с возможностями — инструменты и каталог одинаковы в обоих случаях.
Коннектор — когда участвует человек. Один URL,
https://mcp.pexafy.com/mcp, добавляется один раз в настройки коннекторов ассистента; вход происходит в окне браузера, и клиент получает собственные учётные данные, так что не нужно вставлять ключ в конфигурационный файл и потом его менять. Клиенты, не реализующие OAuth, отправляют API-ключ Pexafy в виде bearer-токена на тот же эндпоинт — именно это делает коннектор пригодным для запуска из cron-задачи на сборочном сервере, где никто не может нажать «Allow». Пошаговое подключение для Claude, ChatGPT и конфигурационного файла флота приведено в
статье про пайплайн; оно не менялось.
HTTP API — когда никого нет. Пакетное задание, заполняющее пул для 800 тематических кластеров, не должно притворяться чат-клиентом: тот же аккаунт, тот же ключ, обычный HTTP, 100 результатов на вызов. Правила распределения нагрузки, идущие с ним, — заголовки с лимитами скорости, почему 429 за минутный лимит стоит повторить, а 429 за месячную квоту — нет, сколько стоит воркер при большом объёме — принадлежат
статье про иллюстрирование в промышленных масштабах, где этот воркер разобран полностью.
Мысль, которую стоит удержать здесь, более узкая, и на ней держится всё исследование рынка: оба интерфейса доступны программе в день их написания, без очереди и без контракта.
Чего это не решает
Честный список, потому что каждый из этих пунктов кому-то уже стоил откатов.
- Лицензия всё равно определяет использование картинки. Условия API Pexafy не требуют атрибуции, и каждый результат содержит готовую к отображению строку атрибуции — но лицензия, приложенная исходной библиотекой, распространяется на ваше использование этого фото. Выводите кредит автоматически; это дешевле, чем аудит постфактум.
- Каталоги со свободными лицензиями — это не редакционные архивы. Никаких новостей, спорта, узнаваемых брендов или публичных персон по запросу. Если вашей странице нужна фотография конкретного события или человека — для этого существуют лицензированные лидеры рынка, и их коннекторы теперь есть.
- Это поиск, и только поиск. Диаграммы, графики и скриншоты создаются из кода, а не находятся через поиск; дедупликация по вашим страницам — это столбец в вашей базе данных, а не параметр эндпоинта; и ни одна фотография не помогает тонкой странице ранжироваться выше — политика Google в отношении спама одинаково относится к массовому созданию некачественного контента, независимо от того, иллюстрированы страницы или нет.6 Эти три пункта — проблемы пайплайна с решениями пайплайна, разобранными в статье про пайплайн и статье про объём.
С чего начать
- Повторите тест. Двадцать строк, без ключа. Каким бы API изображений вы сейчас пользовались, отправьте ему три брифа вашего собственного агента без изменений и посчитайте пустые результаты.
- Подключите один коннектор к ассистенту, которым вы уже пользуетесь, и попросите его, предложением, найти фото, которое вам действительно нужно на этой неделе. Это вся оценка.
- Перенесите брифы в агента — одна сцена на слот, написанная из черновика, а не из заголовка.
- Добавьте столбец
photo_idпрежде чем публиковать что-либо в больших объёмах. - Запустите это на бесплатном уровне — 5,000 поисков в месяц по 20 в минуту, пока не оконное ограничение на сборку, а не счёт, вынудит вас перейти на более высокий уровень.
Источники и примечания
1 Спецификация Model Context Protocol от 28 июля 2026 года: состояние-независимое ядро запрос/ответ, валидация издателя по RFC 9207, документы метаданных Client ID, заменяющие динамическую регистрацию клиентов, и названия методов/инструментов, передаваемые в HTTP-заголовках для маршрутизации через шлюз.
2 Пресс-центр Getty Images, 12 августа 2026 года — «Getty Images запускает MCP-сервер для подключения творческого и редакционного контента к рабочим процессам и продуктам на базе ИИ». Страница доступа указывает, что использование требует активного соглашения с Getty Images, например Premium Access, и принятия условий Web Service.
3 Каталог Shutterstock открыт через MCP-сервер, предлагающий 24 инструмента (поиск, коллекции, лицензирование), распространяемый через сторонную MCP-платформу, а не анонсированный на собственном портале разработчиков Shutterstock на момент написания статьи; лицензирование и загрузка требуют аккаунта с активной подпиской.
4 Getty Images Holdings, итоговые результаты за 2025 год (опубликованы 16 марта 2026 года): выручка составила 981,3 млн долларов, рост на 4,5% год к году.
5 Mordor Intelligence, рынок стоковой фотографии: 5,44 млрд долларов США в 2026 году, рост со среднегодовым темпом 6,86%. Оценки размера рынка варьируются в зависимости от методологии; здесь эта цифра приводится лишь для порядка величины.
6 Политика Google в отношении спама — массовое создание некачественного контента: генерация большого количества страниц преимущественно для манипуляции ранжированием и предложение малой ценности пользователям, независимо от того, создан ли контент с помощью автоматизации, человеческого труда или их комбинации.
Первичные источники, проверены 18 августа 2026 года: API реестра MCP · спецификация MCP · анонс MCP от Getty Images · документация API Unsplash · документация API Pexels · документация API Pixabay · API Openverse · политика Google в отношении спама · документация API и MCP Pexafy. Счётчики Openverse, счётчики результатов Pexafy и все значения задержки в этой статье — живые значения, зафиксированные в тот день; лимиты плана взяты из живого каталога цен на момент рендеринга.
Часто задаваемые вопросы
Почему API фотобанков не находят ничего, когда ИИ-агент отправляет запрос?
elderly couple), тот же каталог вернул сотни. Pixabay ограничивает запрос 100 символами, и большинство агентских запросов уже сами по себе превышают этот лимит. Семантический движок embeds всё предложение целиком, поэтому такие уточнения, как «уставший» или «ночью», меняют ранжирование, а не ломают совпадение.Существует ли официальный MCP-сервер для Unsplash, Pexels или Pixabay?
Сколько стоит MCP-сервер Getty Images и кто может им пользоваться?
Что нужно API поиска изображений, чтобы им мог пользоваться ИИ-агент?
Может ли ИИ-ассистент искать фотографии и показывать их прямо в диалоге?
mcp.pexafy.com/mcp предоставляет три доступных только для чтения инструмента — search_photos (по предложению), search_photos_by_image (по референсному изображению, опционально уточняемому словами) и get_similar_photos — и возвращает пронумерованные результаты с миниатюрами, отображаемыми прямо в интерфейсе в клиентах, поддерживающих MCP Apps. Результаты ранжируются как #1, #2, #3…, так что запрос «похожее на #3» работает без копирования идентификаторов. Вход выполняется через OAuth 2.1 в окне браузера; клиенты без OAuth могут вместо этого отправлять API-ключ в качестве bearer-токена.