{"name":"Wechatai Plugin Protocol","protocolVersion":"1.0","availability":{"status":"builtin-only","executableRuntimes":["builtin"],"builtinPlugins":["wechatai/llm-chat","wechatai/web-research","wechatai/image-generation","wechatai/openclaw","wechatai/hermes","wechatai/roleplay","wechatai/personal-assistant","wechatai/notification"],"thirdPartyRegistration":false,"publicInvocationApi":false,"codeUpload":false,"eventTransport":false,"outputAssetDelivery":true,"note":"可依据协议开发并在本地验证适配器；内置 AI 生图支持图片交付；第三方执行、上传、事件传输和媒体接入尚未开放。Invocation 是数据契约，不是一个公开 HTTP 调用入口。"},"links":{"documentation":"https://wechatai.app/developers/plugins","markdown":"https://wechatai.app/developers/plugins.md","api":"https://wechatai.app/api/plugins/protocol","versionedApi":"https://wechatai.app/api/plugins/protocol/1.0","schema":"https://wechatai.app/api/plugins/protocol/1.0/schema.json","discovery":"https://wechatai.app/llms.txt"},"schemas":{"Manifest":"https://wechatai.app/api/plugins/protocol/1.0/schema.json#/$defs/Manifest","Invocation":"https://wechatai.app/api/plugins/protocol/1.0/schema.json#/$defs/Invocation","Result":"https://wechatai.app/api/plugins/protocol/1.0/schema.json#/$defs/Result","Event":"https://wechatai.app/api/plugins/protocol/1.0/schema.json#/$defs/Event","Block":"https://wechatai.app/api/plugins/protocol/1.0/schema.json#/$defs/Block"},"examples":{"manifest":{"protocolVersion":"1.0","id":"wechatai/llm-chat","version":"1.0.0","name":"LLM 对话","author":"Wechatai","runtime":"builtin","capabilities":{"input":["text","image"],"output":["text"],"sessions":"platform","streaming":false,"cancellation":false,"approvals":false,"commands":"platform"},"configSchema":{"type":"object","required":["modelId"],"properties":{"modelId":{"type":"string"}}},"permissions":{"modelAccess":true,"networkOrigins":[],"storage":false}},"invocation":{"protocolVersion":"1.0","runId":"run_example_001","instanceId":"instance_example_001","pluginId":"wechatai/llm-chat","pluginVersion":"1.0.0","sessionId":"session_example_001","messages":[{"role":"system","content":[{"type":"text","text":"请用简洁的中文回答。"}]},{"role":"user","content":[{"type":"text","text":"给我三个早餐搭配建议。"}]}],"limits":{"inputTokens":128000,"outputTokens":1024,"outputImages":0,"creditUnits":5000}},"result":{"protocolVersion":"1.0","runId":"run_example_001","status":"completed","content":[{"type":"text","text":"1. 鸡蛋、全麦面包和牛奶\n2. 燕麦、酸奶和香蕉\n3. 豆浆、玉米和鸡蛋"}]},"event":{"protocolVersion":"1.0","runId":"run_example_001","eventId":"event_example_001","sequence":0,"type":"accepted","payload":{}}},"builtinManifests":[{"protocolVersion":"1.0","id":"wechatai/llm-chat","version":"1.0.0","name":"LLM 对话","author":"Wechatai","runtime":"builtin","capabilities":{"input":["text","image"],"output":["text"],"sessions":"platform","streaming":false,"cancellation":false,"approvals":false,"commands":"platform"},"configSchema":{"type":"object","required":["modelId"],"properties":{"modelId":{"type":"string"}}},"permissions":{"modelAccess":true,"networkOrigins":[],"storage":false}},{"protocolVersion":"1.0","id":"wechatai/web-research","version":"1.3.0","name":"DS Chat","author":"Wechatai","runtime":"builtin","capabilities":{"input":["text","image"],"output":["text"],"sessions":"platform","streaming":false,"cancellation":false,"approvals":false,"commands":"platform"},"configSchema":{"type":"object","required":["name","shortcut","modelId","searchProvider","searchEndpoint"],"properties":{"name":{"type":"string","minLength":1,"maxLength":40},"shortcut":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","minLength":1,"maxLength":24,"pattern":"^(?!\\p{N}+$)[\\p{L}\\p{N}_\\-]+$","description":"Unique across this account's model and plugin shortcuts; letters, numbers, underscores and hyphens only. Must not be entirely numeric. /use accepts only this alias, not a display name or list index."},"modelId":{"type":"string"},"enabled":{"type":"boolean","default":true},"searchProvider":{"enum":["deepseek","tavily","exa","searxng"]},"searchEndpoint":{"type":"string","format":"uri","description":"Full public HTTPS endpoint, including its path. The UI prefills DeepSeek's official endpoint; no platform credential or fallback service is provided."},"searchModel":{"type":"string","maxLength":120,"default":"","description":"Optional for DeepSeek native Web Search. Omit or leave blank to use deepseek-flash; an override must support the web_search tool. Independent of the answer model."},"apiKey":{"type":"string","writeOnly":true,"maxLength":2000,"description":"User-supplied search credential, encrypted by the host. Required except for unauthenticated SearXNG."},"maxSearches":{"type":"integer","minimum":1,"maximum":5,"default":3},"maxReads":{"type":"integer","minimum":0,"maximum":8,"default":3}}},"permissions":{"modelAccess":true,"networkOrigins":[],"storage":false}},{"protocolVersion":"1.0","id":"wechatai/image-generation","version":"1.2.0","name":"AI 生图","author":"Wechatai","runtime":"builtin","capabilities":{"input":["text"],"output":["image"],"sessions":"platform","streaming":false,"cancellation":false,"approvals":false,"commands":"platform"},"configSchema":{"type":"object","required":["name","shortcut","modelId"],"properties":{"name":{"type":"string","maxLength":40},"shortcut":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","minLength":1,"maxLength":24,"pattern":"^(?!\\p{N}+$)[\\p{L}\\p{N}_\\-]+$"},"modelId":{"type":"string","description":"Image model in an existing channel; the host uses its base URL and credential with /v1/images/generations, independently of the channel chat protocol."},"enabled":{"type":"boolean","default":true},"waitingMessageEnabled":{"type":"boolean","default":true},"waitingMessage":{"type":"string","maxLength":300,"default":"已提交 AI 生图，等待上游返回...","description":"User-visible progress notice; not forwarded to the plugin or billed. Required when enabled."}}},"permissions":{"modelAccess":true,"networkOrigins":[],"storage":false}},{"protocolVersion":"1.0","id":"wechatai/openclaw","version":"1.0.0","name":"OpenClaw","author":"Wechatai","runtime":"builtin","capabilities":{"input":["text"],"output":["text"],"sessions":"remote","streaming":false,"cancellation":false,"approvals":false,"commands":"native"},"configSchema":{"type":"object","required":["name","shortcut","agentId"],"properties":{"name":{"type":"string"},"shortcut":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","minLength":1,"maxLength":24,"pattern":"^(?!\\p{N}+$)[\\p{L}\\p{N}_\\-]+$"},"agentId":{"type":"string","default":"main"},"enabled":{"type":"boolean","default":true},"allowProactive":{"type":"boolean","default":true},"waitingMessageEnabled":{"type":"boolean","default":true},"waitingMessage":{"type":"string","maxLength":300,"default":"已成功转发，等待回复...","description":"User-visible progress notice; not forwarded to the plugin or billed. Required when enabled."},"maxInputTokens":{"type":"integer","minimum":256,"maximum":2000000,"default":128000,"description":"仅限制本条发送的文字，不包含 OpenClaw 的历史对话、系统提示词或内部工具输入。"},"maxOutputTokens":{"type":"integer","minimum":256,"maximum":16000,"default":4096}}},"permissions":{"modelAccess":false,"networkOrigins":[],"storage":true}},{"protocolVersion":"1.0","id":"wechatai/hermes","version":"1.0.0","name":"Hermes","author":"Wechatai","runtime":"builtin","capabilities":{"input":["text"],"output":["text"],"sessions":"remote","streaming":false,"cancellation":false,"approvals":false,"commands":"native"},"configSchema":{"type":"object","required":["name","shortcut","agentId"],"properties":{"name":{"type":"string"},"shortcut":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"string","minLength":1,"maxLength":24,"pattern":"^(?!\\p{N}+$)[\\p{L}\\p{N}_\\-]+$"},"agentId":{"type":"string","const":"main","default":"main","description":"使用当前 Hermes profile，无需填写 Agent ID。"},"enabled":{"type":"boolean","default":true},"allowProactive":{"type":"boolean","default":true},"waitingMessageEnabled":{"type":"boolean","default":true},"waitingMessage":{"type":"string","maxLength":300,"default":"已成功转发，等待回复...","description":"User-visible progress notice; not forwarded to the plugin or billed. Required when enabled."},"maxInputTokens":{"type":"integer","minimum":256,"maximum":2000000,"default":128000,"description":"仅限制本条发送的文字，不包含 Hermes 历史、系统提示词或内部工具输入。"},"maxOutputTokens":{"type":"integer","minimum":256,"maximum":16000,"default":4096}}},"permissions":{"modelAccess":false,"networkOrigins":[],"storage":true}},{"protocolVersion":"1.0","id":"wechatai/roleplay","version":"1.0.0","name":"角色扮演","author":"Wechatai","runtime":"builtin","capabilities":{"input":["text","image"],"output":["text"],"sessions":"platform","streaming":false,"cancellation":false,"approvals":false,"commands":"platform"},"configSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":40},"avatar":{"default":"","type":"string","enum":["","xingye","shenyan","wanqing","zhiyao","cenwu","judeng"]},"shortcut":{"type":"string","minLength":1,"maxLength":24,"pattern":"^(?!\\p{N}+$)[\\p{L}\\p{N}_\\-]+$"},"modelId":{"type":"string","minLength":1,"maxLength":200},"enabled":{"default":true,"type":"boolean"},"description":{"type":"string","minLength":1,"maxLength":16000},"personality":{"default":"","type":"string","maxLength":6000},"userName":{"default":"你","type":"string","maxLength":80},"userPersona":{"default":"","type":"string","maxLength":6000},"scenario":{"default":"","type":"string","maxLength":8000},"firstMessage":{"default":"","type":"string","maxLength":6000},"examples":{"default":"","type":"string","maxLength":16000},"instructions":{"default":"","type":"string","maxLength":8000},"postHistoryInstructions":{"default":"","type":"string","maxLength":4000},"lore":{"default":[],"maxItems":50,"type":"array","items":{"type":"object","properties":{"name":{"default":"","type":"string","maxLength":100},"keys":{"default":[],"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"secondaryKeys":{"default":[],"maxItems":30,"type":"array","items":{"type":"string","minLength":1,"maxLength":100}},"content":{"type":"string","minLength":1,"maxLength":6000},"enabled":{"default":true,"type":"boolean"},"constant":{"default":false,"type":"boolean"},"caseSensitive":{"default":false,"type":"boolean"},"priority":{"default":0,"type":"integer","minimum":-10000,"maximum":10000}},"required":["content"]}},"loreTokenBudget":{"default":1000,"type":"integer","minimum":0,"maximum":4000},"sourceCard":{"default":"","type":"string","maxLength":64000}},"required":["name","shortcut","modelId","description"]},"permissions":{"modelAccess":true,"networkOrigins":[],"storage":false}},{"protocolVersion":"1.0","id":"wechatai/personal-assistant","version":"1.0.0","name":"个人助理","author":"Wechatai","runtime":"builtin","capabilities":{"input":["text","image"],"output":["text"],"sessions":"platform","streaming":false,"cancellation":false,"approvals":false,"commands":"platform"},"configSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"default":"个人助理","type":"string","minLength":1,"maxLength":40},"shortcut":{"default":"助理","type":"string","minLength":1,"maxLength":24,"pattern":"^(?!\\p{N}+$)[\\p{L}\\p{N}_\\-]+$"},"modelId":{"type":"string","minLength":1,"maxLength":200},"enabled":{"default":true,"type":"boolean"},"currency":{"default":"CNY","type":"string","enum":["CNY","USD","HKD","EUR","GBP","JPY"]},"reminderConnectionId":{"default":"","type":"string","maxLength":200}},"required":["modelId"]},"permissions":{"modelAccess":true,"networkOrigins":[],"storage":true}},{"protocolVersion":"1.0","id":"wechatai/notification","version":"1.0.0","name":"消息提醒","author":"Wechatai","runtime":"builtin","capabilities":{"input":["text"],"output":["text"],"sessions":"none","streaming":false,"cancellation":false,"approvals":false,"commands":"platform"},"configSchema":{"type":"object","required":["connectionId"],"properties":{"name":{"type":"string","maxLength":40},"connectionId":{"type":"string"},"enabled":{"type":"boolean","default":true}}},"permissions":{"modelAccess":false,"networkOrigins":[],"storage":true}}],"billing":{"authority":"platform","policyVersion":"gateway-v1","tokenizerVersion":"cl100k_base@gpt-tokenizer-4.0.0","tokensPerCredit":5000,"outputTokenWeight":8,"creditsPerOutputImage":5,"unitsPerCredit":1000,"unitFormula":"ceil((inputTokens + 8 * outputTokens) * 1000 / 5000) + outputImages * 5000","trustsPluginUsage":false,"exemptPlugins":["wechatai/notification"],"input":"Concatenate text blocks within each message, tokenize each message, then sum. Count the platform boundary snapshot, including supplied history and system text.","output":"Concatenate accepted final text blocks once. Internal calls, reasoning, progress, retries and upstream usage are excluded.","images":"Only unique output assets independently verified by the platform and scoped to this run are counted. Asset delivery is not yet open."},"validation":{"dialect":"https://json-schema.org/draft/2020-12/schema","selectDefinition":"Use a $ref to one of the schemas URLs; the root document is a definition bundle, not a payload validator.","unknownFields":"rejected","openObjects":["Manifest.configSchema","Event.payload"],"eventPayloadStatus":"reserved; per-event payload contracts are not defined","creditUnits":"null means no optional spending cap; 0 means zero budget. 1000 units = 1 credit.","additionalHostChecks":["runId match","permissions","input/output budgets","idempotency","verified assets owned by account and run"]}}