AI Directories

oficial

Pesquise o catálogo do AI Directories, consulte uma listagem e navegue pelos diretórios de submissão

O que você pode fazer com AI Directories MCP?

  • Pesquisar ferramentas de IA — Peça para encontrar ferramentas de IA por palavra-chave, categoria, tag ou preço usando search_tools.
  • Buscar detalhes da ferramenta — Solicite a listagem pública completa de qualquer ferramenta por slug via get_tool, incluindo capturas de tela e FAQs.
  • Navegar pelas principais ferramentas — Peça as ferramentas de IA mais populares por aberturas, opcionalmente filtradas por categoria, com get_top_tools.
  • Explorar categorias e tags — Peça ao assistente para listar todas as categorias ou tags de ferramentas de IA com contagens usando list_categories ou list_tags.
  • Encontrar diretórios de submissão — Pesquise diretórios por nome, custo ou categoria com search_directories para identificar alvos de submissão.
  • Obter perfis de diretórios — Recupere o perfil completo de um diretório, incluindo Domain Rating e requisitos de selo, via get_directory.

Documentação

Desenvolvedores

Abra no Claude

API e MCP

Catálogo oficial do AI Directories — pesquise ferramentas de IA e diretórios de submissão via curl ou um agente. Gratuito, documentado e melhor do que scraping.

RESTGET · Bearer aid_

www.aidirectori.es/api/v1

MCPStreamable HTTP

api/mcp

OpenAPIspec de máquina

openapi.json

Pesquise o catálogo do AI Directories, consulte uma listagem e navegue pelos diretórios de submissão — a partir de um agente ou do curl. REST e MCP compartilham o mesmo backend. Scrapers de terceiros encapsulam nossas páginas públicas e cobram por um dump. Esta é a fonte oficial.

Exemplo — 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"
  }
}

O que você pode fazer

  • Pesquisar ferramentas de IA por palavra-chave, categoria, tag ou preço
  • Buscar uma ferramenta por slug (listagem pública completa)
  • Listar categorias e tags
  • Pesquisar diretórios de submissão (DR, custo, selo)
  • Buscar um perfil de diretório com sua chave aid_

O que você não pode fazer

  • Ler e-mails de fundadores ou análises privadas
  • Fazer scraping do site HTML ou se passar por um crawler
  • Republicar o catálogo como um diretório concorrente
  • Chamar APIs de escrita de parceiros sem uma chave emitida

Por que isso existe

As pessoas estavam fazendo scraping de aidirectori.es e vendendo a exportação. A API oficial é gratuita para produtos, pesquisas e agentes — com atribuição, limites de taxa e uma licença: você não pode republicar o catálogo completo como um diretório concorrente ou um scrape pago.

Integre a um agente

Cursor: .cursor/mcp.json ou ~/.cursor/mcp.json. Sem espaço após Authorization: — mcp-remote divide por espaços em branco. Veja Instalar MCP.

{
  "mcpServers": {
    "aidirectories": {
      "command": "npx",
      "args": [
        "-y", "mcp-remote",
        "https://www.aidirectori.es/api/mcp",
        "--header", "Authorization:Bearer aid_your_real_key"
      ]
    }
  }
}

Também legível por máquina

Comece agora / Início rápido

Início rápido

Crie uma chave aid_, depois pesquise ferramentas, busque uma listagem e pesquise diretórios.

Crie uma chave no painel do desenvolvedor e copie estas.

1. Pesquisar ferramentas de IA

curl -s "https://www.aidirectori.es/api/v1/tools?q=image&limit=5" \
  -H "Authorization: Bearer aid_your_api_key"

2. Buscar uma listagem

curl -s "https://www.aidirectori.es/api/v1/tools/transclipper" \
  -H "Authorization: Bearer aid_your_api_key"

3. Pesquisar diretórios

curl -s "https://www.aidirectori.es/api/v1/directories?q=ai&limit=5" \
  -H "Authorization: Bearer aid_your_api_key"

As mesmas operações via MCP: adicione o servidor com o mesmo token Bearer e chame search_tools, get_tool e search_directories. Veja Instalação do MCP.

Comece agora / Autenticação

Autenticação

Token Bearer via chave de API. Gere chaves no seu painel do desenvolvedor. Padrão 10/min, premium 60/min.

Autenticação

Token Bearer via chave de API. Gere chaves no seu painel do desenvolvedor.

Limites de taxa

Chaves padrão recebem 10 solicitações por minuto. Chaves premium recebem 60. Faça upgrade no seu painel do desenvolvedor. Os cabeçalhos de limite de taxa estão em todas as respostas.

URL base

https://www.aidirectori.es/api/v1

  1. 1 Obtenha sua chave de API

    Vá ao painel do desenvolvedor e crie uma chave de API. As chaves começam com aid_. Armazene-a com segurança — você não poderá ver a chave completa novamente. Uso aceitável é obrigatório Criar uma chave exige concordância com a Política de Uso Aceitável da API. Clonar negócios, reconstruir o AI Directories, republicação em massa, páginas públicas de SEO não autorizadas, direcionamento abusivo, compartilhamento de credenciais e evasão de controle de acesso são proibidos e podem resultar em banimento permanente da plataforma.
  2. 2 Faça sua primeira solicitação

    Envie sua chave como um token Bearer no cabeçalho Authorization. X-API-Key também é aceito, em todos os endpoints. Os dois são intercambiáveis — o que uma chave pode acessar depende da chave, não do cabeçalho em que ela chega. Uma chave aid_ do painel ainda recebe 403 nos endpoints de parceiros quando enviada como X-API-Key; se você está vendo 403, precisa de uma chave diferente, não de um cabeçalho diferente.
    curl -s "https://www.aidirectori.es/api/v1/tools?q=ai&limit=5" \
      -H "Authorization: Bearer aid_your_api_key"
    
  3. 3 Analise a resposta

    Leituras bem-sucedidas retornam { success: true, data }. Endpoints de lista também incluem pagination — seus campos e as regras de limitação valem a leitura antes de escrever um loop de paginação. Fique de olho em X-RateLimit-Remaining.
    {
      "success": true,
      "data": [
        {
          "slug": "transclipper",
          "name": "TransClipper",
          "website": "https://transclipper.ai"
        }
      ]
    }
    

Chaves de parceiros

Parceiros de diretórios que nos enviam ferramentas para o serviço de submissão ainda usam uma chave emitida para POST /submit-ai-tool, status, webhooks e suporte. Essas chaves também funcionam para leituras do catálogo. Veja Tem um diretório?.

MCP / Instalação

Instalar MCP

MCP HTTP Streamable hospedado — envie a mesma chave Bearer do REST.

O servidor fala o Protocolo de Contexto de Modelo (MCP) via HTTP Streamable. Ele é hospedado. Cada ferramenta encapsula as mesmas funções da API REST. Envie Authorization: Bearer aid_… do seu painel do desenvolvedor.

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

Escopo do projeto: .cursor/mcp.json. Global: ~/.cursor/mcp.json. Claude Desktop: claude_desktop_config.json (somente stdio — este mesmo bloco).

{
  "mcpServers": {
    "aidirectories": {
      "command": "npx",
      "args": [
        "-y", "mcp-remote",
        "https://www.aidirectori.es/api/mcp",
        "--header", "Authorization:Bearer aid_your_real_key"
      ]
    }
  }
}

Sem espaço após Authorization: — mcp-remote divide argumentos por espaços em branco, então "Authorization: Bearer …" quebra o cabeçalho. Reinicie o cliente completamente após editar o arquivo.

Após adicionar o servidor, peça ao agente para listar as ferramentas. Você deve ver search_tools, get_top_tools, get_tool, list_categories, list_tags, search_directories, get_directory e list_directory_categories.

Verificar

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 / Ferramentas

Ferramentas MCP

Cada ferramenta MCP é um encapsulamento fino sobre o catálogo REST.

A autenticação é a mesma chave Bearer aid_ do REST.

FerramentaRESTEntrada
search_toolsGET /toolsq, categoria, tag, preço, destaque, página, limite
get_top_toolsGET /tools/toplimite, categoria
get_toolGET /tools/{slug}slug
list_categoriesGET /categoriesq, limite
list_tagsGET /tagsq, limite
search_directoriesGET /directoriesq, categoria, custo, destaque, página, limite
get_directoryGET /directories/{slug}slug
list_directory_categoriesGET /directory-categories—

Notas completas dos campos estão em Ferramentas de IA e Diretórios.

API REST / Visão geral

API REST

HTTP simples para scripts, CI e integrações de parceiros. O servidor MCP chama esses mesmos caminhos — então um resultado nunca depende de qual transporte o solicitou.

OperaçãoMétodoCaminhoAutenticaçãoEntrada
search_tools Pesquisa por palavra-chave com filtros opcionais de categoria, tag, preço e destaque.GET/toolsBearerq, categoria, tag, preço, destaque, includeAdult, página, limite
get_top_tools Principais N listagens por aberturas — sem palavra-chave necessária.GET/tools/topBearerlimite, categoria, includeAdult
list_categories Categorias de ferramentas de IA com contagens — use antes de filtrar a pesquisa.GET/categoriesBearerq, limite
list_tags Tags de ferramentas de IA com contagens.GET/tagsBearerq, limite
get_tool A listagem pública completa de uma ferramenta de IA.GET/tools/{slug}Bearerslug
search_directories Pesquise diretórios de submissão por nome, categoria ou custo.GET/directoriesBearerq, categoria, custo, destaque, página, limite
get_directory O perfil público completo de um diretório.GET/directories/{slug}Bearerslug
list_directory_categories Rótulos de categorias de diretórios para descoberta de filtros.GET/directory-categoriesBearer—
submit_ai_tool Crie uma listagem de ferramenta de IA (e opcionalmente enfileire submissões a diretórios).POST/submit-ai-toolX-API-Keynome, site, tagline, descrição, categoria, preço, nomeDoFundador, emailDoFundador, tags, tipoDePagamento, …
get_tool_status Consulte o progresso da submissão a diretórios de uma ferramenta que sua chave enviou.GET/ai-tools/statusX-API-Keyid | slug | site

A descoberta está em GET / e o documento OpenAPI em GET /openapi.json. As notas de campos para respostas do catálogo estão em Ferramentas de IA e Diretórios.

Envelope, paginação e limites

Toda resposta é o mesmo envelope. data é um array em pesquisas e um objeto em consultas de item único. Verifique success antes de ler data.

{ "success": true, "data": [], "pagination": { "page": 1, "limit": 20, "total": 0, "pages": 0 } }

{ "success": false, "error": "Invalid or revoked API key." }

GET /tools e GET /directories retornam um objeto pagination. Os endpoints de taxonomia — /categories, /tags, /directory-categories — retornam a lista inteira e nenhuma chave pagination.

páginaA página que você recebeu, baseada em 1
limiteItens por página realmente aplicados
totalItens correspondentes em todas as páginas
páginasteto(total / limite), ou 0 quando nada corresponde

Um limite acima do máximo é limitado, não rejeitado. Peça mais que o máximo e você recebe o máximo, com um 200 — nenhum erro informa que isso aconteceu. /tools e /directories usam padrão de 20 e teto de 100; /categories e /tags têm teto de 500. Um limit ausente, zero, negativo ou não numérico volta ao padrão, e page tem piso de 1. Então leia pagination.limit de volta da resposta em vez de assumir que você recebeu o tamanho de página solicitado — essa suposição é o que transforma um loop de paginação em um loop infinito.

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

Ferramentas de IA

Navegue, pesquise e filtre o catálogo ao vivo, ou busque uma listagem por slug. Mapeia para MCP search_tools, get_top_tools, get_tool, list_categories e list_tags.

list_categories

Categorias de ferramentas de IA com contagens — use antes de filtrar a pesquisa.

RESTGET /categories
MCPtools/call → list_categories
AutenticaçãoBearer
Entradaq, limite
curl -s "https://www.aidirectori.es/api/v1/categories" \
  -H "Authorization: Bearer aid_your_api_key"

get_top_tools

Principais N listagens por aberturas — sem palavra-chave necessária.

RESTGET /tools/top
MCPtools/call → get_top_tools
AutenticaçãoBearer
Entradalimite, categoria, includeAdult
curl -s "https://www.aidirectori.es/api/v1/tools/top?limit=10&category=image" \
  -H "Authorization: Bearer aid_your_api_key"

search_tools

Pesquisa por palavra-chave com filtros opcionais de categoria, tag, preço e destaque.

RESTGET /tools
MCPtools/call → search_tools
AutenticaçãoBearer
Entradaq, categoria, tag, preço, destaque, includeAdult, página, limite
curl -s "https://www.aidirectori.es/api/v1/tools?q=ai&limit=5" \
  -H "Authorization: Bearer aid_your_api_key"

get_tool

A listagem pública completa de uma ferramenta de IA.

RESTGET /tools/{slug}
MCPtools/call → get_tool
AutenticaçãoBearer
Entradaslug
curl -s "https://www.aidirectori.es/api/v1/tools/transclipper" \
  -H "Authorization: Bearer aid_your_api_key"

list_tags

Tags de ferramentas de IA com contagens.

RESTGET /tags
MCPtools/call → list_tags
AutenticaçãoBearer
Entradaq, limite
curl -s "https://www.aidirectori.es/api/v1/tags" \
  -H "Authorization: Bearer aid_your_api_key"

Diretórios

O catálogo de diretórios de submissão — Domain Rating, custo, selo e categorias. Mapeia para MCP search_directories, get_directory e list_directory_categories.

search_directories

Pesquise diretórios de submissão por nome, categoria ou custo.

RESTGET /directories
MCPtools/call → search_directories
AutenticaçãoBearer
Entradaq, categoria, custo, destaque, página, limite
curl -s "https://www.aidirectori.es/api/v1/directories?cost=Free&limit=10" \
  -H "Authorization: Bearer aid_your_api_key"

get_directory

O perfil público completo de um diretório.

RESTGET /directories/{slug}
MCPtools/call → get_directory
AutenticaçãoBearer
Entradaslug
curl -s "https://www.aidirectori.es/api/v1/directories/theres-an-ai-for-that" \
  -H "Authorization: Bearer aid_your_api_key"

list_directory_categories

Rótulos de categorias de diretórios para descoberta de filtros.

RESTGET /directory-categories
MCPtools/call → list_directory_categories
AutenticaçãoBearer
Entrada—
curl -s "https://www.aidirectori.es/api/v1/directory-categories" \
  -H "Authorization: Bearer aid_your_api_key"

Parceiros

Endpoints de escrita e status precisam de um X-API-Key emitido. Mantenha-o no seu servidor. O MCP não chama estes. Listas completas de campos estão em Enviar e parceiros.

submit_ai_tool

Crie uma listagem de ferramenta de IA (e opcionalmente enfileire submissões a diretórios).

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

Consulte o progresso do envio ao diretório de uma ferramenta que sua chave enviou.

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 / Ferramentas de IA

Ferramentas de IA

Navegue, pesquise e busque listagens publicadas de ferramentas de IA.

search_tools

Pesquisa por palavras-chave com filtros de categoria, tag, preço e destaque.

RESTGET /tools
MCPsearch_tools
AuthBearer aid_
Inputq, category, tag, pricing (FREE | FREEMIUM | PAID), featured, includeAdult, page, limit (máx. 100)
curl -s "https://www.aidirectori.es/api/v1/tools?q=transclipper&limit=5" \
  -H "Authorization: Bearer aid_your_api_key"

Cada item inclui nome, slug, URL da listagem, site, tagline, descrição, categoria, tags, preço, avaliação, aberturas, ícone e carimbos de data/hora. Sem e-mail do fundador.

Listagens adultas são excluídas por padrão. search_tools e get_top_tools retêm listagens adultas, a menos que você as solicite.

A exclusão é por categoria e tag, porque ferramentas adultas costumam ser arquivadas em uma categoria geral — image, writing, video — enquanto se marcam com precisão. Portanto, category=image retorna ferramentas de imagem sem os aplicativos de remoção de roupas.

Três formas de optar por incluir: includeAdult=true, category=nsfw ou nomear uma tag adulta como tag=ai-undressing. Nada está oculto ou inacessível — simplesmente não é o que você obtém quando não pediu.

get_top_tools

Ferramentas publicadas mais abertas. Slug de categoria opcional.

curl -s "https://www.aidirectori.es/api/v1/tools/top?limit=10&category=image" \
  -H "Authorization: Bearer aid_your_api_key"

get_tool

Listagem pública completa: capturas de tela, FAQs, redes sociais, recursos.

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"

Categorias retornam slug, name, description, icon, toolsCount. Tags retornam slug, name, toolsCount. Nenhuma é paginada — você obtém a lista completa, então armazene em cache e filtre localmente.

Campos da ferramenta

Retornados por /tools, /tools/top e /tools/{slug} igualmente:

CampoTipoNotas
idstringIdentificador estável
slugstringUse isto para /tools/{slug}
name, tagline, descriptionstring
urlstringA listagem em aidirectori.es
websitestringO site do próprio produto
categoryobject{ slug, name }, ou null
tagsarray[{ slug, name }]
pricingstringFREE | FREEMIUM | PAID
ratingnumber0 quando não avaliado
opensnumberCliques; é por isso que /tools/top ordena
featuredboolean
icon, framestringURLs de imagem, anuláveis
founderName, locationstringAnuláveis. Sem e-mail do fundador, nunca
domainRatingnumberAnulável
isForSale, askingPriceboolean, numberListagens marcadas para aquisição
discountCode, affiliatestring, boolean
createdAt, updatedAtstringISO 8601, anulável

GET /tools/{slug} adiciona screenshots (array de URLs), video, socials, faqs, features e affiliateLink. Esses seis estão somente no endpoint de ferramenta única — não espere por eles em uma pesquisa.

Qualquer campo pode ser null quando uma listagem não o preencheu. Codifique defensivamente.

REST API / Diretórios

Diretórios

A outra metade do catálogo — diretórios de envio para startups e SaaS, com DR e preços.

Scrapers geralmente perdem isso. É a lista para a qual realmente enviamos produtos.

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"

Os campos incluem nome, URL da listagem, site, Domain Rating, visitas mensais, tipo de link, exigência de selo, preço mínimo e categorias.

get_directory

Adiciona descrição, FAQ, link de envio e texto da oferta.

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"

Retorna apenas slug e name. Não paginado. Esses são os valores que ?category= aceita — leia-os em vez de adivinhar.

Campos do diretório

CampoTipoNotas
id, slug, namestring
urlstringO perfil em aidirectori.es
websitestringO site do próprio diretório
iconstringAnulável
coststringFree | Paid | Freemium
typestringTipo de link
domainRatingnumberAnulável — o número pelo qual a maioria ordena
monthlyVisitsnumberAnulável
requiresBadgebooleanSe exigem um selo de backlink
minimumPricenumber0 quando gratuito
submissionExperiencestringAnulável
featuredboolean
categoriesarray[{ slug, name }]
smallDescriptionstringAnulável
createdAt, updatedAtstringISO 8601

GET /directories/{slug} adiciona fullDescription, features, useCases, faq, deal ({ text, code } ou null), frame e socials.

Observe os dois campos url: url é nossa página de perfil, website é o próprio diretório. URLs de formulários de envio direto (submissionLink) não estão na API do catálogo ou no MCP — fazem parte do produto de lista paga no site e no painel.

Escolhendo alvos de envio

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'

Gratuitos, sem exigência de selo, domínios mais fortes primeiro.

REST API / Envio e parceiros

Envio e parceiros

Endpoints com chave de API para enviar ferramentas, consultar status, webhooks e suporte.

Estes não são anônimos. Emitimos uma chave por parceiro. O MCP não os chama.

Enviar uma ferramenta

POST https://www.aidirectori.es/api/v1/submit-ai-tool

Cria uma listagem. Envie paymentType para enfileirar envios ao diretório para esse pacote. Omita-o e a ferramenta é criada como aguardando para que o pacote possa ser definido depois no admin.

Obrigatórios

9

A falta de qualquer um destes retorna 400.

CampoTipoNotas

  • name string Máx. 100 caracteres.
  • website url URL pública do produto.
  • tagline string Máx. 200 caracteres.
  • description string O que o produto faz.
  • category string Slug ou nome. Mapeamos para uma categoria existente.
  • pricing enum FREE PAID FREEMIUM O preço do próprio produto — não o pacote do diretório.
  • founderName string Você coleta isso antes de fazer o POST.
  • founderEmail email Você coleta isso. Nunca retornado em leituras públicas do catálogo. Não envie de um navegador.
  • tags string[] Slugs ou nomes.

Recomendados

5

A solicitação é bem-sucedida sem estes — geramos um slug, buscamos ícone/og:image e deixamos o pacote como aguardando. Envie-os quando os tiver.

CampoTipoNotas

  • paymentType enum starter pro premium Pacote do diretório: 30+, 60+ ou 100+ envios. Envie isto se o cliente já escolheu um pacote. Omita apenas se quiser que a ferramenta seja criada como aguardando para que o admin possa definir depois.
  • slug string Slug de URL pública. Gerado a partir do nome (e tornado único) se omitido — envie-o quando já tiver um slug estável.
  • icon url Logotipo quadrado. Se omitido, buscamos o favicon do site — envie o seu para uma listagem melhor.
  • frame url Captura de tela principal. Se omitida, buscamos og:image — envie uma imagem do produto quando tiver uma.
  • screenshots url[] Imagens da galeria, espelhadas para Cloudflare. Não obrigatórias; o frame cobre o hero se estiver vazio.

Opcionais

11

Imagens em URLs públicas são espelhadas para Cloudflare.

CampoTipoNotas

  • video url YouTube ou Vimeo.
  • socials object Chaves para URLs, ex.: { "twitter": "https://x.com/…" }.
  • features object Mapa de strings, ex.: { "Templates": "50+" }. Gerado se omitido.
  • faq array Se omitido, extraído do site ou gerado.
  • affiliate string Texto do programa de afiliados.
  • affiliateLink url
  • discountCode string Código promocional exibido na listagem.
  • location string Onde a empresa está sediada.
  • foundingDate string Data de fundação, formato livre.
  • isCustomer boolean Se já são clientes.
  • isLaunched boolean Se o produto está no ar.
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"]
  }'

Consultar status do envio

GET https://www.aidirectori.es/api/v1/ai-tools/status — procure uma ferramenta que sua chave enviou com exatamente um de id, slug ou website. Ferramentas de outros clientes retornam 404.

Use isto a qualquer momento — não apenas quando um webhook disparar. Consulte enquanto summary.isComplete for false, depois pare (ou aguarde Done). submissionState é IN_QUEUE, ASSIGNED, IN_PROGRESS, REVIEW, DONE ou null quando não há fluxo de trabalho de diretório.

curl -s "https://www.aidirectori.es/api/v1/ai-tools/status?slug=my-ai-tool" \
  -H "X-API-Key: YOUR_API_KEY"

Webhook

Enviamos JSON via POST para uma URL HTTPS armazenada no seu cliente de API — não enviada em cada envio. Dê-nos a URL quando se inscrever; a armazenamos como webhookUrl e enviamos um segredo de assinatura. Tanto os eventos de diretório-Done quanto as respostas de suporte atingem esse mesmo endpoint.

O evento de diretório dispara quando um admin clica em Done em uma ferramenta que sua chave enviou e webhookUrl está definido. URL ausente: não enviamos nada. Seu endpoint fora do ar ou não-2xx: a ferramenta ainda é marcada como Done. Ainda não tentamos novamente — consulte o status se precisar de um fallback.

Eventos

2

Leia X-AI-Directories-Event antes de analisar o corpo.

CampoTipoNotas

  • directory_submissions.completed Done Admin marcou o trabalho de diretório como Done para uma ferramenta que sua chave enviou. Payload é { event, occurredAt, tool, summary, submissions }.
  • support.replied reply Uma resposta de suporte está pronta (IA ou humana). Payload é { event, occurredAt, conversation }. Somente se o suporte estiver habilitado.

Solicitação

MétodoPOST
Content-Typeapplication/json
AuthCabeçalho HMAC — não sua chave de API

Cabeçalhos

3

CampoTipoNotas

  • X-AI-Directories-Event string Qual payload você recebeu. Ramifique nisto — a mesma URL recebe ambos os eventos.
  • X-AI-Directories-Signature string sha256=<hex> HMAC do corpo bruto com seu segredo de assinatura. Presente quando emitimos um segredo.
  • User-Agent string AI-Directories-Webhook/1.0

Verificar a assinatura

HMAC-SHA256 sobre o corpo bruto da solicitação com o segredo que lhe demos. Compare o digest hexadecimal com X-AI-Directories-Signature após remover o prefixo sha256=. Use uma comparação segura em termos de tempo.

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));
}

Payload

submissions inclui apenas diretórios para os quais realmente enviamos. Cada linha pode incluir o listingUrl ao vivo, captura de tela de prova, domain rating e quem enviou (ADMIN ou OWNER). Retorne 2xx para confirmar.

{
  "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"
    }
  ]
}

Suporte ao cliente

Encaminhe uma pergunta da UI do seu produto; respondemos da sua base de conhecimento quando possível, ou um humano responde no nosso painel. Desativado por padrão — até habilitarmos, POST /support/ask retorna 403. Mesmo X-API-Key que o envio. O MCP não pode chamar isto.

O modo padrão é híbrido: a IA responde quando pode, caso contrário a conversa permanece pending para um humano. Podemos definir o cliente como somente humano (sem IA). Sem conhecimento do produto, as perguntas aguardam uma pessoa.

Enviar uma pergunta

POST https://www.aidirectori.es/api/v1/support/ask

Corpo

5 question é obrigatório. Reutilize conversationId ou externalId para continuar um tópico. Clientes somente humanos podem enviar metadata.peerPushMessageId para novas tentativas idempotentes.

FieldTypeNotes

  • question string A pergunta do cliente. Máximo de 4000 caracteres. message também é aceito.
  • conversationId string Continue um tópico que retornamos anteriormente.
  • externalId string Seu ticket ou ID do tópico. Reutilizá-lo continua a mesma conversa.
  • customer object { name, email, id } opcional para o cliente final — não o fundador do submit.
  • metadata object JSON arbitrário armazenado na conversa.
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" }
  }'

Híbrido/AI: 200 com status: "answered" significa que reply está pronto (replySource é ai ou human). pending significa aguardar ou esperar pelo webhook.

{
  "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" }
    ]
  }
}

Clientes somente humanos recebem um envelope enxuto — sem histórico, customer ou messages[]. message é null até um humano responder, então uma única mensagem do agente.

{
  "success": true,
  "data": {
    "id": "64a1b2c3d4e5f6789012345",
    "externalId": "ticket-123",
    "status": "pending",
    "message": null
  }
}

Consultar uma conversa

GET https://www.aidirectori.es/api/v1/support/conversations/:id — ou liste com ?id=, ?externalId= ou ?status=pending. Intervalo sugerido enquanto pendente: 5–15 segundos. Resultados de listagem híbrida omitem o array completo de messages; somente humanos retorna a mesma forma enxuta de ask.

curl -s "https://www.aidirectori.es/api/v1/support/conversations/64a1b2c3d4e5f6789012345" \
  -H "X-API-Key: YOUR_API_KEY"

Webhook quando uma resposta estiver pronta

Se webhookUrl estiver definido, enviamos um POST para support.replied — mesmo HMAC do directory Done. O payload Híbrido/AI usa reply / replySource. Somente humanos usa um conversation.message singular com role: "agent" e 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"
    }
  }
}

Envie um e-mail para support@thedirectori.es para obter uma chave, URL de webhook, segredo de assinatura ou acesso de suporte — ou solicite em Got a directory?.

Referência / Limites de taxa

Limites de taxa

Chaves padrão recebem 10 solicitações por minuto. Chaves premium recebem 60. Cabeçalhos em cada resposta.

Os limites são por chave de API, não por IP — e REST e MCP usam orçamentos separados, então uma rajada de agente não pode esgotar seus scripts do lado do servidor.

ChaveREST / minutoMCP / minuto
Padrão (aid_ do painel)1030
Premium (plano pago da API do Catálogo, concessão de administrador ou chave de parceiro emitida)60120

O orçamento do MCP é o maior porque os agentes se ramificam: uma pergunta de um usuário rotineiramente se torna várias chamadas de ferramenta paralelas.

O handshake é gratuito

initialize, notifications/initialized, ping e tools/list não custam nada. Conectar um cliente, ou reiniciá-lo, não gasta sua cota — apenas tools/call gasta. Um corpo de solicitação malformado também não é cobrado.

Cada resposta inclui X-RateLimit-Limit, X-RateLimit-Remaining e X-RateLimit-Reset. 429 também envia Retry-After.

Atualize pelo seu painel de desenvolvedor ($9/mês). Não se passe por rastreadores de mecanismos de busca ou assistentes para despejar o catálogo.

Precisa de um limite maior? Envie um e-mail para support@thedirectori.es.

Chaves de parceiro submit/suporte têm seus próprios limites de escrita; elas usam o orçamento premium do catálogo ao ler.

Referência / Erros

Erros

Formato de erro JSON e códigos de status HTTP.

{ "success": false, "error": "Tool not found." }
HTTPSignificado
400Solicitação inválida
401Chave de API ausente ou inválida
403Chave válida, mas recurso não habilitado
404Ferramenta, diretório ou conversa não encontrado
429Limite de taxa
500 / 503Problema de servidor ou banco de dados — tente novamente

MCP usa erros JSON-RPC (-32601 método não encontrado, -32603 interno e payloads de ferramenta isError).