{"_id":"@aiwerk/mcp-server-clawhub","_rev":"6-4d4c19c999fbdc9041854f9861193b93","name":"@aiwerk/mcp-server-clawhub","dist-tags":{"latest":"0.1.4"},"versions":{"0.1.0":{"name":"@aiwerk/mcp-server-clawhub","version":"0.1.0","keywords":["mcp","mcp-server","clawhub","skills","catalog","registry"],"author":{"name":"AIWerk","email":"kontakt@aiwerk.ch"},"license":"MIT","_id":"@aiwerk/mcp-server-clawhub@0.1.0","maintainers":[{"name":"aiwerk","email":"kontakt@aiwerk.ch"}],"homepage":"https://github.com/AIWerk/mcp-server-clawhub#readme","bugs":{"url":"https://github.com/AIWerk/mcp-server-clawhub/issues"},"bin":{"mcp-server-clawhub":"dist/src/server.js"},"dist":{"shasum":"2d1bf42ecbbdc704545f9f3bcb5c7d1b332b64ad","tarball":"https://registry.npmjs.org/@aiwerk/mcp-server-clawhub/-/mcp-server-clawhub-0.1.0.tgz","fileCount":8,"integrity":"sha512-XN60WNi6ExRtINBcL1f3gsUxYStYWF+7Q6yinq7ltP9djWfbpdYB9I1fW1iHC8VdBxrELPXP5cVhSp3wVhXkIw==","signatures":[{"sig":"MEUCIQCmdk/D+ly2CP38fdiJ4jXtCqEGxfo/UfuzK5lQJ/Av9gIgbqUQkQx5g1qH4yF3lmjHleRLEmIdL64r49o8NCMf+qI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28430},"main":"dist/src/server.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"07bebfe935e9a122f50d7e93230406adf228bb88","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc -p tsconfig.json","start":"node dist/src/server.js","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"aiwerk","email":"kontakt@aiwerk.ch"},"repository":{"url":"git+https://github.com/AIWerk/mcp-server-clawhub.git","type":"git"},"_npmVersion":"9.2.0","description":"ClawHub.ai skill catalog MCP server — search, browse, download skills; publish/delete when authenticated","directories":{},"_nodeVersion":"18.19.1","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.19.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.1","typescript":"^5.5.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server-clawhub_0.1.0_1776467385942_0.47752173829925626","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@aiwerk/mcp-server-clawhub","version":"0.1.1","keywords":["mcp","mcp-server","clawhub","skills","catalog","registry"],"author":{"name":"AIWerk","email":"kontakt@aiwerk.ch"},"license":"MIT","_id":"@aiwerk/mcp-server-clawhub@0.1.1","maintainers":[{"name":"agbergsmann","email":"kontakt@aiwerk.ch"}],"homepage":"https://github.com/AIWerk/mcp-server-clawhub#readme","bugs":{"url":"https://github.com/AIWerk/mcp-server-clawhub/issues"},"bin":{"mcp-server-clawhub":"dist/src/server.js"},"dist":{"shasum":"14e31b59a93231ac27e96b063513bdf64fe5d98b","tarball":"https://registry.npmjs.org/@aiwerk/mcp-server-clawhub/-/mcp-server-clawhub-0.1.1.tgz","fileCount":8,"integrity":"sha512-cB4md+emLyrFG601H3XcjFn5Im87Sd00ZoRFFOgDWl1VfrsW3litWvagUk5V2Imj9Q4DLWhu7nrRf0a6QDBZIw==","signatures":[{"sig":"MEQCIEQcXWYIS3XDoNPSbZ592oxb+oN+Er9SpKDX/C2bqN27AiBicgYG31qydTnAVZEXfanlvrs9mOd8nchx7RhoaAg86g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28606},"main":"dist/src/server.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"07bebfe935e9a122f50d7e93230406adf228bb88","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc -p tsconfig.json","start":"node dist/src/server.js","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"agbergsmann","email":"kontakt@aiwerk.ch"},"repository":{"url":"git+https://github.com/AIWerk/mcp-server-clawhub.git","type":"git"},"_npmVersion":"9.2.0","description":"ClawHub.ai skill catalog MCP server — search, browse, download skills; publish/delete when authenticated","directories":{},"_nodeVersion":"18.19.1","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.19.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.1","typescript":"^5.5.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server-clawhub_0.1.1_1776693365541_0.443569021776971","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@aiwerk/mcp-server-clawhub","version":"0.1.2","keywords":["mcp","mcp-server","clawhub","skills","catalog","registry"],"author":{"name":"AIWerk","email":"kontakt@aiwerk.ch"},"license":"MIT","_id":"@aiwerk/mcp-server-clawhub@0.1.2","maintainers":[{"name":"agbergsmann","email":"kontakt@aiwerk.ch"}],"homepage":"https://aiwerkmcp.com","bugs":{"url":"https://github.com/AIWerk/mcp-server-clawhub/issues"},"bin":{"mcp-server-clawhub":"dist/src/server.js"},"dist":{"shasum":"6d3c0b03724359a5d702c4a10d99b8d8b51951ad","tarball":"https://registry.npmjs.org/@aiwerk/mcp-server-clawhub/-/mcp-server-clawhub-0.1.2.tgz","fileCount":8,"integrity":"sha512-7uufoUfXs78sBbX4Yei3PcSwLtis924gGsEb6zOor44r1Vciz9V2Crf70ZX2RBdpeLxnQlHXKowI2R42PiLFsw==","signatures":[{"sig":"MEQCIARY6MW34oSzw89cGWbuRw/zNpBuypl0E68z9aicqbIAAiA5/RXe2XgNdxsDLEvjnZPBtDTF+pyBbFKlLS0Mw4Z8YA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30080},"main":"dist/src/server.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"15f5526666d240de56866253c49b16e65a0c42c0","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc -p tsconfig.json","start":"node dist/src/server.js","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"agbergsmann","email":"kontakt@aiwerk.ch"},"repository":{"url":"git+https://github.com/AIWerk/mcp-server-clawhub.git","type":"git"},"_npmVersion":"9.2.0","description":"ClawHub.ai skill catalog MCP server — search, browse, download skills; publish/delete when authenticated","directories":{},"_nodeVersion":"18.19.1","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.19.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.1","typescript":"^5.5.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server-clawhub_0.1.2_1776727362305_0.7817196282796108","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@aiwerk/mcp-server-clawhub","version":"0.1.3","keywords":["mcp","mcp-server","clawhub","skills","catalog","registry"],"author":{"name":"AIWerk","email":"kontakt@aiwerk.ch"},"license":"MIT","_id":"@aiwerk/mcp-server-clawhub@0.1.3","maintainers":[{"name":"agbergsmann","email":"kontakt@aiwerk.ch"}],"homepage":"https://aiwerkmcp.com","bugs":{"url":"https://github.com/AIWerk/mcp-server-clawhub/issues"},"bin":{"mcp-server-clawhub":"dist/src/server.js"},"dist":{"shasum":"94606c4d30f494638220387a1d44911e241e1442","tarball":"https://registry.npmjs.org/@aiwerk/mcp-server-clawhub/-/mcp-server-clawhub-0.1.3.tgz","fileCount":8,"integrity":"sha512-9seY4ZIVoCOhguJ25YSvC8G2A1PWXjvllaiOIuroCtqHq57M/LbJcBVgtzrNqbOHnfRZuCIAFcZDoNL2GcEooQ==","signatures":[{"sig":"MEQCICUkGv8Uvpyt9wiU3plO5k9H9oEkBH5z7uFFn/Elt36lAiBXf7ikC8BrYD/DlBwLLH0PBJa3OxlJNb5+7cWmSM23aA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30083},"main":"dist/src/server.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"39100bf4d817bdf0cfaab08a2131040f3d1958b3","scripts":{"dev":"tsc --watch","test":"vitest run","build":"tsc -p tsconfig.json","start":"node dist/src/server.js","prepublishOnly":"npm run build && npm test"},"_npmUser":{"name":"agbergsmann","email":"kontakt@aiwerk.ch"},"repository":{"url":"git+https://github.com/AIWerk/mcp-server-clawhub.git","type":"git"},"_npmVersion":"9.2.0","description":"ClawHub.ai skill catalog MCP server — search, browse, download skills; publish/delete when authenticated","directories":{},"_nodeVersion":"18.19.1","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.19.1"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.2.1","typescript":"^5.5.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server-clawhub_0.1.3_1777822561561_0.990270861668634","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@aiwerk/mcp-server-clawhub","mcpName":"io.github.AIWerk/mcp-server-clawhub","version":"0.1.4","description":"ClawHub.ai skill catalog MCP server — search, browse, download skills; publish/delete when authenticated","type":"module","main":"dist/src/server.js","bin":{"mcp-server-clawhub":"dist/src/server.js"},"scripts":{"build":"tsc -p tsconfig.json","start":"node dist/src/server.js","dev":"tsc --watch","test":"vitest run","prepublishOnly":"bash $HOME/agent-memory/commons/scripts/prepublish-safety.sh && npm run build && npm test"},"engines":{"node":">=18.0.0"},"keywords":["mcp","mcp-server","clawhub","skills","catalog","registry"],"author":{"name":"AIWerk","email":"kontakt@aiwerk.ch"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/AIWerk/mcp-server-clawhub.git"},"homepage":"https://aiwerkmcp.com","bugs":{"url":"https://github.com/AIWerk/mcp-server-clawhub/issues"},"dependencies":{"@modelcontextprotocol/sdk":"^1.19.1","zod":"^3.25.76"},"devDependencies":{"@types/node":"^22.0.0","typescript":"^5.5.0","vitest":"^3.2.1"},"_id":"@aiwerk/mcp-server-clawhub@0.1.4","gitHead":"ba58d88f832d44c4228ef7c6d86985c361f8f20d","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-BhOgybLBQdbMqVFVH62vNISyZpFiF1mYqX5gELIXwLsskgoroxGRl1G+5UJiybI93g7N8wXbtBCb9TpdQlC9/A==","shasum":"7f42bc065f0691d29d72a1b01a35fecb30dd14be","tarball":"https://registry.npmjs.org/@aiwerk/mcp-server-clawhub/-/mcp-server-clawhub-0.1.4.tgz","fileCount":8,"unpackedSize":30199,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIA3Y7HsmBtM1l0RCz6TMJtnZ0aKP8Cuf896aep7yxs8wAiASMdKW9vXOdIZfh0TQuzTDo/MdioHn2Nn2a55jLk2dQQ=="}]},"_npmUser":{"name":"agbergsmann","email":"kontakt@aiwerk.ch"},"directories":{},"maintainers":[{"name":"agbergsmann","email":"kontakt@aiwerk.ch"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-server-clawhub_0.1.4_1782260478627_0.9126975630978496"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-17T23:09:45.812Z","modified":"2026-06-24T00:21:18.931Z","0.1.0":"2026-04-17T23:09:46.104Z","0.1.1":"2026-04-20T13:56:05.692Z","0.1.2":"2026-04-20T23:22:42.492Z","0.1.3":"2026-05-03T15:36:01.696Z","0.1.4":"2026-06-24T00:21:18.773Z"},"bugs":{"url":"https://github.com/AIWerk/mcp-server-clawhub/issues"},"author":{"name":"AIWerk","email":"kontakt@aiwerk.ch"},"license":"MIT","homepage":"https://aiwerkmcp.com","keywords":["mcp","mcp-server","clawhub","skills","catalog","registry"],"repository":{"type":"git","url":"git+https://github.com/AIWerk/mcp-server-clawhub.git"},"description":"ClawHub.ai skill catalog MCP server — search, browse, download skills; publish/delete when authenticated","maintainers":[{"name":"agbergsmann","email":"kontakt@aiwerk.ch"}],"readme":"# @aiwerk/mcp-server-clawhub\n\nMCP server for the [ClawHub.ai](https://clawhub.ai) skill catalog.\n\nBrowse, search, inspect, download, and (when authenticated) publish skills from the ClawHub registry through the Model Context Protocol.\n\n## Two modes\n\nThe server adapts to whether a token is configured:\n\n| Mode            | Trigger                | Available tools |\n|-----------------|------------------------|-----------------|\n| **anonymous**   | `CLAWHUB_TOKEN` unset  | 10 read-only tools (search, list, get, scan, moderation, file, resolve, download) |\n| **authenticated** | `CLAWHUB_TOKEN` set  | All 14 tools (adds whoami, publish, delete, undelete) |\n\nThe authenticated tools are simply not registered in anonymous mode — `tools/list` will not advertise them.\n\n## Install\n\nTwo ways to run this server — pick the one that fits.\n\n### Option 1 — Hosted (zero setup)\n\nNo local runtime — if you set a token, it's AES-256-GCM encrypted server-side via HashiCorp Vault.\n\n1. Sign up at **[aiwerkmcp.com](https://aiwerkmcp.com)**.\n2. Install **ClawHub** from the catalog. Leave `CLAWHUB_TOKEN` empty for anonymous mode (10 read-only tools), or paste a token to unlock all 14.\n3. Point your MCP client (Claude.ai, Cursor, Hermes, …) at your hosted endpoint:\n   ```\n   https://bridge.aiwerk.ch/u/<your-user-id>/mcp\n   ```\n   with your Bearer token.\n\n### Option 2 — Self-hosted (npx)\n\nRun directly — you manage the token:\n\n```bash\nnpx -y @aiwerk/mcp-server-clawhub\n```\n\nOr in your MCP client config:\n\n```json\n{\n  \"mcpServers\": {\n    \"clawhub\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@aiwerk/mcp-server-clawhub\"],\n      \"env\": {\n        \"CLAWHUB_TOKEN\": \"optional - unlocks publish/delete/whoami\"\n      }\n    }\n  }\n}\n```\n\n## Tools\n\n### Read-only (anonymous + authenticated)\n\n| Tool | Description |\n|------|-------------|\n| `clawhub_search` | Search skills by query string — **primary discovery path** |\n| `clawhub_list_skills` | List skills with cursor pagination (see caveat below) |\n| `clawhub_get_skill` | Full details for a skill slug |\n| `clawhub_list_versions` | List all versions of a skill |\n| `clawhub_get_version` | Get a specific version (files + security snapshot) |\n| `clawhub_get_scan` | Security scan result for a version |\n| `clawhub_get_moderation` | Moderation verdict and evidence (response wraps under `moderation`) |\n| `clawhub_get_file` | Fetch a single raw file from a skill |\n| `clawhub_resolve` | Resolve version by content hash |\n| `clawhub_download` | Download skill zip (base64 encoded) |\n\n> **Discovery caveat:** the live `/skills` endpoint applies a default server-side filter that may\n> return an empty `items[]` for ungated browsing. In practice, **prefer `clawhub_search`** — it's the\n> reliable entry point for finding skills by keyword. Use `clawhub_list_skills` with cursor pagination\n> only when you have a specific filter in mind (e.g. `nonSuspiciousOnly=true`). The `highlightedOnly`\n> flag is available on `clawhub_search` but not on `clawhub_list_skills`.\n\n### Wire shapes worth knowing\n\nSome live API responses differ from the published OpenAPI spec. The types in `src/types.ts` follow\nthe **real wire shape**:\n\n- `clawhub_list_skills` → `{ items: [...], nextCursor }` (not `skills`)\n- `clawhub_list_versions` → `{ items: [...], nextCursor }` (not `versions`)\n- `clawhub_get_moderation` → `{ moderation: { verdict, ... } }` (wrapped)\n- `clawhub_whoami` → `{ user: { handle, ... } }` (wrapped)\n- `clawhub_get_moderation` returns **404** for skills with no moderation events — this means *clean*,\n  not *missing*. For the always-present verdict, read `.moderation` from `clawhub_get_skill`.\n\n### Authenticated only (CLAWHUB_TOKEN required)\n\n| Tool | Description |\n|------|-------------|\n| `clawhub_whoami` | Current user (handle, displayName, image) |\n| `clawhub_publish` | Publish a new skill version |\n| `clawhub_delete` | Soft-delete a skill (reversible) |\n| `clawhub_undelete` | Restore a soft-deleted skill |\n\n## Environment\n\n| Variable | Required | Purpose |\n|----------|----------|---------|\n| `CLAWHUB_TOKEN` | no | Bearer token issued by clawhub.ai. Unlocks auth-only tools and raises rate limits (120/min → 600/min for reads). |\n| `CLAWHUB_BASE_URL` | no | Override the API base URL. Defaults to `https://clawhub.ai/api/v1`. |\n\n## Rate limits\n\n- **Anonymous:** 120 reads/min per IP, 30 writes/min per IP\n- **Authenticated:** 600 reads/min per key, 120 writes/min per key\n\n## Development\n\n```bash\nnpm install\nnpm run build\nnpm test\n```\n\n## About AIWerk MCP\n\nPart of the **[AIWerk MCP platform](https://aiwerkmcp.com)** — curated, signed MCP recipes served either as npm packages for self-hosting or through our multi-tenant hosted bridge (`bridge.aiwerk.ch`).\n\nOther AIWerk MCP servers:\n\n- [@aiwerk/mcp-server-cal](https://github.com/AIWerk/mcp-server-cal) — Cal.com scheduling\n- [@aiwerk/mcp-server-imap](https://github.com/AIWerk/mcp-server-imap) — IMAP/SMTP email, provider-agnostic\n- [@aiwerk/mcp-server-wise](https://github.com/AIWerk/mcp-server-wise) — Wise (TransferWise) Personal API, read-only\n\nBrowse the full catalog (20+ recipes including GitHub, Linear, Notion, Stripe, …) at [aiwerkmcp.com](https://aiwerkmcp.com).\n\n## License\n\nMIT © AIWerk\n","readmeFilename":"README.md"}