tools.runtools.ai, resolves its credentials server-side, and is callable the same way whether a person, a script, or an agent makes the call.
It’s one registry with three visibility levels: public tools appear in the Marketplace, org tools are installable across your organization, and private tools stay with whoever created them.
Marketplace
Use the Marketplace to discover public tools, install them for your account, and then attach them to agents or execute them directly.Credential Resolution
When executing a tool, Runtools fills credentials in this order:
OAuth-enabled tools use Connected Apps:
atlas + user_123 + gmail.
Execute a Tool
Build your own
Any API becomes a tool withdefineTool() — a name, a JSON schema for its inputs, and an execute:
tools/customer-api.ts
execute runs in an isolated Deno sandbox: you can import npm:/node: packages and call any public API, but Bun-runtime builtins (import { SQL } from 'bun') don’t work and secrets arrive as the credentials argument — never from the environment. The full contract, plus credentials and OAuth, is in Custom Tools.
Deploy, then choose who can see it:
SDK Methods
Best Practices
Use OAuth for user-owned accounts
Use OAuth for user-owned accounts
Connected Apps avoid manual token handling and refresh automatically. Use the provider default for normal runs, or pass
oauth.account / --account when a specific email or username should be used.Use Hosted Connect for product users
Use Hosted Connect for product users
If your end users are not Runtools users, create Hosted Connect sessions and run tools with
credentialScope: 'end_user' plus endUser.appId and endUser.externalUserId.Use secrets for API-key tools
Use secrets for API-key tools
Store credentials on the installed tool, pass one-off
credentials, or map credential fields to named secrets with credentialOverrides.Test tools directly
Test tools directly
Run
runtools tool exec before adding a tool to an agent definition.