面向 AI 代理

一步连接你的代理,让它运营你的社交渠道。

Markaestro 生来就是为软件操作而设计的。像 Claude Code 这样的 MCP 客户端通过浏览器登录,并获得一个绑定到单一品牌的密钥;其他任何代理都可以在设置中获取同样的密钥。无论哪种方式,代理都能发现它可以发布到哪些账号、上传媒体、起草并排期帖子、发布它们,并回报实际发出的内容,覆盖 Facebook、Instagram、TikTok、LinkedIn、Threads 和 Pinterest。

无需安装 SDK,也无需看管平台凭证。你的团队在控制台连接一次账号,之后代理只与一个 Bearer 令牌 API 对话。

为自主性而设计,因目标而受限

为什么一个 API 密钥就是整个集成

让代理接触社交媒体的难点并不在于 HTTP 本身,而在于确保一个出错的模型不会发布到错误的品牌、不会因重试而重复发布,也不会发出一条无人审阅过的内容。这些保障机制内置于 API 接口本身,而不是依赖于你的提示词。

一个密钥,一个品牌
每个 API 密钥在创建时都会绑定到单一品牌。持有该密钥的代理只能查看并发布到那一个品牌,跨品牌请求会在认证阶段被直接拒绝,而不是仅靠约定来限制。
动态发现,而非硬编码 ID
代理会查询自己可以发布到哪些账号,并获得可直接回传的不透明 ID。无需管理主页 ID,无需在 Business Manager 中翻找,也无需维护一份在连接重新关联后就会失效的配置文件。
幂等写入
在任何创建或发布请求中附带 Idempotency-Key。24 小时内的重复调用会返回原始响应,而不会创建第二篇内容,这是代理最常遇到的失败模式。
始终有人工参与其中
Facebook、Instagram 和 TikTok 的内容以人工优先:由你的代理负责准备,由真人完成原生发布。除非你明确为该内容选择直接发布,否则不会有任何内容在无人监督的情况下发出。

MCP 客户端

在客户端里登录。无需粘贴任何东西。

Claude Code、Claude、Cursor、ChatGPT、Grok、Grok Bot、OpenClaw、Hermes 以及任何支持 Model Context Protocol 的客户端,都可以在不配置任何凭证的情况下连接 Markaestro 托管的 MCP 服务器。第一次调用工具时会打开浏览器:登录,选择代理可以操作的工作区和品牌,检查权限,然后点击允许。客户端会收到绑定到该品牌的密钥,并自行刷新。

这是带 PKCE 和动态客户端注册的标准 OAuth 2.1,与其他托管 MCP 服务器采用相同机制,因此无需任何 Markaestro 专用插件。服务器位于 https://markaestro.com/api/public/v1/mcp,在公共 API 之上提供三十一个工具:品牌与目标发现、媒体上传、草稿与排期帖子、带任务轮询的发布、批量操作、Webhook,以及各渠道规则。

连接你的代理

选择你的代理。三步之后,它就能发帖。

下面的每个客户端都连接到同一个托管 MCP 服务器。大多数通过浏览器登录:第一次调用工具时会打开一个授权页面,你在其中选择代理可以操作的工作区和品牌,客户端随后获得一个绑定到该品牌的密钥。无法打开浏览器的客户端则改用工作区 API 密钥。同一个服务器,同样的权限,设置中的同一份列表。

Claude Code

插件会同时安装技能和托管服务器。无需配置,无需粘贴。

登录或 API 密钥Claude Code 文档
01

开始之前

  • 你是已验证邮箱的工作区所有者或管理员,且该工作区有有效套餐和至少一个品牌。
  • 已安装 Claude Code 并登录你的 Anthropic 账户。
03

登录

  1. 向 Claude 询问任何关于 Markaestro 的问题,或运行 /mcp 并选择 markaestro。
  2. 浏览器会打开授权页面。选择工作区和品牌,检查权限,点击“允许”。
  3. 之后要切换品牌,再次运行 /mcp,退出登录,然后用另一个品牌登录。
优先使用登录。只有在客户端无法打开浏览器时才使用密钥。
04

验证

  • 让代理调用 list_products。它应返回你授权的那一个品牌及其已连接的渠道。
  • 该连接会显示在“设置,API”中,带有“已连接代理”标记、最近使用时间和请求量。你可以随时在那里撤销。
打开设置,API
02

添加服务器

  1. 在任意终端运行两条插件命令,或用第三条命令仅添加服务器。
Bash
# The plugin bundles the skill and the hosted server.
claude plugin marketplace add D3vBaba/Markaestro
claude plugin install markaestro@markaestro

# Or add just the server. No key, no header: the first call opens the browser.
claude mcp add --transport http markaestro https://markaestro.com/api/public/v1/mcp

客户端连接时会发生什么

五个步骤全部由客户端和浏览器处理。你只会看到同意页面。

01质询
POST /api/public/v1/mcp → 401 + WWW-Authenticate

客户端在没有凭证的情况下调用 MCP 端点。Markaestro 返回 401,并附带指向受保护资源元数据文档的 WWW-Authenticate 头。正是这个头告诉客户端可以登录。

02发现
GET /.well-known/oauth-protected-resource · /.well-known/oauth-authorization-server

客户端读取两份公开文档:哪个授权服务器保护该端点,以及该服务器的注册、授权和令牌端点在哪里。两份文档都由 markaestro.com 提供,可以缓存。

03注册
POST /api/public/v1/oauth/register

客户端用名称和回调地址注册自己。回环地址、https 回调和原生应用 scheme 会被接受;指向真实主机的明文 http 会被拒绝。不需要预先共享的客户端 ID。

04同意
GET /oauth/authorize (browser)

浏览器打开同意页面。邮箱已验证的工作区所有者或管理员选择工作区和品牌,调整权限,然后点击允许。Markaestro 带着一次性授权码把浏览器送回客户端。

05令牌
POST /api/public/v1/oauth/token

客户端用授权码加上 PKCE verifier 换取访问令牌和刷新令牌。访问令牌就是一个普通的工作区 API 密钥,绑定到所选品牌。它在 30 天后过期;刷新会轮换其密钥并再延长 30 天。

令牌就是真正的 API 密钥

作用域、品牌绑定、速率限制、订阅检查、幂等性和撤销,与手动创建的密钥走完全相同的代码路径。不存在需要另外理解的第二套权限模型。

在设置中可见、可撤销

已连接的代理会显示在设置的 API 中,带有“已连接的代理”徽章、最近使用时间和请求量。在那里撤销后,客户端的下一次调用即失败;断开连接时客户端也可以自行撤销令牌。

一个连接,一个品牌

每个连接都精确绑定到同意时选择的一个品牌。要让代理处理第二个品牌,请再次连接并选择该品牌。客户端永远无法触及未被授予的品牌。

授权码和刷新令牌都是一次性的

授权码有效期十分钟并以原子方式消费,因此重放的授权码会失败。刷新令牌每次使用都会轮换,并以哈希形式存储。闲置的客户端注册在 180 天后过期。

端点

面向构建 MCP 客户端或审计此流程的人。所有内容都可以从两份 well-known 文档中发现,这里没有任何需要手动配置的东西。

参考
# Discovery (public, cacheable)
GET  /.well-known/oauth-protected-resource            RFC 9728
GET  /.well-known/oauth-authorization-server          RFC 8414

# Authorization server
POST /api/public/v1/oauth/register                    RFC 7591, public clients (PKCE) or client_secret
GET  /oauth/authorize?response_type=code&client_id=…&redirect_uri=…
                     &code_challenge=…&code_challenge_method=S256&state=…
POST /api/public/v1/oauth/token                       grant_type=authorization_code | refresh_token
POST /api/public/v1/oauth/revoke                      RFC 7009

# Token response
{ "access_token": "mk_live_<ws>.<client>.<secret>", "token_type": "Bearer",
  "expires_in": 2592000, "refresh_token": "…", "scope": "products.read posts.write …" }

代理循环

从头到尾,只需五次调用

Markaestro 的每一次自动化本质上都是这个循环的变体。第一到第三步是 Connect API,大多数代理应该对接的扁平接口。第四步和第五步则会调用完整的 /api/public/v1 API,用于显式发布和任务跟踪。

01发现
GET /api/connect/v1/social-accounts

返回该密钥所属品牌下所有已连接、可发布的账号,每个账号都包含平台、用户名和一个不透明 ID。请在每次运行开始时调用,连接关系会发生变化。

02上传素材
POST /api/connect/v1/media/create-upload-url → PUT

生成一个短时有效、一次性使用的已签名 URL,然后向其 PUT 原始字节数据。你会获得一个素材 ID。图片最大支持 10MB;完整版 API 还支持最大 250MB 的视频。

03起草或排期
POST /api/connect/v1/posts

原样传入文案、素材 ID 和账号 ID。可将其保留为草稿以供审阅,或发送 is_draft false 并附带 scheduled_at,将其加入日历。

04发布
POST /api/public/v1/posts/:id/publish

将一次异步任务加入队列。LinkedIn、Threads 和 Pinterest 会通过官方 API 发布出去。Facebook、Instagram 和 TikTok 则会进入工作区的「待发布」队列,等待真人完成原生发布。

05回报结果
GET /api/public/v1/job-runs/:id · webhooks

轮询任务 ID,或注册一个 Webhook 端点,让 Markaestro 主动推送 post.published、post.action_required 和 post.failed。切勿假定发布会同步完成。

快速入门

四条命令即可完成一次可运行的集成

首先生成密钥:打开 设置 → API,选择该密钥可以访问的品牌,勾选所需的权限范围,并可选择设置有效期。密钥只会显示一次,请直接将其存入代理的密钥存储库中。生成密钥需要拥有已验证邮箱的管理员或所有者身份。

1. 发现账号
每次运行的第一步调用。连接关系会发生变化,ID 不应被硬编码进提示词中。
Bash
# The API is served from the marketing apex and the app subdomain alike.
export MARKAESTRO_URL="https://markaestro.com"
export MARKAESTRO_API_KEY="mk_live_<workspaceId>.<clientId>.<secret>"

# 1. What can this key post to?
curl -s "$MARKAESTRO_URL/api/connect/v1/social-accounts" \
  -H "Authorization: Bearer $MARKAESTRO_API_KEY"
响应
{
  "data": [
    {
      "id": "prod_123#instagram:instagram:ig_123",
      "product_id": "prod_123",
      "product": "Northwind Coffee",
      "platform": "instagram",
      "username": "northwindcoffee"
    }
  ]
}
2. 上传素材
分两步完成:先生成一个已签名的一次性 URL,再 PUT 字节数据。该 URL 会在 15 分钟后失效,且无需附带自己的认证头。
Bash
# 2. Mint a signed upload url, then PUT the bytes.
RESP=$(curl -s -X POST "$MARKAESTRO_URL/api/connect/v1/media/create-upload-url" \
  -H "Authorization: Bearer $MARKAESTRO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "mime_type": "image/png", "size_bytes": 184320, "name": "cold-brew.png" }')
# → { "media_id": "ast_777", "upload_url": "https://.../media/upload?token=..." }

curl -X PUT "<upload_url>" \
  -H "Content-Type: image/png" \
  --data-binary @cold-brew.png
3. 排期,然后跟踪
创建操作默认以草稿优先。改为发送 is_draft: false 并附带 scheduled_at 时间戳,即可将内容排入日历。
Bash
# 3. Put it on the calendar. Pass the account id back verbatim.
curl -X POST "$MARKAESTRO_URL/api/connect/v1/posts" \
  -H "Authorization: Bearer $MARKAESTRO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "caption": "Cold brew season starts Friday.",
    "media": ["ast_777"],
    "social_accounts": ["prod_123#instagram:instagram:ig_123"],
    "is_draft": false,
    "scheduled_at": "2026-08-14T15:00:00.000Z"
  }'

# 4. Check where everything stands.
curl -s "$MARKAESTRO_URL/api/connect/v1/posts?limit=20" \
  -H "Authorization: Bearer $MARKAESTRO_API_KEY"

开箱即用

工具定义与代理简介

有两样东西可以直接复制使用。第一是一套覆盖整个发布循环的工具 Schema,以 JSON Schema 编写,因此可直接用作 Claude 工具定义、OpenAI 函数,或你自行托管的 MCP 服务器的输入格式。第二是一份运行简介,用于防止模型做出出人意料的操作。

工具 Schema
六个工具:列出账号、上传素材、创建、发布、列出、删除。请将每个工具与上方对应的接口相连接。
tools.json
[
  {
    "name": "markaestro_list_accounts",
    "description": "List the social accounts this Markaestro key can publish to. Call this first in every run. Never hardcode account ids. Returns id, platform, and username.",
    "input_schema": { "type": "object", "properties": {}, "required": [] }
  },
  {
    "name": "markaestro_upload_media",
    "description": "Upload one image or video to Markaestro and return a media asset id. Images: png, jpeg, webp, gif up to 10 MB. Video: mp4, mov, webm up to 250 MB.",
    "input_schema": {
      "type": "object",
      "properties": {
        "file_path": { "type": "string", "description": "Local path to the file to upload." },
        "mime_type": { "type": "string", "description": "MIME type of the file." }
      },
      "required": ["file_path", "mime_type"]
    }
  },
  {
    "name": "markaestro_create_post",
    "description": "Create a post for one channel. Facebook, Instagram, and TikTok are manual-first: a human posts them natively from the To Post queue. Omit delivery_mode unless the user explicitly asked for unattended publishing.",
    "input_schema": {
      "type": "object",
      "properties": {
        "channel": {
          "type": "string",
          "enum": ["facebook", "instagram", "tiktok", "linkedin", "threads", "pinterest", "x"]
        },
        "caption": { "type": "string", "description": "Caption text, max 4000 characters." },
        "media_asset_ids": {
          "type": "array",
          "items": { "type": "string" },
          "description": "Ids from markaestro_upload_media. Instagram and TikTok require at least one."
        },
        "destination_id": {
          "type": "string",
          "description": "From markaestro_list_accounts. Required only when the brand has more than one destination on that channel."
        },
        "delivery_mode": {
          "type": "string",
          "enum": ["manual_reminder", "direct_publish", "platform_inbox"],
          "description": "Omit for the channel default."
        }
      },
      "required": ["channel", "caption"]
    }
  },
  {
    "name": "markaestro_publish_post",
    "description": "Queue an async publish run for an existing post. Returns a run id. Poll it, do not assume the post is live.",
    "input_schema": {
      "type": "object",
      "properties": { "post_id": { "type": "string" } },
      "required": ["post_id"]
    }
  },
  {
    "name": "markaestro_list_posts",
    "description": "List posts for this brand, newest first. Filter by status: draft, scheduled, publishing, published, platform_action_required, failed, partial_failed.",
    "input_schema": {
      "type": "object",
      "properties": {
        "status": { "type": "string" },
        "limit": { "type": "integer", "minimum": 1, "maximum": 100 }
      },
      "required": []
    }
  },
  {
    "name": "markaestro_delete_post",
    "description": "Remove a post from Markaestro. Use it to cancel something scheduled. Deleting an already-published post does NOT retract the live copy on the platform.",
    "input_schema": {
      "type": "object",
      "properties": { "post_id": { "type": "string" } },
      "required": ["post_id"]
    }
  }
]
代理简介
粘贴到你的系统提示词中。它编码了区分可靠发布代理与那种重复发布并过早宣布「完成」的代理之间的行为准则。
系统提示词
You have a Markaestro API key for exactly one brand. Markaestro is the
publishing layer: you supply the caption and the media, it handles the
platform rules, the calendar, and delivery.

Base URL: https://markaestro.com
Auth: Authorization: Bearer $MARKAESTRO_API_KEY

Rules:
- Call GET /api/connect/v1/social-accounts before posting. Pass the returned
  account ids back verbatim. Never invent or cache an id across runs.
- Upload media before creating a post; posts reference media ids, not files.
- Facebook, Instagram, and TikTok are manual-first. Creating and publishing
  them queues a reminder for a human. That is the intended behavior. Only
  send deliveryMode "direct_publish" if the operator explicitly asked for it.
- Send a unique Idempotency-Key on every POST. Reuse the SAME key when
  retrying the SAME request; never reuse it for a different one.
- On 429, wait the number of seconds in Retry-After, then retry. On 4xx other
  than 429, do not retry. Report the error code and requestId and stop.
- Publishing is async. POST /publish returns a run id; poll
  GET /api/public/v1/job-runs/<id> until succeeded or failed.
- To cancel, list with ?status=scheduled and DELETE the post id. Deleting a
  published post does not remove it from the platform.
- Never claim a post is live until a run reports succeeded or a post reports
  published.

你的代理也可以自行获取这份内容:curl https://markaestro.com/llms.txt 会返回整个 API 的纯文本简介,涵盖接口、规则和错误处理,体积足够小,可以放入上下文中。

示例场景

代理实际运行的四种工作流

发布并确认
创建草稿,显式发布,然后轮询任务状态。这是向操作者确认内容已成功发出的唯一可靠方式。
Bash
# Full control: draft → publish → poll. No productId needed:
# the key is already bound to one brand.

POST_ID=$(curl -s -X POST "$MARKAESTRO_URL/api/public/v1/posts" \
  -H "Authorization: Bearer $MARKAESTRO_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: post-2026-08-14-linkedin" \
  -d '{
    "channel": "linkedin",
    "caption": "We shipped agent-driven publishing.",
    "mediaAssetIds": ["ast_777"]
  }' | jq -r .post.id)

RUN_ID=$(curl -s -X POST "$MARKAESTRO_URL/api/public/v1/posts/$POST_ID/publish" \
  -H "Authorization: Bearer $MARKAESTRO_API_KEY" \
  -H "Idempotency-Key: publish-$POST_ID" | jq -r .run.id)

# queued → running → succeeded | failed
curl -s "$MARKAESTRO_URL/api/public/v1/job-runs/$RUN_ID" \
  -H "Authorization: Bearer $MARKAESTRO_API_KEY"
审核并取消队列中的内容
列出已排期的内容,展示给真人查看,删除被拒绝的内容。这两个调用都使用现有密钥已具备的权限范围。
Bash
# Review the queue, then cancel what the operator rejected.
curl -s "$MARKAESTRO_URL/api/public/v1/posts?status=scheduled&limit=100" \
  -H "Authorization: Bearer $MARKAESTRO_API_KEY"

curl -X DELETE "$MARKAESTRO_URL/api/public/v1/posts/pst_123" \
  -H "Authorization: Bearer $MARKAESTRO_API_KEY"
# → { "deleted": true, "id": "pst_123" }
一次调用排满一整周
批量创建最多支持 25 篇内容,并按条目返回结果,因此单个格式错误的条目不会拖垮整次运行。
Bash
# One call, up to 25 posts. Per-item results: one bad item
# does not fail the batch.
curl -X POST "$MARKAESTRO_URL/api/public/v1/posts" \
  -H "Authorization: Bearer $MARKAESTRO_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: week-33-drop" \
  -d '{
    "posts": [
      { "channel": "instagram", "caption": "Monday",  "mediaAssetIds": ["ast_1"] },
      { "channel": "facebook",  "caption": "Tuesday", "mediaAssetIds": ["ast_2"] },
      { "channel": "linkedin",  "caption": "Thursday" }
    ]
  }'
# → { "results": [...], "created": 3, "total": 3 }
被动接收通知,而非轮询
长时间运行的代理应注册 Webhook 并进入休眠。投递内容使用创建时仅显示一次的密钥进行 HMAC 签名。
Bash
# Let Markaestro call you instead of polling.
curl -X POST "$MARKAESTRO_URL/api/public/v1/webhook-endpoints" \
  -H "Authorization: Bearer $MARKAESTRO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://your-agent.example.com/hooks/markaestro",
    "events": ["post.published", "post.action_required", "post.failed"]
  }'

# Each delivery carries:
#   X-Markaestro-Event      post.action_required
#   X-Markaestro-Timestamp  2026-08-14T15:00:04.000Z
#   X-Markaestro-Signature  HMAC of the body with your webhook secret
# The secret is shown once at creation and stored hashed. Verify before acting.

安全护栏

代理能做什么,不能做什么

自主性只有在影响范围可控时才有价值。Markaestro 的默认设置假定调用方是可能出错的软件。

Facebook、Instagram 和 TikTok 以人工优先

你的代理为这些渠道创建的内容,默认使用 manual_reminder:Markaestro 不会调用这些平台的 API。发布操作会将内容移入工作区的「待发布」队列,由真人下载素材、原生发布并确认,因此内容看起来与手动制作的完全一致,且在公开存在之前,每一条都会经过人工过目。代理可以通过 deliveryMode: "direct_publish" 为单篇内容选择官方 API 发布,在 TikTok 上这意味着转交至创作者收件箱,绝不会成为无人监督的公开发布。LinkedIn、Threads 和 Pinterest 会在你的代理明确请求后以程序化方式发布。

缩小密钥权限范围

只选择代理所需的权限范围:products.read、media.write、posts.read、posts.write、posts.publish、job_runs.read、webhooks.manage。一个只读取日历的研究型代理,只需拥有 posts.read 即可。

设置有效期

密钥可在创建时设置有效期。过期的密钥表现与被撤销的密钥完全相同,因此从代理环境中泄露的密钥会自行失效。

轮换与撤销

你可以在「设置 → API」中原地轮换密钥,或直接将其彻底撤销。每个密钥都会显示最近使用时间和请求量,因此无论代理沉寂下来还是行为失控,都能被及时发现。

速率限制会被强制执行

每个接口每分钟 60 次请求,每个密钥每分钟 240 次请求。每个响应都携带 X-RateLimit-Limit、-Remaining 和 -Reset;429 响应会携带 Retry-After。请遵守这些限制,而不是强行发起请求。

Markaestro 不会替你撰写内容

系统中不存在生成环节。文案来自你的代理,素材来自你的素材库或代理的处理流程。Markaestro 是执行的手,而不是发声的口。

删除操作仅作用于 Markaestro 一侧

删除一篇已排期的内容会在其发布前取消该内容。删除一篇已发布的内容只会停止 Markaestro 对其进行跟踪,该内容在平台上仍会保持发布状态,直到有人在平台上将其移除为止。

错误处理

教会代理哪些错误值得重试

每个错误响应都是包含稳定 error 代码和 requestId 的 JSON。请让你的代理在报告失败时引用 requestId,这是支持团队追踪该次调用所需的信息。

状态码错误代码代理应采取的操作
401UNAUTHENTICATED密钥缺失、已被撤销或已过期。请停止操作并请求人工提供新密钥,重试无济于事。
403FORBIDDEN密钥缺少该调用所需的权限范围。请报告是哪次调用失败;权限范围可在「设置 → API」中修改。
403API_KEY_NOT_BOUND_TO_PRODUCT这是一个在品牌绑定机制启用之前签发的密钥。请申请一个替代密钥。
400VALIDATION_*请求负载违反了某个渠道规则(素材缺失、投递方式无效、scheduled_at 错误等)。请修正请求;不要在未做修改的情况下重试。
400VALIDATION_IDEMPOTENCY_KEY_REUSED同一个 Idempotency-Key 被用于不同的请求体发送。请为每个不同的请求生成一个新密钥。
400VALIDATION_POST_IS_PUBLISHING在发布任务进行中时尝试删除该内容。请等待任务完成后再删除。
409VALIDATION_POST_ALREADY_PUBLISHING该内容的发布任务已在队列中。请勿再次发布,请轮询现有任务的状态。
402SUBSCRIPTION_REQUIRED此工作区未关联有效套餐。请让工作区所有者在“设置”中检查账单。
402QUOTA_EXCEEDED_MEDIA_UPLOADS工作区已达到月度上传配额。请停止上传并展示该状态,已有素材仍会正常发布。
404NOT_FOUND该 ID 不属于此密钥所在的品牌范围。为防止密钥探测其不拥有的 ID,此处返回 404 而非 403。
429RATE_LIMITED等待 Retry-After 指定的秒数,然后使用相同的 Idempotency-Key 重试同一请求。

自由选择你的技术栈

只要能发起 HTTPS 请求,就能实现发布

没有需要引入的 Markaestro 专属客户端库,也没有需要遵循的特定框架。持有者令牌、传入 JSON、返回 JSON。

Claude 与 Claude Agent SDK

将上方的工具定义直接添加到你的工具列表中。这些 JSON Schema 结构已经符合 Claude 的工具使用格式。

OpenAI 的 function calling

相同的 Schema 可以一对一映射为函数定义,只需将 input_schema 重命名为 parameters。

MCP 客户端

Claude Code、Claude、Cursor、ChatGPT、Grok、Grok Bot、OpenClaw、Hermes:添加托管服务器 URL 并通过浏览器登录。对于仅支持 stdio 的客户端,npx -y @markaestro/mcp 会在本地运行同样的三十一个工具。

n8n、Make、Zapier

每个接口都是携带持有者令牌的普通 HTTP 请求。无需 SDK,无需签名流程,代理也无需处理 OAuth 授权流程。

LangChain 与 LlamaIndex

标准的 REST 工具。两步式的素材上传是唯一需要多次调用的流程,且仅需两行代码。

一个 cron 任务加 curl

并非每个代理都需要一个完整框架。上方的快速入门就是一个用四条命令即可完成的完整可运行集成。

让你的代理做一些真正有意义的事

先连接你的渠道,再连接你的代理:从 MCP 客户端登录,或者创建一个绑定品牌的密钥。任选其一,整合就完成了。