Overview
The Tool Hub provides pre-built integrations that agents can use, plus a place to manage your organization’s custom tools:- Install from marketplace — add tools to your organization
- Server-side execution — tools run on
tools.runtools.ai, not inside sandboxes - Encrypted credentials — AES-256-GCM encrypted, never exposed in API responses
- OAuth integration — connect accounts once, tools auto-resolve tokens
- Build your own — create custom tools with
defineTool()and publish them
Available Tools
| Tool | Slug | Category | OAuth Provider | Key Actions |
|---|---|---|---|---|
| GitHub | github | Developer | github | list_repos, create_repo, search_repos, list_issues, create_issue, comment, list_prs, create_pr |
| Gmail | gmail | Communication | google | send_email, list_emails, get_email, reply, search |
| Google Calendar | google-calendar | Productivity | google | list_events, create_event, update_event, delete_event, find_free_time |
| Google Sheets | google-sheets | Productivity | google | read_range, write_range, append_rows, create_spreadsheet, list_sheets |
| Slack | slack | Communication | slack | post_message, send_dm, list_channels, read_messages, search, set_topic, list_users |
| Discord | discord | Communication | discord | list_guilds, list_channels, send_message, read_messages, create_channel |
| Outlook | outlook | Communication | microsoft | send_email, list_emails, get_email, list_events, create_event |
| X (Twitter) | x-twitter | Social | x | post_tweet, search_tweets, get_user, get_timeline, like_tweet |
linkedin | Social | linkedin | get_profile, create_post, get_network | |
| Telegram | telegram | Communication | telegram | send_message, send_photo, get_updates |
OAuth & Connected Apps
Tools with an OAuth provider automatically resolve credentials from your connected accounts. No manual token management required.How It Works
- Connect once — Go to Dashboard → Credentials → Connected Apps, click Connect for a provider (Google, GitHub, Slack, etc.)
- Auto-resolve — When a tool runs, it automatically fetches a valid access token from your connected account
- Auto-refresh — Tokens are refreshed automatically before they expire (background daemon + on-demand refresh)
Credential Resolution Priority
When a tool executes, credentials are resolved in this order:| Priority | Source | Description |
|---|---|---|
| 1 | Per-request | Credentials passed in the execute request body |
| 2 | Stored | Manually stored credentials (via CLI or dashboard) |
| 3 | OAuth | Automatically resolved from connected accounts |
| 4 | Empty | No credentials (tool will likely fail) |
BYOA (Bring Your Own App)
Organizations can register their own OAuth app credentials for any provider. When configured, the OAuth consent screen shows your app name instead of “RunTools.”Installing Tools
Using Tools in Agents
Once installed, reference tool slugs in your agent definition:agents/email-bot.ts
bash, read_file, edit_file, etc.) are always included. You only need to add marketplace and custom tools.
Direct Tool Execution
Call tools directly without an agent:Building Custom Tools
Create tools withdefineTool() from the SDK:
tools/my-api.ts
custom_tools database table and executed via Bun’s native TypeScript import (no VM overhead).
Tool Execution Flow
When tools are called from inside sandbox VMs (by agents), credentials are resolved server-side. OAuth tokens never enter the sandbox.
Dashboard: Tool Hub
The Tool Hub page (Dashboard > Tool Hub) has three tabs:- Installed Tools — marketplace tools you’ve installed, with credential and connection status
- Organization Tools — custom tools you’ve deployed via
runtools deploy - Marketplace — browse and install all available tools
Best Practices
Use OAuth for official tools
Use OAuth for official tools
Connect your accounts via Connected Apps instead of manually managing tokens. OAuth connections auto-refresh and are more secure.
Test tools before using in agents
Test tools before using in agents
Use
runtools tool exec to test a tool action directly before adding it to an agent.Build custom tools for internal APIs
Build custom tools for internal APIs
If the marketplace doesn’t have what you need, write a custom tool with
defineTool() — it’s just TypeScript.Use per-request credentials when needed
Use per-request credentials when needed
You can pass credentials in the execute request body instead of storing them — useful for per-user credential scenarios.
Use BYOA for white-label OAuth
Use BYOA for white-label OAuth
Register your own OAuth app credentials so customers see your brand instead of RunTools during the consent flow.