首页龙虾技能列表 › Venn - Secure Universal MCP (Google Workspace, Jira, GitHub, and more) — Venn — 企业MCP集成

Venn - Secure Universal MCP (Google Workspace, Jira, GitHub, and more) — Venn — 企业MCP集成

v2.0.1

通过Venn工具路由器搜索、描述和执行企业工具(Jira、Salesforce、Gmail、Slack、Google Calendar、Google Drive、GitHub、Notion、Box等)。

0· 0·0 当前·0 累计
by @neil-bd·MIT-0
下载技能包
License
MIT-0
最后更新
2026/3/25
安全扫描
VirusTotal
无害
查看报告
OpenClaw
安全
high confidence
该技能内部连贯:它仅请求单个VENN_API_KEY,其运行时指令和能力与基于Venn的企业集成路由器匹配。
评估建议
此技能似乎确实做到了它所说的:它使用单个Venn API密钥将请求路由到许多企业服务。安装之前:- 理解VENN_API_KEY可以访问什么。这一个密钥是您的Venn账户中已配置的任何连接器的网关——在颁发密钥之前审查并限制Venn中连接的集成和范围。- 优先使用OpenClaw密钥助手(openclaw secrets configure)或您组织的密钥管理器,而不是将密钥附加到~/.openclaw/.env或烘焙到沙箱映像中。纯文本文件或映像中的密钥容易泄露。- 如果您必须将密钥放在配置文件或映像中,请使用最小权限密钥并计划轮换/撤销。- 启用集成后审计日志并监控Venn和OpenClaw活动(并限制哪些代理沙箱可以使用密钥)。如果您想要更严格的审查:提供SKILL.md的省略部分(完整工作流执行示例)或Venn API密钥可以被作用域的证据(或作用域令牌存在)。如果技能要求无关的凭证、嵌入外部下载URL,或指导代理读取主机凭证/配置,评估将是可疑的。...
详细分析 ▾
用途与能力
名称/描述声称:通过Venn跨许多企业服务路由/搜索/执行。声明的要求:VENN_API_KEY(primaryEnv)。这是一致的——单个Venn API密钥是让Venn平台对连接的工具进行操作的预期凭证。
指令范围
SKILL.md是纯指令式集成文档,告诉代理如何调用Venn的REST API,以及如何在OpenClaw中配置VENN_API_KEY。它要求操作员将密钥添加到~/.openclaw/.env(或沙箱/docker环境设置),并重新启动或重新加载OpenClaw。这些步骤是操作上预期的,但在全局.env中存储长期平台API密钥或将其烘焙到沙箱映像中会增加影响范围——文档建议这些确切操作,而不是推荐密钥助手作为最安全的默认设置。
安装机制
无安装规范,无代码文件——纯指令的。技能本身不下载或写入任何内容(除了告诉操作员如何配置OpenClaw)。这是最低风险的安装模式。
凭证需求
仅声明一个所需的环境变量(VENN_API_KEY),这与描述的功能相称。重要警告:这一个密钥是网关凭证——将其授予平台可以允许访问许多连接的企业服务(Gmail、Jira、GitHub、Salesforce等)。技能不要求无关的凭证,但Venn密钥隐式启用广泛访问。
持久化与权限
always:false,技能可由用户调用;它不请求永久/强制包含。它确实指导操作员将密钥添加到OpenClaw环境配置(这将在运行之间持久化)——对于API驱动的集成,这也是预期的,但值得为操作安全注意。
安全有层次,运行前请审查代码。

License

MIT-0

可自由使用、修改和再分发,无需署名。

运行时依赖

无特殊依赖

版本

latestv2.0.12026/3/25
● 无害

安装命令 点击复制

官方npx clawhub@latest install venn
镜像加速npx clawhub@latest install venn --registry https://cn.clawhub-mirror.com

技能文档

Connect to enterprise SaaS tools through the Venn platform REST API.

Setup

This skill is gated on VENN_API_KEY — it won't appear until the key is set.

  • 添加 到 OpenClaw .env file:
   echo 'VENN_API_KEY=your-api-key-here' >> ~/.openclaw/.env
   
  • Restart gateway (picks up 新的 env 在...上 开始):
   openclaw gateway restart
   

Or, for zero-downtime reload without restart:

   openclaw secrets reload
   

Alternatively, use the interactive secrets helper:

openclaw secrets configure --skip-provider-setup

Sandboxed agents: .env file injects 进入 host process 仅. 对于 sandboxed (Docker) sessions, 也 添加 VENN_API_KEYagents.defaults.sandbox.docker.env 在...中 openclaw.json, 或 bake 进入 custom sandbox image.

Configuration

  • VENN_API_KEY (必填) — Venn API 键
  • VENN_API_URL (可选) — defaults 到 https://app.venn.ai/api/tooliq

请求 格式

All requests use POST with JSON. Examples below use this shorthand:

# Full form (shown once):
VENN_URL="${VENN_API_URL:-https://app.venn.ai/api/tooliq}"
curl -s -X POST "${VENN_URL}/tools/search" \
  -H "Authorization: Bearer ${VENN_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{"query": "..."}'

# Shorthand (used throughout): # POST /tools/search {"query": "..."}


1. Discovery

列表 connected servers

# POST /tools/help
{"action": "list_servers"}

Returns result.servers[] with server_id, name, and connection_status.

Other help actions:

  • getting_started — onboarding guidance
  • connector_help — info 在...上 connectors (pass server_id 对于 specific one)
  • auth_helper — OAuth re-auth URL 对于 disconnected server (requires server_id)

搜索 对于 tools

# POST /tools/search
{"query": "jira search issues", "limit": 10}

Returns result.candidates[] with server_id, tool_name, short_description, and (for top results) full inputSchema.

Additional parameters: offset, min_score (0–1, default 0.3), min_results (default 5), include_skills (default true).

搜索 strategy — broad 第一个, narrow 如果 needed:

  • 开始 带有 满 task description 在...中 natural language (skills match better):
- "创建 linear ticket 和 设置 到 在...中 progress" - "同步 salesforce contacts 到 google sheet"

  • 如果 否 skill matches, decompose 进入 one 搜索 per platform + action:
- "查询 salesforce contacts" + "创建 google sheets 行"

  • 对于 simple single-platform tasks, 搜索 directly: "创建 salesforce lead"

Splitting rules:

  • 1 搜索 = 1 platform + 1 action (否 single tool handles compound actions)
  • Always include app name 在...中 每个 查询
  • "recap"/"summarize" → 搜索 platform, 然后 present
  • "cross-reference"/"compare" → 搜索 每个 platform, combine results
  • "同步 X 到 Y" → 搜索 source, 然后 destination

如果 否 results, try alternate names:

  • "jira" → "atlassian"
  • "google docs" → "google-drive" 或 "googledocs"
  • "github" → "github-cloud"

Choosing 从 results:

  • 读取 operations → prefer broad 查询 tools 在...上 获取-由-ID
  • 创建/更新 → look 对于 specific 创建/更新 endpoints
  • 如果 skill appears (类型="skill"), prefer 在...上 assembling tools
  • inputSchema source 的 truth 对于 parameter names — NEVER guess

For platform-specific query syntax (JQL, SOQL, Gmail search), see references/query-syntax.md.

Describe tool

# POST /tools/describe
{"tools": [{"server_id": "SERVER_ID", "tool_name": "TOOL_NAME"}]}

Supports batch requests. Returns result.results[] with inputSchema, description, and write_operation type.


2. Execution

Schema adherence (最多 common source 的 errors)

  • 复制 parameter names verbatim 从 inputSchema — casing matters
- Schema says maxResults → 使用 maxResults, 不 max_results

  • Match data types exactly:
- "类型": "字符串""10", 不 10 - "类型": "integer"10, 不 "10" - "类型": "数组"["值"], 不 "值" - "类型": "对象"{"键": "值"}, 不 "键=值"

  • Include 所有 必填 fields. 做 不 添加 fields 不 在...中 schema.

Execute single tool

# POST /tools/execute
{"server_id": "SERVER_ID", "tool_name": "TOOL_NAME", "tool_args": {...}}

Translating 用户 intent 进入 values (infer rather 比 ask):

  • "recent tickets" → reasonable 日期 range (e.g., 最后的 7 days)
  • "my emails" → userId: "me"
  • " main channel" → 搜索 对于 由 name 第一个
  • "current sprint" → 活跃 sprint

This applies to values only — parameter names and types must come from inputSchema.

Data integrity: NEVER fabricate data. 仅 present 什么 appears 在...中 actual responses.

Handling links: 对于 创建/编辑 operations, surface clickable URLs 从 fields 点赞 url, 链接, href, web_url, permalink, html_url. Present 作为 Resource Name.

Execute workflow (multi-step)

Chain multiple tool calls in a Python sandbox:

# POST /tools/execute-workflow
{
  "code": "results = call_tool(\"atlassian\", \"searchByJQL\", jql=\"assignee = currentUser() AND status != Done\")\nreturn [{\"key\": i[\"key\"], \"summary\": i[\"fields\"][\"summary\"]} for i in results.get(\"issues\", [])]",
  "timeout": 180
}

当...时 到 使用 workflows:

  • Multiple tool calls 在...中 sequence
  • Parallel execution 穿过 services
  • Data 处理中, iteration, 或 transformation

Code rules:

  • 关注 schema adherence rules 上面
  • 写入 flat, inline code — 否 helper functions
  • Code 必须 return 值; extract 仅 needed fields
  • Check 对于 errors: 如果 isinstance(结果, dict) 和 "错误" 在...中 结果: ...
  • 对于 分页, 循环 until 否 更多 nextPageToken/cursor

可用 在...中 sandbox:

  • call_tool(server_id, tool_name, kwargs) — sequential
  • async_call_tool(server_id, tool_name, kwargs) — 对于 asyncio.gather()
  • call_skill(skill_id, inputs_dict) / async_call_skill(...) — call skills
  • Modules: asyncio, json, 日期时间, math, re, collections, itertools, functools, operator, decimal, uuid, base64, hashlib
  • 否 network, filesystem, 或 subprocess access
  • 否 augmented assignment 在...上 subscripts: 使用 d[k] = d[k] + 1, 不 d[k] += 1

3. 写入 Operation Confirmation

Write/delete operations return an audit response instead of executing. To proceed:

  • Show operation summary 到 用户 和 wait 对于 explicit approval
  • 获取 confirmation 令牌 (expires 在...中 60s):
   # POST /tools/confirm
   {"server_id": "SERVER_ID", "tool_name": "TOOL_NAME"}
   
  • Re-发送 带有 令牌:
   # POST /tools/execute
   {"server_id": "...", "tool_name": "...", "tool_args": {...}, "confirmed": true, "confirmation_token": "TOKEN"}
   

Never call confirm 没有 用户's typed approval ("是", "confirm", "proceed").


4. Skills

Skills are pre-built workflow patterns in search results with type: "skill". Prefer skills over assembling individual tools.

Executable skills

Marked executable: true. Run step-by-step:

# POST /tools/execute
{"tool_name": "SKILL_ID", "tool_args": {"step_id": "FIRST_STEP", "inputs": {...}}}

Each step returns outputs and next. If next is not null, read next.reasoning, fill placeholders, make the next call.

Guidance skills

For skills without executable: true, describe to get the pattern:

# POST /tools/describe
{"tools": [{"tool_name": "SKILL_NAME"}]}

Returns tools_involved, all_servers_connected, disconnected_servers, and step-by-step content. If all_servers_connected is false, use help(action="auth_helper") first.


5. 错误 Recovery

If a tool call fails, debug and retry — do not report failure immediately.

ErrorAction
Schema/parameter errorRe-read inputSchema, fix names and types, retry
404 / "not found"Wrong ID or tool; search for correct ID
Server not connected / 401Call help(action="auth_helper", server_id="...")
Empty resultsTry fuzzy variations, broader date ranges
Same error twiceTry different approach (different tool/parameters)
Workflow fails twiceFall back to sequential execute calls
Only report failure after at least three different approaches have been tried.


Guardrails

  • 开始 带有 list_servers搜索 到 discover 什么's connected
  • Always 有 inputSchema 之前 executing (从 搜索 或 describe)
  • Match parameter names 和 types exactly
  • Never fabricate data — 仅 present actual responses
  • Never execute writes 没有 explicit 用户 approval
  • Prefer workflows 对于 multi-step operations
  • Prefer skills 在...上 assembling individual tools
  • Pass session_iduser_intent 在...上 calls 对于 tracing (API generates one 如果 omitted)
数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制

免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制

了解定制服务