{"name":"io.github.AvatarGaia/canvas-mcp","slug":"avatargaia-canvas-mcp","title":null,"description":"TeamAgent Canvas MCP（服务端 0.4.0）：91 个工具——开岗、改配置、跑动作、看数据、发布并配知识库。可匿名试用，带 Key 解锁全部。","url":"https://mcp.market/server/avatargaia-canvas-mcp","rating":null,"grade":"A","score":87,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":35,"stars":0,"forks":0,"downloads_week":234,"last_push_at":"2026-10-03T10:36:26.000Z","license":"MIT"},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-05T08:15:41.833Z","last_ok_at":"2026-11-05T08:15:41.833Z","latency_ms":2121},"claimed":false,"transport":"mixed","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/AvatarGaia/canvas-mcp","website":"https://agent.avatargaia.top","version":"0.1.4","remotes":[{"type":"streamable-http","url":"https://agent.avatargaia.top/api/mcp/canvas","headers":[{"description":"Bearer <dk_ 或 ta_>。可不带：匿名沙箱开放 list_templates / list_actions / open_canvas / canvas_action（免费动作）。自助拿 Key：POST https://agent.avatargaia.top/api/dev/register","isSecret":true,"name":"Authorization"}]}],"packages":[{"registryType":"npm","identifier":"@avatargaia/canvas-mcp","version":"0.1.4","runtimeHint":"npx","transport":{"type":"stdio"},"packageArguments":[{"description":"TeamAgent MCP 端点（默认 canvas 门；AICare 门填 /api/mcp/aicare）","type":"named","name":"--url","valueHint":"https://agent.avatargaia.top/api/mcp/canvas"},{"description":"开发者 Key（dk_，自助注册 POST /api/dev/register）或平台令牌 ta_；不带则只能用匿名沙箱工具","isSecret":true,"type":"named","name":"--token","valueHint":"dk_xxx"}]}],"tools":[{"name":"canvas_action","description":"执行一个岗位动作（如 AICare 的 preflight / list_checks / gen_report / run_detection / resolve_user）。参数：slug、action 必填；params 按 list_actions 的 schema 填；session_id 想让结果落在某次会话里就带；hostUserId 宿主用户标识可选。返回 {ok, mode:\"sync\", data} 直接用；{ok, mode:\"job\", jobId, pollSec} 用 get_job 轮询。代价：list_actions 标 paid 的会从岗位出资人余额扣 credits（出报告 5 / 跑检测 2），失败不扣；同键（如同对象同一天）重复调用返回缓存结果（cached 标记）不重复扣，用户催第二次可放心重试。典型编排：list_actions → canvas_action(preflight) 拿背景 → canvas_action(gen_report) → get_job → 用自然语言讲给用户。公共岗位：gaia-academy（龙虾学院 · Agent 进修）的动作标 public:true——任何持有效 Key 的调用方都能跑，不需要拥有该岗位；学员身份取调用方 Key 的用户，非 public 动作对非归属方仍 403。典型用法：canvas_action(gaia-academy, search_courses → start_exam → submit_exam → get_principle)。","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string"},"action":{"type":"string","description":"动作 id，见 list_actions"},"params":{"description":"按 list_actions 给的 JSON Schema 填","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"session_id":{"description":"可选，open_canvas 给的会话 ID，动作记录会挂到该会话","type":"string"},"hostUserId":{"description":"宿主用户标识，可选","type":"string"}},"required":["slug","action"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_job","description":"按 job_id 查长任务：queued / running / done(带 result) / failed(带 error)。建议每 3 秒查一次。error 是人话（如\"关爱对象不存在或已删除\"），照原话转述给用户，不要改写成\"系统繁忙\"，也不要拿同参数重试。","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"job_id":{"type":"string"}},"required":["job_id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_session_log","description":"单个会话按时间正序的完整流水：用户消息 / AI 回复(带 tokens) / 埋点 / 动作调用 / 推屏。参数：slug 和 session_id 两个都必填（slug 用于显式鉴权）。调用前先从 list_sessions 或 open_canvas 拿到合法 session_id。隐私边界：只能读自己岗位的记录。需要有效 Key，匿名不开。","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string"},"session_id":{"type":"string"}},"required":["slug","session_id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_staff_config","description":"读岗位配置：personaPrompt / serviceFlow / promotionConfig / productSources / contextMode / layoutStyle / templateId / llmMode（只说是否 BYOK，不给密钥）/ tts。参数：slug 必填。改之前先读，否则会用\"想当然的人设\"覆盖客户调过的版本。","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string"}},"required":["slug"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_stats","description":"岗位一段时间的汇总：会话数、真人对话轮数、埋点数、动作调用数、tokens、按日曲线。参数：slug 必填；from/to ISO 时间，默认最近 30 天。用户问\"这岗位最近怎么样/今天多少人来\"就用它，不要靠聊天历史猜数字。需要有效 Key，匿名不开。","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string"},"from":{"type":"string"},"to":{"type":"string"}},"required":["slug"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"hire_staff","description":"开一个新的数字员工岗位。参数：templateId 必填（list_templates 里 canOpen=true 的，如 kb-assistant 知识库问答员）；name 员工名字；kbs 开岗时就配上的知识库。返回 slug、画布链接 canvasUrl（发给顾客 / 挂服务号的就是它）和实际配上的知识库 kbs（名下没有的库名会被忽略，以返回为准）。代价：新岗位先免费试用几天，之后按月从主人余额扣 Token，对话按次另计——开之前跟用户确认；每个账号岗位数有上限，到上限会报错，让用户先删掉不用的。","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"templateId":{"type":"string","description":"岗位模板，从 list_templates 里挑 canOpen=true 的"},"name":{"description":"员工名字，顾客会看到","type":"string"},"kbs":{"description":"开岗时就配上的知识库名（必须是我名下已发布的）","type":"array","items":{"type":"string"}}},"required":["templateId"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_actions","description":"列出这个岗位（按其模板）能做的动作：id / title / description / cost / credits / anonymous / job / params(JSON Schema)。参数：slug 必填。调 canvas_action 前先调它，不要猜 action 名——各岗位动作集不同，params 按它给的 schema 填。","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string"}},"required":["slug"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_kbs","description":"列出我名下已发布的知识库（库名 / 版本 / 发布时间 / 篇数 / 每页的 path 与标题），以及我名下每个岗位各自配了哪些库。用户问\"我有哪些知识库\"\"这个岗位用的什么资料\"时用。知识库是数字员工回答业务问题的依据：岗位配了库，访客问到时它会先查库再答。","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_my_staff","description":"列出我名下的数字员工岗位（slug / 名称 / 模板 / 画布链接）。用户问\"我有哪些岗位\"用它；后续所有按岗位操作的工具都要 slug，slug 一律从这里拿，不要凭记忆拼。参数：无。","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_sessions","description":"岗位的访客会话列表（最近优先）：session_id、宿主用户标识、轮数、时间。参数：slug 必填；q 按宿主用户标识模糊搜；from/to；limit；cursor 翻页传上一页返回的 nextCursor。想看\"最近都服务了哪些人\"用它，再拿 session_id 看明细。需要有效 Key，匿名不开。","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string"},"q":{"type":"string"},"from":{"type":"string"},"to":{"type":"string"},"limit":{"type":"integer","minimum":1,"maximum":200},"cursor":{"type":"string"}},"required":["slug"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_templates","description":"列出可开岗的数字员工模板。用于：想知道\"系统能开哪些岗位\"、或用户要开通新岗位时。返回每个模板的 templateId / 名称 / 说明 / canOpen / missingHandlers / 动作清单。别用它找\"已开好的岗位\"——那是 list_my_staff。canOpen=false 的模板不可开通（缺实现），别推荐用户选。参数：无。","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"open_canvas","description":"为岗位生成画布链接 + 会话 ID。用于用户需要\"看得见的界面\"（看报告/看商品/做检测）。参数：slug 必填；hostUserId 宿主用户标识（强烈建议带，会话归属和离线补推都靠它）；targetId 关爱/业务对象；app 指定画布页（如 aicare-kf）。返回 {url, session_id}——把 session_id 存下来，get_session_log / push_screen 都用它。会话在返回时已建立：现在就能 push_screen 给\"还没来的人\"备卡片，用户打开链接即补推；人打开后聊天/埋点都归到同一个 session_id。","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string","description":"岗位 slug（见 list_my_staff）"},"hostUserId":{"description":"宿主系统的用户标识，如 AICare 的 userId","type":"string"},"targetId":{"description":"关爱对象/服务对象 ID（AICare 类岗位用）","type":"string"},"app":{"description":"画布页面，默认岗位配置的；AICare 康护可传 aicare-kf","type":"string"}},"required":["slug"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"patch_staff_config","description":"局部修改岗位配置，patch 只放要改的字段：personaPrompt(人设) / serviceFlow(服务流程，一行一步) / promotionConfig（只放要改的键，其余保留：categories:[{name,priority,url}] 主推；look:{brandName,slogan,intro,avatarUrl,theme(ember|green|blue|purple),particles,startText,footer,placeholder,emptyTitle,emptyHint,showPhoto} 画布外观与文案；sell:{sop,pdd} 是否推荐服务包 / 拼多多商品；kbs:[库名] 用哪些知识库，也可用 set_staff_kbs）/ productSources([{key,label,searchUrl,weAppId?,weAppUsername?}]) / layoutStyle(split|pip|classic) / contextMode(inline|webhook) / contextWebhookUrl / name。参数：slug、patch 都必填。这是写操作，改的是客户的岗位，改完立刻生效；不确定用户真要改时先复述一遍再调。","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string"},"patch":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"要改的字段"}},"required":["slug","patch"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"publish_kb","description":"把一套整理好的 Markdown 发布成知识库（发布到我名下；带 slug 则同时配给那个岗位）。结构：wiki/index.md 是总目录（每篇一行：链接 + 一句摘要 + 更新日期，数字员工靠它挑页，摘要要准）；其余 wiki/<主题>/<文章>.md，一个概念一篇，标题用访客会问的说法，单篇别超过 6000 字。规矩：①数字、日期、引文必须照原始资料逐字写，不改写不推算；②只收 wiki/ 下的 .md，原始资料不要发上来；③同名再发是整库替换，更新前先 read_kb 把现有页面读回来合并；④发布等于公开——岗位是匿名访客都能聊的，个人隐私、客户资料、令牌、内部运维内容一律不放（平台会拦身份证号和令牌，其它靠你自检）。checked 必须为 true 才会发。上限 200 个文件 / 单个 64KB / 合计 2MB。参数示例：{\"name\":\"选课指南\",\"checked\":true,\"files\":[{\"path\":\"wiki/index.md\",\"content\":\"# Knowledge Base Index\\n...\"},{\"path\":\"wiki/xuanke/rules.md\",\"content\":\"# 选课时间与学分上限\\n...\"}]}（files 是数组，每项一个 {path, content}，不是 {路径: 内容} 的对象）。这是写操作，发之前跟用户确认库名和要不要配给岗位。","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"description":"库名：中英文、数字、- _，40 字以内。同名再发 = 整库替换","type":"string"},"kbName":{"description":"name 的别名","type":"string"},"files":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"content":{"type":"string"}},"required":["path","content"]},"description":"这个库的全部页面，数组，每项 {path, content}：必须含 wiki/index.md；其余是 wiki/<主题>/<文章>.md"},"checked":{"type":"boolean","description":"自检通过才填 true：每个数字 / 日期 / 引文都能在原始资料里逐字找到；没有个人隐私、客户资料、令牌、内部运维内容"},"slug":{"description":"可选：发布后顺手配给这个岗位","type":"string"}},"required":["files","checked"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"push_screen","description":"把内容推到某个画布会话的屏上。参数：session_id 必填（来自 open_canvas 或 list_sessions）；content 必填，写成一条\"助手回复\"文本，可含 ```canvas-md（Markdown 卡片）/ ```canvas-html（完整 HTML 文档）/ ```canvas（JSON 块）围栏，围栏外文字显示为字幕；speak=true 朗读字幕；title 可选。会话在线立即上屏；不在线（含还没人打开过的）存为待展示，该会话或同岗位同一 hostUserId 下次打开自动补推。屏属于会话不属于人：别复用别人的 session_id；要执行有副作用的动作（出报告/跑检测）用 canvas_action。需要有效 Key，匿名不开。","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"session_id":{"type":"string"},"content":{"type":"string","description":"含围栏的回复文本"},"speak":{"description":"是否朗读围栏外文字","type":"boolean"},"title":{"type":"string"}},"required":["session_id","content"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"query_events","description":"跨会话按类型拉事件（倒序）：type = chat_user / chat_assistant / track / action_call / page_open / push。参数：slug 必填；type、from/to、limit(≤500)。每条带 source（mcp / page / server，看得出谁发起的）；action_call 的 payload 有 params/ok/ms/credits/cached/jobId——计费与排障的证据链；push 的 payload 有 preview。需要有效 Key，匿名不开。","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string"},"type":{"type":"string"},"from":{"type":"string"},"to":{"type":"string"},"limit":{"type":"integer","minimum":1,"maximum":500}},"required":["slug"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"read_kb","description":"读一个知识库。参数名是 name（库名，就是 list_kbs 返回里的 kbName）和 page（页面路径，取自页面清单里的 path）。只传 name → 这个库的版本和页面清单；再传 page（如 wiki/index.md）→ 那一页的原文。要更新一个库之前先用它把现有页面读回来——publish_kb 是整库替换，没带上的页面会消失。","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"description":"库名（list_kbs 返回里的 kbName）","type":"string"},"kbName":{"description":"name 的别名","type":"string"},"page":{"description":"页面路径，如 wiki/index.md、wiki/topic/article.md；不传 = 只看这个库有哪些页","type":"string"},"path":{"description":"page 的别名","type":"string"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"set_staff_kbs","description":"设定一个岗位用哪些知识库（整体替换）。参数：slug 必填；kbs 是库名数组，只能填我名下已发布的库（list_kbs 里有的），别人的库名会被忽略；传 [] = 这个岗位不用任何库。改完立刻生效。","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string"},"kbs":{"type":"array","items":{"type":"string"},"description":"这个岗位要用的全部库名（整体替换，传 [] = 一个都不用）"}},"required":["slug","kbs"],"$schema":"http://json-schema.org/draft-07/schema#"}}],"scan":{"score":87,"grade":"A","scanned_at":"2026-10-03T21:45:02.331Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-03T21:45:02.262Z","components":{"code":{"score":25,"max":25,"notes":["2 source files scanned"]},"reliability":{"score":17,"max":20,"notes":["remote reachable in 2371ms"]},"poisoning":{"score":15,"max":15,"notes":["18 tool descriptions checked"]},"auth":{"score":8,"max":15,"notes":["API key sent as a header"]},"maintenance":{"score":15,"max":15,"notes":["last push 0 days ago"]},"identity":{"score":7,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[],"inputs":{"probes":[{"url":"https://agent.avatargaia.top/api/mcp/canvas","reachable":true,"authRequired":false,"latencyMs":2371,"serverInfo":{"name":"teamagent-canvas","version":"0.4.0"}}],"packages":[{"registryType":"npm","identifier":"@avatargaia/canvas-mcp","version":"0.1.4","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":0,"publishedAt":"2026-10-03T10:35:05.864Z","repositoryUrl":"git+https://github.com/AvatarGaia/canvas-mcp.git","weeklyDownloads":234}],"repo":{"found":true,"owner":"AvatarGaia","repo":"canvas-mcp","archived":false,"pushedAt":"2026-10-03T10:36:26Z","stars":0,"forks":0,"openIssues":0,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/327846117?v=4","ownerCreatedAt":"2026-09-11T07:19:40Z","license":"MIT"},"icon":{"url":"https://agent.avatargaia.top/icon-192.png","source":"registry","width":192,"height":192},"presence":{"stars":0,"forks":0,"downloadsWeek":234,"license":"MIT","lastPushAt":"2026-10-03T10:36:26.000Z","score":35}}}},"grade_history":[{"kind":"restore","fromGrade":"B","toGrade":"A","reason":"score 87","createdAt":"2026-09-19T20:06:53.886Z"}],"reviews":[]}