AI Directories
официальныйИскать в каталоге AI Directories, просматривать объявления и листать каталоги подачи заявок
Что можно делать с AI Directories MCP?
- Поиск AI-инструментов — Попросите найти AI-инструменты по ключевому слову, категории, тегу или цене с помощью
search_tools. - Получение деталей инструмента — Запросите полный публичный список для любого инструмента по слагу через
get_tool, включая скриншоты и FAQ. - Просмотр популярных инструментов — Попросите показать самые популярные AI-инструменты по количеству открытий, с возможностью фильтрации по категории, с помощью
get_top_tools. - Изучение категорий и тегов — Попросите ассистента перечислить все категории или теги AI-инструментов с количеством, используя
list_categoriesилиlist_tags. - Поиск каталогов для размещения — Ищите каталоги по названию, стоимости или категории с помощью
search_directories, чтобы определить цели для размещения. - Получение профилей каталогов — Получите полный профиль каталога, включая Domain Rating и требования к бейджам, через
get_directory.
Документация
Developers
API и MCP
Официальный каталог AI Directories — поиск AI-инструментов и каталогов для подачи заявок из curl или агента. Бесплатно, документировано и лучше, чем парсинг.
RESTGET · Bearer aid_
MCPStreamable HTTP
OpenAPIмашинная спецификация
Ищите в каталоге AI Directories, просматривайте листинги и каталоги подачи заявок — из агента или из curl. REST и MCP используют один и тот же бэкенд. Сторонние парсеры оборачивают наши публичные страницы и берут плату за выгрузку. Это официальный источник.
Пример — GET /tools/transclipper
curl -s "https://www.aidirectori.es/api/v1/tools/transclipper" \
-H "Authorization: Bearer aid_your_api_key"
{
"success": true,
"data": {
"id": "69b81f3e40816562014e004a",
"slug": "transclipper",
"name": "TransClipper",
"url": "https://www.aidirectori.es/ai-tools/transclipper",
"website": "https://transclipper.ai",
"tagline": "Steal the Blueprint Behind Any Viral Video",
"description": "TransClipper is a powerful AI-driven tool designed for efficient content clipping and transcription.",
"category": { "slug": "video", "name": "Video" },
"tags": [
{ "slug": "ai", "name": "AI" },
{ "slug": "content-creation", "name": "Content Creation" }
],
"pricing": "FREE",
"rating": 4,
"opens": 4030,
"featured": true,
"icon": "https://cdn.aidirectori.es/icons/1784893027853-vpj1hwsqkq.png"
}
}
Что вы можете делать
- Искать AI-инструменты по ключевому слову, категории, тегу или цене
- Получать один инструмент по слагу (полный публичный листинг)
- Просматривать категории и теги
- Искать каталоги подачи заявок (DR, стоимость, бейдж)
- Получать профиль одного каталога с вашим ключом aid_
Что вы не можете делать
- Читать email основателей или приватную аналитику
- Парсить HTML-сайт или имитировать краулер
- Переиздавать каталог как конкурирующий справочник
- Вызывать партнёрские write API без выданного ключа
Зачем это существует
Люди парсили aidirectori.es и продавали выгрузку. Официальный API бесплатен для продуктов, исследований и агентов — с атрибуцией, лимитами и лицензией: вы не можете переиздавать полный каталог как конкурирующий справочник или платный парсинг.
Подключение к агенту
Cursor: .cursor/mcp.json или ~/.cursor/mcp.json. Без пробела после Authorization: — mcp-remote разделяет по пробелам. См. Установка MCP.
{
"mcpServers": {
"aidirectories": {
"command": "npx",
"args": [
"-y", "mcp-remote",
"https://www.aidirectori.es/api/mcp",
"--header", "Authorization:Bearer aid_your_real_key"
]
}
}
}
Также в машиночитаемом виде
- /llms.txt — краткое описание сайта для агентов
- /sitemap.xml
- 60 запросов/мин · 400/час на IP
Начало работы / Быстрый старт
Быстрый старт
Создайте ключ aid_, затем ищите инструменты, получайте один листинг и ищите каталоги.
Создайте ключ на панели разработчика, затем скопируйте эти данные.
1. Поиск AI-инструментов
curl -s "https://www.aidirectori.es/api/v1/tools?q=image&limit=5" \
-H "Authorization: Bearer aid_your_api_key"
2. Получение одного листинга
curl -s "https://www.aidirectori.es/api/v1/tools/transclipper" \
-H "Authorization: Bearer aid_your_api_key"
3. Поиск каталогов
curl -s "https://www.aidirectori.es/api/v1/directories?q=ai&limit=5" \
-H "Authorization: Bearer aid_your_api_key"
Те же операции через MCP: добавьте сервер с тем же Bearer-токеном, затем вызовите search_tools, get_tool и search_directories. См. Установка MCP.
Начало работы / Аутентификация
Аутентификация
Bearer-токен через API-ключ. Генерируйте ключи на панели разработчика. Стандартный — 10/мин, премиум — 60/мин.
Аутентификация
Bearer-токен через API-ключ. Генерируйте ключи на панели разработчика.
Лимиты запросов
Стандартные ключи получают 10 запросов в минуту. Премиум-ключи — 60. Обновите тариф на панели разработчика. Заголовки лимитов есть в каждом ответе.
Базовый URL
https://www.aidirectori.es/api/v1
-
1 Получите API-ключ
Перейдите на панель разработчика и создайте API-ключ. Ключи начинаются сaid_. Храните его безопасно — вы не сможете увидеть полный ключ снова. Требуется согласие с допустимым использованием Создание ключа требует согласия с Политикой допустимого использования API. Клонирование бизнесов, пересборка AI Directories, массовая перепубликация, несанкционированные публичные SEO-страницы, оскорбительный таргетинг, обмен учётными данными и обход контроля доступа запрещены и могут привести к постоянному бану платформы. -
2 Сделайте первый запрос
Передайте ключ как Bearer-токен в заголовкеAuthorization.X-API-Keyтакже принимается на каждой конечной точке. Они взаимозаменяемы — доступ ключа зависит от самого ключа, а не от заголовка, в котором он отправлен. Ключ панелиaid_всё равно получает403на партнёрских конечных точках при отправке какX-API-Key; если вы видите 403, вам нужен другой ключ, а не другой заголовок.curl -s "https://www.aidirectori.es/api/v1/tools?q=ai&limit=5" \ -H "Authorization: Bearer aid_your_api_key" -
3 Разберите ответ
Успешные чтения возвращают{ success: true, data }. Конечные точки со списками также включаютpagination— его поля и правила ограничения лимита стоит прочитать перед написанием цикла пагинации. Следите заX-RateLimit-Remaining.{ "success": true, "data": [ { "slug": "transclipper", "name": "TransClipper", "website": "https://transclipper.ai" } ] }
Партнёрские ключи
Партнёры-каталоги, которые отправляют нам инструменты для сервиса подачи, используют выданный ключ для POST /submit-ai-tool, статуса, вебхуков и поддержки. Эти ключи также работают для чтения каталога. См. Есть каталог?.
MCP / Установка
Установка MCP
Хостируемый Streamable HTTP MCP — отправляйте тот же Bearer-ключ, что и для REST.
Сервер говорит по протоколу Model Context Protocol через Streamable HTTP. Он хостируется. Каждый инструмент оборачивает те же функции, что и REST API. Отправляйте Authorization: Bearer aid_… с панели разработчика.
https://www.aidirectori.es/api/mcp
Claude Code
claude mcp add --transport http aidirectories https://www.aidirectori.es/api/mcp \
--header "Authorization: Bearer aid_your_api_key"
Cursor / Claude Desktop
Область проекта: .cursor/mcp.json. Глобально: ~/.cursor/mcp.json. Claude Desktop: claude_desktop_config.json (только stdio — тот же блок).
{
"mcpServers": {
"aidirectories": {
"command": "npx",
"args": [
"-y", "mcp-remote",
"https://www.aidirectori.es/api/mcp",
"--header", "Authorization:Bearer aid_your_real_key"
]
}
}
}
Без пробела после Authorization: — mcp-remote разделяет аргументы по пробелам, поэтому "Authorization: Bearer …" ломает заголовок. Полностью перезапустите клиент после редактирования файла.
После добавления сервера попросите агента перечислить инструменты. Вы должны увидеть search_tools, get_top_tools, get_tool, list_categories, list_tags, search_directories, get_directory и list_directory_categories.
Проверка
curl -s https://www.aidirectori.es/api/mcp -X POST \
-H "Authorization: Bearer aid_your_api_key" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}'
MCP / Инструменты
Инструменты MCP
Каждый инструмент MCP — тонкая обёртка над REST-каталогом.
Аутентификация — тот же Bearer-ключ aid_, что и для REST.
| Инструмент | REST | Входные данные |
|---|---|---|
search_tools | GET /tools | q, category, tag, pricing, featured, page, limit |
get_top_tools | GET /tools/top | limit, category |
get_tool | GET /tools/{slug} | slug |
list_categories | GET /categories | q, limit |
list_tags | GET /tags | q, limit |
search_directories | GET /directories | q, category, cost, featured, page, limit |
get_directory | GET /directories/{slug} | slug |
list_directory_categories | GET /directory-categories | — |
Полные описания полей находятся в разделах AI-инструменты и Каталоги.
REST API / Обзор
REST API
Обычный HTTP для скриптов, CI и партнёрских интеграций. MCP-сервер вызывает те же пути — поэтому результат не зависит от того, какой транспорт использовался.
| Операция | Метод | Путь | Аутентификация | Входные данные |
|---|---|---|---|---|
| search_tools Поиск по ключевому слову с опциональными фильтрами категории, тега, цены и избранного. | GET | /tools | Bearer | q, category, tag, pricing, featured, includeAdult, page, limit |
| get_top_tools Топ N листингов по открытиям — ключевое слово не требуется. | GET | /tools/top | Bearer | limit, category, includeAdult |
| list_categories Категории AI-инструментов с количеством инструментов — используйте перед фильтрацией поиска. | GET | /categories | Bearer | q, limit |
| list_tags Теги AI-инструментов с количеством инструментов. | GET | /tags | Bearer | q, limit |
| get_tool Полный публичный листинг одного AI-инструмента. | GET | /tools/{slug} | Bearer | slug |
| search_directories Поиск каталогов подачи по названию, категории или стоимости. | GET | /directories | Bearer | q, category, cost, featured, page, limit |
| get_directory Полный публичный профиль одного каталога. | GET | /directories/{slug} | Bearer | slug |
| list_directory_categories Метки категорий каталогов для обнаружения фильтров. | GET | /directory-categories | Bearer | — |
| submit_ai_tool Создание листинга AI-инструмента (и опционально постановка в очередь подач в каталоги). | POST | /submit-ai-tool | X-API-Key | name, website, tagline, description, category, pricing, founderName, founderEmail, tags, paymentType, … |
| get_tool_status Проверка прогресса подач в каталоги для инструмента, отправленного вашим ключом. | GET | /ai-tools/status | X-API-Key | id | slug | website |
Обнаружение доступно по адресу GET /, а документ OpenAPI — по адресу GET /openapi.json. Описания полей для ответов каталога находятся в разделах AI-инструменты и Каталоги.
Конверт, пагинация и лимиты
Каждый ответ использует один и тот же конверт. data — массив при поиске и объект при запросе одного элемента. Проверяйте success перед чтением data.
{ "success": true, "data": [], "pagination": { "page": 1, "limit": 20, "total": 0, "pages": 0 } }
{ "success": false, "error": "Invalid or revoked API key." }
GET /tools и GET /directories возвращают объект pagination. Конечные точки таксономии — /categories, /tags, /directory-categories — возвращают весь список и вообще без ключа pagination.
| page | Полученная страница, начиная с 1 |
|---|---|
| limit | Фактически применённое количество элементов на странице |
| total | Совпадающие элементы на всех страницах |
| pages | ceil(total / limit) или 0, если ничего не совпало |
Завышенный лимит усекается, а не отклоняется. Запросите больше максимума — получите максимум с 200 — никакая ошибка не сообщит об этом. /tools и /directories по умолчанию 20 и ограничены 100; /categories и /tags ограничены 500. Отсутствующий, нулевой, отрицательный или нечисловой limit возвращается к значению по умолчанию, а page не опускается ниже 1. Поэтому читайте pagination.limit из ответа, а не предполагайте, что получили запрошенный размер страницы — именно это предположение превращает цикл пагинации в бесконечный.
page=1
while :; do
body=$(curl -s "https://www.aidirectori.es/api/v1/tools?limit=100&page=$page" \
-H "Authorization: Bearer $AID_KEY")
echo "$body" | jq -e '.success' >/dev/null || { echo "$body"; break; }
echo "$body" | jq -c '.data[]'
pages=$(echo "$body" | jq '.pagination.pages')
[ "$page" -ge "$pages" ] && break
page=$((page + 1))
sleep 6 # stay under 10 req/min on a standard key
done
AI-инструменты
Просматривайте, ищите и фильтруйте живой каталог или получайте один листинг по слагу. Соответствует MCP search_tools, get_top_tools, get_tool, list_categories и list_tags.
list_categories
Категории AI-инструментов с количеством инструментов — используйте перед фильтрацией поиска.
| REST | GET /categories |
|---|---|
| MCP | tools/call → list_categories |
| Аутентификация | Bearer |
| Входные данные | q, limit |
curl -s "https://www.aidirectori.es/api/v1/categories" \
-H "Authorization: Bearer aid_your_api_key"
get_top_tools
Топ N листингов по открытиям — ключевое слово не требуется.
| REST | GET /tools/top |
|---|---|
| MCP | tools/call → get_top_tools |
| Аутентификация | Bearer |
| Входные данные | limit, category, includeAdult |
curl -s "https://www.aidirectori.es/api/v1/tools/top?limit=10&category=image" \
-H "Authorization: Bearer aid_your_api_key"
search_tools
Поиск по ключевому слову с опциональными фильтрами категории, тега, цены и избранного.
| REST | GET /tools |
|---|---|
| MCP | tools/call → search_tools |
| Аутентификация | Bearer |
| Входные данные | q, category, tag, pricing, featured, includeAdult, page, limit |
curl -s "https://www.aidirectori.es/api/v1/tools?q=ai&limit=5" \
-H "Authorization: Bearer aid_your_api_key"
get_tool
Полный публичный листинг одного AI-инструмента.
| REST | GET /tools/{slug} |
|---|---|
| MCP | tools/call → get_tool |
| Аутентификация | Bearer |
| Входные данные | slug |
curl -s "https://www.aidirectori.es/api/v1/tools/transclipper" \
-H "Authorization: Bearer aid_your_api_key"
list_tags
Теги AI-инструментов с количеством инструментов.
| REST | GET /tags |
|---|---|
| MCP | tools/call → list_tags |
| Аутентификация | Bearer |
| Входные данные | q, limit |
curl -s "https://www.aidirectori.es/api/v1/tags" \
-H "Authorization: Bearer aid_your_api_key"
Каталоги
Каталог каталогов подачи — Domain Rating, стоимость, бейдж и категории. Соответствует MCP search_directories, get_directory и list_directory_categories.
search_directories
Поиск каталогов подачи по названию, категории или стоимости.
| REST | GET /directories |
|---|---|
| MCP | tools/call → search_directories |
| Аутентификация | Bearer |
| Входные данные | q, category, cost, featured, page, limit |
curl -s "https://www.aidirectori.es/api/v1/directories?cost=Free&limit=10" \
-H "Authorization: Bearer aid_your_api_key"
get_directory
Полный публичный профиль одного каталога.
| REST | GET /directories/{slug} |
|---|---|
| MCP | tools/call → get_directory |
| Аутентификация | Bearer |
| Входные данные | slug |
curl -s "https://www.aidirectori.es/api/v1/directories/theres-an-ai-for-that" \
-H "Authorization: Bearer aid_your_api_key"
list_directory_categories
Метки категорий каталогов для обнаружения фильтров.
| REST | GET /directory-categories |
|---|---|
| MCP | tools/call → list_directory_categories |
| Аутентификация | Bearer |
| Входные данные | — |
curl -s "https://www.aidirectori.es/api/v1/directory-categories" \
-H "Authorization: Bearer aid_your_api_key"
Партнёры
Конечные точки записи и статуса требуют выданный X-API-Key. Храните его на сервере. MCP не вызывает их. Полные списки полей находятся в разделе Подача и партнёры.
submit_ai_tool
Создание листинга AI-инструмента (и опционально постановка в очередь подач в каталоги).
| REST | POST /submit-ai-tool |
|---|---|
| MCP | — |
| Auth | X-API-Key |
| Input | name, website, tagline, description, category, pricing, founderName, founderEmail, tags, paymentType, … |
curl -s -X POST "https://www.aidirectori.es/api/v1/submit-ai-tool" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "My Tool",
"website": "https://mytool.com",
"tagline": "One-line pitch",
"description": "What the product does.",
"category": "productivity",
"pricing": "FREE",
"paymentType": "pro",
"founderName": "Jane Founder",
"founderEmail": "jane@mytool.com",
"tags": ["ai", "productivity"],
"icon": "https://mytool.com/icon.png",
"frame": "https://mytool.com/screenshot.png",
"screenshots": ["https://mytool.com/gallery-1.png"]
}'
get_tool_status
Опрос статуса отправки в каталоги для инструмента, который отправил ваш ключ.
| REST | GET /ai-tools/status |
|---|---|
| MCP | — |
| Auth | X-API-Key |
| Input | id | slug | website |
curl -s "https://www.aidirectori.es/api/v1/ai-tools/status?slug=my-ai-tool" \
-H "X-API-Key: YOUR_API_KEY"
REST API / AI-инструменты
AI-инструменты
Просмотр, поиск и получение опубликованных списков AI-инструментов.
search_tools
Поиск по ключевым словам с фильтрами по категории, тегу, цене и избранному.
| REST | GET /tools |
|---|---|
| MCP | search_tools |
| Auth | Bearer aid_ |
| Input | q, category, tag, pricing (FREE | FREEMIUM | PAID), featured, includeAdult, page, limit (макс. 100) |
curl -s "https://www.aidirectori.es/api/v1/tools?q=transclipper&limit=5" \
-H "Authorization: Bearer aid_your_api_key"
Каждый элемент включает name, slug, listing URL, website, tagline, description, category, tags, pricing, rating, opens, icon и временные метки. Без email основателя.
Взрослые списки по умолчанию исключены. search_tools и get_top_tools скрывают взрослые списки, если вы их не запрашиваете.
Исключение происходит по категории и тегу, потому что взрослые инструменты часто размещаются в общей категории — image, writing, video — при этом корректно помечая себя тегами. Поэтому category=image возвращает инструменты для работы с изображениями без приложений для раздевания.
Три способа включить: includeAdult=true, category=nsfw или указание взрослого тега, например tag=ai-undressing. Ничего не скрыто и не недоступно — это просто не то, что вы получаете, когда не просили.
get_top_tools
Самые открываемые опубликованные инструменты. Необязательный slug категории.
curl -s "https://www.aidirectori.es/api/v1/tools/top?limit=10&category=image" \
-H "Authorization: Bearer aid_your_api_key"
get_tool
Полный публичный список: скриншоты, FAQ, соцсети, функции.
curl -s "https://www.aidirectori.es/api/v1/tools/transclipper" \
-H "Authorization: Bearer aid_your_api_key"
list_categories / list_tags
curl -s "https://www.aidirectori.es/api/v1/categories" -H "Authorization: Bearer aid_your_api_key"
curl -s "https://www.aidirectori.es/api/v1/tags?q=photo" -H "Authorization: Bearer aid_your_api_key"
Категории возвращают slug, name, description, icon, toolsCount. Теги возвращают slug, name, toolsCount. Ни то, ни другое не разбито на страницы — вы получаете весь список, поэтому кэшируйте его и фильтруйте локально.
Поля инструментов
Возвращаются одинаково в /tools, /tools/top и /tools/{slug}:
| Поле | Тип | Примечания |
|---|---|---|
id | string | Стабильный идентификатор |
slug | string | Используйте это для /tools/{slug} |
name, tagline, description | string | |
url | string | Список на aidirectori.es |
website | string | Собственный сайт продукта |
category | object | { slug, name } или null |
tags | array | [{ slug, name }] |
pricing | string | FREE | FREEMIUM | PAID |
rating | number | 0, если нет оценки |
opens | number | Переходы; то, по чему сортирует /tools/top |
featured | boolean | |
icon, frame | string | URL изображений, nullable |
founderName, location | string | Nullable. Никогда не содержит email основателя |
domainRating | number | Nullable |
isForSale, askingPrice | boolean, number | Списки, отмеченные для приобретения |
discountCode, affiliate | string, boolean | |
createdAt, updatedAt | string | ISO 8601, nullable |
GET /tools/{slug} добавляет screenshots (массив URL), video, socials, faqs, features и affiliateLink. Эти шесть доступны только в конечной точке одного инструмента — не ожидайте их от поиска.
Любое поле может быть null, если список не заполнен. Пишите код с защитой от этого.
REST API / Каталоги
Каталоги
Вторая половина каталога — каталоги для отправки стартапов и SaaS, с DR и ценами.
Скреперы обычно это пропускают. Это список, в который мы фактически отправляем продукты.
search_directories
| REST | GET /directories |
|---|---|
| MCP | search_directories |
| Auth | Bearer aid_ |
| Input | q, category, cost (Free | Paid | Freemium), featured, page, limit |
curl -s "https://www.aidirectori.es/api/v1/directories?cost=Free&limit=10" \
-H "Authorization: Bearer aid_your_api_key"
Поля включают name, listing URL, website, Domain Rating, ежемесячные посещения, тип ссылки, требование бейджа, минимальную цену и категории.
get_directory
Добавляет описание, FAQ, ссылку для отправки и текст сделки.
curl -s "https://www.aidirectori.es/api/v1/directories/theres-an-ai-for-that" \
-H "Authorization: Bearer aid_your_api_key"
list_directory_categories
curl -s "https://www.aidirectori.es/api/v1/directory-categories" \
-H "Authorization: Bearer aid_your_api_key"
Возвращает только slug и name. Без разбивки на страницы. Это значения, которые принимает ?category= — читайте их, а не угадывайте.
Поля каталогов
| Поле | Тип | Примечания |
|---|---|---|
id, slug, name | string | |
url | string | Профиль на aidirectori.es |
website | string | Собственный сайт каталога |
icon | string | Nullable |
cost | string | Free | Paid | Freemium |
type | string | Тип ссылки |
domainRating | number | Nullable — число, по которому большинство сортирует |
monthlyVisits | number | Nullable |
requiresBadge | boolean | Требуют ли они бейдж обратной ссылки |
minimumPrice | number | 0, если бесплатно |
submissionExperience | string | Nullable |
featured | boolean | |
categories | array | [{ slug, name }] |
smallDescription | string | Nullable |
createdAt, updatedAt | string | ISO 8601 |
GET /directories/{slug} добавляет fullDescription, features, useCases, faq, deal ({ text, code } или null), frame и socials.
Обратите внимание на два поля url: url — это наша страница профиля, website — сам каталог. Прямые URL форм отправки (submissionLink) не входят в API каталога или MCP — они являются частью платного списка продуктов на сайте и в панели управления.
Выбор целей для отправки
curl -s "https://www.aidirectori.es/api/v1/directories?cost=Free&limit=100" \
-H "Authorization: Bearer $AID_KEY" \
| jq -r '.data
| map(select(.requiresBadge == false and .domainRating != null))
| sort_by(-.domainRating)
| .[]
| [.domainRating, .name, .website] | @tsv'
Бесплатно, без требования бейджа, сначала самые сильные домены.
REST API / Отправка и партнеры
Отправка и партнеры
Конечные точки API-ключа для отправки инструментов, опроса статуса, вебхуков и поддержки.
Они не анонимны. Мы выдаем ключ каждому партнеру. MCP их не вызывает.
Отправка инструмента
POST https://www.aidirectori.es/api/v1/submit-ai-tool
Создает список. Отправьте paymentType, чтобы поставить в очередь отправку в каталоги для этого пакета. Опустите его — и инструмент будет создан как ожидающий, чтобы пакет можно было установить позже в админке.
Обязательные
9
Отсутствие любого из них возвращает 400.
ПолеТипПримечания
namestring Максимум 100 символов.websiteurl Публичный URL продукта.taglinestring Максимум 200 символов.descriptionstring Что делает продукт.categorystring Slug или имя. Мы сопоставляем его с существующей категорией.pricingenumFREEPAIDFREEMIUMСобственная цена продукта — не пакет каталога.founderNamestring Вы собираете это до POST.founderEmailemail Вы собираете это. Никогда не возвращается при публичном чтении каталога. Не отправляйте из браузера.tagsstring[] Slug или имена.
Рекомендуемые
5
Запрос выполняется и без них — мы генерируем slug, получаем иконку/og:image и оставляем пакет как ожидающий. Отправляйте их, когда они у вас есть.
ПолеТипПримечания
paymentTypeenumstarterpropremiumПакет каталога: 30+, 60+ или 100+ отправок. Отправьте это, если клиент уже выбрал пакет. Опустите только если хотите создать инструмент как ожидающий, чтобы админ установил его позже.slugstring Публичный slug URL. Генерируется из имени (с уникализацией), если опущен — отправьте его, когда у вас уже есть стабильный slug.iconurl Квадратный логотип. Если опущен, мы получаем favicon сайта — отправьте свой для лучшего списка.frameurl Основной скриншот. Если опущен, мы получаем og:image — отправьте снимок продукта, когда он у вас есть.screenshotsurl[] Изображения галереи, зеркалируются на Cloudflare. Не обязательны; обложка закрывает hero, если это пусто.
Необязательные
11
Изображения по публичным URL зеркалируются на Cloudflare.
ПолеТипПримечания
videourl YouTube или Vimeo.socialsobject Ключи к URL, например{ "twitter": "https://x.com/…" }.featuresobject Строковая карта, например{ "Templates": "50+" }. Генерируется, если опущено.faqarray Если опущено, извлекается с сайта или генерируется.affiliatestring Текст партнерской программы.affiliateLinkurldiscountCodestring Промокод, показанный в списке.locationstring Где базируется компания.foundingDatestring Дата основания, в свободной форме.isCustomerboolean Являются ли они уже клиентом.isLaunchedboolean Работает ли продукт.
curl -s -X POST "https://www.aidirectori.es/api/v1/submit-ai-tool" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "My Tool",
"website": "https://mytool.com",
"tagline": "One-line pitch",
"description": "What the product does.",
"category": "productivity",
"pricing": "FREE",
"paymentType": "pro",
"founderName": "Jane Founder",
"founderEmail": "jane@mytool.com",
"tags": ["ai", "productivity"],
"icon": "https://mytool.com/icon.png",
"frame": "https://mytool.com/screenshot.png",
"screenshots": ["https://mytool.com/gallery-1.png"]
}'
Опрос статуса отправки
GET https://www.aidirectori.es/api/v1/ai-tools/status — найдите инструмент, отправленный вашим ключом, с помощью ровно одного из id, slug или website. Инструменты других клиентов возвращают 404.
Используйте это в любое время — не только когда срабатывает вебхук. Опрашивайте, пока summary.isComplete равен false, затем остановитесь (или ждите Done). submissionState равен IN_QUEUE, ASSIGNED, IN_PROGRESS, REVIEW, DONE или null, когда нет рабочего процесса каталога.
curl -s "https://www.aidirectori.es/api/v1/ai-tools/status?slug=my-ai-tool" \
-H "X-API-Key: YOUR_API_KEY"
Вебхук
Мы отправляем POST JSON на HTTPS URL, сохраненный в вашем API-клиенте — не при каждой отправке. Дайте нам URL при подаче заявки; мы сохраняем его как webhookUrl и отправляем вам секрет подписи. И события Done каталога, и ответы поддержки попадают на эту же конечную точку.
Событие каталога срабатывает, когда админ нажимает Done на инструменте, отправленном вашим ключом, и webhookUrl установлен. Отсутствующий URL: мы ничего не отправляем. Ваша конечная точка недоступна или не-2xx: инструмент все равно помечается как Done. Мы пока не повторяем — опрашивайте статус, если нужен запасной вариант.
События
2
Читайте X-AI-Directories-Event перед разбором тела.
ПолеТипПримечания
directory_submissions.completedDone Админ отметил работу каталога как Done для инструмента, отправленного вашим ключом. Полезная нагрузка — { event, occurredAt, tool, summary, submissions }.support.repliedreply Ответ поддержки готов (AI или человек). Полезная нагрузка — { event, occurredAt, conversation }. Только если поддержка включена.
Запрос
| Метод | POST |
|---|---|
| Content-Type | application/json |
| Auth | Заголовок HMAC — не ваш API-ключ |
Заголовки
3
ПолеТипПримечания
X-AI-Directories-Eventstring Какую полезную нагрузку вы получили. Ветвитесь по этому — один и тот же URL получает оба события.X-AI-Directories-Signaturestring sha256=<hex> HMAC необработанного тела с вашим секретом подписи. Присутствует, когда мы выдали секрет.User-Agentstring AI-Directories-Webhook/1.0
Проверка подписи
HMAC-SHA256 по необработанному телу запроса с секретом, который мы вам дали. Сравните шестнадцатеричный дайджест с X-AI-Directories-Signature после удаления префикса sha256=. Используйте сравнение, устойчивое к таймингу.
const crypto = require("crypto");
function verifySignature(rawBody, signatureHeader, secret) {
const expected = crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
const received = String(signatureHeader || "").replace(/^sha256=/, "");
return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(received));
}
Полезная нагрузка
submissions включает только каталоги, в которые мы фактически отправили. Каждая строка может включать живой listingUrl, скриншот-доказательство, рейтинг домена и кто отправил (ADMIN или OWNER). Верните 2xx для подтверждения.
{
"event": "directory_submissions.completed",
"occurredAt": "2026-09-01T13:00:00.000Z",
"tool": {
"id": "64a1b2c3d4e5f6789012345",
"name": "My AI Tool",
"slug": "my-ai-tool",
"website": "https://myaitool.com",
"paymentStatus": "prolist",
"paymentLabel": "Pro · 60+",
"targetDirectoriesCount": 60
},
"summary": {
"submittedCount": 62,
"recordedSubmissions": 62,
"notes": "All high-DR directories completed"
},
"submissions": [
{
"name": "There's An AI For That",
"slug": "theres-an-ai-for-that",
"url": "https://theresanaiforthat.com",
"listingUrl": "https://theresanaiforthat.com/ai/my-ai-tool",
"domainRating": 81,
"isSubmitted": true,
"submittedBy": "ADMIN",
"submittedAt": "2026-09-01T12:00:00.000Z"
}
]
}
Поддержка клиентов
Пересылайте вопрос из вашего пользовательского интерфейса; мы отвечаем из вашей базы знаний, когда можем, или человек отвечает в нашей панели управления. Выключено по умолчанию — пока мы не включим это, POST /support/ask возвращает 403. Тот же X-API-Key, что и при отправке. MCP не может это вызвать.
Режим по умолчанию — гибридный: AI отвечает, когда может, иначе разговор остается pending для человека. Мы можем установить клиенту режим только-человек (без AI). Без знаний о продукте вопросы ждут человека.
Отправка вопроса
POST https://www.aidirectori.es/api/v1/support/ask
Тело
5 question является обязательным. Используйте conversationId или externalId, чтобы продолжить ветку обсуждения. Клиенты, работающие только с человеком, могут отправлять metadata.peerPushMessageId для идемпотентных повторных попыток.
FieldTypeNotes
questionstring Вопрос клиента. Максимум 4000 символов. Также принимается message.conversationIdstring Продолжение ветки, которую мы вернули ранее.externalIdstring Ваш тикет или идентификатор ветки. Повторное использование продолжает тот же разговор.customerobject Необязательный{ name, email, id }для конечного клиента — не для основателя из submit.metadataobject Произвольный JSON, хранящийся в разговоре.
curl -s -X POST "https://www.aidirectori.es/api/v1/support/ask" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"question": "How do I cancel my subscription?",
"externalId": "ticket-123",
"customer": { "name": "Ada", "email": "ada@example.com" }
}'
Гибридный/ИИ: 200 с status: "answered" означает, что reply готов (replySource — это ai или human). pending означает опрос или ожидание вебхука.
{
"success": true,
"data": {
"id": "64a1b2c3d4e5f6789012345",
"status": "answered",
"externalId": "ticket-123",
"reply": "You can cancel from Settings → Billing.",
"replySource": "ai",
"messages": [
{ "role": "customer", "content": "How do I cancel my subscription?" },
{ "role": "assistant", "content": "You can cancel from Settings → Billing.", "source": "ai" }
]
}
}
Клиенты, работающие только с человеком, получают компактный конверт — без истории, customer или messages[]. message — это null до тех пор, пока человек не ответит, затем — одно сообщение агента.
{
"success": true,
"data": {
"id": "64a1b2c3d4e5f6789012345",
"externalId": "ticket-123",
"status": "pending",
"message": null
}
}
Опрос разговора
GET https://www.aidirectori.es/api/v1/support/conversations/:id — или список с ?id=, ?externalId= или ?status=pending. Рекомендуемый интервал в ожидании: 5–15 секунд. Результаты гибридного списка опускают полный массив messages; только для человека возвращается та же компактная форма, что и в ask.
curl -s "https://www.aidirectori.es/api/v1/support/conversations/64a1b2c3d4e5f6789012345" \
-H "X-API-Key: YOUR_API_KEY"
Вебхук, когда ответ готов
Если установлен webhookUrl, мы отправляем POST support.replied — тот же HMAC, что и в directory Done. Полезная нагрузка гибридного/ИИ использует reply / replySource. Только для человека используется единственный conversation.message с role: "agent" и source: "human".
{
"event": "support.replied",
"occurredAt": "2026-09-09T09:01:00.000Z",
"conversation": {
"id": "64a1b2c3d4e5f6789012345",
"status": "answered",
"externalId": "ticket-123",
"reply": "You can cancel from Settings → Billing.",
"replySource": "human"
}
}
{
"event": "support.replied",
"occurredAt": "2026-09-11T12:00:00.000Z",
"conversation": {
"id": "64a1b2c3d4e5f6789012345",
"externalId": "ticket-123",
"status": "answered",
"message": {
"id": "...",
"role": "agent",
"source": "human",
"content": "Thanks — here's how to cancel…",
"createdAt": "2026-09-11T12:00:00.000Z"
}
}
}
Напишите на support@thedirectori.es для получения ключа, URL вебхука, секрета подписи или доступа в поддержку — или подайте заявку с Got a directory?.
Справочник / Лимиты запросов
Лимиты запросов
Стандартные ключи получают 10 запросов в минуту. Премиум-ключи — 60. Заголовки в каждом ответе.
Лимиты применяются к каждому API-ключу, а не к IP — и REST, и MCP используют отдельные бюджеты, поэтому всплеск активности агента не может исчерпать ваши серверные скрипты.
| Ключ | REST / минуту | MCP / минуту |
|---|---|---|
Стандартный (aid_ из панели управления) | 10 | 30 |
| Премиум (платный план Catalog API, грант администратора или выданный партнёрский ключ) | 60 | 120 |
Бюджет MCP больше, потому что агенты разветвляются: один вопрос пользователя обычно превращается в несколько параллельных вызовов инструментов.
Рукопожатие бесплатно
initialize, notifications/initialized, ping и tools/list ничего не стоят. Подключение клиента или его перезапуск не расходует вашу квоту — только tools/call это делает. Некорректное тело запроса также не тарифицируется.
Каждый ответ включает X-RateLimit-Limit, X-RateLimit-Remaining и X-RateLimit-Reset. 429 также отправляет Retry-After.
Обновите тариф из вашей панели разработчика ($9/месяц). Не выдавайте себя за поисковые или ассистентские краулеры, чтобы выгружать каталог.
Нужен более высокий лимит? Напишите на support@thedirectori.es.
Партнёрские ключи submit/support имеют собственные лимиты записи; при чтении они используют премиум-бюджет каталога.
Справочник / Ошибки
Ошибки
Формат ошибок JSON и HTTP-статусы.
{ "success": false, "error": "Tool not found." }
| HTTP | Значение |
|---|---|
| 400 | Неверный запрос |
| 401 | Отсутствует или недействителен API-ключ |
| 403 | Ключ действителен, но функция не включена |
| 404 | Инструмент, каталог или разговор не найден |
| 429 | Превышен лимит запросов |
| 500 / 503 | Проблема с сервером или базой данных — повторите попытку |
MCP использует ошибки JSON-RPC (-32601 метод не найден, -32603 внутренняя ошибка и полезные нагрузки инструмента isError).