Docs · static mirror — the interactive version loads with JavaScript.

@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/toolkits is 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):

ToolkitToolsAuth
GitHub173OAuth2
Gmail15OAuth2
Notion8OAuth2
Google Sheets7OAuth2
Google Calendar6OAuth2
Mathematics9none
Linear3OAuth2
Web Search2service 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:

  1. Fork or extend the rnsk-toolkits repo (or publish a scoped npm package).
  2. Add toolkits under packages/toolkits/src/toolkits/.
  3. 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

PackageRole
@rnsk/toolkitsToolkit registry — manifests and tool implementations
@rnsk/toolsMCP client SDK for Vercel AI SDK apps
MCP ToolsMeta-tool API Runstack exposes to agents
ToolkitsBrowse connectors available in Runstack today