关于 AI SENSE Free Public Tools
AI SENSE Free Public Tools 汇集面向 Agent 工作流和常见用途的公共 REST API 与 MCP 工具。它支持队列、租约、心跳、收件箱和人工审批等协作任务,无需账户或 API 密钥。
主要功能
- 01心跳监测及漏报后的操作
- 02用于协调共享任务的租约
- 03临时 JSON 任务队列
- 04Agent 收件箱与人工审批
- 05Webhook 捕获及实用端点
适用场景
- 01发现工作进程停止签到
- 02避免多个工作进程认领同一任务
- 03在生产者和工作进程间传递小型 JSON 任务
- 04收集人工审批所需的信息
MCP 相关
https://aisenseapi.com/mcp 上的 MCP 服务提供心跳、租约、队列、Agent 收件箱、人工审批、Webhook 捕获、临时存储、URL 缩短、时间和 UUID 等工作流工具,无需账户或 API 密钥。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://aisenseapi.com/mcpclaude mcp add --transport http com-aisenseapi-free-public-tools https://aisenseapi.com/mcp{"mcpServers":{"com-aisenseapi-free-public-tools":{"type":"http","url":"https://aisenseapi.com/mcp"}}}在 Cursor 中打开{"servers":{"com-aisenseapi-free-public-tools":{"type":"http","url":"https://aisenseapi.com/mcp"}}}在 VS Code 中打开{"mcpServers":{"com-aisenseapi-free-public-tools":{"type":"http","url":"https://aisenseapi.com/mcp"}}}{"mcpServers":{"com-aisenseapi-free-public-tools":{"serverUrl":"https://aisenseapi.com/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
66| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| timezone | string | 否 | IANA 时区或 UTC 偏移量,例如 Europe/Oslo 或 +02:00。 |
详细介绍
免费公共 REST API - AI SENSE AS
无需 API 密钥 | 无需注册 | 完全免费
由 AI SENSE AS(挪威奥斯陆)提供。
完整端点参考: API.md | 仓库:github.com/aisenseapi/aisense-free-public-rest-apis
基础 URL: https://aisenseapi.com/services/v1/
免费公共 MCP 端点
AI SENSE MCP 服务位于:
https://aisenseapi.com/mcp
AI SENSE MCP 服务涵盖 Heartbeat、Lease、Agent Wake 任务、Agent Inbox、人类审批、Webhook 捕获、临时存储、URL 缩短、时间和 UUID。无需账户或 API 密钥。Heartbeat 使用
create_heartbeat、read_heartbeat 和 ping_heartbeat。Lease 使用
create_lease_namespace、acquire_lease、renew_lease、release_lease 和
complete_lease。Agent Inbox 使用 create_agent_inbox 和
read_agent_inbox。有关工具列表、数据边界和客户端示例,请参阅
MCP.md。
Agent Queue 工具使用创建时签发的独立读取、写入和工作者令牌。语义搜索工具也以相同方式使用读取令牌和写入令牌。
先阅读 AGENT-GUIDE.md 选择工具,然后阅读 AGENT-QUICKSTART.md,了解完整的 Queue 工作流和重试决策。
服务报告的版本为 1.13.1。除了 AIQ、ip_datetime 和
ping 仍通过 REST 提供外,它将工作流工具和以下 REST 实用端点作为工具提供。官方 MCP Registry 将 com.aisenseapi/free-public-tools 版本 1.13.1 列为活跃且最新,发布时间为 2026 年 10 月 6 日 14:05 UTC。
aamio 有自己的 MCP 端点:https://aamio.at/mcp,提供 11 个用于临时 Agent 会合的工具:一个带有秘密读取密钥和公开写入地址的线程、一份即使线程失效后仍然有效的哈希收据、在线状态,以及位于 https://board.aamio.at/ 的开放需求与供给看板。无需账户或 API 密钥。官方 MCP Registry 将其列为 at.aamio/aamio。AI SENSE 端点也不会代理这些工具。
Verifyum 有自己的专用 MCP 端点,位于
https://api.verifyum.com/mcp。它提供三项 Verifyum 证明操作,无需账户或 API 密钥。文件哈希仍在 Agent 的设备上计算。浏览器流程、公共 HTTP API 和已发布协议仍可使用。官方 MCP Registry 将其列为 com.verifyum/mcp 版本
0.1.0。已最终确定的证明也会加入 Verifyum Witness Layer 中的每小时和每日 Merkle 检查点。每项已最终确定的证明周围都有九条记录。
| 层级 | 记录 |
|---|---|
| 主要证据 | 每项证明对应一笔已最终确定的 Solana Mainnet Memo 交易 |
| 独立佐证 | 每小时写入 Bitcoin 的 OpenTimestamps、每日合格欧盟时间戳、每日由见证方共同签名的 Sigsum,以及每日 Certificate Transparency 证书 |
| 运营方记录与可用性冗余 | Verifyum Ed25519 签名、GitHub 检查点日志、Software Heritage 和 Internet Archive |
Solana 交易是主要证据。深度查询 Solana 历史记录通常需要使用归档服务提供商。Glasklar、Mullvad 和 Tillitis 共同签署 Sigsum 摘要,三方中满足两方即构成法定人数。合格时间戳使用 RFC 3161。其 eIDAS 第 41(2) 条推定效力仅适用于每日检查点根。Verifyum 用户证明不是合格电子时间戳。Verifyum 不是合格信任服务。Software Heritage 和 Internet Archive 显示存储的内容,但不能证明原始文件何时存在。渠道数量不代表质量评分。
每项已最终确定的证明也会在 Telegram 和 Atom 源中发布公告。这些是公告渠道,不计入九条证据记录。其时间戳记录的是公告时间,与原始文件日期无关。
Agent 也可以在本地根据其指令、提示词、模型、参数、工具调用和输出整理一份决策记录,然后仅锚定其承诺。该证明可表明这份确切记录在区块时间时已存在且未被更改,但不能证明模型确实按照记录的设置运行过。
免费公开的 Agent2Agent(A2A)端点
使用 Agent2Agent 的 Agent 可通过以下地址访问其中五项功能:
https://aisenseapi.com/a2a
JSON-RPC 2.0,协议修订版 1.0,无需账户和 API 密钥。Agent 卡片可通过 https://aisenseapi.com/.well-known/agent-card.json 直接 GET 获取。
A2A 是用于将工作委派给另一个 Agent 的协议。MCP 是用于公开工具的协议。本服务的大部分功能都是工具,因此只有五项任务型功能通过 A2A 提供:agent-wake、human-approval、agent-inbox、webhook-capture 和 agent-queue。其他工具无法通过它访问。MCP 仍是功能更丰富的工作流接口,并有自己的工具架构。通过 A2A,队列技能会创建队列并返回其三个角色令牌;入队、认领和确认操作仍通过 REST 和 MCP 完成。
A2A 不会在传输内容中指定技能 ID,因此调用方需在消息的数据部分命名技能,例如 {"skill": "agent-wake", "arguments": { ... }}。这是本服务文档说明的一种约定,并非协议定义的字段;不包含该字段的消息会被拒绝。卡片将 streaming 和 pushNotifications 声明为 false,因此这些方法会返回 -32004 和 -32003。ListTasks 会返回一个空页,因为没有人经过身份验证,而任务 ID 是唯一的凭据。有关技能、任务状态、响应格式和错误代码,请参阅 API.md。
SpeedUp(.su)——正确测量令牌成本
所有面向大模型输入宣传的序列化格式,都会声称能节省令牌,而这些说法都是基于单一分词器测得的。Agent 流量会跨越不同供应商,因此我们没有凭假设行事,而是进行了测量:六种格式、33 个单一结构探测样本,按五类词表计价(OpenAI o200k、DeepSeek、Qwen、SentencePiece、Tekken),并以各供应商自己的令牌计数器作为真实基准。
SU-PROFILE.md- SpeedUp 配置文件:面向 Agent 间文本的八项写作约定,每项均附有测得的成本speedup/- 测量工具(仅使用 Python 标准库)、语料库、探测样本和原始数据;使用你自己的密钥重新运行全部测量- 研究报告 - 哪些做法经受住了测量,哪些没有,以及我们为何决定暂不推出另一种格式
关键数据:在五类词表的合并结果中,纯文本 TSV 的平均令牌数为精简 JSON 的 0.82 倍,并且在每个模型上的表现都优于面向令牌的格式;仅需声明一次列名并按位置发送值(每个键值对减少 34%);base64 的成本是其所编码明文的 3.9-4.6 倍;在五类词表中有四类,单字母键字典的表现都不如完整键名。
为什么要做这个项目
大多数实用 API 都要求注册、使用分级速率限制,或对基本操作收费。这个集合省去了所有这些步骤。将 URL 放入 curl、Python、JavaScript 或大模型工具定义中,即可直接使用。
该集合涵盖两类实用功能:
- 工作流端点 - 用于解决管道和 Agent 系统中实际问题的端点
- 标准实用工具 - 哈希、编码、UUID、时间、加密等基础构件
编写客户端前需要了解的三件事
这些规则适用于整个服务,并决定了你需要如何处理错误。
响应键以端点命名。 /md5_hash 返回
md5_hash,/random_color 返回 random_color,/ping 返回
ping。没有通用的 data 或 result 包装层。不要猜测键名——
API.md 列出了所有键名。
错误通常以非 2xx HTTP 状态码返回,格式为 {"error": "message"}。
请同时检查状态码和 error 字段。旧版钱包生成处理程序可能会以 HTTP 200 返回错误对象。工作流端点使用非 2xx 状态码,包括冲突时的 409,以及记录已过期但尚未删除时的 410。记录删除后,同一 ID 会返回 404。未知路由也会返回 404。各端点的其他错误请参阅对应说明。
速率限制为每个 IP 每天 5000 次请求。 超出限制时会返回 HTTP 429,错误格式与其他错误一样,采用扁平结构。计数会在 3 月下旬至 10 月下旬的 UTC 22:00 重置,其余时间在 UTC 23:00 重置(挪威当地时间午夜,时区为 Europe/Oslo),429 响应中会携带 Retry-After,值为距重置的秒数。
高价值端点
心跳 - 了解工作进程何时停止报到
创建监控时,设置预期报到间隔、宽限期,以及错过截止时间时执行的一项操作。该操作可以向公开 Webhook 发送 POST 请求,也可以唤醒现有的 Agent Wake Webhook 任务。
curl -X POST https://aisenseapi.com/services/v1/heartbeat \
-H "Content-Type: application/json" \
-d '{
"expect_every_seconds": 300,
"grace_seconds": 60,
"on_miss": {
"url": "https://example.com/agent-offline",
"payload": { "agent": "worker-7" }
}
}'
响应会提供无法猜测的 heartbeat_id、ping_url 和
status_url。每次成功完成一个周期后,都要向 ping URL 发送 POST 请求。
每次 ping 都会更新预期截止时间,但不会延长固定的 24 小时有效期。错过截止时间时只会触发一次,不会重试。
MCP 客户端可以使用 create_heartbeat、read_heartbeat 和
ping_heartbeat 来管理相同的状态。
Webhook 目标地址在创建时和投递时都会进行 SSRF 检查。私有和保留地址、URL 凭据、片段和重定向均会被拦截。
状态和响应字段详见 API.md。
租约 - 为共享 Agent 工作选出唯一胜出者
Lease 无需账户即可协调工作进程。先生成一个私有命名空间,然后在短时间内认领一个键:
curl -X POST https://aisenseapi.com/services/v1/lease/namespace \
-H "Content-Type: application/json" -d '{}'
curl -X POST https://aisenseapi.com/services/v1/lease \
-H "Content-Type: application/json" \
-d '{
"namespace": "ns_...",
"key": "invoice:2026-09-05",
"ttl_seconds": 60,
"fingerprint": "charge-order-501"
}'
胜出者会收到 owner_token 和单调递增的 fencing_token。租约有效期间,第二个工作进程会收到 HTTP 409。所有者可以续租、释放租约,或使用 JSON 结果完成租约。之后使用相同键和指纹的调用方可以复用该完成结果。
租约在首次获取后的 24 小时会固定到期。续租不能延长此期限。原始键、命名空间、所有者令牌和指纹都不会被存储。完整的获取和完成流程详见 API.md。
对应的 MCP 工具有 create_lease_namespace、acquire_lease、
renew_lease、release_lease 和 complete_lease。
Agent Queue - 共享临时工作
Agent Queue 为生产者和工作者提供一个共享队列,用于存放小型 JSON 任务。
curl -X POST https://aisenseapi.com/services/v1/queue \
-H "Content-Type: application/json" -d '{}'
curl -X POST https://aisenseapi.com/services/v1/queue/QUEUE_ID/jobs \
-H "Authorization: Bearer WRITE_TOKEN" \
-H "Content-Type: application/json" \
-d '{"job_key":"report:42","payload":{"report_id":42}}'
curl -X POST https://aisenseapi.com/services/v1/queue/QUEUE_ID/claim \
-H "Authorization: Bearer WORKER_TOKEN" \
-H "Content-Type: application/json" -d '{"visibility_timeout":60}'
将大写占位符替换为创建响应中的值。请保留这三个令牌:它们只会发放一次。领取操作会返回一个包含机密 receipt 的任务;若队列为空,则返回 job: null。工作者完成工作后,使用其工作者令牌将 {"receipt":"RECEIPT"} 发送到 /queue/QUEUE_ID/jobs/JOB_ID/ack。工作者也可以使用同一个 receipt 释放或续期活动领取。观察者使用读取令牌读取队列计数和单个任务。凭据应放在请求头中,切勿放在 URL 中。
队列及其每个任务都将在队列创建后恰好 24 小时过期。入队、领取、续期和完成操作都不会延长此期限。限制包括:队列生命周期内最多 100 个不同任务,每个任务的编码 JSON 不超过 16 KiB,最多尝试领取 5 次,以及每个客户端 IP 每 24 小时最多创建 20 个新队列。可见时长为 30 至 900 秒,默认值为 60 秒。重复提交相同任务键和载荷时,会返回现有任务。载荷发生变化时,则会产生冲突。
领取过期或释放后,任务可能会再次投递。队列过期和尝试次数上限可能导致任务未完成。无法保证首次投递或恰好执行一次。请确保外部操作具备幂等性。该服务仅保存队列状态,不会运行任务、获取 URL 或发送回调。
MCP 客户端使用这八个队列工具。A2A 客户端指定 agent-queue 技能,该技能会创建队列并返回三个角色令牌;入队、领取和确认操作仍通过 REST 或 MCP 执行。
请参阅 Queue API 参考、 MCP 工具和 网站指南。
语义搜索 - 按含义查找较早的笔记
语义搜索会在集合中保存 Agent 的简短笔记,保存 24 小时,并跨越不同措辞和语言,按含义查找笔记。
curl https://aisenseapi.com/services/v1/semantic_search
curl -X POST https://aisenseapi.com/services/v1/semantic_search/COLLECTION_ID/notes \
-H "Authorization: Bearer WRITE_TOKEN" \
-H "Content-Type: application/json" \
-d '{"notes":[{"text":"Suspicious login attempts from many addresses on the admin page.","key":"incident:17"},{"text":"Mange mislykkede innlogginger mot adminsiden i natt."}]}'
curl -X POST https://aisenseapi.com/services/v1/semantic_search/COLLECTION_ID/search \
-H "Authorization: Bearer READ_TOKEN" \
-H "Content-Type: application/json" \
-d '{"query":"brute force attack on the admin login"}'
创建操作会返回集合 ID,以及一个读取令牌和一个写入令牌;令牌只显示一次。默认模型为 bge-m3。向 /semantic_search 发送 POST 请求 {"model":"qwen3-embedding-4b"},即可使用另一个模型。搜索结果会按排名返回建议,其中包含 note_id、key、text 和 score,但不会判定是否存在匹配项。score 是余弦相似度,再加上搜索内容和笔记中每个共有标识符(例如 DEMO-57)或金额对应的 0.1;它不是概率。
集合将在创建后恰好 24 小时过期。限制包括:集合生命周期内最多 500 条笔记,每条笔记最多 2000 个字符,每个客户端 IP 每 24 小时最多创建 20 个新集合;每个 IP 每分钟最多进行 60 次搜索或添加操作,每个 UTC 日最多进行 1000 次。请勿在笔记中存放机密和敏感个人数据。
Agent Wake - 在外部事件发生后恢复
创建一个任务,等待 webhook、人类回复或指定时间。MCP 客户端使用当前 Tasks 扩展并轮询 tasks/get。REST 客户端使用 POST /agent_wake 和返回的状态 URL。A2A 客户端指定 agent-wake 技能并轮询 GetTask;这是唯一会返回 A2A Task 而非 Message 的技能。
{ "event_type": "webhook", "timeout_seconds": 3600 }
结果包含一个无法猜测的任务 ID 和唤醒 URL。向该 URL 发送的第一个请求会完成任务。人类任务会创建一个托管表单。时间任务会在所选时间戳之后的首次读取时完成。每个任务会在 60 秒至 24 小时内过期。
REST 客户端可以使用 GET /agent_wake/{task_id}/wait/{seconds} 等待任务进入终止状态。最后一个值接受 0 到 25。
有关任务流程,请参阅 MCP.md;有关 REST 调用和 A2A 技能,请参阅 API.md。
Webhook Action - Agent 的人在回路流程
这是 AI 和自动化工作中最突出的端点。当自动化流水线需要人工决策才能继续时,它可以处理整个流程,无需任何后端设置。
工作原理:
POST一个表单定义(单选按钮、下拉菜单、文本字段、复选框)- 获取
form_url、result_url和wait_url - 通过电子邮件或 Slack 将
form_url发送给人工 - 读取
result_url,或使用wait_url等待,最长 25 秒
curl -X POST https://aisenseapi.com/services/v1/webhook_action \
-H "Content-Type: application/json" \
-d '{
"title": "Approve deployment to production?",
"fields": [
{
"type": "radio",
"name": "decision",
"label": "Decision",
"required": true,
"options": [
{ "value": "approve", "label": "Approve" },
{ "value": "reject", "label": "Reject" }
]
},
{ "type": "textarea", "name": "comment", "label": "Notes (optional)" }
]
}'
{
"ok": true,
"action_id": "9e0e6d3b-1a45-44c5-9e0b-92f5f3bdb2f1",
"form_url": "https://aisenseapi.com/services/v1/webhook_action/9e0e6d3b-.../form",
"result_url": "https://aisenseapi.com/services/v1/webhook_action/9e0e6d3b-...",
"wait_url": "https://aisenseapi.com/services/v1/webhook_action/9e0e6d3b-.../wait/25",
"expire_timestamp": 1786959912,
"expire_datetime": "2026-08-17T09:45:12Z"
}
轮询获取答案:
curl https://aisenseapi.com/services/v1/webhook_action/{action_id}
# "status": "pending" -> "answered", with the submission under "response"
字段类型:radio、select、text、textarea、checkbox。options
可接受普通字符串或 {"value": ..., "label": ...} 对象。24 小时后过期。
添加 2 到 20 个 respondents,即可生成单独的一次性表单链接。结果随后会依次处于 pending、partial 和 answered 状态,并包含答案数量、统计结果和各项回复。需要一个指向结果、但不包含答案的完成通知时,可添加 notify_url。
MCP 客户端使用 create_human_approval 和 read_human_approval。A2A 客户端指定 human-approval 技能,该技能会创建表单并返回其 URL;读取答案仍需通过 REST 或 MCP。
Webhook Capture - 检查任意传入的 HTTP 请求
创建一个捕获任务,获取唯一 URL,将任意外部服务(Stripe、GitHub、Shopify)指向该 URL,然后读取完整请求,包括方法、标头、查询参数、IP 和解析后的正文。无需 ngrok、无需本地隧道,也无需服务器。
# 1. Create a capture
curl -X POST https://aisenseapi.com/services/v1/webhook_capture
# -> { "status": "pending", "capture_id": "...", "update_url": "...", "read_url": "...", "wait_url": "..." }
# 2. Point your webhook sender at update_url, with any HTTP method
curl -X POST {update_url} -H "Content-Type: application/json" -d '{"event":"payment.created"}'
# 3. Wait up to 25 seconds for the first request
curl https://aisenseapi.com/services/v1/webhook_capture/{capture_id}/wait/25
{
"ok": true,
"capture_id": "6f8c9e52-...",
"captured_at_timestamp": 1786873316,
"captured_at_datetime": "2026-08-16T09:41:56Z",
"request": {
"method": "POST",
"uri": "/services/v1/webhook_capture/6f8c9e52-.../update",
"headers": { "content-type": "application/json" },
"client_ip": "203.0.113.10",
"body": { "json": { "event": "payment.created" }, "text": null, "base64": null, "raw_length": 28 }
}
}
24 小时后过期。
第一个传入请求将被保留,之后的重试无法替换它。捕获的正文上限为 256 KB。创建请求的正文可包含 notify_url,用于发送一次完成通知。
MCP 客户端使用 create_webhook_capture 和 read_webhook_capture。A2A 客户端指定 webhook-capture 技能,该技能会创建捕获任务并返回其 URL;读取请求仍需通过 REST 或 MCP。
Agent Inbox - Agent 控制的一次性邮件地址
用于必须通过电子邮件接收内容的步骤:验证码、确认链接或注册邮件。创建收件箱,提供地址,再以清理后的文本形式读取邮件。无需账号或 API 密钥,最长有效期为 24 小时。
curl https://aisenseapi.com/services/v1/inbox
{
"ok": true,
"inbox_id": "a85d0bee-f8f7-4be1-a1b3-8d58f3dbdfc7",
"slug": "ztjqt7n",
"address": "[email protected]",
"read_url": "https://aisenseapi.com/services/v1/inbox/a85d0bee-f8f7-4be1-a1b3-8d58f3dbdfc7",
"wait_url": "https://aisenseapi.com/services/v1/inbox/a85d0bee-f8f7-4be1-a1b3-8d58f3dbdfc7/wait/25",
"expire_timestamp": 1800086400
}
返回两个标识符,但它们不能互换。 slug 是地址中的七个字符。它天生是公开的:会出现在邮件头、退信和发件人日志中。任何人知道它都可以向收件箱发送邮件,但绝不能借此读取收件箱,而且它不会出现在 URL 中。inbox_id 是 UUID,也是唯一用于读取的凭据。持有它的任何人都能读取邮件,而且它只会在创建时返回一次。猜到地址并不能读取收件箱。错误的 inbox_id 和不存在的收件箱都会返回 404,绝不会返回 403,因此两者无法区分。
读取邮件,或最多等待 25 秒:
curl https://aisenseapi.com/services/v1/inbox/{inbox_id}
curl https://aisenseapi.com/services/v1/inbox/{inbox_id}/wait/25
{
"ok": true,
"slug": "ztjqt7n",
"address": "[email protected]",
"received": 1,
"truncated": false,
"messages": [
{
"from": "[email protected]",
"subject": "Your verification code",
"date": "2027-01-15T08:00:00Z",
"text": "Your code is 481516. Confirm at https://example.com/confirm/abc",
"codes": [ "481516" ],
"links": [ "https://example.com/confirm/abc" ]
}
],
"created_at_timestamp": 1800000000,
"expire_timestamp": 1800086400
}
读取响应不包含 inbox_id。该凭据绝不会在响应中回显。等待形式会在同一对象中添加 waited_seconds 和 wait_reason。超过 25 的值会限制为 25,与其他所有等待路由相同。
codes 是独立的 4 到 8 位数字。links 仅包含公开的 http(s) 链接;私有 IP 和 localhost 链接会被丢弃。date 是服务收到邮件的时间,而非发件人的 Date 标头,因为该标头由发件人控制。
truncated 表示邮件遭到拒收,无论是因为收件箱达到邮件数量上限还是总大小上限。收件箱满后会拒收新邮件,而不是删除旧邮件,因此如果没有这个标记,等待验证码的 Agent 会看到收件箱已满、没有验证码,也不知道原因。等待操作也会监视此标记以及邮件数量,因此邮件遭拒时会结束等待,而不会让调用方一直等到超时。
存储前会移除附件、原始 MIME、任意标头、脚本、样式、私有 IP 链接和 localhost 链接。只保留发件人地址、主题、接收时间、清理后的文本、验证码和公开链接。
限制:每个收件箱最多 20 封邮件,每封邮件的清理后文本最多 64 KiB,每个收件箱总计最多 256 KiB,每个客户端每天(UTC)最多创建 50 个收件箱,整个服务最多同时有 5000 个活跃收件箱。24 小时的有效期固定,无法延长。
MCP 客户端使用 create_agent_inbox 和 read_agent_inbox;后者的等待操作也会监视 truncated,并在达到上限导致邮件被拒时立即返回。A2A 客户端指定 agent-inbox 技能,该技能会创建收件箱并返回地址和 URL;读取邮件仍通过 REST 或 MCP 完成。
Storage - 用于流水线的临时键值存储
提交任意 JSON、文本或文件。返回一个 UUID。可从任何位置检索——另一台机器、不同的 Agent 调用,或下游流水线步骤。
请求正文会原样存储。 发送的内容会原样返回;不会添加或移除封装。
curl -X POST https://aisenseapi.com/services/v1/storage \
-H "Content-Type: application/json" \
-d '{"result": 42, "status": "complete"}'
# -> { "storage_id": "550e8400-e29b-41d4-a716-446655440000",
# "storage_url": "https://aisenseapi.com/services/v1/storage/550e8400-e29b-41d4-a716-446655440000",
# "sha256_hash": "...", "bytes": 36, "expire_timestamp": 1738457158 }
curl https://aisenseapi.com/services/v1/storage/550e8400-e29b-41d4-a716-446655440000
# -> {"result": 42, "status": "complete"}
24 小时后过期。可执行文件(Windows、Linux 和 Mac 程序,根据文件首字节判断)会被拒绝,并返回 415。每个 IP 每天最多可存储 80 MB;超过后,POST 请求会返回 429。存储的文件仅当为图片、音频、视频或 PDF 时才会以内嵌形式返回;其他所有文件(包括 SVG)都会作为下载返回。
URL Shortener
curl "https://aisenseapi.com/services/v1/url_shortener/https://example.com/very/long/path"
# -> { "short_url": "https://307.fi/KtNshX2B", "expire_timestamp": 1786959715 }
24 小时后过期。
IP Reverse Lookup
curl https://aisenseapi.com/services/v1/ip_reverse_lookup/8.8.8.8
{
"ip": "8.8.8.8",
"country": "United States",
"city": null,
"location": { "lat": "37.751000", "lng": "-97.822000" },
"place": null,
"timezone": "America/Chicago"
}
city 和 place 经常为 null;如果城市未知,坐标会回退到所在国家的质心。还可将域名解析为 IP。
curl https://aisenseapi.com/services/v1/domain_ip_lookup/example.com
# -> { "domain": "example.com", "ip": "104.20.23.154" }
标准工具
哈希 - MD5、SHA1、SHA256、SHA512、CRC32
接受 JSON、纯文本(Content-Type: text/plain)或文件上传。
每种算法返回的键名均为对应算法的名称,而不是 hash。
curl -X POST https://aisenseapi.com/services/v1/sha256_hash \
-H "Content-Type: application/json" -d '{"data": "Hello"}'
# -> { "sha256_hash": "185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969" }
md5_hash | sha1_hash | sha256_hash | sha512_hash | crc32_checksum |
whirlpool_hash | sha3_256_hash | sha3_512_hash | blake2b_hash | blake3_hash
crc32_checksum 返回整数,而不是十六进制字符串。
用于测试数据的密码哈希,计算速度较慢且带盐,每个 IP 每天可进行 200 次操作:argon2id_hash | bcrypt_hash | scrypt_hash,使用 password_verify 验证;它会从字符串中读取算法和成本。
编码 - Base64、Base58、Base32、Hex、base64url、URL、HTML、JWT、QR 码
# Encode
curl -X POST https://aisenseapi.com/services/v1/base64_encode \
-H "Content-Type: application/json" -d '{"data": "Hello world"}'
# -> { "base64_encoded_data": "SGVsbG8gd29ybGQ=" }
# Decode - returns the raw bytes, not JSON
curl -X POST https://aisenseapi.com/services/v1/base64_decode \
-H "Content-Type: application/json" -d '{"data": "SGVsbG8gd29ybGQ="}'
# -> Hello world
# ...unless you ask for JSON
curl -X POST https://aisenseapi.com/services/v1/base64_decode \
-H "Content-Type: application/json" -H "Accept: application/json" \
-d '{"data": "eyJrZXkiOiJ2YWx1ZSJ9"}'
# -> { "type": "json", "decoded_data": { "key": "value" } }
五种字节解码器(base64_decode、base58_decode、base32_decode、hex_decode、base64url_decode)除非收到 Accept: application/json,否则都会以 application/octet-stream 响应。这是 API 中唯一不返回 JSON 的地方。base64_decode、hex_decode 和 base64url_decode 也会以 text/plain 响应;如果收到它们无法处理的 Accept,则会返回 406。其他两种在 Accept 不是 JSON 时都会返回字节。
curl -X POST https://aisenseapi.com/services/v1/hex_encode \
-H "Content-Type: application/json" -d '{"data": "hello"}'
# -> { "hex_encoded_data": "68656c6c6f" }
curl -X POST https://aisenseapi.com/services/v1/base64url_encode \
-H "Content-Type: application/json" -d '{"data": "hello?"}'
# -> { "base64url_encoded_data": "aGVsbG8_" } (- and _, no padding, as in a JWT)
curl -X POST https://aisenseapi.com/services/v1/url_encode \
-H "Content-Type: application/json" -d '{"data": "a b/c?é"}'
# -> { "url_encoded_data": "a%20b%2Fc%3F%C3%A9" }
curl -X POST https://aisenseapi.com/services/v1/html_encode \
-H "Content-Type: application/json" -d '{"data": "<b>Tom & Jerry</b>"}'
# -> { "html_encoded_data": "<b>Tom & Jerry</b>" }
url_decode 和 html_decode 返回 JSON,字段分别为 url_decoded_data 和 html_decoded_data,因为结果是文本。url_decode 会保留 +,不会将其转换。
HTML 和 Markdown。 html_to_markdown 会将页面或任意 HTML 转换为 CommonMark,并返回 markdown 和页面的 title,不包含脚本、样式或表单。markdown_to_html 会返回可安全放入页面的 html:Markdown 中的原始 HTML 会显示为文本,不安全协议的链接也会显示为文本。两者都接受 JSON 的 data 字符串或原始请求正文。
curl -X POST https://aisenseapi.com/services/v1/html_to_markdown \
-H "Content-Type: application/json" -d '{"data": "<h1>Hi</h1><p>A <b>bold</b> word</p>"}'
# -> { "markdown": "# Hi\n\nA **bold** word", "title": null }
curl -X POST https://aisenseapi.com/services/v1/markdown_to_html \
-H "Content-Type: application/json" -d '{"data": "**Bold** <b>raw</b>"}'
# -> { "html": "<p><strong>Bold</strong> <b>raw</b></p>" }
JWT - data 接受 JSON 对象形式的声明,或包含 JSON 的字符串。 两种形式生成的令牌相同。
curl -X POST https://aisenseapi.com/services/v1/jwt_encode \
-H "Content-Type: application/json" \
-d '{"data": {"user": "alice"}, "secret": "my-secret-key"}'
# -> { "jwt": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9..." }
jwt_decode 返回 decoded_payload。
QR - 请求字段为 payload,也接受别名 data。
curl -X POST https://aisenseapi.com/services/v1/qrcode_encode \
-H "Content-Type: application/json" -d '{"payload": "https://example.com"}'
# -> { "qrcode_image": "iVBORw0KGgoAAAANSUhEUgAA...", "image_type": "png" }
qrcode_decode 接受相同的 payload 字段(或文件上传),并返回 qrcode_content。上传的图像可以是 PNG、JPEG、GIF 或 WebP,大小最多为 10 MB。JSON 正文最多为 256 KiB,因此通过 payload 传输的图像大小约为 190 KB。
随机 - UUID、GUID、数字、颜色、密码
curl https://aisenseapi.com/services/v1/uuid # { "uuid": "..." }
curl https://aisenseapi.com/services/v1/guid # { "guid": "..." }
curl https://aisenseapi.com/services/v1/random_color # { "random_color": "#9b6bbf" }
curl https://aisenseapi.com/services/v1/random_number/1/100
# -> { "random_number": 73, "range": { "from": 1, "to": 100 } }
curl https://aisenseapi.com/services/v1/password/16
# -> { "password": "jFehS]AKGx9wl[jp", "password_length": 16 }
random_number 只提供一个参数时,该参数为上限,下限固定为 1。
时间 - 日期时间、时间戳、时区
curl https://aisenseapi.com/services/v1/datetime # UTC
curl https://aisenseapi.com/services/v1/datetime/+0200 # with offset
curl https://aisenseapi.com/services/v1/datetime/europe/oslo # a zone by name, summer time included
curl https://aisenseapi.com/services/v1/ip_datetime # the same, where your address is
curl https://aisenseapi.com/services/v1/timestamp
curl https://aisenseapi.com/services/v1/microtimestamp
curl https://aisenseapi.com/services/v1/timezones
curl https://aisenseapi.com/services/v1/swatchinternettime
偏移量为四位数字,可带正负号,例如 +0200、-0530、0100,也可使用带冒号的格式,例如 +02:00。仅包含小时的值(如 1)不是有效路由。像 europe/oslo 这样的时区名称不区分大小写,并会遵循夏令时,而固定偏移量不会。其响应包含当前生效的偏移量、标准偏移量、是否启用夏令时及其开始和结束时间,以及日期和周数。/ip_datetime[/{ip}] 会返回某个地址所在时区的相同信息;不提供地址时则返回调用者所在时区的信息。
worldtimeapi.org 的客户端在我们于 2026 年 10 月 3 日建立的每个连接都重置后,可在此处获取响应:/api/timezone/{zone} 对应 /datetime/{zone},/api/ip[/{address}] 对应 /ip_datetime[/{ip}],/api/timezone 对应 /timezones,以上均通过 HTTPS 返回 JSON。迁移对照表中包含详细信息。
/timezones 返回的是对象,而不是字符串:
{"timezones": [{"timezone": "Europe/Oslo", "offset": "+0200"}, ...]}。
Web 工具 - Ping、运行状况、客户端 IP、用户代理
curl https://aisenseapi.com/services/v1/ping # { "ping": "pong" }
curl https://aisenseapi.com/services/v1/health # { "status": "ok", "microtimestamp": ... }
curl https://aisenseapi.com/services/v1/client_ip # { "ip": "203.0.113.42" }
curl https://aisenseapi.com/services/v1/user_agent # { "user_agent": "curl/8.5.0" }
加密货币 - 钱包生成与余额查询
curl https://aisenseapi.com/services/v1/solana/generate_new_wallet
curl https://aisenseapi.com/services/v1/bitcoin/generate_new_wallet
curl https://aisenseapi.com/services/v1/ethereum/generate_new_wallet
curl https://aisenseapi.com/services/v1/solana/balance/{address}
curl https://aisenseapi.com/services/v1/bitcoin/balance/{address}
curl https://aisenseapi.com/services/v1/ethereum/balance/{address}
这三个生成器都会返回 public_address(Bitcoin 还会返回
private_key_wif)。Ethereum 余额以字符串形式返回——
{"wallet": "0x...", "balance_eth": "6.634527787345637061", "balance_wei": "6634527787345637061"}
——因为 Wei 通常会超过 2^53,这是 JavaScript 客户端能够以 JSON 数字形式保留的最大整数。
钱包生成仅用于开发和测试。通过公共 HTTP 端点生成的密钥经过了你无法控制的网络。切勿向其转入资金。
随附的 JavaScript 和 Python 客户端分别封装了 Agent Queue 的八个方法,每个 MCP 工具对应一个;上面的原始 HTTP 示例展示了相同的调用。
按语言快速开始
curl
curl https://aisenseapi.com/services/v1/uuid
Python - 零依赖,仅使用标准库。
from aisense_api import AISenseAPI
api = AISenseAPI()
print(api.get_uuid()["uuid"])
print(api.hash_sha256("Hello")["sha256_hash"])
print(api.ip_reverse_lookup("8.8.8.8")["country"])
JavaScript - Node 18+ 或任何现代浏览器,使用原生 fetch。
import { AISenseAPI } from './aisense-api.js'
const api = new AISenseAPI()
console.log((await api.getUUID()).uuid)
console.log((await api.hashSHA256('Hello')).sha256_hash)
console.log((await api.ipReverseLookup('8.8.8.8')).country)
两个客户端都会返回解析后的响应,并且每个方法的文档字符串都会注明确切的响应键。路径不存在时,它们还会给出清晰的错误,而不会让调试回显导致 JSON 解析失败。它们涵盖了 API.md 中的所有端点,tools/check-sdk-coverage.py 会连同 openai-tools.json 一起检查覆盖情况。图像方法会以 multipart/form-data 上传文件,故障模拟器则会返回 API 发送的内容,而不是抛出错误。
大模型函数调用(OpenAI、Gemini、Mistral 等)
import json
from openai import OpenAI
with open("openai-tools.json") as f:
tools = json.load(f)
client = OpenAI()
response = client.chat.completions.create(
model="gpt-4o",
tools=tools,
messages=[{"role": "user", "content": "Generate a UUID and hash the word Hello with SHA256"}]
)
Claude - 随附 SKILL.md。将其添加到 Claude 的上下文中,它就会自动将这些 API 用作工具。
仓库内容
| 文件 | 用途 |
|---|---|
API.md | 端点约定、源代码检查和带日期的生产环境观察记录 |
queue-openapi.json | Agent Queue 的独立 OpenAPI 约定 |
MCP.md | 远程 MCP 服务、工具列表和客户端示例 |
AGENT-GUIDE.md | 所有 MCP 工具的权威精简指南 |
AGENT-QUICKSTART.md | 完整的 Queue 示例、工作器和重试决策 |
server.json | 官方 MCP Registry 的元数据 |
aisense_api.py | Python 客户端(仅使用标准库) |
aisense-api.js | JavaScript ESM 客户端 |
openai-tools.json | REST 函数调用目录,与 MCP 工具列表分开 |
SKILL.md | Claude 技能文件 |
test.sh | 对响应正文和状态码进行断言;失败时退出并返回 1(适合 CI) |
tools/check-text.php | 提交前检查文档标点 |
tools/check-sdk-coverage.py | 当 API.md 中的端点未被客户端或 openai-tools.json 覆盖时失败 |
tools/check-sdk-requests.py | 使用本地桩运行两个客户端,并检查每个请求是否覆盖较新的端点 |
tools/pages/ | 图像工具页面和 web/ 中三个图像指南的生成器 |
test.sh 不仅会对状态码进行断言,还会检查响应正文。正文才是最重要的部分:只检查状态码的测试套件会放过返回 200、但响应键错误的端点。
端点摘要
所有路径均相对于 https://aisenseapi.com/services/v1/。存储字段是 /storage 返回的键:storage_id、storage_url、sha256_hash、bytes 和 expire_timestamp。
| 类别 | 端点 | 方法 | 响应键 |
|---|---|---|---|
| 时间 | /datetime[/{offset}] | GET | datetime |
| 时间 | /datetime/{zone} | GET | datetime、timezone、abbreviation、utc_offset、dst、unixtime、raw_offset、dst_offset、dst_from、dst_until、day_of_week、day_of_year、week_number、utc_datetime |
| 时间 | /ip_datetime[/{ip}] | GET | ip,以及 /datetime/{zone} 的键 |
| 时间 | /timestamp | GET | timestamp |
| 时间 | /microtimestamp | GET | microtimestamp |
| 时间 | /timezones[/{offset}] | GET | timezones |
| 时间 | /swatchinternettime | GET | beat、date |
| 时间 | /timestamp_convert | POST | input、detected、timestamp、datetime、rfc2822、utc_datetime |
| 随机 | /random_number[/{from}[/{to}]] | GET | random_number、range |
| 随机 | /random_color | GET | random_color |
| 随机 | /uuid | GET | uuid |
| 随机 | /guid | GET | guid |
| 随机 | /password[/{length}] | GET | password、password_length |
| 随机 | /passphrase[/{groups}] | GET | passphrase、groups、length、entropy_bits |
| 转换 | /base64_encode | POST | base64_encoded_data |
| 转换 | /base64_decode | POST | 原始字节,或 type + decoded_data |
| 转换 | /base58_encode | POST | base58_encoded_data |
| 转换 | /base58_decode | POST | 原始字节,或 type + decoded_data |
| 转换 | /base32_encode | POST | base32_encoded_data |
| 转换 | /base32_decode | POST | 原始字节,或 type + decoded_data |
| 转换 | /hex_encode | POST | hex_encoded_data |
| 转换 | /hex_decode | POST | 原始字节,或 type + decoded_data |
| 转换 | /base64url_encode | POST | base64url_encoded_data |
| 转换 | /base64url_decode | POST | 原始字节,或 type + decoded_data |
| 转换 | /url_encode | POST | url_encoded_data |
| 转换 | /url_decode | POST | url_decoded_data |
| 转换 | /html_encode | POST | html_encoded_data |
| 转换 | /html_decode | POST | html_decoded_data |
| 转换 | /html_to_markdown | POST | markdown、title |
| 转换 | /markdown_to_html | POST | html |
| 转换 | /slugify | POST | slug |
| 转换 | /jwt_encode | POST | jwt |
| 转换 | /jwt_decode | POST | decoded_payload |
| 转换 | /qrcode_encode | POST | qrcode_image、image_type |
| 转换 | /qrcode_decode | POST | qrcode_content |
| 转换 | /json_to_csv | POST | 存储字段、content_type、filename、operation |
| 转换 | /csv_to_json | POST | 存储字段、content_type、filename、operation |
| 转换 | /table_match | POST | 存储字段、content_type、filename、operation |
| 转换 | /json_format | POST | 存储字段、content_type、filename、operation |
| 转换 | /json_validate | POST | 存储字段、content_type、filename、operation、valid |
| 图像 | /image_convert | POST | 存储字段、format、width、height、input_format、input_bytes |
| 图像 | /image_compress | POST | 存储字段、format、width、height、input_format、input_bytes |
| 图像 | /image_resize | POST | 存储字段、format、width、height、input_width、input_height、fit、upscaled |
| 图像 | /image_metadata | POST | 存储字段、format、width、height、gps、findings |
| 图像 | /image_strip | POST | 存储字段、format、width、height、input_bytes、removed、kept |
| 图像 | /image_colors | POST | 存储字段、average、dominant、count |
| 图像 | /image_favicon | POST | 存储字段、files、crop、upscaled |
| 逻辑 | /decide | POST | answers |
| 逻辑 | /mock_response/{status}[/{ms}] | 任意 | error 或 ok,以及 mock_response |
| Agent 测试 | /aiq/start/{version}[/{profile}] | GET | run_id、run_token、task |
| Agent 测试 | /aiq/start/dar/team-5 | POST | run_id、run_token、controller_key |
| Agent 测试 | /aiq/verify | POST | valid |
| 哈希 | /md5_hash | POST | md5_hash |
| 哈希 | /sha1_hash | POST | sha1_hash |
| 哈希 | /sha256_hash | POST | sha256_hash |
| 哈希 | /sha512_hash | POST | sha512_hash |
| 哈希 | /crc32_checksum | POST | crc32_checksum |
| 哈希 | /whirlpool_hash | POST | whirlpool_hash |
| 哈希 | /sha3_256_hash | POST | sha3_256_hash |
| 哈希 | /sha3_512_hash | POST | sha3_512_hash |
| 哈希 | /blake2b_hash | POST | blake2b_hash |
| 哈希 | /blake3_hash | POST | blake3_hash |
| 哈希 | /argon2id_hash | POST | argon2id_hash |
| 哈希 | /bcrypt_hash | POST | bcrypt_hash |
| 哈希 | /scrypt_hash | POST | scrypt_hash |
| 哈希 | /hash_verify | POST | match、algorithm、computed |
| 哈希 | /password_verify | POST | match、algorithm、params |
| Web | /ping | GET | ping |
| Web | /health | GET | status、microtimestamp |
| Web | /client_ip | GET | ip |
| Web | /html2pdf | POST | storage_id、storage_url、sha256_hash、bytes、expire_timestamp |
| Web | /user_agent | GET | user_agent |
| Web | /ip_reverse_lookup/{ip} | GET | ip、country、city、location、place、timezone |
| Web | /domain_ip_lookup/{domain} | GET | domain、ip |
| Web | /email_validate | POST | email、valid_syntax、domain、has_mx、mx_hosts |
| Web | /storage | POST / GET | storage_id、storage_url、sha256_hash、bytes、expire_timestamp |
| Web | /storage/{id}/sha256/{hex} | GET | 已存储的正文;如果其哈希值与 {hex} 不符,则返回 412 |
| Web | /url_shortener/{url} | GET | short_url、expire_timestamp |
| Web | /dns/{ip}、/dns/{slug} | GET,或通过 POST 更改 | name、ip、record、ttl、expire_at,创建时还包括 dns_token |
| Web | /semantic_search | GET / POST | collection_id、model、创建时的读写令牌、搜索所得的排名 results |
| Web | /webhook_capture | POST / GET | capture_id、update_url、read_url、wait_url |
| Web | /webhook_action | POST / GET | action_id、表单 URL 或 URL 列表、result_url、wait_url |
| Web | /webhook_schedule | POST / GET / DELETE | 单次或定期任务状态、计数和结果 |
| Web | /agent_wake | POST / GET / DELETE | taskId、status、result、等待支持 |
| Web | /inbox | POST | inbox_id、slug、address、read_url、wait_url、expire_timestamp |
| Web | /inbox/{inbox_id} | GET | slug、address、received、truncated、messages、时间字段 |
| Web | /heartbeat | POST | heartbeat_id、status、时间字段、ping_url、status_url |
| Web | /heartbeat/{id} | GET | 状态、时间字段、计数器、可选的 delivery |
| Web | /heartbeat/{id}/ping | POST | 更新后的时间字段和计数器 |
| Web | /lease/namespace | POST | namespace、entropy_bits |
| Web | /lease、/lease/acquire | POST | 状态、所有者令牌和 fencing 令牌、过期字段、可选结果 |
| Web | /lease/renew、/lease/release、/lease/complete | POST | 状态、fencing 令牌、过期字段、可选结果 |
| Web | /queue | POST | queue_id、角色令牌、计数和固定过期时间 |
| Web | /queue/{id} | GET | queue_id、计数和时间信息 |
| Web | /queue/{id}/jobs、/queue/{id}/claim、作业操作 | POST / GET | job,仅在认领时附带收据 |
| Web | /validate/{type} | POST | type、valid、各项检查字段 |
| 加密 | /solana/generate_new_wallet | GET | private_key、private_key_base58、public_address |
| 加密 | /solana/balance/{address} | GET | wallet、balance_sol、balance_lamports |
| 加密 | /bitcoin/generate_new_wallet | GET | private_key、private_key_wif、public_address |
| 加密 | /bitcoin/balance/{address} | GET | wallet、final_balance_btc、final_balance_sats |
| 加密 | /ethereum/generate_new_wallet | GET | private_key、public_address |
| 加密 | /ethereum/balance/{address} | GET | wallet、balance_eth、balance_wei |
备注
- 输入格式因端点而异。实用工具转换支持多种格式,而 Queue 和其他结构化工作流端点要求使用 JSON
- Storage、URL Shortener、Webhook Capture、Webhook Action、Webhook Schedule、Agent Wake、Agent Inbox、Heartbeat、Lease 和 Queue 的有效期或绝对生命周期为 24 小时
- Queue 作业(包括已完成和失败的作业)共用固定的队列过期时间。活动不会延长此期限
- Webhook Schedule 会将最终结果额外保留最多 24 小时
- Heartbeat 在触发、未触发或过期后,其终止状态还可读取 24 小时
- 每个响应都会设置
Access-Control-Allow-Origin: *,因此可从浏览器调用 - 速率限制:每个 IP 每天 5000 个请求
AI SENSE AS | aisenseapi.com Postboks 1202 Vika, 0110 Oslo, Norway
MIT License
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。