@rnsk/toolkits
Open-source toolkit registry — manifests, tool implementations, OAuth specs, and icons for Runstack and custom agent hosts.
Source: https://runstack.engineer/docs/rnsk-toolkits
@rnsk/toolkits is the open-source registry of connector implementations that powers Runstack's toolkits. It ships toolkit definitions only — manifests, AI SDK tool implementations, OAuth specs, and icons. Agent meta-tools (search_tools, execute_tool, etc.) live in Runstack itself, not in this package.
Not@rnsk/tools— that package is the MCP client SDK for your app.@rnsk/toolkitsis what Runstack loads server-side to know which tools exist and how to run them.
Install
npm install @rnsk/toolkits
Peer dependencies: ai and zod (same as individual tool definitions inside the package).
Quick start
registerAllTools(myRegistry)
toolkits is the full manifest array. registerAllTools walks every toolkit and calls registry.register(name, description, tool, options) for each tool — useful when you host your own registry or test connectors outside Runstack.
To inspect tools without a registry:
const tools = getAllTools()
// [{ name, description, tool, requiredAuth, scope, toolkitId }, ...]
What's included
223 tools across 8 toolkits (v0.0.3):
| Toolkit | Tools | Auth |
|---|---|---|
| GitHub | 173 | OAuth2 |
| Gmail | 15 | OAuth2 |
| Notion | 8 | OAuth2 |
| Google Sheets | 7 | OAuth2 |
| Google Calendar | 6 | OAuth2 |
| Mathematics | 9 | none |
| Linear | 3 | OAuth2 |
| Web Search | 2 | service env |
Each toolkit is also exported individually (github, notion, gmail, etc.) if you only need one manifest.
Build a custom toolkit
Use helpers from @rnsk/toolkits (or @rnsk/toolkits/core) to define manifests that match the same shape Runstack expects:
const myTool = tool({
description: "Returns a greeting for the given name.",
inputSchema: z.object({ name: z.string() }),
execute: async ({ name }) => ({ message: `Hello, ${name}!` }),
})
id: "my-service",
displayName: "My Service",
shortDescription: "Example toolkit for internal APIs.",
category: "Productivity",
icon: { kind: "svg", dataUri: "data:image/svg+xml,..." },
auth: { type: "none" },
allowedHosts: ["api.example.com"],
tools: [
defineTool({
name: "my_service_greet",
description: "Say hello to a user.",
tool: myTool,
scope: "read",
}),
],
})
OAuth toolkits follow the same pattern — see the GitHub manifest in the repo for auth, allowedHosts, and tokenField wiring.
Private toolkits and versioning
Runstack consumes this package server-side. To ship connectors only your team uses:
- Fork or extend the rnsk-toolkits repo (or publish a scoped npm package).
- Add toolkits under
packages/toolkits/src/toolkits/. - Publish and point your Runstack deployment at that version.
Pre-1.0 (0.0.x): patch releases add toolkits and tools. Pin an exact version in production ("0.0.3").
Local development
Clone the repo and use the sandbox to exercise tools before publishing:
git clone https://github.com/deepraj21/rnsk-toolkits.git
cd rnsk-toolkits && npm install
cd packages/toolkits && npm run build
cd ../../sandbox && cp .env.local.example .env.local
npm run dev
The sandbox exposes GET /api/toolkits, POST /api/dev-token, and POST /api/chat with a dev-only meta-tool shim. See CONTRIBUTING.md for the PR checklist.
Related
| Package | Role |
|---|---|
@rnsk/toolkits | Toolkit registry — manifests and tool implementations |
@rnsk/tools | MCP client SDK for Vercel AI SDK apps |
| MCP Tools | Meta-tool API Runstack exposes to agents |
| Toolkits | Browse connectors available in Runstack today |