AI Directories
官方搜索AI Directories目录、查找列表项并浏览提交目录
你可以用 AI Directories MCP 做什么?
- 搜索 AI 工具 — 通过
search_tools按关键词、类别、标签或定价查找 AI 工具。 - 获取工具详情 — 通过
get_tool请求任何工具的完整公开列表,包括截图和常见问题解答。 - 浏览热门工具 — 通过
get_top_tools按打开次数查询最受欢迎的 AI 工具,并可选择按类别筛选。 - 探索类别和标签 — 让助手通过
list_categories或list_tags列出所有 AI 工具类别或标签及其数量。 - 查找提交目录 — 通过
search_directories按名称、成本或类别搜索目录,以确定提交目标。 - 获取目录简介 — 通过
get_directory获取目录的完整简介,包括域名评级和徽章要求。
文档
Developers
API 与 MCP
官方 AI Directories 目录 — 可通过 curl 或代理搜索 AI 工具和提交目录。免费、有文档,且优于爬取。
RESTGET · Bearer aid_
MCPStreamable HTTP
OpenAPI机器规范
搜索 AI Directories 目录、查看条目、浏览提交目录 — 可通过代理或 curl 操作。REST 和 MCP 共享同一后端。第三方爬虫包装我们的公开页面并收费提供数据。这是官方来源。
示例 — GET /tools/transclipper
curl -s "https://www.aidirectori.es/api/v1/tools/transclipper" \
-H "Authorization: Bearer aid_your_api_key"
{
"success": true,
"data": {
"id": "69b81f3e40816562014e004a",
"slug": "transclipper",
"name": "TransClipper",
"url": "https://www.aidirectori.es/ai-tools/transclipper",
"website": "https://transclipper.ai",
"tagline": "Steal the Blueprint Behind Any Viral Video",
"description": "TransClipper is a powerful AI-driven tool designed for efficient content clipping and transcription.",
"category": { "slug": "video", "name": "Video" },
"tags": [
{ "slug": "ai", "name": "AI" },
{ "slug": "content-creation", "name": "Content Creation" }
],
"pricing": "FREE",
"rating": 4,
"opens": 4030,
"featured": true,
"icon": "https://cdn.aidirectori.es/icons/1784893027853-vpj1hwsqkq.png"
}
}
你可以做什么
- 按关键词、类别、标签或定价搜索 AI 工具
- 按 slug 获取单个工具(完整公开条目)
- 列出类别和标签
- 搜索提交目录(DR、费用、徽章)
- 使用你的 aid_ 密钥获取单个目录资料
你不能做什么
- 读取创始人邮箱或私有分析数据
- 爬取 HTML 网站或冒充爬虫
- 将目录重新发布为竞争性目录
- 在未获得签发密钥的情况下调用合作伙伴写入 API
为什么存在这个
人们一直在爬取 aidirectori.es 并出售导出数据。官方 API 对产品、研究和代理免费 — 附带署名、速率限制和许可:你不得将完整目录重新发布为竞争性目录或付费爬取服务。
集成到代理中
Cursor: .cursor/mcp.json 或 ~/.cursor/mcp.json。Authorization: 后不要有空格 — mcp-remote 按空白字符分割。参见 安装 MCP。
{
"mcpServers": {
"aidirectories": {
"command": "npx",
"args": [
"-y", "mcp-remote",
"https://www.aidirectori.es/api/mcp",
"--header", "Authorization:Bearer aid_your_real_key"
]
}
}
}
也可机器读取
- /llms.txt — 面向代理的站点简介
- /sitemap.xml
- 60 次/分钟 · 400 次/小时 每 IP
开始使用 / 快速入门
快速入门
创建一个 aid_ 密钥,然后搜索工具、获取单个条目、搜索目录。
在开发者仪表板上创建密钥,然后复制这些内容。
1. 搜索 AI 工具
curl -s "https://www.aidirectori.es/api/v1/tools?q=image&limit=5" \
-H "Authorization: Bearer aid_your_api_key"
2. 获取单个条目
curl -s "https://www.aidirectori.es/api/v1/tools/transclipper" \
-H "Authorization: Bearer aid_your_api_key"
3. 搜索目录
curl -s "https://www.aidirectori.es/api/v1/directories?q=ai&limit=5" \
-H "Authorization: Bearer aid_your_api_key"
通过 MCP 执行相同操作:使用相同的 Bearer 令牌添加服务器,然后调用 search_tools、get_tool 和 search_directories。参见 MCP 安装。
开始使用 / 身份验证
身份验证
通过 API 密钥使用 Bearer 令牌。从你的开发者仪表板生成密钥。标准 10 次/分钟,高级 60 次/分钟。
身份验证
通过 API 密钥使用 Bearer 令牌。从你的开发者仪表板生成密钥。
速率限制
标准密钥每分钟 10 次请求。高级密钥每分钟 60 次。从你的开发者仪表板升级。每个响应都带有速率限制头。
基础 URL
https://www.aidirectori.es/api/v1
-
1 获取你的 API 密钥
前往开发者仪表板并创建 API 密钥。密钥以aid_开头。安全存储 — 之后你将无法再看到完整密钥。 需要接受可接受使用政策 创建密钥需要同意 API 可接受使用政策。克隆业务、重建 AI Directories、批量再发布、未经授权的公开 SEO 页面、滥用性定向、共享凭据和绕过访问控制均被禁止,可能导致永久平台封禁。 -
2 发出你的第一个请求
在Authorization头中将你的密钥作为 Bearer 令牌传递。X-API-Key在每个端点上也被接受。两者可互换 — 密钥能访问什么取决于密钥本身,而非其到达时使用的头。仪表板中的aid_密钥在作为X-API-Key发送时,仍会在合作伙伴端点上获得403;如果你看到 403,你需要的是不同的密钥,而不是不同的头。curl -s "https://www.aidirectori.es/api/v1/tools?q=ai&limit=5" \ -H "Authorization: Bearer aid_your_api_key" -
3 解析响应
成功的读取返回{ success: true, data }。列表端点还包含pagination— 在编写分页循环之前,值得阅读其字段和限制截断规则。注意X-RateLimit-Remaining。{ "success": true, "data": [ { "slug": "transclipper", "name": "TransClipper", "website": "https://transclipper.ai" } ] }
合作伙伴密钥
向我们提交工具的目录合作伙伴仍使用签发的密钥进行 POST /submit-ai-tool、状态、Webhook 和支持。这些密钥也适用于目录读取。参见有目录?。
MCP / 安装
安装 MCP
托管的 Streamable HTTP MCP — 发送与 REST 相同的 Bearer 密钥。
该服务器通过 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 目录的轻量包装。
认证与 REST 相同,使用 Bearer aid_ 密钥。
| 工具 | REST | 输入 |
|---|---|---|
search_tools | GET /tools | q、category、tag、pricing、featured、page、limit |
get_top_tools | GET /tools/top | limit、category |
get_tool | GET /tools/{slug} | slug |
list_categories | GET /categories | q、limit |
list_tags | GET /tags | q、limit |
search_directories | GET /directories | q、category、cost、featured、page、limit |
get_directory | GET /directories/{slug} | slug |
list_directory_categories | GET /directory-categories | — |
REST API / 概述
REST API
适用于脚本、CI 和合作伙伴集成的纯 HTTP。MCP 服务器调用相同的路径 — 因此结果永远不会取决于请求它的传输方式。
| 操作 | 方法 | 路径 | 认证 | 输入 |
|---|---|---|---|---|
| search_tools 带可选类别、标签、定价和精选过滤器的关键词搜索。 | GET | /tools | Bearer | q、category、tag、pricing、featured、includeAdult、page、limit |
| get_top_tools 按打开次数排序的前 N 个条目 — 无需关键词。 | GET | /tools/top | Bearer | limit、category、includeAdult |
| list_categories 带工具计数的 AI 工具类别 — 在过滤搜索前使用。 | GET | /categories | Bearer | q、limit |
| list_tags 带工具计数的 AI 工具标签。 | GET | /tags | Bearer | q、limit |
| get_tool 单个 AI 工具的完整公开条目。 | GET | /tools/{slug} | Bearer | slug |
| search_directories 按名称、类别或费用搜索提交目录。 | GET | /directories | Bearer | q、category、cost、featured、page、limit |
| get_directory 单个目录的完整公开资料。 | GET | /directories/{slug} | Bearer | slug |
| list_directory_categories 用于过滤器发现的目录类别标签。 | GET | /directory-categories | Bearer | — |
| submit_ai_tool 创建 AI 工具条目(并可选择排队目录提交)。 | POST | /submit-ai-tool | X-API-Key | name、website、tagline、description、category、pricing、founderName、founderEmail、tags、paymentType、… |
| get_tool_status 轮询你的密钥提交的工具的目录提交进度。 | GET | /ai-tools/status | X-API-Key | id | slug | website |
发现端点位于 GET /,OpenAPI 文档位于 GET /openapi.json。目录响应的字段说明见 AI 工具 和 目录。
信封、分页和限制
每个响应都是相同的信封。data 在搜索时为数组,在单项查询时为对象。在读取 data 之前检查 success。
{ "success": true, "data": [], "pagination": { "page": 1, "limit": 20, "total": 0, "pages": 0 } }
{ "success": false, "error": "Invalid or revoked API key." }
GET /tools 和 GET /directories 返回一个 pagination 对象。分类端点 — /categories、/tags、/directory-categories — 返回完整列表,且完全没有 pagination 键。
| page | 你获取的页码,从 1 开始 |
|---|---|
| limit | 实际应用的每页条目数 |
| total | 所有页面的匹配条目总数 |
| pages | ceil(total / limit),无匹配时为 0 |
过大的 limit 会被截断,而不是拒绝。 请求超过最大值时,你会获得最大值,并带有 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 工具
浏览、搜索和过滤实时目录,或按 slug 获取单个条目。映射到 MCP search_tools、get_top_tools、get_tool、list_categories 和 list_tags。
list_categories
带工具计数的 AI 工具类别 — 在过滤搜索前使用。
| REST | GET /categories |
|---|---|
| MCP | tools/call → list_categories |
| 认证 | Bearer |
| 输入 | q、limit |
curl -s "https://www.aidirectori.es/api/v1/categories" \
-H "Authorization: Bearer aid_your_api_key"
get_top_tools
按打开次数排序的前 N 个条目 — 无需关键词。
| REST | GET /tools/top |
|---|---|
| MCP | tools/call → get_top_tools |
| 认证 | Bearer |
| 输入 | limit、category、includeAdult |
curl -s "https://www.aidirectori.es/api/v1/tools/top?limit=10&category=image" \
-H "Authorization: Bearer aid_your_api_key"
search_tools
带可选类别、标签、定价和精选过滤器的关键词搜索。
| REST | GET /tools |
|---|---|
| MCP | tools/call → search_tools |
| 认证 | Bearer |
| 输入 | q、category、tag、pricing、featured、includeAdult、page、limit |
curl -s "https://www.aidirectori.es/api/v1/tools?q=ai&limit=5" \
-H "Authorization: Bearer aid_your_api_key"
get_tool
单个 AI 工具的完整公开条目。
| REST | GET /tools/{slug} |
|---|---|
| MCP | tools/call → get_tool |
| 认证 | Bearer |
| 输入 | slug |
curl -s "https://www.aidirectori.es/api/v1/tools/transclipper" \
-H "Authorization: Bearer aid_your_api_key"
list_tags
带工具计数的 AI 工具标签。
| REST | GET /tags |
|---|---|
| MCP | tools/call → list_tags |
| 认证 | Bearer |
| 输入 | q、limit |
curl -s "https://www.aidirectori.es/api/v1/tags" \
-H "Authorization: Bearer aid_your_api_key"
目录
提交目录目录 — 域名评级、费用、徽章和类别。映射到 MCP search_directories、get_directory 和 list_directory_categories。
search_directories
按名称、类别或费用搜索提交目录。
| REST | GET /directories |
|---|---|
| MCP | tools/call → search_directories |
| 认证 | Bearer |
| 输入 | q、category、cost、featured、page、limit |
curl -s "https://www.aidirectori.es/api/v1/directories?cost=Free&limit=10" \
-H "Authorization: Bearer aid_your_api_key"
get_directory
单个目录的完整公开资料。
| REST | GET /directories/{slug} |
|---|---|
| MCP | tools/call → get_directory |
| 认证 | Bearer |
| 输入 | slug |
curl -s "https://www.aidirectori.es/api/v1/directories/theres-an-ai-for-that" \
-H "Authorization: Bearer aid_your_api_key"
list_directory_categories
用于过滤器发现的目录类别标签。
| REST | GET /directory-categories |
|---|---|
| MCP | tools/call → list_directory_categories |
| 认证 | Bearer |
| 输入 | — |
curl -s "https://www.aidirectori.es/api/v1/directory-categories" \
-H "Authorization: Bearer aid_your_api_key"
合作伙伴
写入和状态端点需要签发的 X-API-Key。将其保存在你的服务器上。MCP 不调用这些。完整字段列表见 提交与合作伙伴。
submit_ai_tool
创建 AI 工具条目(并可选择排队目录提交)。
| REST | POST /submit-ai-tool |
|---|---|
| MCP | — |
| Auth | X-API-Key |
| Input | name, website, tagline, description, category, pricing, founderName, founderEmail, tags, paymentType, … |
curl -s -X POST "https://www.aidirectori.es/api/v1/submit-ai-tool" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "My Tool",
"website": "https://mytool.com",
"tagline": "One-line pitch",
"description": "What the product does.",
"category": "productivity",
"pricing": "FREE",
"paymentType": "pro",
"founderName": "Jane Founder",
"founderEmail": "jane@mytool.com",
"tags": ["ai", "productivity"],
"icon": "https://mytool.com/icon.png",
"frame": "https://mytool.com/screenshot.png",
"screenshots": ["https://mytool.com/gallery-1.png"]
}'
get_tool_status
轮询您提交的工具在目录中的提交进度。
| REST | GET /ai-tools/status |
|---|---|
| MCP | — |
| Auth | X-API-Key |
| Input | id | slug | website |
curl -s "https://www.aidirectori.es/api/v1/ai-tools/status?slug=my-ai-tool" \
-H "X-API-Key: YOUR_API_KEY"
REST API / AI 工具
AI 工具
浏览、搜索和获取已发布的 AI 工具列表。
search_tools
支持按类别、标签、定价和精选过滤的关键词搜索。
| REST | GET /tools |
|---|---|
| MCP | search_tools |
| Auth | Bearer aid_ |
| Input | q, category, tag, pricing (FREE | FREEMIUM | PAID), featured, includeAdult, page, limit (最大 100) |
curl -s "https://www.aidirectori.es/api/v1/tools?q=transclipper&limit=5" \
-H "Authorization: Bearer aid_your_api_key"
每个条目包含名称、slug、列表 URL、网站、标语、描述、类别、标签、定价、评分、打开次数、图标和时间戳。不包含创始人邮箱。
默认排除成人列表。 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
完整的公开列表:截图、常见问题、社交链接、功能特性。
curl -s "https://www.aidirectori.es/api/v1/tools/transclipper" \
-H "Authorization: Bearer aid_your_api_key"
list_categories / list_tags
curl -s "https://www.aidirectori.es/api/v1/categories" -H "Authorization: Bearer aid_your_api_key"
curl -s "https://www.aidirectori.es/api/v1/tags?q=photo" -H "Authorization: Bearer aid_your_api_key"
类别返回 slug、name、description、icon、toolsCount。标签返回 slug、name、toolsCount。两者均不分页——您会获得完整列表,因此请缓存并在本地过滤。
工具字段
由 /tools、/tools/top 和 /tools/{slug} 返回的字段相同:
| 字段 | 类型 | 说明 |
|---|---|---|
id | string | 稳定标识符 |
slug | string | 用于 /tools/{slug} |
name、tagline、description | string | |
url | string | 在 aidirectori.es 上的列表 |
website | string | 产品自己的网站 |
category | object | { slug, name } 或 null |
tags | array | [{ slug, name }] |
pricing | string | FREE | FREEMIUM | PAID |
rating | number | 未评分时为 0 |
opens | number | 点击次数;/tools/top 的排序依据 |
featured | boolean | |
icon、frame | string | 图片 URL,可空 |
founderName、location | string | 可空。绝不包含创始人邮箱 |
domainRating | number | 可空 |
isForSale、askingPrice | boolean, number | 标记为待收购的列表 |
discountCode、affiliate | string, boolean | |
createdAt、updatedAt | string | ISO 8601,可空 |
GET /tools/{slug} 额外返回 screenshots(URL 数组)、video、socials、faqs、features 和 affiliateLink。这六个字段仅在单工具端点返回——不要期望从搜索中获得。
任何字段在列表未填写时都可能为 null。请编写防御性代码。
REST API / 目录
目录
目录的另一半——初创公司和 SaaS 提交目录,包含 DR 和定价。
爬虫通常会遗漏这部分。这是我们实际提交产品的列表。
search_directories
| REST | GET /directories |
|---|---|
| MCP | search_directories |
| Auth | Bearer aid_ |
| Input | q, category, cost (Free | Paid | Freemium), featured, page, limit |
curl -s "https://www.aidirectori.es/api/v1/directories?cost=Free&limit=10" \
-H "Authorization: Bearer aid_your_api_key"
字段包括名称、列表 URL、网站、域名权重、月访问量、链接类型、徽章要求、最低价格和类别。
get_directory
额外返回描述、常见问题、提交链接和优惠文案。
curl -s "https://www.aidirectori.es/api/v1/directories/theres-an-ai-for-that" \
-H "Authorization: Bearer aid_your_api_key"
list_directory_categories
curl -s "https://www.aidirectori.es/api/v1/directory-categories" \
-H "Authorization: Bearer aid_your_api_key"
仅返回 slug 和 name。不分页。这些是 ?category= 接受的值——请读取而不是猜测。
目录字段
| 字段 | 类型 | 说明 |
|---|---|---|
id、slug、name | string | |
url | string | 在 aidirectori.es 上的档案 |
website | string | 目录自己的网站 |
icon | string | 可空 |
cost | string | Free | Paid | Freemium |
type | string | 链接类型 |
domainRating | number | 可空——大多数人排序的依据 |
monthlyVisits | number | 可空 |
requiresBadge | boolean | 是否要求反向链接徽章 |
minimumPrice | number | 免费时为 0 |
submissionExperience | string | 可空 |
featured | boolean | |
categories | array | [{ slug, name }] |
smallDescription | string | 可空 |
createdAt、updatedAt | string | ISO 8601 |
GET /directories/{slug} 额外返回 fullDescription、features、useCases、faq、deal({ text, code } 或 null)、frame 和 socials。
请注意两个 url 字段:url 是我们的档案页面,website 是目录本身。直接提交表单 URL(submissionLink)不在目录 API 或 MCP 中——它们是网站和仪表板上付费列表产品的一部分。
选择提交目标
curl -s "https://www.aidirectori.es/api/v1/directories?cost=Free&limit=100" \
-H "Authorization: Bearer $AID_KEY" \
| jq -r '.data
| map(select(.requiresBadge == false and .domainRating != null))
| sort_by(-.domainRating)
| .[]
| [.domainRating, .name, .website] | @tsv'
免费、无需徽章、优先选择域名权重最高的。
REST API / 提交与合作伙伴
提交与合作伙伴
用于提交工具、轮询状态、Webhook 和支持的 API 密钥端点。
这些不是匿名的。我们为每个合作伙伴发放一个密钥。MCP 不会调用这些端点。
提交工具
POST https://www.aidirectori.es/api/v1/submit-ai-tool
创建列表。发送 paymentType 可为该套餐排队目录提交。省略则工具以等待状态创建,以便稍后在管理后台设置套餐。
必填
9
缺少任何一项将返回 400。
字段类型说明
namestring 最多 100 个字符。websiteurl 产品的公开 URL。taglinestring 最多 200 个字符。descriptionstring 产品的功能描述。categorystring Slug 或名称。我们会将其映射到现有类别。pricingenumFREEPAIDFREEMIUM产品自身的定价——不是目录套餐。founderNamestring 您在 POST 之前收集此项。founderEmailemail 您收集此项。绝不会在公开目录读取中返回。不要从浏览器发送。tagsstring[] Slug 或名称。
推荐
5
没有这些请求也能成功——我们会生成 slug、获取图标/og:image,并将套餐保持为等待状态。有这些信息时请发送。
字段类型说明
paymentTypeenumstarterpropremium目录套餐:30+、60+ 或 100+ 次提交。如果客户已选择套餐,请发送此项。仅当您希望工具以等待状态创建以便管理员稍后设置时才省略。slugstring 公开 URL slug。省略时根据名称生成(并去重)——已有稳定 slug 时请发送。iconurl 方形徽标。省略时我们获取网站 favicon——为获得更好的列表请发送自己的徽标。frameurl 主截图。省略时我们获取 og:image——有产品截图时请发送。screenshotsurl[] 画廊图片,镜像到 Cloudflare。非必填;为空时封面图覆盖主视觉。
可选
11
公开 URL 的图片会镜像到 Cloudflare。
字段类型说明
videourl YouTube 或 Vimeo。socialsobject 键到 URL 的映射,例如{ "twitter": "https://x.com/…" }。featuresobject 字符串映射,例如{ "Templates": "50+" }。省略时自动生成。faqarray 省略时从网站抓取或自动生成。affiliatestring 联盟计划文案。affiliateLinkurldiscountCodestring 列表上显示的促销代码。locationstring 公司所在地。foundingDatestring 成立日期,自由格式。isCustomerboolean 是否已是客户。isLaunchedboolean 产品是否已上线。
curl -s -X POST "https://www.aidirectori.es/api/v1/submit-ai-tool" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "My Tool",
"website": "https://mytool.com",
"tagline": "One-line pitch",
"description": "What the product does.",
"category": "productivity",
"pricing": "FREE",
"paymentType": "pro",
"founderName": "Jane Founder",
"founderEmail": "jane@mytool.com",
"tags": ["ai", "productivity"],
"icon": "https://mytool.com/icon.png",
"frame": "https://mytool.com/screenshot.png",
"screenshots": ["https://mytool.com/gallery-1.png"]
}'
轮询提交状态
GET https://www.aidirectori.es/api/v1/ai-tools/status — 使用 id、slug 或 website 中的恰好一个来查找您的密钥提交的工具。其他客户端的工具返回 404。
可随时使用——不仅限于 Webhook 触发时。当 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"
Webhook
我们向存储在您的 API 客户端上的 HTTPS URL 发送 JSON——不是在每次提交时发送。申请时提供 URL;我们将其存储为 webhookUrl 并向您发送签名密钥。目录完成和支持回复都发送到同一个端点。
当管理员在您的密钥提交的工具上点击完成且 webhookUrl 已设置时,目录事件触发。缺少 URL:我们不发送任何内容。您的端点宕机或返回非 2xx:工具仍标记为完成。我们目前不重试——如果需要回退,请轮询状态。
事件
2
在解析正文之前先读取 X-AI-Directories-Event。
字段类型说明
directory_submissions.completedDone 管理员已将您的密钥提交的工具的目录工作标记为完成。负载为 { event, occurredAt, tool, summary, submissions }。support.repliedreply 支持回复已就绪(AI 或人工)。负载为 { event, occurredAt, conversation }。仅在启用支持时触发。
请求
| 方法 | POST |
|---|---|
| Content-Type | application/json |
| Auth | HMAC 头——不是您的 API 密钥 |
请求头
3
字段类型说明
X-AI-Directories-Eventstring 您收到的负载类型。据此分支——同一 URL 接收两个事件。X-AI-Directories-Signaturestring sha256=<hex> 使用您的签名密钥对原始正文计算的 HMAC。当我们发放了密钥时存在。User-Agentstring AI-Directories-Webhook/1.0
验证签名
使用我们给您的密钥对原始请求正文进行 HMAC-SHA256。去除 sha256= 前缀后,将十六进制摘要与 X-AI-Directories-Signature 比较。使用时间安全比较。
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 以实现幂等重试。
字段类型说明
question字符串 客户的问题。最多 4000 个字符。也接受 message。conversationId字符串 继续我们之前返回的线程。externalId字符串 您的工单或线程 ID。复用它可继续同一对话。customer对象 可选的{ name, email, id },用于最终客户——而非提交时的创始人。metadata对象 存储在对话上的任意 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" }
}'
混合/AI:200 配合 status: "answered" 表示 reply 已就绪(replySource 为 ai 或 human)。pending 表示需轮询或等待 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" }
]
}
}
仅人工客户端会收到精简信封——无历史记录、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"
回复就绪时的 Webhook
如果设置了 webhookUrl,我们会 POST support.replied——与目录 Done 相同的 HMAC。混合/AI 负载使用 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 获取密钥、webhook URL、签名密钥或支持访问权限——或从 Got a directory? 申请。
参考 / 速率限制
速率限制
标准密钥每分钟 10 次请求。高级密钥每分钟 60 次。每个响应均包含相关标头。
限制按 API 密钥而非 IP 计算——且 REST 与 MCP 使用独立配额,因此代理突发不会耗尽您的服务器端脚本配额。
| 密钥 | REST / 分钟 | MCP / 分钟 |
|---|---|---|
标准(来自仪表盘的 aid_) | 10 | 30 |
| 高级(付费 Catalog API 计划、管理员授权或签发的合作伙伴密钥) | 60 | 120 |
MCP 配额更大,因为代理会扇出:用户的一个问题通常会变成多个并行工具调用。
握手免费
initialize、notifications/initialized、ping 和 tools/list 不消耗配额。连接客户端或重启客户端不会消耗您的配额——只有 tools/call 会。格式错误的请求体也不会计费。
每个响应都包含 X-RateLimit-Limit、X-RateLimit-Remaining 和 X-RateLimit-Reset。429 还会发送 Retry-After。
从 您的开发者仪表盘 升级(每月 $9)。请勿冒充搜索引擎或助手爬虫来转储目录。
需要更高限额?发送邮件至 support@thedirectori.es。
合作伙伴提交/支持密钥有自己的写入限制;读取时使用高级目录配额。
参考 / 错误
错误
JSON 错误格式和 HTTP 状态码。
{ "success": false, "error": "Tool not found." }
| HTTP | 含义 |
|---|---|
| 400 | 请求错误 |
| 401 | 缺少或无效的 API 密钥 |
| 403 | 密钥有效但功能未启用 |
| 404 | 未找到工具、目录或对话 |
| 429 | 速率限制 |
| 500 / 503 | 服务器或数据库问题——请重试 |
MCP 使用 JSON-RPC 错误(-32601 方法未找到、-32603 内部错误,以及工具 isError 负载)。