AI Directories
oficialPesquise 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_categoriesoulist_tags. - Encontrar diretórios de submissão — Pesquise diretórios por nome, custo ou categoria com
search_directoriespara 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
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_
MCPStreamable HTTP
OpenAPIspec de máquina
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
- /llms.txt — resumo do site para agentes
- /sitemap.xml
- 60 req/min · 400/hora por IP
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 Obtenha sua chave de API
Vá ao painel do desenvolvedor e crie uma chave de API. As chaves começam comaid_. 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 Faça sua primeira solicitação
Envie sua chave como um token Bearer no cabeçalhoAuthorization.X-API-Keytambé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 chaveaid_do painel ainda recebe403nos endpoints de parceiros quando enviada comoX-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 Analise a resposta
Leituras bem-sucedidas retornam{ success: true, data }. Endpoints de lista também incluempagination— seus campos e as regras de limitação valem a leitura antes de escrever um loop de paginação. Fique de olho emX-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.
| Ferramenta | REST | Entrada |
|---|---|---|
search_tools | GET /tools | q, categoria, tag, preço, destaque, página, limite |
get_top_tools | GET /tools/top | limite, categoria |
get_tool | GET /tools/{slug} | slug |
list_categories | GET /categories | q, limite |
list_tags | GET /tags | q, limite |
search_directories | GET /directories | q, categoria, custo, destaque, página, limite |
get_directory | GET /directories/{slug} | slug |
list_directory_categories | GET /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ção | Método | Caminho | Autenticação | Entrada |
|---|---|---|---|---|
| search_tools Pesquisa por palavra-chave com filtros opcionais de categoria, tag, preço e destaque. | GET | /tools | Bearer | q, categoria, tag, preço, destaque, includeAdult, página, limite |
| get_top_tools Principais N listagens por aberturas — sem palavra-chave necessária. | GET | /tools/top | Bearer | limite, categoria, includeAdult |
| list_categories Categorias de ferramentas de IA com contagens — use antes de filtrar a pesquisa. | GET | /categories | Bearer | q, limite |
| list_tags Tags de ferramentas de IA com contagens. | GET | /tags | Bearer | q, limite |
| get_tool A listagem pública completa de uma ferramenta de IA. | GET | /tools/{slug} | Bearer | slug |
| search_directories Pesquise diretórios de submissão por nome, categoria ou custo. | GET | /directories | Bearer | q, categoria, custo, destaque, página, limite |
| get_directory O perfil público completo de um diretório. | GET | /directories/{slug} | Bearer | slug |
| list_directory_categories Rótulos de categorias de diretórios para descoberta de filtros. | GET | /directory-categories | Bearer | — |
| submit_ai_tool Crie uma listagem de ferramenta de IA (e opcionalmente enfileire submissões a diretórios). | POST | /submit-ai-tool | X-API-Key | nome, 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/status | X-API-Key | id | 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ágina | A página que você recebeu, baseada em 1 |
|---|---|
| limite | Itens por página realmente aplicados |
| total | Itens correspondentes em todas as páginas |
| páginas | teto(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.
| REST | GET /categories |
|---|---|
| MCP | tools/call → list_categories |
| Autenticação | Bearer |
| Entrada | q, 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.
| REST | GET /tools/top |
|---|---|
| MCP | tools/call → get_top_tools |
| Autenticação | Bearer |
| Entrada | limite, 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.
| REST | GET /tools |
|---|---|
| MCP | tools/call → search_tools |
| Autenticação | Bearer |
| Entrada | q, 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.
| REST | GET /tools/{slug} |
|---|---|
| MCP | tools/call → get_tool |
| Autenticação | Bearer |
| Entrada | slug |
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.
| REST | GET /tags |
|---|---|
| MCP | tools/call → list_tags |
| Autenticação | Bearer |
| Entrada | q, 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.
| REST | GET /directories |
|---|---|
| MCP | tools/call → search_directories |
| Autenticação | Bearer |
| Entrada | q, 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.
| REST | GET /directories/{slug} |
|---|---|
| MCP | tools/call → get_directory |
| Autenticação | Bearer |
| Entrada | 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
Rótulos de categorias de diretórios para descoberta de filtros.
| REST | GET /directory-categories |
|---|---|
| MCP | tools/call → list_directory_categories |
| Autenticação | Bearer |
| 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).
| 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
Consulte o progresso do envio ao diretório de uma ferramenta que sua chave enviou.
| 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 / 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.
| REST | GET /tools |
|---|---|
| MCP | search_tools |
| Auth | Bearer aid_ |
| Input | q, 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:
| Campo | Tipo | Notas |
|---|---|---|
id | string | Identificador estável |
slug | string | Use isto para /tools/{slug} |
name, tagline, description | string | |
url | string | A listagem em aidirectori.es |
website | string | O site do próprio produto |
category | object | { slug, name }, ou null |
tags | array | [{ slug, name }] |
pricing | string | FREE | FREEMIUM | PAID |
rating | number | 0 quando não avaliado |
opens | number | Cliques; é por isso que /tools/top ordena |
featured | boolean | |
icon, frame | string | URLs de imagem, anuláveis |
founderName, location | string | Anuláveis. Sem e-mail do fundador, nunca |
domainRating | number | Anulável |
isForSale, askingPrice | boolean, number | Listagens marcadas para aquisição |
discountCode, affiliate | string, boolean | |
createdAt, updatedAt | string | ISO 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
| 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"
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
| Campo | Tipo | Notas |
|---|---|---|
id, slug, name | string | |
url | string | O perfil em aidirectori.es |
website | string | O site do próprio diretório |
icon | string | Anulável |
cost | string | Free | Paid | Freemium |
type | string | Tipo de link |
domainRating | number | Anulável — o número pelo qual a maioria ordena |
monthlyVisits | number | Anulável |
requiresBadge | boolean | Se exigem um selo de backlink |
minimumPrice | number | 0 quando gratuito |
submissionExperience | string | Anulável |
featured | boolean | |
categories | array | [{ slug, name }] |
smallDescription | string | Anulável |
createdAt, updatedAt | string | ISO 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
namestring Máx. 100 caracteres.websiteurl URL pública do produto.taglinestring Máx. 200 caracteres.descriptionstring O que o produto faz.categorystring Slug ou nome. Mapeamos para uma categoria existente.pricingenumFREEPAIDFREEMIUMO preço do próprio produto — não o pacote do diretório.founderNamestring Você coleta isso antes de fazer o POST.founderEmailemail Você coleta isso. Nunca retornado em leituras públicas do catálogo. Não envie de um navegador.tagsstring[] 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
paymentTypeenumstarterpropremiumPacote 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.slugstring Slug de URL pública. Gerado a partir do nome (e tornado único) se omitido — envie-o quando já tiver um slug estável.iconurl Logotipo quadrado. Se omitido, buscamos o favicon do site — envie o seu para uma listagem melhor.frameurl Captura de tela principal. Se omitida, buscamos og:image — envie uma imagem do produto quando tiver uma.screenshotsurl[] 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
videourl YouTube ou Vimeo.socialsobject Chaves para URLs, ex.:{ "twitter": "https://x.com/…" }.featuresobject Mapa de strings, ex.:{ "Templates": "50+" }. Gerado se omitido.faqarray Se omitido, extraído do site ou gerado.affiliatestring Texto do programa de afiliados.affiliateLinkurldiscountCodestring Código promocional exibido na listagem.locationstring Onde a empresa está sediada.foundingDatestring Data de fundação, formato livre.isCustomerboolean Se já são clientes.isLaunchedboolean 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.completedDone Admin marcou o trabalho de diretório como Done para uma ferramenta que sua chave enviou. Payload é { event, occurredAt, tool, summary, submissions }.support.repliedreply Uma resposta de suporte está pronta (IA ou humana). Payload é { event, occurredAt, conversation }. Somente se o suporte estiver habilitado.
Solicitação
| Método | POST |
|---|---|
| Content-Type | application/json |
| Auth | Cabeçalho HMAC — não sua chave de API |
Cabeçalhos
3
CampoTipoNotas
X-AI-Directories-Eventstring Qual payload você recebeu. Ramifique nisto — a mesma URL recebe ambos os eventos.X-AI-Directories-Signaturestring sha256=<hex> HMAC do corpo bruto com seu segredo de assinatura. Presente quando emitimos um segredo.User-Agentstring 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
questionstring A pergunta do cliente. Máximo de 4000 caracteres. message também é aceito.conversationIdstring Continue um tópico que retornamos anteriormente.externalIdstring Seu ticket ou ID do tópico. Reutilizá-lo continua a mesma conversa.customerobject{ name, email, id }opcional para o cliente final — não o fundador do submit.metadataobject 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.
| Chave | REST / minuto | MCP / minuto |
|---|---|---|
Padrão (aid_ do painel) | 10 | 30 |
| Premium (plano pago da API do Catálogo, concessão de administrador ou chave de parceiro emitida) | 60 | 120 |
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." }
| HTTP | Significado |
|---|---|
| 400 | Solicitação inválida |
| 401 | Chave de API ausente ou inválida |
| 403 | Chave válida, mas recurso não habilitado |
| 404 | Ferramenta, diretório ou conversa não encontrado |
| 429 | Limite de taxa |
| 500 / 503 | Problema 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).