agentskit.js
Recipes

Provider integrations

Ready-made tools for GitHub, Linear, Slack, Notion, Discord, Gmail, Google Calendar, Stripe, Postgres, and S3.

Every integration lives under @agentskit/tools/integrations. Each module exports focused defineTool factories plus a bundle helper that returns all tools for that provider — mix and match.

Install

npm install @agentskit/tools
import {
  github,
  linear,
  slack,
  notion,
  discord,
  gmail,
  googleCalendar,
  stripe,
  postgres,
  s3,
} from '@agentskit/tools/integrations'

Dev + chat

const tools = [
  ...github({ token: process.env.GITHUB_TOKEN! }),
  ...linear({ apiKey: process.env.LINEAR_API_KEY! }),
  ...slack({ token: process.env.SLACK_BOT_TOKEN! }),
  ...notion({ token: process.env.NOTION_TOKEN! }),
  ...discord({ token: process.env.DISCORD_BOT_TOKEN! }),
]
ProviderTools
githubgithub_search_issues, github_create_issue, github_comment_issue
linearlinear_search_issues, linear_create_issue
slackslack_post_message, slack_search
notionnotion_search, notion_create_page
discorddiscord_post_message

Google Workspace

const tools = [
  ...gmail({ accessToken: oauthToken }),
  ...googleCalendar({ accessToken: oauthToken, calendarId: 'primary' }),
]

gmail_list_messages, gmail_send_email, calendar_list_events, calendar_create_event.

Stripe + storage

const tools = [
  ...stripe({ apiKey: process.env.STRIPE_SECRET_KEY! }),
  ...postgres({
    execute: async (sql, params) => {
      const r = await pg.query(sql, params)
      return { rows: r.rows, rowCount: r.rowCount ?? 0 }
    },
    allowWrites: false,
    maxRows: 500,
  }),
  ...s3({
    client: {
      getObject: async ({ bucket, key }) => ({ body: await getFromS3(bucket, key) }),
      putObject: async ({ bucket, key, body }) => ({ etag: await putToS3(bucket, key, body) }),
      listObjects: async ({ bucket, prefix, limit }) => listS3(bucket, prefix, limit),
    },
    defaultBucket: 'agent-artifacts',
  }),
]

Postgres ships with safe-mode — read-only by default, VACUUM / COPY / TRUNCATE permanently denied, write verbs require allowWrites: true, results capped by maxRows. The S3 tool accepts any client implementing three methods so you can plug in @aws-sdk/client-s3, MinIO, or Cloudflare R2 without bundling a large SDK.

Pair with

  • Mandatory sandbox — enforce per-tool allow/deny + validators across the whole provider bundle.
  • HITL approvals — gate destructive actions (issue creation, invoices) behind a human decision.
  • Audit log — record every tool call for SOC 2 evidence.

See also

✎ Edit this page on GitHub·Found a problem? Open an issue →·How to contribute →

On this page