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

Открыть в Claude

API и MCP

Официальный каталог AI Directories — поиск AI-инструментов и каталогов для подачи заявок из curl или агента. Бесплатно, документировано и лучше, чем парсинг.

RESTGET · Bearer aid_

www.aidirectori.es/api/v1

MCPStreamable HTTP

api/mcp

OpenAPIмашинная спецификация

openapi.json

Ищите в каталоге 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"
      ]
    }
  }
}

Также в машиночитаемом виде

Начало работы / Быстрый старт

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

Создайте ключ 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. 1 Получите API-ключ

    Перейдите на панель разработчика и создайте API-ключ. Ключи начинаются с aid_. Храните его безопасно — вы не сможете увидеть полный ключ снова. Требуется согласие с допустимым использованием Создание ключа требует согласия с Политикой допустимого использования API. Клонирование бизнесов, пересборка AI Directories, массовая перепубликация, несанкционированные публичные SEO-страницы, оскорбительный таргетинг, обмен учётными данными и обход контроля доступа запрещены и могут привести к постоянному бану платформы.
  2. 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. 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_toolsGET /toolsq, category, tag, pricing, featured, page, limit
get_top_toolsGET /tools/toplimit, category
get_toolGET /tools/{slug}slug
list_categoriesGET /categoriesq, limit
list_tagsGET /tagsq, limit
search_directoriesGET /directoriesq, category, cost, featured, page, limit
get_directoryGET /directories/{slug}slug
list_directory_categoriesGET /directory-categories—

Полные описания полей находятся в разделах AI-инструменты и Каталоги.

REST API / Обзор

REST API

Обычный HTTP для скриптов, CI и партнёрских интеграций. MCP-сервер вызывает те же пути — поэтому результат не зависит от того, какой транспорт использовался.

ОперацияМетодПутьАутентификацияВходные данные
search_tools Поиск по ключевому слову с опциональными фильтрами категории, тега, цены и избранного.GET/toolsBearerq, category, tag, pricing, featured, includeAdult, page, limit
get_top_tools Топ N листингов по открытиям — ключевое слово не требуется.GET/tools/topBearerlimit, category, includeAdult
list_categories Категории AI-инструментов с количеством инструментов — используйте перед фильтрацией поиска.GET/categoriesBearerq, limit
list_tags Теги AI-инструментов с количеством инструментов.GET/tagsBearerq, limit
get_tool Полный публичный листинг одного AI-инструмента.GET/tools/{slug}Bearerslug
search_directories Поиск каталогов подачи по названию, категории или стоимости.GET/directoriesBearerq, category, cost, featured, page, limit
get_directory Полный публичный профиль одного каталога.GET/directories/{slug}Bearerslug
list_directory_categories Метки категорий каталогов для обнаружения фильтров.GET/directory-categoriesBearer—
submit_ai_tool Создание листинга AI-инструмента (и опционально постановка в очередь подач в каталоги).POST/submit-ai-toolX-API-Keyname, website, tagline, description, category, pricing, founderName, founderEmail, tags, paymentType, …
get_tool_status Проверка прогресса подач в каталоги для инструмента, отправленного вашим ключом.GET/ai-tools/statusX-API-Keyid | 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Совпадающие элементы на всех страницах
pagesceil(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-инструментов с количеством инструментов — используйте перед фильтрацией поиска.

RESTGET /categories
MCPtools/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 листингов по открытиям — ключевое слово не требуется.

RESTGET /tools/top
MCPtools/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

Поиск по ключевому слову с опциональными фильтрами категории, тега, цены и избранного.

RESTGET /tools
MCPtools/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-инструмента.

RESTGET /tools/{slug}
MCPtools/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-инструментов с количеством инструментов.

RESTGET /tags
MCPtools/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

Поиск каталогов подачи по названию, категории или стоимости.

RESTGET /directories
MCPtools/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

Полный публичный профиль одного каталога.

RESTGET /directories/{slug}
MCPtools/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

Метки категорий каталогов для обнаружения фильтров.

RESTGET /directory-categories
MCPtools/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-инструмента (и опционально постановка в очередь подач в каталоги).

RESTPOST /submit-ai-tool
MCP—
AuthX-API-Key
Inputname, 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

Опрос статуса отправки в каталоги для инструмента, который отправил ваш ключ.

RESTGET /ai-tools/status
MCP—
AuthX-API-Key
Inputid | 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

Поиск по ключевым словам с фильтрами по категории, тегу, цене и избранному.

RESTGET /tools
MCPsearch_tools
AuthBearer aid_
Inputq, 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}:

ПолеТипПримечания
idstringСтабильный идентификатор
slugstringИспользуйте это для /tools/{slug}
name, tagline, descriptionstring
urlstringСписок на aidirectori.es
websitestringСобственный сайт продукта
categoryobject{ slug, name } или null
tagsarray[{ slug, name }]
pricingstringFREE | FREEMIUM | PAID
ratingnumber0, если нет оценки
opensnumberПереходы; то, по чему сортирует /tools/top
featuredboolean
icon, framestringURL изображений, nullable
founderName, locationstringNullable. Никогда не содержит email основателя
domainRatingnumberNullable
isForSale, askingPriceboolean, numberСписки, отмеченные для приобретения
discountCode, affiliatestring, boolean
createdAt, updatedAtstringISO 8601, nullable

GET /tools/{slug} добавляет screenshots (массив URL), video, socials, faqs, features и affiliateLink. Эти шесть доступны только в конечной точке одного инструмента — не ожидайте их от поиска.

Любое поле может быть null, если список не заполнен. Пишите код с защитой от этого.

REST API / Каталоги

Каталоги

Вторая половина каталога — каталоги для отправки стартапов и SaaS, с DR и ценами.

Скреперы обычно это пропускают. Это список, в который мы фактически отправляем продукты.

search_directories

RESTGET /directories
MCPsearch_directories
AuthBearer aid_
Inputq, 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, namestring
urlstringПрофиль на aidirectori.es
websitestringСобственный сайт каталога
iconstringNullable
coststringFree | Paid | Freemium
typestringТип ссылки
domainRatingnumberNullable — число, по которому большинство сортирует
monthlyVisitsnumberNullable
requiresBadgebooleanТребуют ли они бейдж обратной ссылки
minimumPricenumber0, если бесплатно
submissionExperiencestringNullable
featuredboolean
categoriesarray[{ slug, name }]
smallDescriptionstringNullable
createdAt, updatedAtstringISO 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.

ПолеТипПримечания

  • name string Максимум 100 символов.
  • website url Публичный URL продукта.
  • tagline string Максимум 200 символов.
  • description string Что делает продукт.
  • category string Slug или имя. Мы сопоставляем его с существующей категорией.
  • pricing enum FREE PAID FREEMIUM Собственная цена продукта — не пакет каталога.
  • founderName string Вы собираете это до POST.
  • founderEmail email Вы собираете это. Никогда не возвращается при публичном чтении каталога. Не отправляйте из браузера.
  • tags string[] Slug или имена.

Рекомендуемые

5

Запрос выполняется и без них — мы генерируем slug, получаем иконку/og:image и оставляем пакет как ожидающий. Отправляйте их, когда они у вас есть.

ПолеТипПримечания

  • paymentType enum starter pro premium Пакет каталога: 30+, 60+ или 100+ отправок. Отправьте это, если клиент уже выбрал пакет. Опустите только если хотите создать инструмент как ожидающий, чтобы админ установил его позже.
  • slug string Публичный slug URL. Генерируется из имени (с уникализацией), если опущен — отправьте его, когда у вас уже есть стабильный slug.
  • icon url Квадратный логотип. Если опущен, мы получаем favicon сайта — отправьте свой для лучшего списка.
  • frame url Основной скриншот. Если опущен, мы получаем og:image — отправьте снимок продукта, когда он у вас есть.
  • screenshots url[] Изображения галереи, зеркалируются на Cloudflare. Не обязательны; обложка закрывает hero, если это пусто.

Необязательные

11

Изображения по публичным URL зеркалируются на Cloudflare.

ПолеТипПримечания

  • video url YouTube или Vimeo.
  • socials object Ключи к URL, например { "twitter": "https://x.com/…" }.
  • features object Строковая карта, например { "Templates": "50+" }. Генерируется, если опущено.
  • faq array Если опущено, извлекается с сайта или генерируется.
  • affiliate string Текст партнерской программы.
  • affiliateLink url
  • discountCode string Промокод, показанный в списке.
  • location string Где базируется компания.
  • foundingDate string Дата основания, в свободной форме.
  • isCustomer boolean Являются ли они уже клиентом.
  • isLaunched boolean Работает ли продукт.
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.completed Done Админ отметил работу каталога как Done для инструмента, отправленного вашим ключом. Полезная нагрузка — { event, occurredAt, tool, summary, submissions }.
  • support.replied reply Ответ поддержки готов (AI или человек). Полезная нагрузка — { event, occurredAt, conversation }. Только если поддержка включена.

Запрос

МетодPOST
Content-Typeapplication/json
AuthЗаголовок HMAC — не ваш API-ключ

Заголовки

3

ПолеТипПримечания

  • X-AI-Directories-Event string Какую полезную нагрузку вы получили. Ветвитесь по этому — один и тот же URL получает оба события.
  • X-AI-Directories-Signature string sha256=<hex> HMAC необработанного тела с вашим секретом подписи. Присутствует, когда мы выдали секрет.
  • User-Agent string 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

  • question string Вопрос клиента. Максимум 4000 символов. Также принимается message.
  • conversationId string Продолжение ветки, которую мы вернули ранее.
  • externalId string Ваш тикет или идентификатор ветки. Повторное использование продолжает тот же разговор.
  • customer object Необязательный { name, email, id } для конечного клиента — не для основателя из submit.
  • metadata object Произвольный 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_ из панели управления)1030
Премиум (платный план Catalog API, грант администратора или выданный партнёрский ключ)60120

Бюджет 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).