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

在 Claude 中打开

API 与 MCP

官方 AI Directories 目录 — 可通过 curl 或代理搜索 AI 工具和提交目录。免费、有文档,且优于爬取。

RESTGET · Bearer aid_

www.aidirectori.es/api/v1

MCPStreamable HTTP

api/mcp

OpenAPI机器规范

openapi.json

搜索 AI Directories 目录、查看条目、浏览提交目录 — 可通过代理或 curl 操作。REST 和 MCP 共享同一后端。第三方爬虫包装我们的公开页面并收费提供数据。这是官方来源。

示例 — GET /tools/transclipper

curl -s "https://www.aidirectori.es/api/v1/tools/transclipper" \
  -H "Authorization: Bearer aid_your_api_key"
{
  "success": true,
  "data": {
    "id": "69b81f3e40816562014e004a",
    "slug": "transclipper",
    "name": "TransClipper",
    "url": "https://www.aidirectori.es/ai-tools/transclipper",
    "website": "https://transclipper.ai",
    "tagline": "Steal the Blueprint Behind Any Viral Video",
    "description": "TransClipper is a powerful AI-driven tool designed for efficient content clipping and transcription.",
    "category": { "slug": "video", "name": "Video" },
    "tags": [
      { "slug": "ai", "name": "AI" },
      { "slug": "content-creation", "name": "Content Creation" }
    ],
    "pricing": "FREE",
    "rating": 4,
    "opens": 4030,
    "featured": true,
    "icon": "https://cdn.aidirectori.es/icons/1784893027853-vpj1hwsqkq.png"
  }
}

你可以做什么

  • 按关键词、类别、标签或定价搜索 AI 工具
  • 按 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"
      ]
    }
  }
}

也可机器读取

开始使用 / 快速入门

快速入门

创建一个 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. 1 获取你的 API 密钥

    前往开发者仪表板并创建 API 密钥。密钥以 aid_ 开头。安全存储 — 之后你将无法再看到完整密钥。 需要接受可接受使用政策 创建密钥需要同意 API 可接受使用政策。克隆业务、重建 AI Directories、批量再发布、未经授权的公开 SEO 页面、滥用性定向、共享凭据和绕过访问控制均被禁止,可能导致永久平台封禁。
  2. 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. 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_toolsGET /toolsq、category、tag、pricing、featured、page、limit
get_top_toolsGET /tools/toplimit、category
get_toolGET /tools/{slug}slug
list_categoriesGET /categoriesq、limit
list_tagsGET /tagsq、limit
search_directoriesGET /directoriesq、category、cost、featured、page、limit
get_directoryGET /directories/{slug}slug
list_directory_categoriesGET /directory-categories—

完整字段说明见 AI 工具 和 目录。

REST API / 概述

REST API

适用于脚本、CI 和合作伙伴集成的纯 HTTP。MCP 服务器调用相同的路径 — 因此结果永远不会取决于请求它的传输方式。

操作方法路径认证输入
search_tools 带可选类别、标签、定价和精选过滤器的关键词搜索。GET/toolsBearerq、category、tag、pricing、featured、includeAdult、page、limit
get_top_tools 按打开次数排序的前 N 个条目 — 无需关键词。GET/tools/topBearerlimit、category、includeAdult
list_categories 带工具计数的 AI 工具类别 — 在过滤搜索前使用。GET/categoriesBearerq、limit
list_tags 带工具计数的 AI 工具标签。GET/tagsBearerq、limit
get_tool 单个 AI 工具的完整公开条目。GET/tools/{slug}Bearerslug
search_directories 按名称、类别或费用搜索提交目录。GET/directoriesBearerq、category、cost、featured、page、limit
get_directory 单个目录的完整公开资料。GET/directories/{slug}Bearerslug
list_directory_categories 用于过滤器发现的目录类别标签。GET/directory-categoriesBearer—
submit_ai_tool 创建 AI 工具条目(并可选择排队目录提交)。POST/submit-ai-toolX-API-Keyname、website、tagline、description、category、pricing、founderName、founderEmail、tags、paymentType、…
get_tool_status 轮询你的密钥提交的工具的目录提交进度。GET/ai-tools/statusX-API-Keyid | slug | website

发现端点位于 GET /,OpenAPI 文档位于 GET /openapi.json。目录响应的字段说明见 AI 工具 和 目录。

信封、分页和限制

每个响应都是相同的信封。data 在搜索时为数组,在单项查询时为对象。在读取 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所有页面的匹配条目总数
pagesceil(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 工具类别 — 在过滤搜索前使用。

RESTGET /categories
MCPtools/call → list_categories
认证Bearer
输入q、limit
curl -s "https://www.aidirectori.es/api/v1/categories" \
  -H "Authorization: Bearer aid_your_api_key"

get_top_tools

按打开次数排序的前 N 个条目 — 无需关键词。

RESTGET /tools/top
MCPtools/call → get_top_tools
认证Bearer
输入limit、category、includeAdult
curl -s "https://www.aidirectori.es/api/v1/tools/top?limit=10&category=image" \
  -H "Authorization: Bearer aid_your_api_key"

search_tools

带可选类别、标签、定价和精选过滤器的关键词搜索。

RESTGET /tools
MCPtools/call → search_tools
认证Bearer
输入q、category、tag、pricing、featured、includeAdult、page、limit
curl -s "https://www.aidirectori.es/api/v1/tools?q=ai&limit=5" \
  -H "Authorization: Bearer aid_your_api_key"

get_tool

单个 AI 工具的完整公开条目。

RESTGET /tools/{slug}
MCPtools/call → get_tool
认证Bearer
输入slug
curl -s "https://www.aidirectori.es/api/v1/tools/transclipper" \
  -H "Authorization: Bearer aid_your_api_key"

list_tags

带工具计数的 AI 工具标签。

RESTGET /tags
MCPtools/call → list_tags
认证Bearer
输入q、limit
curl -s "https://www.aidirectori.es/api/v1/tags" \
  -H "Authorization: Bearer aid_your_api_key"

目录

提交目录目录 — 域名评级、费用、徽章和类别。映射到 MCP search_directories、get_directory 和 list_directory_categories。

search_directories

按名称、类别或费用搜索提交目录。

RESTGET /directories
MCPtools/call → search_directories
认证Bearer
输入q、category、cost、featured、page、limit
curl -s "https://www.aidirectori.es/api/v1/directories?cost=Free&limit=10" \
  -H "Authorization: Bearer aid_your_api_key"

get_directory

单个目录的完整公开资料。

RESTGET /directories/{slug}
MCPtools/call → get_directory
认证Bearer
输入slug
curl -s "https://www.aidirectori.es/api/v1/directories/theres-an-ai-for-that" \
  -H "Authorization: Bearer aid_your_api_key"

list_directory_categories

用于过滤器发现的目录类别标签。

RESTGET /directory-categories
MCPtools/call → list_directory_categories
认证Bearer
输入—
curl -s "https://www.aidirectori.es/api/v1/directory-categories" \
  -H "Authorization: Bearer aid_your_api_key"

合作伙伴

写入和状态端点需要签发的 X-API-Key。将其保存在你的服务器上。MCP 不调用这些。完整字段列表见 提交与合作伙伴。

submit_ai_tool

创建 AI 工具条目(并可选择排队目录提交)。

RESTPOST /submit-ai-tool
MCP—
AuthX-API-Key
Inputname, website, tagline, description, category, pricing, founderName, founderEmail, tags, paymentType, …
curl -s -X POST "https://www.aidirectori.es/api/v1/submit-ai-tool" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My Tool",
    "website": "https://mytool.com",
    "tagline": "One-line pitch",
    "description": "What the product does.",
    "category": "productivity",
    "pricing": "FREE",
    "paymentType": "pro",
    "founderName": "Jane Founder",
    "founderEmail": "jane@mytool.com",
    "tags": ["ai", "productivity"],
    "icon": "https://mytool.com/icon.png",
    "frame": "https://mytool.com/screenshot.png",
    "screenshots": ["https://mytool.com/gallery-1.png"]
  }'

get_tool_status

轮询您提交的工具在目录中的提交进度。

RESTGET /ai-tools/status
MCP—
AuthX-API-Key
Inputid | slug | website
curl -s "https://www.aidirectori.es/api/v1/ai-tools/status?slug=my-ai-tool" \
  -H "X-API-Key: YOUR_API_KEY"

REST API / AI 工具

AI 工具

浏览、搜索和获取已发布的 AI 工具列表。

search_tools

支持按类别、标签、定价和精选过滤的关键词搜索。

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

每个条目包含名称、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} 返回的字段相同:

字段类型说明
idstring稳定标识符
slugstring用于 /tools/{slug}
name、tagline、descriptionstring
urlstring在 aidirectori.es 上的列表
websitestring产品自己的网站
categoryobject{ slug, name } 或 null
tagsarray[{ slug, name }]
pricingstringFREE | FREEMIUM | PAID
ratingnumber未评分时为 0
opensnumber点击次数;/tools/top 的排序依据
featuredboolean
icon、framestring图片 URL,可空
founderName、locationstring可空。绝不包含创始人邮箱
domainRatingnumber可空
isForSale、askingPriceboolean, number标记为待收购的列表
discountCode、affiliatestring, boolean
createdAt、updatedAtstringISO 8601,可空

GET /tools/{slug} 额外返回 screenshots(URL 数组)、video、socials、faqs、features 和 affiliateLink。这六个字段仅在单工具端点返回——不要期望从搜索中获得。

任何字段在列表未填写时都可能为 null。请编写防御性代码。

REST API / 目录

目录

目录的另一半——初创公司和 SaaS 提交目录,包含 DR 和定价。

爬虫通常会遗漏这部分。这是我们实际提交产品的列表。

search_directories

RESTGET /directories
MCPsearch_directories
AuthBearer aid_
Inputq, category, cost (Free | Paid | Freemium), featured, page, limit
curl -s "https://www.aidirectori.es/api/v1/directories?cost=Free&limit=10" \
  -H "Authorization: Bearer aid_your_api_key"

字段包括名称、列表 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、namestring
urlstring在 aidirectori.es 上的档案
websitestring目录自己的网站
iconstring可空
coststringFree | Paid | Freemium
typestring链接类型
domainRatingnumber可空——大多数人排序的依据
monthlyVisitsnumber可空
requiresBadgeboolean是否要求反向链接徽章
minimumPricenumber免费时为 0
submissionExperiencestring可空
featuredboolean
categoriesarray[{ slug, name }]
smallDescriptionstring可空
createdAt、updatedAtstringISO 8601

GET /directories/{slug} 额外返回 fullDescription、features、useCases、faq、deal({ text, code } 或 null)、frame 和 socials。

请注意两个 url 字段:url 是我们的档案页面,website 是目录本身。直接提交表单 URL(submissionLink)不在目录 API 或 MCP 中——它们是网站和仪表板上付费列表产品的一部分。

选择提交目标

curl -s "https://www.aidirectori.es/api/v1/directories?cost=Free&limit=100" \
  -H "Authorization: Bearer $AID_KEY" \
  | jq -r '.data
      | map(select(.requiresBadge == false and .domainRating != null))
      | sort_by(-.domainRating)
      | .[]
      | [.domainRating, .name, .website] | @tsv'

免费、无需徽章、优先选择域名权重最高的。

REST API / 提交与合作伙伴

提交与合作伙伴

用于提交工具、轮询状态、Webhook 和支持的 API 密钥端点。

这些不是匿名的。我们为每个合作伙伴发放一个密钥。MCP 不会调用这些端点。

提交工具

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

创建列表。发送 paymentType 可为该套餐排队目录提交。省略则工具以等待状态创建,以便稍后在管理后台设置套餐。

必填

9

缺少任何一项将返回 400。

字段类型说明

  • name string 最多 100 个字符。
  • website url 产品的公开 URL。
  • tagline string 最多 200 个字符。
  • description string 产品的功能描述。
  • category string Slug 或名称。我们会将其映射到现有类别。
  • pricing enum FREE PAID FREEMIUM 产品自身的定价——不是目录套餐。
  • founderName string 您在 POST 之前收集此项。
  • founderEmail email 您收集此项。绝不会在公开目录读取中返回。不要从浏览器发送。
  • tags string[] Slug 或名称。

推荐

5

没有这些请求也能成功——我们会生成 slug、获取图标/og:image,并将套餐保持为等待状态。有这些信息时请发送。

字段类型说明

  • paymentType enum starter pro premium 目录套餐:30+、60+ 或 100+ 次提交。如果客户已选择套餐,请发送此项。仅当您希望工具以等待状态创建以便管理员稍后设置时才省略。
  • slug string 公开 URL slug。省略时根据名称生成(并去重)——已有稳定 slug 时请发送。
  • icon url 方形徽标。省略时我们获取网站 favicon——为获得更好的列表请发送自己的徽标。
  • frame url 主截图。省略时我们获取 og:image——有产品截图时请发送。
  • screenshots url[] 画廊图片,镜像到 Cloudflare。非必填;为空时封面图覆盖主视觉。

可选

11

公开 URL 的图片会镜像到 Cloudflare。

字段类型说明

  • video url YouTube 或 Vimeo。
  • socials object 键到 URL 的映射,例如 { "twitter": "https://x.com/…" }。
  • features object 字符串映射,例如 { "Templates": "50+" }。省略时自动生成。
  • faq array 省略时从网站抓取或自动生成。
  • affiliate string 联盟计划文案。
  • affiliateLink url
  • discountCode string 列表上显示的促销代码。
  • location string 公司所在地。
  • foundingDate string 成立日期,自由格式。
  • isCustomer boolean 是否已是客户。
  • isLaunched boolean 产品是否已上线。
curl -s -X POST "https://www.aidirectori.es/api/v1/submit-ai-tool" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My Tool",
    "website": "https://mytool.com",
    "tagline": "One-line pitch",
    "description": "What the product does.",
    "category": "productivity",
    "pricing": "FREE",
    "paymentType": "pro",
    "founderName": "Jane Founder",
    "founderEmail": "jane@mytool.com",
    "tags": ["ai", "productivity"],
    "icon": "https://mytool.com/icon.png",
    "frame": "https://mytool.com/screenshot.png",
    "screenshots": ["https://mytool.com/gallery-1.png"]
  }'

轮询提交状态

GET https://www.aidirectori.es/api/v1/ai-tools/status — 使用 id、slug 或 website 中的恰好一个来查找您的密钥提交的工具。其他客户端的工具返回 404。

可随时使用——不仅限于 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.completed Done 管理员已将您的密钥提交的工具的目录工作标记为完成。负载为 { event, occurredAt, tool, summary, submissions }。
  • support.replied reply 支持回复已就绪(AI 或人工)。负载为 { event, occurredAt, conversation }。仅在启用支持时触发。

请求

方法POST
Content-Typeapplication/json
AuthHMAC 头——不是您的 API 密钥

请求头

3

字段类型说明

  • X-AI-Directories-Event string 您收到的负载类型。据此分支——同一 URL 接收两个事件。
  • X-AI-Directories-Signature string sha256=<hex> 使用您的签名密钥对原始正文计算的 HMAC。当我们发放了密钥时存在。
  • User-Agent string AI-Directories-Webhook/1.0

验证签名

使用我们给您的密钥对原始请求正文进行 HMAC-SHA256。去除 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_)1030
高级(付费 Catalog API 计划、管理员授权或签发的合作伙伴密钥)60120

MCP 配额更大,因为代理会扇出:用户的一个问题通常会变成多个并行工具调用。

握手免费

initialize、notifications/initialized、ping 和 tools/list 不消耗配额。连接客户端或重启客户端不会消耗您的配额——只有 tools/call 会。格式错误的请求体也不会计费。

每个响应都包含 X-RateLimit-Limit、X-RateLimit-Remaining 和 X-RateLimit-Reset。429 还会发送 Retry-After。

从 您的开发者仪表盘 升级(每月 $9)。请勿冒充搜索引擎或助手爬虫来转储目录。

需要更高限额?发送邮件至 support@thedirectori.es。

合作伙伴提交/支持密钥有自己的写入限制;读取时使用高级目录配额。

参考 / 错误

错误

JSON 错误格式和 HTTP 状态码。

{ "success": false, "error": "Tool not found." }
HTTP含义
400请求错误
401缺少或无效的 API 密钥
403密钥有效但功能未启用
404未找到工具、目录或对话
429速率限制
500 / 503服务器或数据库问题——请重试

MCP 使用 JSON-RPC 错误(-32601 方法未找到、-32603 内部错误,以及工具 isError 负载)。