{"_id":"@alter-ai/openclaw-plugin","_rev":"3-764a03735d65803d71adccbfe7a94ea7","name":"@alter-ai/openclaw-plugin","dist-tags":{"latest":"0.5.0"},"versions":{"0.1.0":{"name":"@alter-ai/openclaw-plugin","version":"0.1.0","keywords":["alter","oauth","openclaw","plugin","ai-agent","llm"],"author":{"name":"Alter Team","email":"founders@alterai.dev"},"license":"MIT","_id":"@alter-ai/openclaw-plugin@0.1.0","maintainers":[{"name":"srikard","email":"srikar@alterai.dev"},{"name":"kdodhia","email":"kevan@alterai.dev"}],"homepage":"https://github.com/AlterAIDev/Alter-Vault#readme","bugs":{"url":"https://github.com/AlterAIDev/Alter-Vault/issues"},"dist":{"shasum":"188c63e76d3787dbb4bf8be6debc1ad050c3efef","tarball":"https://registry.npmjs.org/@alter-ai/openclaw-plugin/-/openclaw-plugin-0.1.0.tgz","fileCount":20,"integrity":"sha512-FgJ8JvmmVJQ9/4twhDAPhYlMRIzdSSh1ZKOERBR7Jj37FzG5hXNRSx9NnOv7WDRqHDGSfP1zejdDoKKcNP4S5g==","signatures":[{"sig":"MEUCIQDRDu8wx5IoJeExtdcD1UARUBVhfOEC5P16Fc5wAfoU3gIgPI/i5hDgQ8faCwMF8uELrxD780+d6IAeZ5n1uU0kFa4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98542},"main":"dist/alter-openclaw-plugin.cjs.js","type":"module","types":"dist/types/index.d.ts","module":"dist/alter-openclaw-plugin.esm.js","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/alter-openclaw-plugin.esm.js","require":"./dist/alter-openclaw-plugin.cjs.js"}},"gitHead":"9a5ca20b030a7ff78998f8b495165d1b795a7137","scripts":{"dev":"rollup -c -w","build":"rollup -c","validate":"npm run typecheck","typecheck":"tsc --noEmit","build:watch":"rollup -c -w","prepublishOnly":"npm run validate && npm run build"},"_npmUser":{"name":"kdodhia","email":"kevan@alterai.dev"},"repository":{"url":"git+https://github.com/AlterAIDev/Alter-Vault.git","type":"git","directory":"packages/alter-openclaw-plugin"},"_npmVersion":"11.5.1","description":"Alter Vault OAuth integration plugin for OpenClaw","directories":{},"_nodeVersion":"24.5.0","dependencies":{"@sinclair/typebox":"^0.32.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^2.6.2","rollup":"^4.9.4","typescript":"^5.4.0","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-typescript":"^11.1.5","@rollup/plugin-node-resolve":"^15.2.3"},"peerDependencies":{"openclaw":"*"},"peerDependenciesMeta":{"openclaw":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/openclaw-plugin_0.1.0_1770598215012_0.14010713680738984","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@alter-ai/openclaw-plugin","version":"0.2.2","keywords":["alter","oauth","openclaw","plugin","ai-agent","llm"],"author":{"name":"Alter Team","email":"founders@alterai.dev"},"license":"MIT","_id":"@alter-ai/openclaw-plugin@0.2.2","maintainers":[{"name":"srikard","email":"srikar@alterai.dev"},{"name":"kdodhia","email":"kevan@alterai.dev"}],"homepage":"https://github.com/AlterAIDev/Alter-Vault#readme","bugs":{"url":"https://github.com/AlterAIDev/Alter-Vault/issues"},"dist":{"shasum":"6f924c303fcecf1366e666ee71e31e95518a4483","tarball":"https://registry.npmjs.org/@alter-ai/openclaw-plugin/-/openclaw-plugin-0.2.2.tgz","fileCount":19,"integrity":"sha512-9wQM351R7sIPPGXn5ClYfF2g3W+DsI3Ps8e+l21uwVWg4CVfNEP2o+P1TMSRfvMioRKeZxEPANJYqVpxabjCXA==","signatures":[{"sig":"MEUCIQDbK+It6/p6uKYmnK2Cq0uuUSNFYC1Pv2PQ+O1MrTrekwIgMxKDUJy2U8g9SPalmMEwwaNB4siY7tRdJ0CV0VK9qf4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":67290},"main":"dist/alter-openclaw-plugin.cjs.js","type":"module","_from":"file:alter-ai-openclaw-plugin-0.2.2.tgz","types":"dist/types/index.d.ts","module":"dist/alter-openclaw-plugin.esm.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/alter-openclaw-plugin.esm.js","require":"./dist/alter-openclaw-plugin.cjs.js"}},"scripts":{"dev":"rollup -c -w","build":"rollup -c","validate":"npm run typecheck","typecheck":"tsc --noEmit","build:watch":"rollup -c -w","prepublishOnly":"npm run validate && npm run build"},"_npmUser":{"name":"kdodhia","email":"kevan@alterai.dev"},"_resolved":"/home/runner/work/Alter-Vault/Alter-Vault/packages/alter-openclaw-plugin/alter-ai-openclaw-plugin-0.2.2.tgz","_integrity":"sha512-9wQM351R7sIPPGXn5ClYfF2g3W+DsI3Ps8e+l21uwVWg4CVfNEP2o+P1TMSRfvMioRKeZxEPANJYqVpxabjCXA==","repository":{"url":"git+https://github.com/AlterAIDev/Alter-Vault.git","type":"git","directory":"packages/alter-openclaw-plugin"},"_npmVersion":"10.8.2","description":"Alter Vault OAuth integration plugin for OpenClaw","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@sinclair/typebox":"^0.32.0","@alter-ai/alter-sdk":"^0.2.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^2.6.2","rollup":"^4.9.4","typescript":"^5.4.0","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-replace":"^6.0.3","@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-typescript":"^11.1.5","@rollup/plugin-node-resolve":"^15.2.3"},"peerDependencies":{"openclaw":"*"},"peerDependenciesMeta":{"openclaw":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/openclaw-plugin_0.2.2_1771555663382_0.4205751752029234","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@alter-ai/openclaw-plugin","version":"0.5.0","description":"Alter Vault OAuth integration plugin for OpenClaw","type":"module","main":"dist/alter-openclaw-plugin.cjs.js","module":"dist/alter-openclaw-plugin.esm.js","types":"dist/types/index.d.ts","exports":{".":{"import":"./dist/alter-openclaw-plugin.esm.js","require":"./dist/alter-openclaw-plugin.cjs.js","types":"./dist/types/index.d.ts"}},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"engines":{"node":">=18.0.0"},"keywords":["alter","oauth","openclaw","plugin","ai-agent","llm"],"author":{"name":"Alter Team","email":"founders@alterauth.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/AlterAIDev/Alter-Vault.git","directory":"packages/alter-openclaw-plugin"},"dependencies":{"@sinclair/typebox":"^0.32.0","@alter-ai/alter-sdk":"0.7.0"},"devDependencies":{"@rollup/plugin-commonjs":"^25.0.7","@rollup/plugin-node-resolve":"^15.2.3","@rollup/plugin-replace":"^6.0.3","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-typescript":"^11.1.5","rollup":"^4.9.4","tslib":"^2.6.2","typescript":"^5.4.0"},"peerDependencies":{"openclaw":"*"},"peerDependenciesMeta":{"openclaw":{"optional":true}},"scripts":{"build":"rollup -c","build:watch":"rollup -c -w","dev":"rollup -c -w","typecheck":"tsc --noEmit","validate":"npm run typecheck"},"_id":"@alter-ai/openclaw-plugin@0.5.0","bugs":{"url":"https://github.com/AlterAIDev/Alter-Vault/issues"},"homepage":"https://github.com/AlterAIDev/Alter-Vault#readme","_integrity":"sha512-ssmaIypC11fjGTx3TzekQt0SEjV7IBuLAME0VLIsXRl5NFMj74OISoMG5z1E+zuDHMRhS4Vftb4v2SW7VbgNSg==","_resolved":"/home/runner/work/Alter-Vault/Alter-Vault/packages/alter-openclaw-plugin/alter-ai-openclaw-plugin-0.5.0.tgz","_from":"file:alter-ai-openclaw-plugin-0.5.0.tgz","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-ssmaIypC11fjGTx3TzekQt0SEjV7IBuLAME0VLIsXRl5NFMj74OISoMG5z1E+zuDHMRhS4Vftb4v2SW7VbgNSg==","shasum":"a41a8971e99dc85c333c841283362c3a2400c2fc","tarball":"https://registry.npmjs.org/@alter-ai/openclaw-plugin/-/openclaw-plugin-0.5.0.tgz","fileCount":17,"unpackedSize":65793,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIALpDVfn6XmZzRGdfuzpdVI2FhBukguj11oox9LonahCAiBl4/HCK80IZUtb2Ltsz6vLE66/+d9rSO6CVNfWDiOynQ=="}]},"_npmUser":{"name":"kdodhia","email":"kevan@alterai.dev"},"directories":{},"maintainers":[{"name":"srikard","email":"srikar@alterai.dev"},{"name":"kdodhia","email":"kevan@alterai.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/openclaw-plugin_0.5.0_1775707937718_0.14535400597484993"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-09T00:50:14.928Z","modified":"2026-04-09T04:12:18.065Z","0.1.0":"2026-02-09T00:50:15.178Z","0.2.2":"2026-02-20T02:47:43.527Z","0.5.0":"2026-04-09T04:12:17.900Z"},"bugs":{"url":"https://github.com/AlterAIDev/Alter-Vault/issues"},"author":{"name":"Alter Team","email":"founders@alterauth.com"},"license":"MIT","homepage":"https://github.com/AlterAIDev/Alter-Vault#readme","keywords":["alter","oauth","openclaw","plugin","ai-agent","llm"],"repository":{"type":"git","url":"git+https://github.com/AlterAIDev/Alter-Vault.git","directory":"packages/alter-openclaw-plugin"},"description":"Alter Vault OAuth integration plugin for OpenClaw","maintainers":[{"name":"srikard","email":"srikar@alterai.dev"},{"name":"kdodhia","email":"kevan@alterai.dev"}],"readme":"# @alter-ai/openclaw-plugin\n\nAlter Vault OAuth integration plugin for [OpenClaw](https://github.com/nichochar/openclaw). Gives your AI agent secure access to Gmail, GitHub, Slack, Google Calendar, Sentry, and more — tokens are managed automatically and never exposed to the LLM.\n\nBuilt as a thin tool layer on top of [`@alter-ai/alter-sdk`](https://www.npmjs.com/package/@alter-ai/alter-sdk) (the Alter Vault TypeScript SDK). The plugin re-exports `AlterVault` and the SDK error classes for direct use. Requires Node.js >= 18.0.0.\n\n## Installation\n\n```bash\nopenclaw plugins install @alter-ai/openclaw-plugin\n```\n\n## Configuration\n\nSet your Alter credentials in the OpenClaw config file (`~/.openclaw/openclaw.json`):\n\n```json\n{\n  \"plugins\": {\n    \"entries\": {\n      \"alter-vault\": {\n        \"enabled\": true,\n        \"config\": {\n          \"apiKey\": \"alter_key_...\",\n          \"appId\": \"your-app-uuid\",\n          \"grantId\": \"your-grant-uuid\"\n        }\n      }\n    }\n  }\n}\n```\n\nOr set individual values via the CLI:\n\n```bash\nopenclaw config set plugins.entries.alter-vault.config.apiKey \"alter_key_...\"\nopenclaw config set plugins.entries.alter-vault.config.appId \"your-app-uuid\"\n```\n\n| Option | Required | Description |\n|--------|----------|-------------|\n| `apiKey` | Yes | Your Alter API key (`alter_key_...`) |\n| `appId` | Yes | Your Alter app UUID |\n| `grantId` | No | Default grant UUID for API requests |\n| `timeout` | No | Request timeout in milliseconds (default: 30000) |\n\n## Tools\n\nThe plugin registers three tools for the OpenClaw agent:\n\n### `alter_grants` — List connected services\n\nCheck which OAuth services are available before making API calls.\n\n```json\n{ \"tool\": \"alter_grants\" }\n```\n\nFilter by provider:\n\n```json\n{ \"tool\": \"alter_grants\", \"provider\": \"google\" }\n```\n\n### `alter_api` — Make authenticated API calls\n\nCall any external API with automatic OAuth token injection. The agent never sees the token.\n\n```json\n{\n  \"tool\": \"alter_api\",\n  \"provider\": \"google\",\n  \"method\": \"GET\",\n  \"url\": \"https://www.googleapis.com/gmail/v1/users/me/messages\",\n  \"query_params\": \"{\\\"maxResults\\\": \\\"10\\\"}\",\n  \"reason\": \"List recent emails\"\n}\n```\n\n### `alter_connect` — Connect a new service\n\nGenerate an OAuth link when the user needs to connect a new provider.\n\n```json\n{ \"tool\": \"alter_connect\", \"providers\": \"github\" }\n```\n\n## How It Works\n\n```\nOpenClaw Agent                    Alter Vault                   External API\n     │                                │                              │\n     │  1. alter_api(google, GET, url)│                              │\n     │ ──────────────────────────────>│                              │\n     │                                │  2. Get fresh token          │\n     │                                │     (via Alter SDK)          │\n     │                                │                              │\n     │                                │  3. GET url                  │\n     │                                │     Authorization: Bearer... │\n     │                                │ ────────────────────────────>│\n     │                                │                              │\n     │                                │  4. Response data            │\n     │                                │ <────────────────────────────│\n     │  5. { status, body }           │                              │\n     │ <──────────────────────────────│                              │\n     │                                │                              │\n     │  (token never returned to LLM) │                              │\n```\n\n**Security**: The plugin delegates all token management to `AlterVault` from `@alter-ai/alter-sdk`, which ensures your API key is never sent to external services. Tokens are managed securely and never exposed to the LLM.\n\n## Common Recipes\n\n### Gmail — List recent messages\n\n```json\n{\n  \"tool\": \"alter_api\",\n  \"provider\": \"google\",\n  \"method\": \"GET\",\n  \"url\": \"https://www.googleapis.com/gmail/v1/users/me/messages\",\n  \"query_params\": \"{\\\"maxResults\\\": \\\"10\\\"}\"\n}\n```\n\n### GitHub — List repositories\n\n```json\n{\n  \"tool\": \"alter_api\",\n  \"provider\": \"github\",\n  \"method\": \"GET\",\n  \"url\": \"https://api.github.com/user/repos\",\n  \"query_params\": \"{\\\"sort\\\": \\\"updated\\\", \\\"per_page\\\": \\\"10\\\"}\"\n}\n```\n\n### Slack — Send a message\n\n```json\n{\n  \"tool\": \"alter_api\",\n  \"provider\": \"slack\",\n  \"method\": \"POST\",\n  \"url\": \"https://slack.com/api/chat.postMessage\",\n  \"body\": \"{\\\"channel\\\": \\\"C01234567\\\", \\\"text\\\": \\\"Hello from OpenClaw!\\\"}\"\n}\n```\n\n### Google Calendar — List upcoming events\n\n```json\n{\n  \"tool\": \"alter_api\",\n  \"provider\": \"google\",\n  \"method\": \"GET\",\n  \"url\": \"https://www.googleapis.com/calendar/v3/calendars/primary/events\",\n  \"query_params\": \"{\\\"timeMin\\\": \\\"2024-01-01T00:00:00Z\\\", \\\"maxResults\\\": \\\"10\\\", \\\"singleEvents\\\": \\\"true\\\", \\\"orderBy\\\": \\\"startTime\\\"}\"\n}\n```\n\n### Sentry — List recent issues\n\n```json\n{\n  \"tool\": \"alter_api\",\n  \"provider\": \"sentry\",\n  \"method\": \"GET\",\n  \"url\": \"https://sentry.io/api/0/projects/{organization_slug}/{project_slug}/issues/\",\n  \"query_params\": \"{\\\"query\\\": \\\"is:unresolved\\\", \\\"sort\\\": \\\"date\\\"}\"\n}\n```\n\n## Bundled Skill\n\nThe package includes a `skill/SKILL.md` file with API recipes that OpenClaw can use as context. See the [SKILL.md](./skill/SKILL.md) for the full list.\n\n## Prerequisites\n\nYou need an Alter Vault account with:\n\n1. An **app** created in the [Developer Portal](https://portal.alterauth.com)\n2. An **API key** for that app\n3. At least one **OAuth provider** configured (Google, GitHub, Slack, etc.)\n4. A **connected account** (via Alter Connect or the `alter_connect` tool)\n\n## Documentation\n\n- [Full integration guide](https://docs.alterauth.com/integrations/openclaw)\n- [Alter Vault docs](https://docs.alterauth.com)\n- [OpenClaw](https://github.com/nichochar/openclaw)\n\n## License\n\nMIT\n","readmeFilename":"README.md"}